diff --git a/.gn b/.gn index 36b54aca..65c8804 100644 --- a/.gn +++ b/.gn
@@ -86,6 +86,7 @@ "//chrome/app_shim/*", "//chrome/browser/chromeos/*", "//chrome/browser/extensions/*", + "//chrome/browser/resource_coordinator/*", "//chrome/browser/ui/*", "//chrome/common/*", "//chrome/installer/*",
diff --git a/AUTHORS b/AUTHORS index 2b2e119..6672f5ec 100644 --- a/AUTHORS +++ b/AUTHORS
@@ -940,6 +940,7 @@ ARM Holdings <*@arm.com> BlackBerry Limited <*@blackberry.com> Canonical Limited <*@canonical.com> +Cloudflare, Inc. <*@cloudflare.com> Code Aurora Forum <*@codeaurora.org> Collabora Limited <*@collabora.com> Comodo CA Limited
diff --git a/DEPS b/DEPS index cfb9281a..4add88d 100644 --- a/DEPS +++ b/DEPS
@@ -96,11 +96,11 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Skia # and whatever else without interference from each other. - 'skia_revision': '5140f9a8e424985c4c354c40c41ca6b0a9b8772a', + 'skia_revision': '4c3cb3767f5af3860998b932702dc18619ab3e1e', # 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': 'd936a7017f5fffc0d4a378901c1be2f863b51ea5', + 'v8_revision': 'd58b7e0b1483fd6b95dbef65b253835c57bcccfa', # 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. @@ -120,7 +120,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling PDFium # and whatever else without interference from each other. - 'pdfium_revision': 'e20f0c4938f8f03467944ed0e71c0feb130e95f1', + 'pdfium_revision': 'a7ff4dc7c27c7940daec9cf740f4b7e7638a45ec', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling openmax_dl # and whatever else without interference from each other. @@ -128,7 +128,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling BoringSSL # and whatever else without interference from each other. - 'boringssl_revision': '8e75ae488047c519f14f2c08b02a55bf7712fa1d', + 'boringssl_revision': '69271b5d4fed328eb61b86b013937ce22549fee5', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling google-toolbox-for-mac # and whatever else without interference from each other. @@ -148,7 +148,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling freetype # and whatever else without interference from each other. - 'freetype_revision': '2157d8fa6f7e12063ca166476ed2223d24234db7', + 'freetype_revision': '9e345c911714ed62250be13d03d72e25d91fbc77', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling HarfBuzz # and whatever else without interference from each other. @@ -156,7 +156,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling catapult # and whatever else without interference from each other. - 'catapult_revision': '195c52dc7098d106a56b89fb84184720a1941e28', + 'catapult_revision': 'a67f1510e710d44d18eeeb07bb66fed6f1d0f360', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -523,7 +523,7 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'd1de725e0b53f5f0bb331471e5673aee0e72a5b7', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'babd098f3684f1bc965a0f72f96cb701eec91e52', 'src/third_party/devtools-node-modules': Var('chromium_git') + '/external/github.com/ChromeDevTools/devtools-node-modules' + '@' + Var('devtools_node_modules_revision'),
diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd index d0381d3..4e2db39 100644 --- a/ash/ash_strings.grd +++ b/ash/ash_strings.grd
@@ -1233,6 +1233,9 @@ <message name="IDS_ASH_LOGIN_KEYBOARD_SELECTION_SELECT" desc="Label for keyboard selection dropdown"> Set your keyboard </message> + <message name="IDS_ASH_LOGIN_FINGERPRINT_UNLOCK_MESSAGE" desc="Text shown in the user pod to remind user that fingerprint unlock is supported"> + Unlock with fingerprint + </message> <!-- Multi-profiles intro dialog --> <message name="IDS_ASH_MULTIPROFILES_INTRO_HEADLINE" desc="Describes which feature multi-profiles intro dialog presents.">
diff --git a/ash/assistant/assistant_controller.cc b/ash/assistant/assistant_controller.cc index aa309f9..8cba21c 100644 --- a/ash/assistant/assistant_controller.cc +++ b/ash/assistant/assistant_controller.cc
@@ -193,7 +193,22 @@ std::make_unique<AssistantCardElement>(response)); } -void AssistantController::OnSuggestionChipPressed(const std::string& text) { +void AssistantController::OnSuggestionChipPressed(int id) { + const AssistantSuggestion* suggestion = + assistant_interaction_model_.GetSuggestionById(id); + + DCHECK(suggestion); + + // If the suggestion contains a non-empty action url, we will handle the + // suggestion chip pressed event by launching the action url in the browser. + if (!suggestion->action_url.is_empty()) { + OnOpenUrlResponse(suggestion->action_url); + return; + } + + // Otherwise, we will submit a simple text query using the suggestion text. + const std::string text = suggestion->text; + assistant_interaction_model_.ClearInteraction(); assistant_interaction_model_.SetQuery( std::make_unique<AssistantTextQuery>(text));
diff --git a/ash/assistant/assistant_controller.h b/ash/assistant/assistant_controller.h index 8e8bd4f4..d914f0d 100644 --- a/ash/assistant/assistant_controller.h +++ b/ash/assistant/assistant_controller.h
@@ -33,6 +33,7 @@ public AssistantInteractionModelObserver, public HighlighterController::Observer { public: + using AssistantSuggestion = chromeos::assistant::mojom::AssistantSuggestion; using AssistantSuggestionPtr = chromeos::assistant::mojom::AssistantSuggestionPtr; using AssistantInteractionResolution = @@ -82,7 +83,7 @@ void OnDialogPlateContentsCommitted(const std::string& text); // Invoked on suggestion chip pressed event. - void OnSuggestionChipPressed(const std::string& text); + void OnSuggestionChipPressed(int id); // AssistantInteractionModelObserver: void OnInteractionStateChanged(InteractionState interaction_state) override;
diff --git a/ash/assistant/model/assistant_interaction_model.cc b/ash/assistant/model/assistant_interaction_model.cc index 51272bd..f8e3e088 100644 --- a/ash/assistant/model/assistant_interaction_model.cc +++ b/ash/assistant/model/assistant_interaction_model.cc
@@ -85,18 +85,29 @@ void AssistantInteractionModel::AddSuggestions( std::vector<AssistantSuggestionPtr> suggestions) { - std::vector<AssistantSuggestion*> ptrs; + std::map<int, AssistantSuggestion*> ptrs; + // We use vector index to uniquely identify a given suggestion. This means + // that suggestion ids will reset with each call to |ClearSuggestions|, but + // that is acceptable. for (AssistantSuggestionPtr& suggestion : suggestions) { - suggestions_list_.push_back(std::move(suggestion)); - ptrs.push_back(suggestions_list_.back().get()); + int id = suggestions_.size(); + suggestions_.push_back(std::move(suggestion)); + ptrs[id] = suggestions_.back().get(); } NotifySuggestionsAdded(ptrs); } +const AssistantInteractionModel::AssistantSuggestion* +AssistantInteractionModel::GetSuggestionById(int id) const { + return id >= 0 && id < static_cast<int>(suggestions_.size()) + ? suggestions_.at(id).get() + : nullptr; +} + void AssistantInteractionModel::ClearSuggestions() { - suggestions_list_.clear(); + suggestions_.clear(); NotifySuggestionsCleared(); } @@ -137,7 +148,7 @@ } void AssistantInteractionModel::NotifySuggestionsAdded( - const std::vector<AssistantSuggestion*> suggestions) { + const std::map<int, AssistantSuggestion*>& suggestions) { for (AssistantInteractionModelObserver& observer : observers_) observer.OnSuggestionsAdded(suggestions); }
diff --git a/ash/assistant/model/assistant_interaction_model.h b/ash/assistant/model/assistant_interaction_model.h index 8713553..ce6edf8 100644 --- a/ash/assistant/model/assistant_interaction_model.h +++ b/ash/assistant/model/assistant_interaction_model.h
@@ -97,6 +97,10 @@ // interaction. void AddSuggestions(std::vector<AssistantSuggestionPtr> suggestions); + // Returns the suggestion uniquely identified by the specified |id|, or + // |nullptr| if no matching suggestion is found. + const AssistantSuggestion* GetSuggestionById(int id) const; + // Clears all suggestions for the interaction. void ClearSuggestions(); @@ -109,14 +113,14 @@ void NotifyQueryChanged(); void NotifyQueryCleared(); void NotifySuggestionsAdded( - const std::vector<AssistantSuggestion*> suggestions); + const std::map<int, AssistantSuggestion*>& suggestions); void NotifySuggestionsCleared(); InteractionState interaction_state_ = InteractionState::kInactive; InputModality input_modality_; MicState mic_state_ = MicState::kClosed; std::unique_ptr<AssistantQuery> query_; - std::vector<AssistantSuggestionPtr> suggestions_list_; + std::vector<AssistantSuggestionPtr> suggestions_; std::vector<std::unique_ptr<AssistantUiElement>> ui_element_list_; base::ObserverList<AssistantInteractionModelObserver> observers_;
diff --git a/ash/assistant/model/assistant_interaction_model_observer.h b/ash/assistant/model/assistant_interaction_model_observer.h index 632358c..6d86696 100644 --- a/ash/assistant/model/assistant_interaction_model_observer.h +++ b/ash/assistant/model/assistant_interaction_model_observer.h
@@ -5,6 +5,7 @@ #ifndef ASH_ASSISTANT_MODEL_ASSISTANT_INTERACTION_MODEL_OBSERVER_H_ #define ASH_ASSISTANT_MODEL_ASSISTANT_INTERACTION_MODEL_OBSERVER_H_ +#include <map> #include <string> #include <vector> @@ -54,9 +55,11 @@ virtual void OnQueryCleared() {} // Invoked when the specified |suggestions| are added to the associated - // interaction. + // interaction. The key for the map is the unique identifier by which the + // interaction model identifies each suggestion before the next + // |OnSuggestionsCleared| call. virtual void OnSuggestionsAdded( - const std::vector<AssistantSuggestion*>& suggestions) {} + const std::map<int, AssistantSuggestion*>& suggestions) {} // Invoked when all suggestions associated with the interaction are cleared. virtual void OnSuggestionsCleared() {}
diff --git a/ash/assistant/ui/assistant_bubble_view.cc b/ash/assistant/ui/assistant_bubble_view.cc index 97b4c1b5..fa8a0a99 100644 --- a/ash/assistant/ui/assistant_bubble_view.cc +++ b/ash/assistant/ui/assistant_bubble_view.cc
@@ -363,10 +363,16 @@ } } - void AddSuggestions(const std::vector<AssistantSuggestion*>& suggestions) { - for (const AssistantSuggestion* suggestion : suggestions) { - AddChildView(new app_list::SuggestionChipView( - base::UTF8ToUTF16(suggestion->text), suggestion_chip_listener_)); + void AddSuggestions(const std::map<int, AssistantSuggestion*>& suggestions) { + // When adding a SuggestionChipView, we give the view the same id by which + // the interaction model identifies the corresponding suggestion. This + // allows us to look up the suggestion for the view during event handling. + for (const std::pair<int, AssistantSuggestion*>& suggestion : suggestions) { + views::View* suggestion_chip_view = new app_list::SuggestionChipView( + base::UTF8ToUTF16(suggestion.second->text), + suggestion_chip_listener_); + suggestion_chip_view->set_id(suggestion.first); + AddChildView(suggestion_chip_view); } PreferredSizeChanged(); } @@ -580,7 +586,7 @@ } void AssistantBubbleView::OnSuggestionsAdded( - const std::vector<AssistantSuggestion*>& suggestions) { + const std::map<int, AssistantSuggestion*>& suggestions) { suggestions_container_->AddSuggestions(suggestions); suggestions_container_->SetVisible(true); } @@ -592,8 +598,7 @@ void AssistantBubbleView::OnSuggestionChipPressed( app_list::SuggestionChipView* suggestion_chip_view) { - assistant_controller_->OnSuggestionChipPressed( - base::UTF16ToUTF8(suggestion_chip_view->GetText())); + assistant_controller_->OnSuggestionChipPressed(suggestion_chip_view->id()); } void AssistantBubbleView::OnTextAdded(
diff --git a/ash/assistant/ui/assistant_bubble_view.h b/ash/assistant/ui/assistant_bubble_view.h index 6674870..2c77a113 100644 --- a/ash/assistant/ui/assistant_bubble_view.h +++ b/ash/assistant/ui/assistant_bubble_view.h
@@ -55,7 +55,7 @@ void OnQueryChanged(const AssistantQuery& query) override; void OnQueryCleared() override; void OnSuggestionsAdded( - const std::vector<AssistantSuggestion*>& suggestions) override; + const std::map<int, AssistantSuggestion*>& suggestions) override; void OnSuggestionsCleared() override; // app_list::SuggestionChipListener:
diff --git a/ash/login/login_screen_controller.cc b/ash/login/login_screen_controller.cc index 136e397..d8c62b3 100644 --- a/ash/login/login_screen_controller.cc +++ b/ash/login/login_screen_controller.cc
@@ -382,6 +382,13 @@ } } +void LoginScreenController::SetFingerprintUnlockState( + const AccountId& account_id, + mojom::FingerprintUnlockState state) { + if (DataDispatcher()) + DataDispatcher()->SetFingerprintUnlockState(account_id, state); +} + void LoginScreenController::DoAuthenticateUser(const AccountId& account_id, const std::string& password, bool authenticated_by_pin,
diff --git a/ash/login/login_screen_controller.h b/ash/login/login_screen_controller.h index c35c6f3..529bf109 100644 --- a/ash/login/login_screen_controller.h +++ b/ash/login/login_screen_controller.h
@@ -123,6 +123,8 @@ const AccountId& account_id, const std::string& locale, std::vector<mojom::InputMethodItemPtr> keyboard_layouts) override; + void SetFingerprintUnlockState(const AccountId& account_id, + mojom::FingerprintUnlockState state) override; // Flushes the mojo pipes - to be used in tests. void FlushForTesting();
diff --git a/ash/login/ui/lock_contents_view.cc b/ash/login/ui/lock_contents_view.cc index dcefdf3..aea92784 100644 --- a/ash/login/ui/lock_contents_view.cc +++ b/ash/login/ui/lock_contents_view.cc
@@ -392,8 +392,13 @@ } // Build user state list. - for (const mojom::LoginUserInfoPtr& user : users) - users_.push_back(UserState{user->basic_user_info->account_id}); + for (const mojom::LoginUserInfoPtr& user : users) { + UserState state(user->basic_user_info->account_id); + state.fingerprint_state = user->allow_fingerprint_unlock + ? mojom::FingerprintUnlockState::AVAILABLE + : mojom::FingerprintUnlockState::UNAVAILABLE; + users_.push_back(std::move(state)); + } auto box_layout = std::make_unique<views::BoxLayout>(views::BoxLayout::kHorizontal); @@ -643,6 +648,23 @@ GetWidget()->GetFocusManager()->ClearFocus(); } +void LockContentsView::OnFingerprintUnlockStateChanged( + const AccountId& account_id, + mojom::FingerprintUnlockState state) { + UserState* user_state = FindStateForUser(account_id); + if (!user_state) + return; + + user_state->fingerprint_state = state; + LoginBigUserView* big_view = + TryToFindBigUser(account_id, true /*require_auth_active*/); + if (!big_view || !big_view->auth_user()) + return; + + big_view->auth_user()->SetFingerprintState(user_state->fingerprint_state); + LayoutAuth(big_view, nullptr /*opt_to_hide*/, true /*animate*/); +} + void LockContentsView::SetAvatarForUser(const AccountId& account_id, const mojom::UserAvatarPtr& avatar) { auto replace = [&](const ash::mojom::LoginUserInfoPtr& user) { @@ -1207,10 +1229,17 @@ GetKeyboardController(); const bool keyboard_visible = keyboard_controller ? keyboard_controller->keyboard_visible() : false; - if (state->show_pin && !keyboard_visible) + if (state->show_pin && !keyboard_visible && + state->fingerprint_state == + mojom::FingerprintUnlockState::UNAVAILABLE) { to_update_auth |= LoginAuthUserView::AUTH_PIN; + } if (state->enable_tap_auth) to_update_auth |= LoginAuthUserView::AUTH_TAP; + if (state->fingerprint_state != + mojom::FingerprintUnlockState::UNAVAILABLE) { + to_update_auth |= LoginAuthUserView::AUTH_FINGERPRINT; + } } opt_to_update->SetAuthMethods(to_update_auth); }
diff --git a/ash/login/ui/lock_contents_view.h b/ash/login/ui/lock_contents_view.h index e0748ac..55ccb3e 100644 --- a/ash/login/ui/lock_contents_view.h +++ b/ash/login/ui/lock_contents_view.h
@@ -140,6 +140,9 @@ const std::vector<mojom::InputMethodItemPtr>& keyboard_layouts) override; void OnDetachableBasePairingStatusChanged( DetachableBasePairingStatus pairing_status) override; + void OnFingerprintUnlockStateChanged( + const AccountId& account_id, + mojom::FingerprintUnlockState state) override; // SystemTrayFocusObserver: void OnFocusLeavingSystemTray(bool reverse) override; @@ -174,6 +177,7 @@ bool enable_tap_auth = false; bool force_online_sign_in = false; mojom::EasyUnlockIconOptionsPtr easy_unlock_state; + mojom::FingerprintUnlockState fingerprint_state; private: DISALLOW_COPY_AND_ASSIGN(UserState);
diff --git a/ash/login/ui/login_auth_user_view.cc b/ash/login/ui/login_auth_user_view.cc index 2fecd882..a36aa54 100644 --- a/ash/login/ui/login_auth_user_view.cc +++ b/ash/login/ui/login_auth_user_view.cc
@@ -56,6 +56,17 @@ // The color of the online sign-in message text. constexpr SkColor kOnlineSignInMessageColor = SkColorSetRGB(0xE6, 0x7C, 0x73); +constexpr SkColor kFingerprintIconViewBorderColor = + SkColorSetARGB(0x57, 0xFF, 0xFF, 0xFF); +constexpr SkColor kFingerprintIconAndTextColor = + SkColorSetARGB(0x8A, 0xFF, 0xFF, 0xFF); +constexpr int kFingerprintIconViewBorderThickness = 1; +constexpr int kFingerprintIconViewSizeDp = 64; +constexpr int kFingerprintIconSizeDp = 32; +constexpr int kResetToDefaultIconColorDelayMs = 500; +constexpr int kFingerprintIconTopSpacing = 50; +constexpr int kSpacingBetweenFingerprintIconAndLabel = 20; + // Returns an observer that will hide |view| when it fires. The observer will // delete itself after firing. Make sure to call |observer->SetReady()| after // attaching it. @@ -74,8 +85,113 @@ view)); } +// A view which has a round border and a fingerprint icon at the center. +class FingerprintIconView : public views::View { + public: + FingerprintIconView() { + SetPreferredSize( + gfx::Size(kFingerprintIconViewSizeDp, kFingerprintIconViewSizeDp)); + icon_ = new views::ImageView; + icon_->SetVerticalAlignment(views::ImageView::CENTER); + icon_->SetPreferredSize( + gfx::Size(kFingerprintIconSizeDp, kFingerprintIconSizeDp)); + icon_->SetImage(gfx::CreateVectorIcon(kLockScreenFingerprintIcon, + kFingerprintIconSizeDp, color_)); + AddChildView(icon_); + SetBorder(views::CreateRoundedRectBorder( + kFingerprintIconViewBorderThickness, kFingerprintIconViewSizeDp / 2, + kFingerprintIconViewBorderColor)); + } + + ~FingerprintIconView() override = default; + + // Set color of the icon. The color will be reset to + // kFingerprintIconAndTextColor after a short period if different. + void SetIconColor(SkColor color) { + if (color_ == color) + return; + color_ = color; + reset_icon_color_.Stop(); + icon_->SetImage(gfx::CreateVectorIcon(kLockScreenFingerprintIcon, + kFingerprintIconSizeDp, color)); + + if (color_ != kFingerprintIconAndTextColor) { + reset_icon_color_.Start( + FROM_HERE, + base::TimeDelta::FromMilliseconds(kResetToDefaultIconColorDelayMs), + base::BindRepeating(&FingerprintIconView::SetIconColor, + base::Unretained(this), + kFingerprintIconAndTextColor)); + } + } + + void Layout() override { + gfx::Rect icon_bounds = GetContentsBounds(); + icon_bounds.ClampToCenteredSize( + gfx::Size(kFingerprintIconSizeDp, kFingerprintIconSizeDp)); + icon_->SetBoundsRect(icon_bounds); + } + + private: + views::ImageView* icon_ = nullptr; + base::OneShotTimer reset_icon_color_; + SkColor color_ = kFingerprintIconAndTextColor; + + DISALLOW_COPY_AND_ASSIGN(FingerprintIconView); +}; + } // namespace +// Consists of fingerprint icon view and a label. +class LoginAuthUserView::FingerprintView : public views::View { + public: + FingerprintView() { + SetPaintToLayer(); + layer()->SetFillsBoundsOpaquely(false); + + icon_view_ = new FingerprintIconView(); + AddChildView(icon_view_); + label_ = new views::Label( + l10n_util::GetStringUTF16(IDS_ASH_LOGIN_FINGERPRINT_UNLOCK_MESSAGE)); + label_->SetSubpixelRenderingEnabled(false); + label_->SetAutoColorReadabilityEnabled(false); + label_->SetEnabledColor(kFingerprintIconAndTextColor); + AddChildView(label_); + } + + void SetIconColor(SkColor color) { icon_view_->SetIconColor(color); } + + void Layout() override { + gfx::Rect bounds = GetContentsBounds(); + icon_view_->SizeToPreferredSize(); + icon_view_->SetPosition( + gfx::Point((bounds.width() - icon_view_->width()) / 2, + bounds.y() + kFingerprintIconTopSpacing)); + label_->SizeToPreferredSize(); + label_->SetPosition( + gfx::Point(bounds.x(), icon_view_->bounds().bottom() + + kSpacingBetweenFingerprintIconAndLabel)); + } + + ~FingerprintView() override = default; + + gfx::Size CalculatePreferredSize() const override { + int preferred_height = label_->GetPreferredSize().height() + + icon_view_->GetPreferredSize().height() + + kFingerprintIconTopSpacing + + kSpacingBetweenFingerprintIconAndLabel; + int preferred_width = std::max(label_->GetPreferredSize().width(), + icon_view_->GetPreferredSize().width()); + return gfx::Size(preferred_width, preferred_height); + } + + private: + FingerprintIconView* icon_view_ = nullptr; + views::Label* label_ = nullptr; + + DISALLOW_COPY_AND_ASSIGN(FingerprintView); +}; + struct LoginAuthUserView::AnimationState { int non_pin_y_start_in_screen = 0; gfx::Point pin_start_in_screen; @@ -165,6 +281,8 @@ this, base::UTF8ToUTF16(user->basic_user_info->display_name)); DecorateOnlineSignInMessage(); + fingerprint_view_ = new FingerprintView(); + SetPaintToLayer(ui::LayerType::LAYER_NOT_DRAWN); // Build layout. @@ -176,10 +294,13 @@ login_layout_util::WrapViewForPreferredSize(user_view_); auto* wrapped_pin_view = login_layout_util::WrapViewForPreferredSize(pin_view_); + auto* wrapped_fingerprint_view = + login_layout_util::WrapViewForPreferredSize(fingerprint_view_); // Add views in tabbing order; they are rendered in a different order below. AddChildView(wrapped_password_view); AddChildView(wrapped_message_view); + AddChildView(wrapped_fingerprint_view); AddChildView(wrapped_pin_view); AddChildView(wrapped_user_view); @@ -206,6 +327,7 @@ add_view(wrapped_password_view); add_view(wrapped_message_view); add_padding(kDistanceBetweenPasswordFieldAndPinKeyboard); + add_view(wrapped_fingerprint_view); add_view(wrapped_pin_view); add_padding(kDistanceFromPinKeyboardToBigUserViewBottom); @@ -224,6 +346,7 @@ bool has_pin = HasAuthMethod(AUTH_PIN); bool has_tap = HasAuthMethod(AUTH_TAP); bool force_online_sign_in = HasAuthMethod(AUTH_ONLINE_SIGN_IN); + bool has_fingerprint = HasAuthMethod(AUTH_FINGERPRINT); online_sign_in_message_->SetVisible(force_online_sign_in); @@ -236,6 +359,7 @@ password_view_->RequestFocus(); pin_view_->SetVisible(has_pin); + fingerprint_view_->SetVisible(has_fingerprint); // Note: if both |has_tap| and |has_pin| are true, prefer tap placeholder. if (has_tap) { @@ -368,6 +492,20 @@ base::UTF8ToUTF16(user->basic_user_info->display_name)); } +void LoginAuthUserView::SetFingerprintState( + mojom::FingerprintUnlockState state) { + fingerprint_view_->SetVisible(state != + mojom::FingerprintUnlockState::UNAVAILABLE); + + SkColor color = kFingerprintIconAndTextColor; + if (state == mojom::FingerprintUnlockState::AUTH_SUCCESS) { + color = SK_ColorBLUE; + } else if (state == mojom::FingerprintUnlockState::AUTH_FAILED) { + color = SK_ColorRED; + } + fingerprint_view_->SetIconColor(color); +} + const mojom::LoginUserInfoPtr& LoginAuthUserView::current_user() const { return user_view_->current_user(); }
diff --git a/ash/login/ui/login_auth_user_view.h b/ash/login/ui/login_auth_user_view.h index e38348ca..5c218626 100644 --- a/ash/login/ui/login_auth_user_view.h +++ b/ash/login/ui/login_auth_user_view.h
@@ -82,6 +82,7 @@ AUTH_PIN = 1 << 1, // Display PIN keyboard. AUTH_TAP = 1 << 2, // Tap to unlock. AUTH_ONLINE_SIGN_IN = 1 << 3, // Force online sign-in. + AUTH_FINGERPRINT = 1 << 4, // Use fingerprint to unlock. }; LoginAuthUserView(const mojom::LoginUserInfoPtr& user, @@ -107,6 +108,8 @@ // Update the displayed name, icon, etc to that of |user|. void UpdateForUser(const mojom::LoginUserInfoPtr& user); + void SetFingerprintState(mojom::FingerprintUnlockState state); + const mojom::LoginUserInfoPtr& current_user() const; LoginPasswordView* password_view() { return password_view_; } @@ -121,6 +124,7 @@ private: struct AnimationState; + class FingerprintView; // Called when the user submits an auth method. Runs mojo call. void OnAuthSubmit(const base::string16& password); @@ -147,6 +151,7 @@ LoginPasswordView* password_view_ = nullptr; LoginPinView* pin_view_ = nullptr; views::LabelButton* online_sign_in_message_ = nullptr; + FingerprintView* fingerprint_view_ = nullptr; const OnAuthCallback on_auth_; const LoginUserView::OnTap on_tap_;
diff --git a/ash/login/ui/login_data_dispatcher.cc b/ash/login/ui/login_data_dispatcher.cc index 0a4e7efa..bc440cfd 100644 --- a/ash/login/ui/login_data_dispatcher.cc +++ b/ash/login/ui/login_data_dispatcher.cc
@@ -52,6 +52,10 @@ void LoginDataDispatcher::Observer::OnDetachableBasePairingStatusChanged( DetachableBasePairingStatus pairing_status) {} +void LoginDataDispatcher::Observer::OnFingerprintUnlockStateChanged( + const AccountId& account_id, + mojom::FingerprintUnlockState state) {} + LoginDataDispatcher::LoginDataDispatcher() = default; LoginDataDispatcher::~LoginDataDispatcher() = default; @@ -143,4 +147,11 @@ observer.OnDetachableBasePairingStatusChanged(pairing_status); } +void LoginDataDispatcher::SetFingerprintUnlockState( + const AccountId& account_id, + mojom::FingerprintUnlockState state) { + for (auto& observer : observers_) + observer.OnFingerprintUnlockStateChanged(account_id, state); +} + } // namespace ash
diff --git a/ash/login/ui/login_data_dispatcher.h b/ash/login/ui/login_data_dispatcher.h index b360775..1836980e 100644 --- a/ash/login/ui/login_data_dispatcher.h +++ b/ash/login/ui/login_data_dispatcher.h
@@ -96,6 +96,11 @@ // base is attached or detached. virtual void OnDetachableBasePairingStatusChanged( DetachableBasePairingStatus pairing_status); + + // Called when fingerprint unlock state changes for user with |account_id|. + virtual void OnFingerprintUnlockStateChanged( + const AccountId& account_id, + mojom::FingerprintUnlockState state); }; LoginDataDispatcher(); @@ -126,6 +131,8 @@ const std::vector<mojom::InputMethodItemPtr>& keyboard_layouts); void SetDetachableBasePairingStatus( DetachableBasePairingStatus pairing_status); + void SetFingerprintUnlockState(const AccountId& account_id, + mojom::FingerprintUnlockState state); private: base::ObserverList<Observer> observers_;
diff --git a/ash/public/interfaces/login_screen.mojom b/ash/public/interfaces/login_screen.mojom index 3d5479d..a8dac5e4 100644 --- a/ash/public/interfaces/login_screen.mojom +++ b/ash/public/interfaces/login_screen.mojom
@@ -112,6 +112,10 @@ SetPublicSessionKeyboardLayouts(signin.mojom.AccountId account_id, string locale, array<InputMethodItem> keyboard_layouts); + + // Set the fingerprint unlock state for user with |account_id|. + SetFingerprintUnlockState(signin.mojom.AccountId account_id, + FingerprintUnlockState state); }; // Allows ash lock screen to control a client (e.g. Chrome browser). Requests
diff --git a/ash/public/interfaces/login_user_info.mojom b/ash/public/interfaces/login_user_info.mojom index 150897e9..6bee6bde 100644 --- a/ash/public/interfaces/login_user_info.mojom +++ b/ash/public/interfaces/login_user_info.mojom
@@ -38,6 +38,18 @@ SPINNER, }; +// Fingerprint unlock state in the views lock screen. +enum FingerprintUnlockState { + // Fingerprint unlock is not available. + UNAVAILABLE, + // Fingerprint unlock is available. + AVAILABLE, + // The unlock attempt is successful, the fingerprint is matched. + AUTH_SUCCESS, + // The unlock attempt is unsuccessful, the fingerprint is not recognized. + AUTH_FAILED, +}; + // Information about the custom icon in the user pod. struct EasyUnlockIconOptions { // Icon that should be displayed.
diff --git a/ash/resources/vector_icons/BUILD.gn b/ash/resources/vector_icons/BUILD.gn index d110d52..24a1846 100644 --- a/ash/resources/vector_icons/BUILD.gn +++ b/ash/resources/vector_icons/BUILD.gn
@@ -22,6 +22,7 @@ "lock_screen_backspace.icon", "lock_screen_caps_lock.icon", "lock_screen_dropdown.icon", + "lock_screen_fingerprint.icon", "login_screen_button_dropdown.icon", "login_screen_menu_dropdown.icon", "login_screen_enterprise.icon",
diff --git a/ash/resources/vector_icons/lock_screen_fingerprint.icon b/ash/resources/vector_icons/lock_screen_fingerprint.icon new file mode 100644 index 0000000..5fc5ed7 --- /dev/null +++ b/ash/resources/vector_icons/lock_screen_fingerprint.icon
@@ -0,0 +1,174 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +CANVAS_DIMENSIONS, 54, +MOVE_TO, 40.07f, 10.06f, +CUBIC_TO, 39.89f, 10.06f, 39.72f, 10.01f, 39.56f, 9.93f, +CUBIC_TO, 35.25f, 7.71f, 31.5f, 6.75f, 27.02f, 6.75f, +CUBIC_TO, 22.56f, 6.75f, 18.35f, 7.82f, 14.49f, 9.92f, +CUBIC_TO, 13.94f, 10.22f, 13.26f, 10.02f, 12.96f, 9.47f, +CUBIC_TO, 12.67f, 8.92f, 12.86f, 8.25f, 13.41f, 7.94f, +CUBIC_TO, 17.61f, 5.66f, 22.19f, 4.5f, 27.02f, 4.5f, +CUBIC_TO, 31.82f, 4.5f, 36, 5.56f, 40.59f, 7.93f, +CUBIC_TO, 41.14f, 8.21f, 41.36f, 8.9f, 41.07f, 9.45f, +CUBIC_TO, 40.87f, 9.83f, 40.48f, 10.06f, 40.07f, 10.06f, +LINE_TO, 40.07f, 10.06f, +CLOSE, +MOVE_TO, 7.88f, 21.87f, +CUBIC_TO, 7.65f, 21.87f, 7.43f, 21.8f, 7.22f, 21.67f, +CUBIC_TO, 6.72f, 21.31f, 6.59f, 20.61f, 6.95f, 20.1f, +CUBIC_TO, 9.18f, 16.95f, 12.03f, 14.48f, 15.4f, 12.74f, +CUBIC_TO, 22.48f, 9.08f, 31.52f, 9.07f, 38.61f, 12.71f, +CUBIC_TO, 41.97f, 14.45f, 44.81f, 16.9f, 47.05f, 20.02f, +CUBIC_TO, 47.41f, 20.53f, 47.3f, 21.23f, 46.79f, 21.59f, +CUBIC_TO, 46.28f, 21.95f, 45.57f, 21.84f, 45.21f, 21.33f, +CUBIC_TO, 43.19f, 18.5f, 40.62f, 16.27f, 37.59f, 14.72f, +CUBIC_TO, 31.13f, 11.4f, 22.88f, 11.41f, 16.44f, 14.74f, +CUBIC_TO, 13.39f, 16.31f, 10.81f, 18.55f, 8.8f, 21.41f, +CUBIC_TO, 8.57f, 21.71f, 8.22f, 21.87f, 7.88f, 21.87f, +LINE_TO, 7.88f, 21.87f, +CLOSE, +MOVE_TO, 21.95f, 49.02f, +CUBIC_TO, 21.66f, 49.02f, 21.38f, 48.9f, 21.15f, 48.68f, +CUBIC_TO, 19.2f, 46.71f, 18.15f, 45.46f, 16.63f, 42.75f, +CUBIC_TO, 15.08f, 39.98f, 14.25f, 36.6f, 14.25f, 32.97f, +CUBIC_TO, 14.25f, 26.29f, 19.97f, 20.85f, 27, 20.85f, +CUBIC_TO, 34.03f, 20.85f, 39.75f, 26.28f, 39.75f, 32.97f, +CUBIC_TO, 39.75f, 33.59f, 39.24f, 34.1f, 38.62f, 34.1f, +CUBIC_TO, 38, 34.1f, 37.5f, 33.59f, 37.5f, 32.97f, +CUBIC_TO, 37.5f, 27.53f, 32.79f, 23.1f, 27, 23.1f, +CUBIC_TO, 21.22f, 23.1f, 16.5f, 27.53f, 16.5f, 32.97f, +CUBIC_TO, 16.5f, 36.21f, 17.22f, 39.21f, 18.59f, 41.65f, +CUBIC_TO, 20.04f, 44.24f, 21, 45.35f, 22.74f, 47.09f, +CUBIC_TO, 23.18f, 47.53f, 23.18f, 48.25f, 22.73f, 48.68f, +CUBIC_TO, 22.52f, 48.92f, 22.23f, 49.02f, 21.95f, 49.02f, +LINE_TO, 21.95f, 49.02f, +CLOSE, +MOVE_TO, 38.07f, 44.85f, +CUBIC_TO, 35.39f, 44.85f, 33.04f, 44.18f, 31.1f, 42.86f, +CUBIC_TO, 27.75f, 40.59f, 25.75f, 36.9f, 25.75f, 32.99f, +CUBIC_TO, 25.75f, 32.37f, 26.26f, 31.86f, 26.88f, 31.86f, +CUBIC_TO, 27.5f, 31.86f, 28, 32.37f, 28, 32.99f, +CUBIC_TO, 28, 36.15f, 29.63f, 39.14f, 32.37f, 41, +CUBIC_TO, 33.95f, 42.08f, 35.82f, 42.6f, 38.07f, 42.6f, +CUBIC_TO, 38.61f, 42.6f, 39.52f, 42.55f, 40.42f, 42.39f, +CUBIC_TO, 41.03f, 42.28f, 41.61f, 42.69f, 41.73f, 43.3f, +CUBIC_TO, 41.84f, 43.91f, 41.42f, 44.49f, 40.82f, 44.61f, +CUBIC_TO, 39.5f, 44.84f, 38.39f, 44.85f, 38.07f, 44.85f, +LINE_TO, 38.07f, 44.85f, +CLOSE, +MOVE_TO, 33.54f, 49.5f, +CUBIC_TO, 33.44f, 49.5f, 33.33f, 49.49f, 33.24f, 49.46f, +CUBIC_TO, 29.66f, 48.48f, 27.32f, 47.15f, 24.89f, 44.73f, +CUBIC_TO, 21.75f, 41.6f, 20.01f, 37.43f, 20.01f, 32.99f, +CUBIC_TO, 20.01f, 29.33f, 23.12f, 26.36f, 26.94f, 26.36f, +CUBIC_TO, 30.77f, 26.36f, 33.87f, 29.33f, 33.87f, 32.99f, +CUBIC_TO, 33.87f, 35.39f, 35.98f, 37.36f, 38.55f, 37.36f, +CUBIC_TO, 41.13f, 37.36f, 43.23f, 35.4f, 43.23f, 32.99f, +CUBIC_TO, 43.23f, 24.5f, 35.92f, 17.61f, 26.93f, 17.61f, +CUBIC_TO, 20.53f, 17.61f, 14.69f, 21.16f, 12.06f, 26.67f, +CUBIC_TO, 11.18f, 28.5f, 10.74f, 30.62f, 10.74f, 32.99f, +CUBIC_TO, 10.74f, 34.74f, 10.9f, 37.51f, 12.24f, 41.1f, +CUBIC_TO, 12.45f, 41.68f, 12.16f, 42.32f, 11.58f, 42.55f, +CUBIC_TO, 10.99f, 42.76f, 10.35f, 42.47f, 10.13f, 41.88f, +CUBIC_TO, 9.02f, 38.92f, 8.48f, 36.02f, 8.48f, 32.99f, +CUBIC_TO, 8.48f, 30.29f, 9, 27.83f, 10.02f, 25.71f, +CUBIC_TO, 13.03f, 19.43f, 19.67f, 15.37f, 26.92f, 15.37f, +CUBIC_TO, 37.15f, 15.37f, 45.47f, 23.28f, 45.47f, 33, +CUBIC_TO, 45.47f, 36.65f, 42.36f, 39.62f, 38.54f, 39.62f, +CUBIC_TO, 34.73f, 39.62f, 31.61f, 36.65f, 31.61f, 33, +CUBIC_TO, 31.61f, 30.59f, 29.51f, 28.62f, 26.93f, 28.62f, +CUBIC_TO, 24.36f, 28.62f, 22.25f, 30.58f, 22.25f, 33, +CUBIC_TO, 22.25f, 36.83f, 23.75f, 40.44f, 26.46f, 43.14f, +CUBIC_TO, 28.59f, 45.26f, 30.66f, 46.43f, 33.83f, 47.3f, +CUBIC_TO, 34.42f, 47.46f, 34.78f, 48.08f, 34.62f, 48.68f, +CUBIC_TO, 34.48f, 49.17f, 34.03f, 49.5f, 33.54f, 49.5f, +LINE_TO, 33.54f, 49.5f, +CLOSE + +CANVAS_DIMENSIONS, 27, +MOVE_TO, 20.04f, 5.03f, +CUBIC_TO, 19.95f, 5.03f, 19.86f, 5.01f, 19.78f, 4.97f, +CUBIC_TO, 17.62f, 3.85f, 15.75f, 3.38f, 13.51f, 3.38f, +CUBIC_TO, 11.28f, 3.38f, 9.17f, 3.91f, 7.25f, 4.96f, +CUBIC_TO, 6.97f, 5.11f, 6.63f, 5.01f, 6.48f, 4.74f, +CUBIC_TO, 6.33f, 4.46f, 6.43f, 4.12f, 6.71f, 3.97f, +CUBIC_TO, 8.8f, 2.83f, 11.09f, 2.25f, 13.51f, 2.25f, +CUBIC_TO, 15.91f, 2.25f, 18, 2.78f, 20.3f, 3.97f, +CUBIC_TO, 20.57f, 4.11f, 20.68f, 4.45f, 20.54f, 4.72f, +CUBIC_TO, 20.44f, 4.92f, 20.24f, 5.03f, 20.04f, 5.03f, +LINE_TO, 20.04f, 5.03f, +CLOSE, +MOVE_TO, 3.94f, 10.94f, +CUBIC_TO, 3.83f, 10.94f, 3.71f, 10.9f, 3.61f, 10.83f, +CUBIC_TO, 3.36f, 10.65f, 3.3f, 10.31f, 3.48f, 10.05f, +CUBIC_TO, 4.59f, 8.48f, 6.01f, 7.24f, 7.7f, 6.37f, +CUBIC_TO, 11.24f, 4.54f, 15.76f, 4.53f, 19.31f, 6.36f, +CUBIC_TO, 20.99f, 7.22f, 22.4f, 8.45f, 23.52f, 10.01f, +CUBIC_TO, 23.7f, 10.27f, 23.65f, 10.61f, 23.39f, 10.79f, +CUBIC_TO, 23.14f, 10.97f, 22.79f, 10.92f, 22.61f, 10.67f, +CUBIC_TO, 21.59f, 9.25f, 20.31f, 8.13f, 18.79f, 7.36f, +CUBIC_TO, 15.56f, 5.7f, 11.44f, 5.7f, 8.22f, 7.37f, +CUBIC_TO, 6.69f, 8.16f, 5.41f, 9.28f, 4.4f, 10.7f, +CUBIC_TO, 4.29f, 10.86f, 4.11f, 10.94f, 3.94f, 10.94f, +LINE_TO, 3.94f, 10.94f, +CLOSE, +MOVE_TO, 10.97f, 24.51f, +CUBIC_TO, 10.83f, 24.51f, 10.69f, 24.45f, 10.58f, 24.34f, +CUBIC_TO, 9.6f, 23.36f, 9.07f, 22.73f, 8.31f, 21.38f, +CUBIC_TO, 7.54f, 19.99f, 7.13f, 18.3f, 7.13f, 16.49f, +CUBIC_TO, 7.13f, 13.15f, 9.98f, 10.42f, 13.5f, 10.42f, +CUBIC_TO, 17.02f, 10.42f, 19.87f, 13.14f, 19.87f, 16.49f, +CUBIC_TO, 19.87f, 16.8f, 19.62f, 17.05f, 19.31f, 17.05f, +CUBIC_TO, 19, 17.05f, 18.75f, 16.8f, 18.75f, 16.49f, +CUBIC_TO, 18.75f, 13.76f, 16.4f, 11.55f, 13.5f, 11.55f, +CUBIC_TO, 10.61f, 11.55f, 8.25f, 13.76f, 8.25f, 16.49f, +CUBIC_TO, 8.25f, 18.11f, 8.61f, 19.6f, 9.29f, 20.82f, +CUBIC_TO, 10.02f, 22.12f, 10.5f, 22.67f, 11.37f, 23.55f, +CUBIC_TO, 11.59f, 23.77f, 11.59f, 24.13f, 11.36f, 24.34f, +CUBIC_TO, 11.26f, 24.46f, 11.12f, 24.51f, 10.97f, 24.51f, +LINE_TO, 10.97f, 24.51f, +CLOSE, +MOVE_TO, 19.04f, 22.43f, +CUBIC_TO, 17.7f, 22.43f, 16.52f, 22.09f, 15.55f, 21.43f, +CUBIC_TO, 13.88f, 20.3f, 12.88f, 18.45f, 12.88f, 16.49f, +CUBIC_TO, 12.88f, 16.18f, 13.13f, 15.93f, 13.44f, 15.93f, +CUBIC_TO, 13.75f, 15.93f, 14, 16.18f, 14, 16.49f, +CUBIC_TO, 14, 18.07f, 14.82f, 19.57f, 16.18f, 20.5f, +CUBIC_TO, 16.98f, 21.04f, 17.91f, 21.3f, 19.04f, 21.3f, +CUBIC_TO, 19.31f, 21.3f, 19.76f, 21.27f, 20.21f, 21.2f, +CUBIC_TO, 20.51f, 21.14f, 20.81f, 21.35f, 20.86f, 21.65f, +CUBIC_TO, 20.92f, 21.95f, 20.71f, 22.25f, 20.41f, 22.3f, +CUBIC_TO, 19.75f, 22.42f, 19.19f, 22.43f, 19.04f, 22.43f, +LINE_TO, 19.04f, 22.43f, +CLOSE, +MOVE_TO, 16.77f, 24.75f, +CUBIC_TO, 16.72f, 24.75f, 16.67f, 24.74f, 16.62f, 24.73f, +CUBIC_TO, 14.83f, 24.24f, 13.66f, 23.57f, 12.44f, 22.37f, +CUBIC_TO, 10.87f, 20.8f, 10.01f, 18.71f, 10.01f, 16.49f, +CUBIC_TO, 10.01f, 14.66f, 11.56f, 13.18f, 13.47f, 13.18f, +CUBIC_TO, 15.38f, 13.18f, 16.94f, 14.66f, 16.94f, 16.49f, +CUBIC_TO, 16.94f, 17.7f, 17.99f, 18.68f, 19.28f, 18.68f, +CUBIC_TO, 20.57f, 18.68f, 21.62f, 17.7f, 21.62f, 16.49f, +CUBIC_TO, 21.62f, 12.25f, 17.96f, 8.8f, 13.47f, 8.8f, +CUBIC_TO, 10.27f, 8.8f, 7.35f, 10.58f, 6.03f, 13.34f, +CUBIC_TO, 5.59f, 14.25f, 5.37f, 15.31f, 5.37f, 16.49f, +CUBIC_TO, 5.37f, 17.37f, 5.45f, 18.75f, 6.12f, 20.55f, +CUBIC_TO, 6.23f, 20.84f, 6.08f, 21.16f, 5.79f, 21.27f, +CUBIC_TO, 5.5f, 21.38f, 5.18f, 21.23f, 5.06f, 20.94f, +CUBIC_TO, 4.51f, 19.46f, 4.24f, 18.01f, 4.24f, 16.49f, +CUBIC_TO, 4.24f, 15.14f, 4.5f, 13.92f, 5.01f, 12.85f, +CUBIC_TO, 6.51f, 9.71f, 9.83f, 7.68f, 13.46f, 7.68f, +CUBIC_TO, 18.57f, 7.68f, 22.74f, 11.64f, 22.74f, 16.5f, +CUBIC_TO, 22.74f, 18.33f, 21.18f, 19.81f, 19.27f, 19.81f, +CUBIC_TO, 17.36f, 19.81f, 15.81f, 18.33f, 15.81f, 16.5f, +CUBIC_TO, 15.81f, 15.29f, 14.75f, 14.31f, 13.47f, 14.31f, +CUBIC_TO, 12.18f, 14.31f, 11.13f, 15.29f, 11.13f, 16.5f, +CUBIC_TO, 11.13f, 18.42f, 11.87f, 20.22f, 13.23f, 21.57f, +CUBIC_TO, 14.29f, 22.63f, 15.33f, 23.21f, 16.91f, 23.65f, +CUBIC_TO, 17.21f, 23.73f, 17.39f, 24.04f, 17.31f, 24.34f, +CUBIC_TO, 17.24f, 24.59f, 17.02f, 24.75f, 16.77f, 24.75f, +LINE_TO, 16.77f, 24.75f, +CLOSE +
diff --git a/ash/system/session/logout_confirmation_dialog.cc b/ash/system/session/logout_confirmation_dialog.cc index f130f18..4193af1 100644 --- a/ash/system/session/logout_confirmation_dialog.cc +++ b/ash/system/session/logout_confirmation_dialog.cc
@@ -13,6 +13,7 @@ #include "base/time/tick_clock.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/l10n/time_format.h" +#include "ui/base/material_design/material_design_controller.h" #include "ui/base/ui_base_types.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/text_constants.h" @@ -25,9 +26,11 @@ namespace ash { namespace { -const int kCountdownUpdateIntervalMs = 1000; // 1 second. +constexpr int kDefaultWidth = 448; // Default width of the dialog. -const int kHalfSecondInMs = 500; // Half a second. +constexpr int kCountdownUpdateIntervalMs = 1000; // 1 second. + +constexpr int kHalfSecondInMs = 500; // Half a second. } // namespace @@ -79,6 +82,13 @@ return true; } +base::string16 LogoutConfirmationDialog::GetDialogButtonLabel( + ui::DialogButton button) const { + if (button == ui::DIALOG_BUTTON_OK) + return l10n_util::GetStringUTF16(IDS_ASH_LOGOUT_CONFIRMATION_BUTTON); + return views::DialogDelegateView::GetDialogButtonLabel(button); +} + ui::ModalType LogoutConfirmationDialog::GetModalType() const { return ui::MODAL_TYPE_SYSTEM; } @@ -87,11 +97,9 @@ return l10n_util::GetStringUTF16(IDS_ASH_LOGOUT_CONFIRMATION_TITLE); } -base::string16 LogoutConfirmationDialog::GetDialogButtonLabel( - ui::DialogButton button) const { - if (button == ui::DIALOG_BUTTON_OK) - return l10n_util::GetStringUTF16(IDS_ASH_LOGOUT_CONFIRMATION_BUTTON); - return views::DialogDelegateView::GetDialogButtonLabel(button); +bool LogoutConfirmationDialog::ShouldShowCloseButton() const { + // Material UI has no [X] in the corner of this dialog. + return !ui::MaterialDesignController::IsSecondaryUiMaterial(); } void LogoutConfirmationDialog::WindowClosing() { @@ -100,6 +108,12 @@ controller_->OnDialogClosed(); } +gfx::Size LogoutConfirmationDialog::CalculatePreferredSize() const { + return gfx::Size( + kDefaultWidth, + GetLayoutManager()->GetPreferredHeightForWidth(this, kDefaultWidth)); +} + void LogoutConfirmationDialog::UpdateLabel() { const base::TimeDelta time_remaining = logout_time_ - controller_->clock()->NowTicks();
diff --git a/ash/system/session/logout_confirmation_dialog.h b/ash/system/session/logout_confirmation_dialog.h index 04c07d0..74e9832 100644 --- a/ash/system/session/logout_confirmation_dialog.h +++ b/ash/system/session/logout_confirmation_dialog.h
@@ -34,11 +34,17 @@ // views::DialogDelegateView: bool Accept() override; + base::string16 GetDialogButtonLabel(ui::DialogButton button) const override; + + // views::WidgetDelegate: ui::ModalType GetModalType() const override; base::string16 GetWindowTitle() const override; - base::string16 GetDialogButtonLabel(ui::DialogButton button) const override; + bool ShouldShowCloseButton() const override; void WindowClosing() override; + // views::View: + gfx::Size CalculatePreferredSize() const override; + private: void UpdateLabel();
diff --git a/ash/window_manager.cc b/ash/window_manager.cc index ccb5f14..dd3a7ec 100644 --- a/ash/window_manager.cc +++ b/ash/window_manager.cc
@@ -275,8 +275,10 @@ } void WindowManager::OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, aura::Window* target) { - pointer_watcher_event_router_->OnPointerEventObserved(event, target); + pointer_watcher_event_router_->OnPointerEventObserved(event, display_id, + target); } aura::PropertyConverter* WindowManager::GetPropertyConverter() {
diff --git a/ash/window_manager.h b/ash/window_manager.h index c4bfbcd..9a529d1 100644 --- a/ash/window_manager.h +++ b/ash/window_manager.h
@@ -124,6 +124,7 @@ void OnEmbedRootDestroyed(aura::WindowTreeHostMus* window_tree_host) override; void OnLostConnection(aura::WindowTreeClient* client) override; void OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, aura::Window* target) override; aura::PropertyConverter* GetPropertyConverter() override;
diff --git a/ash/window_manager_unittest.cc b/ash/window_manager_unittest.cc index 24a1df9..40741c2 100644 --- a/ash/window_manager_unittest.cc +++ b/ash/window_manager_unittest.cc
@@ -59,6 +59,7 @@ aura::WindowTreeHostMus* window_tree_host) override {} void OnLostConnection(aura::WindowTreeClient* client) override {} void OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, aura::Window* target) override {} aura::PropertyConverter* GetPropertyConverter() override { return &property_converter_;
diff --git a/base/android/java/src/org/chromium/base/PathUtils.java b/base/android/java/src/org/chromium/base/PathUtils.java index 7af032f..17c3fb4 100644 --- a/base/android/java/src/org/chromium/base/PathUtils.java +++ b/base/android/java/src/org/chromium/base/PathUtils.java
@@ -12,12 +12,14 @@ import android.os.Environment; import android.os.SystemClock; import android.system.Os; +import android.text.TextUtils; import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.MainDex; import org.chromium.base.metrics.RecordHistogram; import java.io.File; +import java.util.ArrayList; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; @@ -224,11 +226,14 @@ } else { files = new File[] {Environment.getExternalStorageDirectory()}; } - String[] result = new String[files.length]; + + ArrayList<String> absolutePaths = new ArrayList<String>(); for (int i = 0; i < files.length; ++i) { - result[i] = files[i].getAbsolutePath(); + if (files[i] == null || TextUtils.isEmpty(files[i].getAbsolutePath())) continue; + absolutePaths.add(files[i].getAbsolutePath()); } - return result; + + return absolutePaths.toArray(new String[absolutePaths.size()]); } /**
diff --git a/base/files/file_util_proxy.cc b/base/files/file_util_proxy.cc index 1f63cae..0e18520 100644 --- a/base/files/file_util_proxy.cc +++ b/base/files/file_util_proxy.cc
@@ -16,12 +16,6 @@ namespace { -void CallWithTranslatedParameter(FileUtilProxy::StatusCallback callback, - bool value) { - DCHECK(!callback.is_null()); - std::move(callback).Run(value ? File::FILE_OK : File::FILE_ERROR_FAILED); -} - class GetFileInfoHelper { public: GetFileInfoHelper() @@ -63,16 +57,4 @@ BindOnce(&GetFileInfoHelper::Reply, Owned(helper), std::move(callback))); } -// static -bool FileUtilProxy::Touch(TaskRunner* task_runner, - const FilePath& file_path, - const Time& last_access_time, - const Time& last_modified_time, - StatusCallback callback) { - return base::PostTaskAndReplyWithResult( - task_runner, FROM_HERE, - BindOnce(&TouchFile, file_path, last_access_time, last_modified_time), - BindOnce(&CallWithTranslatedParameter, std::move(callback))); -} - } // namespace base
diff --git a/base/files/file_util_proxy.h b/base/files/file_util_proxy.h index daeb3cd..2400f69 100644 --- a/base/files/file_util_proxy.h +++ b/base/files/file_util_proxy.h
@@ -14,16 +14,10 @@ namespace base { class TaskRunner; -class Time; // This class provides asynchronous access to common file routines. class BASE_EXPORT FileUtilProxy { public: - // This callback is used by methods that report only an error code. It is - // valid to pass a null callback to any function that takes a StatusCallback, - // in which case the operation will complete silently. - using StatusCallback = OnceCallback<void(File::Error)>; - using GetFileInfoCallback = OnceCallback<void(File::Error, const File::Info&)>; @@ -34,14 +28,6 @@ const FilePath& file_path, GetFileInfoCallback callback); - // Touches a file. The callback can be null. - // This returns false if task posting to |task_runner| has failed. - static bool Touch(TaskRunner* task_runner, - const FilePath& file_path, - const Time& last_access_time, - const Time& last_modified_time, - StatusCallback callback); - private: DISALLOW_IMPLICIT_CONSTRUCTORS(FileUtilProxy); };
diff --git a/base/files/file_util_proxy_unittest.cc b/base/files/file_util_proxy_unittest.cc index 0c2fcba..d6d5eb1 100644 --- a/base/files/file_util_proxy_unittest.cc +++ b/base/files/file_util_proxy_unittest.cc
@@ -101,26 +101,4 @@ EXPECT_EQ(expected_info.creation_time, file_info_.creation_time); } -TEST_F(FileUtilProxyTest, Touch) { - ASSERT_EQ(4, WriteFile(TestPath(), "test", 4)); - Time last_accessed_time = Time::Now() - TimeDelta::FromDays(12345); - Time last_modified_time = Time::Now() - TimeDelta::FromHours(98765); - - FileUtilProxy::Touch( - file_task_runner(), TestPath(), last_accessed_time, last_modified_time, - BindOnce(&FileUtilProxyTest::DidFinish, weak_factory_.GetWeakPtr())); - RunLoop().Run(); - EXPECT_EQ(File::FILE_OK, error_); - - File::Info info; - GetFileInfo(TestPath(), &info); - - // The returned values may only have the seconds precision, so we cast - // the double values to int here. - EXPECT_EQ(static_cast<int>(last_modified_time.ToDoubleT()), - static_cast<int>(info.last_modified.ToDoubleT())); - EXPECT_EQ(static_cast<int>(last_accessed_time.ToDoubleT()), - static_cast<int>(info.last_accessed.ToDoubleT())); -} - } // namespace base
diff --git a/base/process/process_metrics.h b/base/process/process_metrics.h index 3ae373f..5611078 100644 --- a/base/process/process_metrics.h +++ b/base/process/process_metrics.h
@@ -265,10 +265,11 @@ BASE_EXPORT size_t GetMaxFds(); #if defined(OS_POSIX) && !defined(OS_FUCHSIA) -// Sets the file descriptor soft limit to |max_descriptors| or the OS hard -// limit, whichever is lower. -BASE_EXPORT void SetFdLimit(unsigned int max_descriptors); -#endif // defined(OS_POSIX) +// Increases the file descriptor soft limit to |max_descriptors| or the OS hard +// limit, whichever is lower. If the limit is already higher than +// |max_descriptors|, then nothing happens. +BASE_EXPORT void IncreaseFdLimitTo(unsigned int max_descriptors); +#endif // defined(OS_POSIX) && !defined(OS_FUCHSIA) #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA)
diff --git a/base/process/process_metrics_ios.cc b/base/process/process_metrics_ios.cc index 794304f7..a94e0cf 100644 --- a/base/process/process_metrics_ios.cc +++ b/base/process/process_metrics_ios.cc
@@ -47,7 +47,7 @@ return static_cast<size_t>(max_fds); } -void SetFdLimit(unsigned int max_descriptors) { +void IncreaseFdLimitTo(unsigned int max_descriptors) { // Unimplemented. }
diff --git a/base/process/process_metrics_posix.cc b/base/process/process_metrics_posix.cc index e2d2c62..a09bbf2 100644 --- a/base/process/process_metrics_posix.cc +++ b/base/process/process_metrics_posix.cc
@@ -71,11 +71,12 @@ return static_cast<size_t>(max_fds); } - -void SetFdLimit(unsigned int max_descriptors) { +void IncreaseFdLimitTo(unsigned int max_descriptors) { struct rlimit limits; if (getrlimit(RLIMIT_NOFILE, &limits) == 0) { unsigned int new_limit = max_descriptors; + if (max_descriptors <= limits.rlim_cur) + return; if (limits.rlim_max > 0 && limits.rlim_max < max_descriptors) { new_limit = limits.rlim_max; }
diff --git a/base/sampling_heap_profiler/sampling_heap_profiler.cc b/base/sampling_heap_profiler/sampling_heap_profiler.cc index 63c84a6..3d7424bb 100644 --- a/base/sampling_heap_profiler/sampling_heap_profiler.cc +++ b/base/sampling_heap_profiler/sampling_heap_profiler.cc
@@ -6,6 +6,7 @@ #include <algorithm> #include <cmath> +#include <utility> #include "base/allocator/allocator_shim.h" #include "base/allocator/buildflags.h" @@ -336,21 +337,27 @@ Sample sample(size, total_allocated, ++g_last_sample_ordinal); RecordStackTrace(&sample, skip_frames); - // Close the fast-path as inserting an element into samples_ may cause - // rehashing that invalidates iterators affecting all the concurrent - // readers. - base::subtle::Release_Store(&g_fast_path_is_closed, 1); - while (base::subtle::Acquire_Load(&g_operations_in_flight)) { - while (base::subtle::NoBarrier_Load(&g_operations_in_flight)) { + if (MayRehashOnInsert()) { + // Close the fast path as inserting an element into samples_ may cause + // rehashing that invalidates iterators affecting all the concurrent + // readers. + base::subtle::Release_Store(&g_fast_path_is_closed, 1); + // Wait until all current readers leave. + while (base::subtle::Acquire_Load(&g_operations_in_flight)) { + while (base::subtle::NoBarrier_Load(&g_operations_in_flight)) { + } } + samples_.emplace(address, std::move(sample)); + // Open the fast path. + base::subtle::Release_Store(&g_fast_path_is_closed, 0); + } else { + samples_.emplace(address, std::move(sample)); } + for (auto* observer : observers_) observer->SampleAdded(sample.ordinal, size, total_allocated); - // TODO(alph): We can do better by keeping the fast-path open when - // we know insert won't cause rehashing. - samples_.emplace(address, std::move(sample)); - base::subtle::Release_Store(&g_fast_path_is_closed, 0); } + entered_.Set(false); } @@ -385,6 +392,13 @@ entered_.Set(false); } +bool SamplingHeapProfiler::MayRehashOnInsert() { + size_t max_items_before_rehash = + std::floor(samples_.bucket_count() * samples_.max_load_factor()); + // Conservatively use 2 instead of 1 to workaround potential rounding errors. + return samples_.size() + 2 >= max_items_before_rehash; +} + // static SamplingHeapProfiler* SamplingHeapProfiler::GetInstance() { static base::NoDestructor<SamplingHeapProfiler> instance;
diff --git a/base/sampling_heap_profiler/sampling_heap_profiler.h b/base/sampling_heap_profiler/sampling_heap_profiler.h index b0573b8..3f2f227a 100644 --- a/base/sampling_heap_profiler/sampling_heap_profiler.h +++ b/base/sampling_heap_profiler/sampling_heap_profiler.h
@@ -92,6 +92,7 @@ uint32_t skip_frames); void DoRecordFree(void* address); void RecordStackTrace(Sample*, uint32_t skip_frames); + bool MayRehashOnInsert(); base::ThreadLocalBoolean entered_; base::Lock mutex_;
diff --git a/base/stl_util.h b/base/stl_util.h index edd14d3..47b5f70 100644 --- a/base/stl_util.h +++ b/base/stl_util.h
@@ -124,25 +124,6 @@ return std::count(container.begin(), container.end(), val); } -// Return a mutable char* pointing to a string's internal buffer, -// which may not be null-terminated. Writing through this pointer will -// modify the string. -// -// string_as_array(&str)[i] is valid for 0 <= i < str.size() until the -// next call to a string method that invalidates iterators. -// -// As of 2006-04, there is no standard-blessed way of getting a -// mutable reference to a string's internal buffer. However, issue 530 -// (http://www.open-std.org/JTC1/SC22/WG21/docs/lwg-active.html#530) -// proposes this as the method. According to Matt Austern, this should -// already work on all current implementations. -// -// DEPRECATED(https://crbug.com/831499), use base::data(std::string&) instead. -inline char* string_as_array(std::string* str) { - // DO NOT USE const_cast<char*>(str->data()) - return str->empty() ? NULL : &*str->begin(); -} - // Test to see if a set or map contains a particular key. // Returns true if the key is in the collection. template <typename Collection, typename Key>
diff --git a/base/stl_util_unittest.cc b/base/stl_util_unittest.cc index e49c852..b1f4a17 100644 --- a/base/stl_util_unittest.cc +++ b/base/stl_util_unittest.cc
@@ -436,31 +436,6 @@ EXPECT_TRUE(STLIncludes<std::set<int> >(a3, a2)); } -TEST(StringAsArrayTest, Empty) { - std::string empty; - EXPECT_EQ(nullptr, string_as_array(&empty)); -} - -TEST(StringAsArrayTest, NullTerminated) { - // If any std::string implementation is not null-terminated, this should - // fail. All compilers we use return a null-terminated buffer, but please do - // not rely on this fact in your code. - std::string str("abcde"); - str.resize(3); - EXPECT_STREQ("abc", string_as_array(&str)); -} - -TEST(StringAsArrayTest, WriteCopy) { - // With a COW implementation, this test will fail if - // string_as_array(&str) is implemented as - // const_cast<char*>(str->data()). - std::string s1("abc"); - const std::string s2(s1); - string_as_array(&s1)[1] = 'x'; - EXPECT_EQ("axc", s1); - EXPECT_EQ("abc", s2); -} - TEST(Erase, String) { const std::pair<std::string, std::string> test_data[] = { {"", ""}, {"abc", "bc"}, {"abca", "bc"},
diff --git a/base/test/perf_test_suite.cc b/base/test/perf_test_suite.cc index 58cc4f9..2e2cdbb 100644 --- a/base/test/perf_test_suite.cc +++ b/base/test/perf_test_suite.cc
@@ -26,7 +26,7 @@ CommandLine::ForCurrentProcess()->GetSwitchValuePath("log-file"); if (log_path.empty()) { PathService::Get(FILE_EXE, &log_path); -#if defined(OS_ANDROID) +#if defined(OS_ANDROID) || defined(OS_FUCHSIA) base::FilePath tmp_dir; PathService::Get(base::DIR_CACHE, &tmp_dir); log_path = tmp_dir.Append(log_path.BaseName());
diff --git a/base/trace_event/trace_event_impl.cc b/base/trace_event/trace_event_impl.cc index 649b2af..c72e1fc 100644 --- a/base/trace_event/trace_event_impl.cc +++ b/base/trace_event/trace_event_impl.cc
@@ -156,7 +156,7 @@ if (alloc_size) { parameter_copy_storage_.reset(new std::string); parameter_copy_storage_->resize(alloc_size); - char* ptr = string_as_array(parameter_copy_storage_.get()); + char* ptr = base::data(*parameter_copy_storage_); const char* end = ptr + alloc_size; if (copy) { CopyTraceEventParameter(&ptr, &name_, end);
diff --git a/build/chromeos/run_vm_test.py b/build/chromeos/run_vm_test.py index 86027be..5da39bd0 100755 --- a/build/chromeos/run_vm_test.py +++ b/build/chromeos/run_vm_test.py
@@ -82,22 +82,29 @@ def vm_test(args): + is_sanity_test = args.test_exe == 'cros_vm_sanity_test' + cros_run_vm_test_cmd = [ CROS_RUN_VM_TEST_PATH, '--start', '--board', args.board, '--cache-dir', args.cros_cache, - '--cwd', os.path.relpath(args.path_to_outdir, CHROMIUM_SRC_PATH), ] # cros_run_vm_test has trouble with relative paths that go up directories, so # cd to src/, which should be the root of all data deps. os.chdir(CHROMIUM_SRC_PATH) - for f in read_runtime_files(args.runtime_deps_path, args.path_to_outdir): + runtime_files = read_runtime_files( + args.runtime_deps_path, args.path_to_outdir) + # If we're pushing files, we need to set the cwd. + if runtime_files: + cros_run_vm_test_cmd.extend( + ['--cwd', os.path.relpath(args.path_to_outdir, CHROMIUM_SRC_PATH)]) + for f in runtime_files: cros_run_vm_test_cmd.extend(['--files', f]) - if args.test_launcher_summary_output: + if args.test_launcher_summary_output and not is_sanity_test: result_dir, result_file = os.path.split(args.test_launcher_summary_output) # If args.test_launcher_summary_output is a file in cwd, result_dir will be # an empty string, so replace it with '.' when this is the case so @@ -110,15 +117,24 @@ '--results-dest-dir', result_dir, ] - cros_run_vm_test_cmd += [ - '--cmd', - '--', - './' + args.test_exe, - '--test-launcher-shard-index=%d' % args.test_launcher_shard_index, - '--test-launcher-total-shards=%d' % args.test_launcher_total_shards, - ] + if is_sanity_test: + # run_cros_vm_test's default behavior when no cmd is specified is the sanity + # test that's baked into the VM image. This test smoke-checks the system + # browser, so deploy our locally-built chrome to the VM before testing. + cros_run_vm_test_cmd += [ + '--deploy', + '--build-dir', os.path.relpath(args.path_to_outdir, CHROMIUM_SRC_PATH), + ] + else: + cros_run_vm_test_cmd += [ + '--cmd', + '--', + './' + args.test_exe, + '--test-launcher-shard-index=%d' % args.test_launcher_shard_index, + '--test-launcher-total-shards=%d' % args.test_launcher_total_shards, + ] - if args.test_launcher_summary_output: + if args.test_launcher_summary_output and not is_sanity_test: cros_run_vm_test_cmd += [ '--test-launcher-summary-output=%s' % vm_result_file, ] @@ -126,8 +142,18 @@ logging.info('Running the following command:') logging.info(' '.join(cros_run_vm_test_cmd)) + # deploy_chrome needs a set of GN args used to build chrome to determine if + # certain libraries need to be pushed to the VM. It looks for the args via an + # env var. To trigger the default deploying behavior, give it a dummy set of + # args. + # TODO(crbug.com/823996): Make the GN-dependent deps controllable via cmd-line + # args. + env_copy = os.environ.copy() + if not env_copy.get('GN_ARGS'): + env_copy['GN_ARGS'] = 'is_chromeos = true' + env_copy['PATH'] = env_copy['PATH'] + ':' + os.path.join(CHROMITE_PATH, 'bin') return subprocess.call( - cros_run_vm_test_cmd, stdout=sys.stdout, stderr=sys.stderr) + cros_run_vm_test_cmd, stdout=sys.stdout, stderr=sys.stderr, env=env_copy) def main(): @@ -155,7 +181,12 @@ '--cros-cache', type=str, required=True, help='Path to cros cache.') vm_test_parser.add_argument( '--test-exe', type=str, required=True, - help='Path to test executable to run inside VM.') + help='Path to test executable to run inside VM. If the value is ' + '"cros_vm_sanity_test", the sanity test that ships with the VM ' + 'image runs instead. This test smokes-check the system browser ' + '(eg: loads a simple webpage, executes some javascript), so a ' + 'fully-built Chrome binary that can get deployed to the VM is ' + 'expected to available in the out-dir.') vm_test_parser.add_argument( '--path-to-outdir', type=str, required=True, help='Path to output directory, all of whose contents will be deployed '
diff --git a/build/config/chromeos/rules.gni b/build/config/chromeos/rules.gni index 97c6c571..b36d118 100644 --- a/build/config/chromeos/rules.gni +++ b/build/config/chromeos/rules.gni
@@ -10,11 +10,17 @@ } template("generate_vm_runner_script") { - _vm_image_path = "//build/cros_cache/chrome-sdk/tarballs/${cros_board}+${cros_sdk_version}+chromiumos_qemu_image.tar.xz/" - _qemu_dir = "//build/cros_cache/chrome-sdk/tarballs/${cros_board}+${cros_sdk_version}+app-emulation/" + _cache_path_prefix = + "//build/cros_cache/chrome-sdk/tarballs/${cros_board}+${cros_sdk_version}" + _vm_image_path = "${_cache_path_prefix}+chromiumos_qemu_image.tar.xz/" + _qemu_dir = "${_cache_path_prefix}+app-emulation/" action(target_name) { - forward_variables_from(invoker, [ "testonly" ]) + forward_variables_from(invoker, + [ + "testonly", + "need_toolchain", + ]) script = "//build/chromeos/create_vm_test_script.py" @@ -34,6 +40,9 @@ _vm_image_path, _qemu_dir, ] + if (defined(need_toolchain) && need_toolchain) { + data += [ "${_cache_path_prefix}+target_toolchain/" ] + } # Required arguments used at build time by the runner script generator. args = [ @@ -54,9 +63,13 @@ rebase_path(invoker.test_exe, root_build_dir), "--output-directory", rebase_path(root_out_dir, root_build_dir), - "--runtime-deps-path", - rebase_path(invoker.runtime_deps_file, root_build_dir), ] + if (defined(invoker.runtime_deps_file)) { + args += [ + "--runtime-deps-path", + rebase_path(invoker.runtime_deps_file, root_build_dir), + ] + } } } }
diff --git a/build/config/compiler/compiler.gni b/build/config/compiler/compiler.gni index 79838c0..625904a 100644 --- a/build/config/compiler/compiler.gni +++ b/build/config/compiler/compiler.gni
@@ -162,12 +162,12 @@ # Linux or Fuchsia. # TODO(pcc): Enable lld on more architectures on Linux. E.g. we probably need # to fix some of crbug.com/742655 to enable it on ARM. - use_lld = is_clang && - ((is_win && host_os != "win") || is_fuchsia || - (use_thin_lto && target_os != "chromeos") || - (is_linux && current_cpu == "x64" && target_os != "chromeos") || - (is_android && (current_cpu != "arm" || arm_version >= 7) && - current_cpu != "mipsel" && current_cpu != "mips64el")) + use_lld = + is_clang && + (is_win || is_fuchsia || (use_thin_lto && target_os != "chromeos") || + (is_linux && current_cpu == "x64" && target_os != "chromeos") || + (is_android && (current_cpu != "arm" || arm_version >= 7) && + current_cpu != "mipsel" && current_cpu != "mips64el")) } declare_args() {
diff --git a/cc/layers/surface_layer.cc b/cc/layers/surface_layer.cc index 8a123ca..6124fe4 100644 --- a/cc/layers/surface_layer.cc +++ b/cc/layers/surface_layer.cc
@@ -59,10 +59,10 @@ SetNeedsPushProperties(); } -void SurfaceLayer::SetHitTestable(bool hit_testable) { - if (hit_testable_ == hit_testable) +void SurfaceLayer::SetSurfaceHitTestable(bool surface_hit_testable) { + if (surface_hit_testable_ == surface_hit_testable) return; - hit_testable_ = hit_testable; + surface_hit_testable_ = surface_hit_testable; SetNeedsPushProperties(); } @@ -100,7 +100,7 @@ deadline_in_frames_ = 0u; layer_impl->SetFallbackSurfaceId(fallback_surface_id_); layer_impl->SetStretchContentToFillBounds(stretch_content_to_fill_bounds_); - layer_impl->SetHitTestable(hit_testable_); + layer_impl->SetSurfaceHitTestable(surface_hit_testable_); } } // namespace cc
diff --git a/cc/layers/surface_layer.h b/cc/layers/surface_layer.h index 3ed0b9a..87c5a26 100644 --- a/cc/layers/surface_layer.h +++ b/cc/layers/surface_layer.h
@@ -32,8 +32,8 @@ return stretch_content_to_fill_bounds_; } - void SetHitTestable(bool hit_testable); - bool hit_testable() const { return hit_testable_; } + void SetSurfaceHitTestable(bool surface_hit_testable); + bool surface_hit_testable() const { return surface_hit_testable_; } // Layer overrides. std::unique_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) override; @@ -64,7 +64,14 @@ base::Optional<uint32_t> deadline_in_frames_ = 0u; bool stretch_content_to_fill_bounds_ = false; - bool hit_testable_ = false; + + // Whether or not the surface should submit hit test data when submitting + // compositor frame. The bit represents that the surface layer may be + // associated with an out-of-process iframe and viz hit testing needs to know + // the hit test information of that iframe. This bit is different from a layer + // being hit testable in the renderer, a hit testable surface layer may not + // be surface hit testable (e.g., a surface layer created by video). + bool surface_hit_testable_ = false; DISALLOW_COPY_AND_ASSIGN(SurfaceLayer); };
diff --git a/cc/layers/surface_layer_impl.cc b/cc/layers/surface_layer_impl.cc index d90e233bf..def52815 100644 --- a/cc/layers/surface_layer_impl.cc +++ b/cc/layers/surface_layer_impl.cc
@@ -54,11 +54,11 @@ NoteLayerPropertyChanged(); } -void SurfaceLayerImpl::SetHitTestable(bool hit_testable) { - if (hit_testable_ == hit_testable) +void SurfaceLayerImpl::SetSurfaceHitTestable(bool surface_hit_testable) { + if (surface_hit_testable_ == surface_hit_testable) return; - hit_testable_ = hit_testable; + surface_hit_testable_ = surface_hit_testable; NoteLayerPropertyChanged(); } @@ -71,7 +71,7 @@ deadline_in_frames_ = 0u; layer_impl->SetFallbackSurfaceId(fallback_surface_id_); layer_impl->SetStretchContentToFillBounds(stretch_content_to_fill_bounds_); - layer_impl->SetHitTestable(hit_testable_); + layer_impl->SetSurfaceHitTestable(surface_hit_testable_); } void SurfaceLayerImpl::AppendQuads(viz::RenderPass* render_pass,
diff --git a/cc/layers/surface_layer_impl.h b/cc/layers/surface_layer_impl.h index d51dd6a..ce24320 100644 --- a/cc/layers/surface_layer_impl.h +++ b/cc/layers/surface_layer_impl.h
@@ -50,8 +50,8 @@ return stretch_content_to_fill_bounds_; } - void SetHitTestable(bool hit_testable); - bool hit_testable() const { return hit_testable_; } + void SetSurfaceHitTestable(bool surface_hit_testable); + bool surface_hit_testable() const { return surface_hit_testable_; } // LayerImpl overrides. std::unique_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) override; @@ -79,7 +79,7 @@ base::Optional<uint32_t> deadline_in_frames_; bool stretch_content_to_fill_bounds_ = false; - bool hit_testable_ = false; + bool surface_hit_testable_ = false; DISALLOW_COPY_AND_ASSIGN(SurfaceLayerImpl); };
diff --git a/chrome/android/java/res/layout/keyboard_accessory.xml b/chrome/android/java/res/layout/keyboard_accessory.xml index b1b51234..0be2d7ec 100644 --- a/chrome/android/java/res/layout/keyboard_accessory.xml +++ b/chrome/android/java/res/layout/keyboard_accessory.xml
@@ -18,7 +18,7 @@ android:paddingEnd="@dimen/keyboard_accessory_padding" android:paddingStart="@dimen/keyboard_accessory_padding"> - <android.support.v7.widget.RecyclerView + <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="wrap_content" android:layout_height="match_parent" />
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetCoordinator.java index 920034d6..bfe4a7e 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetCoordinator.java
@@ -4,6 +4,7 @@ package org.chromium.chrome.browser.autofill.keyboard_accessory; +import android.view.View; import android.view.ViewStub; import org.chromium.base.VisibleForTesting; @@ -25,8 +26,8 @@ * @param viewStub The view stub that can be inflated into the accessory layout. */ public AccessorySheetCoordinator(ViewStub viewStub) { - LazyViewBinderAdapter.StubHolder stubHolder = - new LazyViewBinderAdapter.StubHolder(viewStub); + LazyViewBinderAdapter.StubHolder<View> stubHolder = + new LazyViewBinderAdapter.StubHolder<>(viewStub); AccessorySheetModel model = new AccessorySheetModel(); model.addObserver(new PropertyModelChangeProcessor<>( model, stubHolder, new LazyViewBinderAdapter<>(new AccessorySheetViewBinder())));
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetMediator.java index 0b35a5c..f6cc210 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetMediator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetMediator.java
@@ -19,8 +19,7 @@ } KeyboardAccessoryData.Tab getTab() { - if (mTab == null) mTab = new KeyboardAccessoryData.Tab() {}; - return mTab; + return null; // TODO(fhorschig): Return the active tab. } @VisibleForTesting
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetViewBinder.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetViewBinder.java index 96582a6..f5f07d7 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetViewBinder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetViewBinder.java
@@ -14,7 +14,7 @@ * {@link AccessorySheetViewBinder} which will modify the view accordingly. */ class AccessorySheetViewBinder - implements LazyViewBinderAdapter.SimpleViewBinder<PropertyKey, AccessorySheetModel> { + implements LazyViewBinderAdapter.SimpleViewBinder<AccessorySheetModel, View, PropertyKey> { @Override public PropertyKey getVisibilityProperty() { return PropertyKey.VISIBLE; @@ -26,6 +26,9 @@ } @Override + public void onInitialInflation(AccessorySheetModel model, View inflatedView) {} + + @Override public void bind(AccessorySheetModel model, View inflatedView, PropertyKey propertyKey) { if (propertyKey == PropertyKey.VISIBLE) { inflatedView.setVisibility(model.isVisible() ? View.VISIBLE : View.GONE);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryCoordinator.java index 14deb00..47ed62f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryCoordinator.java
@@ -8,8 +8,11 @@ import org.chromium.base.VisibleForTesting; import org.chromium.chrome.browser.autofill.AutofillKeyboardSuggestions; -import org.chromium.chrome.browser.autofill.keyboard_accessory.KeyboardAccessoryViewBinder.AccessoryViewHolder; +import org.chromium.chrome.browser.autofill.keyboard_accessory.KeyboardAccessoryData.Action; import org.chromium.chrome.browser.autofill.keyboard_accessory.KeyboardAccessoryViewBinder.ActionViewBinder; +import org.chromium.chrome.browser.autofill.keyboard_accessory.KeyboardAccessoryViewBinder.TabViewBinder; +import org.chromium.chrome.browser.modelutil.LazyViewBinderAdapter; +import org.chromium.chrome.browser.modelutil.ListModelChangeProcessor; import org.chromium.chrome.browser.modelutil.PropertyModelChangeProcessor; import org.chromium.chrome.browser.modelutil.RecyclerViewAdapter; import org.chromium.chrome.browser.modelutil.RecyclerViewModelChangeProcessor; @@ -23,7 +26,7 @@ */ public class KeyboardAccessoryCoordinator { private final KeyboardAccessoryMediator mMediator; - private AccessoryViewHolder mViewHolder; + private LazyViewBinderAdapter.StubHolder<KeyboardAccessoryView> mViewHolder; /** * Initializes the component as soon as the native library is loaded by e.g. starting to listen @@ -34,22 +37,41 @@ public KeyboardAccessoryCoordinator(WindowAndroid windowAndroid, ViewStub viewStub) { KeyboardAccessoryModel model = new KeyboardAccessoryModel(); mMediator = new KeyboardAccessoryMediator(model, windowAndroid); + mViewHolder = new LazyViewBinderAdapter.StubHolder<>(viewStub); - RecyclerViewAdapter< - KeyboardAccessoryModel.SimpleListObservable<KeyboardAccessoryData.Action>, + model.addObserver(new PropertyModelChangeProcessor<>(model, mViewHolder, + new LazyViewBinderAdapter<>(new KeyboardAccessoryViewBinder()))); + } + + /** + * Creates an adapter to an {@link ActionViewBinder} that is wired + * up to the model change processor which listens to the given {@link KeyboardAccessoryModel}. + * @param model the {@link KeyboardAccessoryModel} the adapter gets its data from. + * @return Returns a fully initialized and wired adapter to an ActionViewBinder. + */ + static RecyclerViewAdapter<KeyboardAccessoryModel.SimpleListObservable<Action>, + ActionViewBinder.ViewHolder> + createActionsAdapter(KeyboardAccessoryModel model) { + RecyclerViewAdapter<KeyboardAccessoryModel.SimpleListObservable<Action>, ActionViewBinder.ViewHolder> actionsAdapter = new RecyclerViewAdapter<>(model.getActionList(), new ActionViewBinder()); - - mViewHolder = new AccessoryViewHolder(viewStub, actionsAdapter); - PropertyModelChangeProcessor<KeyboardAccessoryModel, AccessoryViewHolder, - KeyboardAccessoryModel.PropertyKey> modelChangeProcessor = - new PropertyModelChangeProcessor<>( - model, mViewHolder, new KeyboardAccessoryViewBinder()); - - model.addObserver(modelChangeProcessor); - model.addTabListObserver(new RecyclerViewModelChangeProcessor<>( - new RecyclerViewAdapter<>(model.getTabList(), null))); model.addActionListObserver(new RecyclerViewModelChangeProcessor<>(actionsAdapter)); + return actionsAdapter; + } + + /** + * Creates the {@link TabViewBinder} that is linked to the {@link ListModelChangeProcessor} that + * connects the given {@link KeyboardAccessoryView} to the given {@link KeyboardAccessoryModel}. + * @param model the {@link KeyboardAccessoryModel} whose data is used by the TabViewBinder. + * @param inflatedView the {@link KeyboardAccessoryView} to which the TabViewBinder binds data. + * @return Returns a fully initialized and wired {@link TabViewBinder}. + */ + static TabViewBinder createTabViewBinder( + KeyboardAccessoryModel model, KeyboardAccessoryView inflatedView) { + TabViewBinder tabViewBinder = new TabViewBinder(); + model.addTabListObserver( + new ListModelChangeProcessor<>(model.getTabList(), inflatedView, tabViewBinder)); + return tabViewBinder; } /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryData.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryData.java index 71c0994e..1a19145 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryData.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryData.java
@@ -4,6 +4,8 @@ package org.chromium.chrome.browser.autofill.keyboard_accessory; +import android.graphics.drawable.Drawable; + import java.util.ArrayList; import java.util.List; @@ -44,7 +46,17 @@ * accessory. Typically, a tab is responsible to change the bottom sheet below the accessory. */ public interface Tab { - // E.g. getIcon(), getDescription() and onTabSelected() + /** + * Provides the icon that will be displayed in the {@link KeyboardAccessoryCoordinator}. + * @return The small icon that identifies this tab uniquely. + */ + Drawable getIcon(); + + /** + * The description for this tab. It will become the content description of the icon. + * @return A short string describing the task of this tab. + */ + String getContentDescription(); } /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryView.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryView.java index 44eabd9..ea684d7 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryView.java
@@ -8,6 +8,8 @@ import android.content.Context; import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.support.design.widget.TabLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.AttributeSet; @@ -30,6 +32,7 @@ class KeyboardAccessoryView extends LinearLayout { private HorizontalScrollView mSuggestionsView; private RecyclerView mActionsView; + private TabLayout mTabLayout; private static class HorizontalDividerItemDecoration extends RecyclerView.ItemDecoration { private final int mHorizontalMargin; @@ -58,6 +61,8 @@ mActionsView = findViewById(R.id.actions_view); initializeHorizontalRecyclerView(mActionsView); + mTabLayout = findViewById(R.id.tabs); + mSuggestionsView = findViewById(R.id.suggestions_view); // Apply RTL layout changes to the views childen: @@ -84,6 +89,29 @@ mActionsView.setAdapter(adapter); } + /** + * Creates a new tab and appends it to the end of the tab layout at the start of the bar. + * @param icon The icon to be displayed in the tab bar. + * @param contentDescription The contentDescription to be used for the tab icon. + */ + void addTabAt(int position, Drawable icon, CharSequence contentDescription) { + TabLayout.Tab tab = mTabLayout.newTab(); + tab.setIcon(icon); // TODO(fhorschig): Call .mutate() when changing the active tint. + tab.setContentDescription(contentDescription); + mTabLayout.addTab(tab, position); + } + + void removeTabAt(int position) { + mTabLayout.removeTabAt(position); + } + + /** + * Removes all tabs. + */ + void clearTabs() { + mTabLayout.removeAllTabs(); + } + // TODO(crbug/722897): Check to handle RTL. // TODO(fhorschig): This should use a RecyclerView. The model should contain single suggestions. /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryViewBinder.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryViewBinder.java index e069a72d..a82b80fe 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryViewBinder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryViewBinder.java
@@ -7,50 +7,23 @@ import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.ViewGroup; -import android.view.ViewStub; import org.chromium.chrome.R; import org.chromium.chrome.browser.autofill.keyboard_accessory.KeyboardAccessoryData.Action; +import org.chromium.chrome.browser.autofill.keyboard_accessory.KeyboardAccessoryData.Tab; import org.chromium.chrome.browser.autofill.keyboard_accessory.KeyboardAccessoryModel.PropertyKey; -import org.chromium.chrome.browser.modelutil.PropertyModelChangeProcessor; +import org.chromium.chrome.browser.modelutil.LazyViewBinderAdapter; +import org.chromium.chrome.browser.modelutil.ListModelChangeProcessor; import org.chromium.chrome.browser.modelutil.RecyclerViewAdapter; import org.chromium.ui.widget.ButtonCompat; -import javax.annotation.Nullable; - /** * Observes {@link KeyboardAccessoryModel} changes (like a newly available tab) and triggers the * {@link KeyboardAccessoryViewBinder} which will modify the view accordingly. */ class KeyboardAccessoryViewBinder - implements PropertyModelChangeProcessor.ViewBinder<KeyboardAccessoryModel, - KeyboardAccessoryViewBinder.AccessoryViewHolder, PropertyKey> { - public static class AccessoryViewHolder { - @Nullable - private KeyboardAccessoryView mView; // Remains null until |mViewStub| is inflated. - private final ViewStub mViewStub; - private final RecyclerViewAdapter<KeyboardAccessoryModel.SimpleListObservable<Action>, - ActionViewBinder.ViewHolder> mActionsAdapter; - - AccessoryViewHolder(ViewStub viewStub, - RecyclerViewAdapter<KeyboardAccessoryModel.SimpleListObservable<Action>, - ActionViewBinder.ViewHolder> actionsAdapter) { - mViewStub = viewStub; - mActionsAdapter = actionsAdapter; - mActionsAdapter.setViewBinder(new ActionViewBinder()); - } - - @Nullable - public KeyboardAccessoryView getView() { - return mView; - } - - public void initializeView() { - mView = (KeyboardAccessoryView) mViewStub.inflate(); - mView.setActionsAdapter(mActionsAdapter); - } - } - + implements LazyViewBinderAdapter.SimpleViewBinder<KeyboardAccessoryModel, + KeyboardAccessoryView, PropertyKey> { static class ActionViewBinder implements RecyclerViewAdapter.ViewBinder< KeyboardAccessoryModel.SimpleListObservable<Action>, ActionViewBinder.ViewHolder> { static class ViewHolder extends RecyclerView.ViewHolder { @@ -80,26 +53,69 @@ } } - @Override - public void bind( - KeyboardAccessoryModel model, AccessoryViewHolder viewHolder, PropertyKey propertyKey) { - KeyboardAccessoryView view = viewHolder.getView(); - if (view != null) { // If the view was previously inflated, update it and return. - updateViewByProperty(model, view, propertyKey); - return; - } - if (propertyKey != PropertyKey.VISIBLE || !model.isVisible()) { - return; // Ignore model changes before the view is shown for the first time. + static class TabViewBinder implements ListModelChangeProcessor.ViewBinder< + KeyboardAccessoryModel.SimpleListObservable<Tab>, KeyboardAccessoryView> { + @Override + public void onItemsInserted(KeyboardAccessoryModel.SimpleListObservable<Tab> model, + KeyboardAccessoryView view, int index, int count) { + assert count > 0 : "Tried to insert invalid amount of tabs - must be at least one."; + while (count-- > 0) { + Tab tab = model.get(index); + view.addTabAt(index, tab.getIcon(), tab.getContentDescription()); + ++index; + } } - // If the view is visible for the first time, update ALL its properties. - viewHolder.initializeView(); - for (PropertyKey key : PropertyKey.ALL_PROPERTIES) { - updateViewByProperty(model, viewHolder.getView(), key); + @Override + public void onItemsRemoved(KeyboardAccessoryModel.SimpleListObservable<Tab> model, + KeyboardAccessoryView view, int index, int count) { + assert count > 0 : "Tried to remove invalid amount of tabs - must be at least one."; + while (count-- > 0) { + view.removeTabAt(index++); + } + } + + @Override + public void onItemsChanged(KeyboardAccessoryModel.SimpleListObservable<Tab> model, + KeyboardAccessoryView view, int index, int count) { + // TODO(fhorschig): Implement fine-grained, ranged changes should the need arise. + updateAllTabs(view, model); + } + + void updateAllTabs(KeyboardAccessoryView view, + KeyboardAccessoryModel.SimpleListObservable<Tab> model) { + view.clearTabs(); + for (int i = 0; i < model.getItemCount(); ++i) { + Tab tab = model.get(i); + view.addTabAt(i, tab.getIcon(), tab.getContentDescription()); + } } } - private void updateViewByProperty( + @Override + public PropertyKey getVisibilityProperty() { + return PropertyKey.VISIBLE; + } + + @Override + public boolean isVisible(KeyboardAccessoryModel model) { + return model.isVisible(); + } + + @Override + public void onInitialInflation( + KeyboardAccessoryModel model, KeyboardAccessoryView inflatedView) { + for (PropertyKey key : PropertyKey.ALL_PROPERTIES) { + bind(model, inflatedView, key); + } + + inflatedView.setActionsAdapter(KeyboardAccessoryCoordinator.createActionsAdapter(model)); + KeyboardAccessoryCoordinator.createTabViewBinder(model, inflatedView) + .updateAllTabs(inflatedView, model.getTabList()); + } + + @Override + public void bind( KeyboardAccessoryModel model, KeyboardAccessoryView view, PropertyKey propertyKey) { if (propertyKey == PropertyKey.VISIBLE) { view.setVisible(model.isVisible());
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/Stack.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/Stack.java index 69eee007..c38d69f 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/Stack.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/phone/stack/Stack.java
@@ -566,6 +566,10 @@ mLayout.uiDoneEnteringStack(); break; case FULL_ROLL: + for (int i = 0; i < mStackTabs.length; i++) { + mStackTabs[i].getLayoutTab().setTiltX(0, 0); + mStackTabs[i].getLayoutTab().setTiltY(0, 0); + } springBack(time); break; case TAB_FOCUSED: @@ -1799,106 +1803,22 @@ } /** - * ComputeTabPosition pass 4: - * Update the tilt of each tab. + * Update the tilt of each tab for full roll if necessary. * * @param time The current time of the app in ms. * @param stackRect The frame of the stack. */ - private void computeTabTiltHelper(long time, RectF stackRect) { - final boolean portrait = mCurrentMode == Orientation.PORTRAIT; - final float parentWidth = stackRect.width(); - final float parentHeight = stackRect.height(); - final float overscrollPercent = computeOverscrollPercent(); - - // All the animations that sets the tilt value must be listed here. - if (mOverviewAnimationType == OverviewAnimationType.START_PINCH - || mOverviewAnimationType == OverviewAnimationType.DISCARD - || mOverviewAnimationType == OverviewAnimationType.FULL_ROLL - || mOverviewAnimationType == OverviewAnimationType.TAB_FOCUSED - || mOverviewAnimationType == OverviewAnimationType.UNDISCARD - || mOverviewAnimationType == OverviewAnimationType.DISCARD_ALL) { - // Let the animation handle setting tilt values - } else if (mPinch0TabIndex >= 0 || overscrollPercent == 0.0f - || mOverviewAnimationType == OverviewAnimationType.REACH_TOP) { - // Keep tabs flat during pinch - for (int i = 0; i < mStackTabs.length; ++i) { - StackTab stackTab = mStackTabs[i]; - LayoutTab layoutTab = stackTab.getLayoutTab(); - layoutTab.setTiltX(0, 0); - layoutTab.setTiltY(0, 0); - } - } else if (overscrollPercent < 0) { - if (mOverScrollCounter >= OVERSCROLL_FULL_ROLL_TRIGGER) { - startAnimation(time, OverviewAnimationType.FULL_ROLL); - mOverScrollCounter = 0; - // Remove overscroll so when the animation finishes the overscroll won't - // be bothering. - setScrollTarget( - MathUtils.clamp(mScrollOffset, getMinScroll(false), getMaxScroll(false)), - false); - } else { - // Handle tilting tabs backwards (top or left of the tab goes away - // from the camera). Each tab pivots the same amount around the - // same point on the screen. The pivot point is the middle of the - // top tab. - - float tilt = 0; - if (overscrollPercent < -OVERSCROLL_TOP_SLIDE_PCTG) { - // Start tilting tabs after they're done sliding together. - float scaledOverscroll = (overscrollPercent + OVERSCROLL_TOP_SLIDE_PCTG) - / (1 - OVERSCROLL_TOP_SLIDE_PCTG); - tilt = mUnderScrollAngleInterpolator.getInterpolation(-scaledOverscroll) - * -mMaxOverScrollAngle * BACKWARDS_TILT_SCALE; - } - - float pivotOffset = 0; - LayoutTab topTab = mStackTabs[mStackTabs.length - 1].getLayoutTab(); - pivotOffset = portrait ? topTab.getScaledContentHeight() / 2 + topTab.getY() - : topTab.getScaledContentWidth() / 2 + topTab.getX(); - - for (int i = 0; i < mStackTabs.length; ++i) { - StackTab stackTab = mStackTabs[i]; - LayoutTab layoutTab = stackTab.getLayoutTab(); - if (portrait) { - layoutTab.setTiltX(tilt, pivotOffset - layoutTab.getY()); - } else { - layoutTab.setTiltY(LocalizationUtils.isLayoutRtl() ? -tilt : tilt, - pivotOffset - layoutTab.getX()); - } - } - } - } else { - // Handle tilting tabs forwards (top or left of the tab comes - // towards the camera). Each tab pivots around a point 1/3 of the - // way down from the top/left of itself. The angle angle is scaled - // based on its distance away from the top/left. - - float tilt = mOverScrollAngleInterpolator.getInterpolation(overscrollPercent) - * mMaxOverScrollAngle; - float offset = mOverscrollSlideInterpolator.getInterpolation(overscrollPercent) - * mMaxOverScrollSlide; - - for (int i = 0; i < mStackTabs.length; ++i) { - StackTab stackTab = mStackTabs[i]; - LayoutTab layoutTab = stackTab.getLayoutTab(); - if (portrait) { - // portrait LTR & RTL - float adjust = MathUtils.clamp((layoutTab.getY() / parentHeight) + 0.50f, 0, 1); - layoutTab.setTiltX(tilt * adjust, layoutTab.getScaledContentHeight() / 3); - layoutTab.setY(layoutTab.getY() + offset); - } else if (LocalizationUtils.isLayoutRtl()) { - // landscape RTL - float adjust = MathUtils.clamp(-(layoutTab.getX() / parentWidth) + 0.50f, 0, 1); - layoutTab.setTiltY(-tilt * adjust, layoutTab.getScaledContentWidth() * 2 / 3); - layoutTab.setX(layoutTab.getX() - offset); - } else { - // landscape LTR - float adjust = MathUtils.clamp((layoutTab.getX() / parentWidth) + 0.50f, 0, 1); - layoutTab.setTiltY(tilt * adjust, layoutTab.getScaledContentWidth() / 3); - layoutTab.setX(layoutTab.getX() + offset); - } - } + private void fullRollHelper(long time, RectF stackRect) { + if (mOverviewAnimationType != OverviewAnimationType.FULL_ROLL + && computeOverscrollPercent() < 0 + && mOverScrollCounter >= OVERSCROLL_FULL_ROLL_TRIGGER) { + startAnimation(time, OverviewAnimationType.FULL_ROLL); + mOverScrollCounter = 0; + // Remove overscroll so when the animation finishes the overscroll won't + // be bothering. + setScrollTarget( + MathUtils.clamp(mScrollOffset, getMinScroll(false), getMaxScroll(false)), + false); } } @@ -1923,8 +1843,8 @@ // Step 3: Compute the actual position. computeTabOffsetHelper(stackRect); - // Step 4: Update the tilt of each tab. - computeTabTiltHelper(time, stackRect); + // Step 4: Test if the full-roll animation needs to be run. + fullRollHelper(time, stackRect); // Step 5: Clipping, visibility and adjust overall alpha. computeTabClippingVisibilityHelper();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java index f2bf71d..acb5f6a 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/ClientManager.java
@@ -148,6 +148,7 @@ private long mLastMayLaunchUrlTimestamp; private boolean mCanUseHiddenTab; private boolean mAllowParallelRequest; + private boolean mShouldGetPageLoadMetrics; public SessionParams(Context context, int uid, DisconnectCallback callback, PostMessageHandler postMessageHandler) { @@ -654,6 +655,17 @@ return params != null ? params.mAllowParallelRequest : false; } + public synchronized void setShouldGetPageLoadMetricsForSession( + CustomTabsSessionToken session, boolean allowed) { + SessionParams params = mSessionParams.get(session); + if (params != null) params.mShouldGetPageLoadMetrics = allowed; + } + + public synchronized boolean shouldGetPageLoadMetrics(CustomTabsSessionToken session) { + SessionParams params = mSessionParams.get(session); + return params != null ? params.mShouldGetPageLoadMetrics : false; + } + /** * Returns whether an origin is first-party with respect to a session, that is if the * application linked to the session has a relation with the provided origin. This does not
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java index 93d6d92..f770efe 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
@@ -1094,9 +1094,12 @@ * @param metricName Name of the page load metric. * @param navigationStartTick Absolute navigation start time, as TimeTicks taken from native. * @param offsetMs Offset in ms from navigationStart for the page load metric. + * + * @return Whether the metric has been dispatched to the client. */ boolean notifySinglePageLoadMetric(CustomTabsSessionToken session, String metricName, long navigationStartTick, long offsetMs) { + if (!mClientManager.shouldGetPageLoadMetrics(session)) return false; if (!mNativeTickOffsetUsComputed) { // Compute offset from time ticks to uptimeMillis. mNativeTickOffsetUsComputed = true;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java b/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java index c15fcaff..6f9e3e42 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java
@@ -86,7 +86,7 @@ // LocaleManager is a singleton and it should not have strong reference to UI objects. // SnackbarManager is owned by ChromeActivity and is not null as long as the activity is alive. private WeakReference<SnackbarManager> mSnackbarManager; - private SpecialLocaleHandler mLocaleHandler; + private LocaleTemplateUrlLoader mLocaleTemplateUrlLoader; private SnackbarController mSnackbarController = new SnackbarController() { @Override @@ -170,7 +170,7 @@ */ public void addSpecialSearchEngines() { if (!isSpecialLocaleEnabled()) return; - getSpecialLocaleHandler().loadTemplateUrls(); + getLocaleTemplateUrlLoader().loadTemplateUrls(); } /** @@ -178,7 +178,7 @@ */ public void removeSpecialSearchEngines() { if (isSpecialLocaleEnabled()) return; - getSpecialLocaleHandler().removeTemplateUrls(); + getLocaleTemplateUrlLoader().removeTemplateUrls(); } /** @@ -187,7 +187,7 @@ */ public void overrideDefaultSearchEngine() { if (!isSearchEngineAutoSwitchEnabled() || !isSpecialLocaleEnabled()) return; - getSpecialLocaleHandler().overrideDefaultSearchProvider(); + getLocaleTemplateUrlLoader().overrideDefaultSearchProvider(); showSnackbar(ContextUtils.getApplicationContext().getString(R.string.using_sogou)); } @@ -197,7 +197,7 @@ */ public void revertDefaultSearchEngineOverride() { if (!isSearchEngineAutoSwitchEnabled() || isSpecialLocaleEnabled()) return; - getSpecialLocaleHandler().setGoogleAsDefaultSearch(); + getLocaleTemplateUrlLoader().setGoogleAsDefaultSearch(); showSnackbar(ContextUtils.getApplicationContext().getString(R.string.using_google)); } @@ -415,14 +415,6 @@ } /** - * @return The search engine type for the given url if applicable. - * See template_url_prepopulate_data.cc for all values. - */ - protected static int getSearchEngineType(String url) { - return nativeGetEngineType(url); - } - - /** * To be called after the user has made a selection from a search engine promo dialog. * @param type The type of search engine promo dialog that was shown. * @param keywords The keywords for all search engines listed in the order shown to the user. @@ -444,9 +436,11 @@ */ protected void onUserLeavePromoDialogWithNoConfirmedChoice(@SearchEnginePromoType int type) {} - private SpecialLocaleHandler getSpecialLocaleHandler() { - if (mLocaleHandler == null) mLocaleHandler = new SpecialLocaleHandler(getSpecialLocaleId()); - return mLocaleHandler; + private LocaleTemplateUrlLoader getLocaleTemplateUrlLoader() { + if (mLocaleTemplateUrlLoader == null) { + mLocaleTemplateUrlLoader = new LocaleTemplateUrlLoader(getSpecialLocaleId()); + } + return mLocaleTemplateUrlLoader; } /** @@ -515,6 +509,4 @@ */ public void recordLocaleBasedSearchMetrics( boolean isFromSearchWidget, String url, @PageTransition int transition) {} - - private static native int nativeGetEngineType(String url); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleTemplateUrlLoader.java b/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleTemplateUrlLoader.java new file mode 100644 index 0000000..f076993 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/locale/LocaleTemplateUrlLoader.java
@@ -0,0 +1,80 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.locale; + +/** + * A loader class for changes of template url in a given special locale. This is a JNI bridge and + * it owns the native object. Make sure to call destroy() after this object is not used anymore. + */ +public class LocaleTemplateUrlLoader { + private final String mLocaleId; + private long mNativeLocaleTemplateUrlLoader; + private boolean mAddedToService; + + /** + * Creates a {@link LocaleTemplateUrlLoader} that handles changes for the given locale. + * @param localeId Country id of the locale. Should be 2 characters long. + */ + public LocaleTemplateUrlLoader(String localeId) { + assert localeId.length() == 2; + mLocaleId = localeId; + mNativeLocaleTemplateUrlLoader = nativeInit(localeId); + } + + /** + * This *must* be called after the {@link LocaleTemplateUrlLoader} is not used anymore. + */ + public void destroy() { + assert mNativeLocaleTemplateUrlLoader != 0; + nativeDestroy(mNativeLocaleTemplateUrlLoader); + mNativeLocaleTemplateUrlLoader = 0; + } + + /** + * Loads the template urls for this locale, and adds it to template url service. If the device + * was initialized in the given special locale, no-op here. + * @return Whether loading is needed. + */ + public boolean loadTemplateUrls() { + assert mNativeLocaleTemplateUrlLoader != 0; + // If the locale is the same as the one set at install time, there is no need to load the + // search engines, as they are already cached in the template url service. + mAddedToService = nativeLoadTemplateUrls(mNativeLocaleTemplateUrlLoader); + return mAddedToService; + } + + /** + * Removes the template urls that was added by {@link #loadTemplateUrls()}. No-op if + * {@link #loadTemplateUrls()} returned false. + */ + public void removeTemplateUrls() { + assert mNativeLocaleTemplateUrlLoader != 0; + if (mAddedToService) nativeRemoveTemplateUrls(mNativeLocaleTemplateUrlLoader); + } + + /** + * Overrides the default search provider in special locale. + */ + public void overrideDefaultSearchProvider() { + assert mNativeLocaleTemplateUrlLoader != 0; + nativeOverrideDefaultSearchProvider(mNativeLocaleTemplateUrlLoader); + } + + /** + * Sets the default search provider back to Google. + */ + public void setGoogleAsDefaultSearch() { + assert mNativeLocaleTemplateUrlLoader != 0; + nativeSetGoogleAsDefaultSearch(mNativeLocaleTemplateUrlLoader); + } + + private static native long nativeInit(String localeId); + private static native void nativeDestroy(long nativeLocaleTemplateUrlLoader); + private static native boolean nativeLoadTemplateUrls(long nativeLocaleTemplateUrlLoader); + private static native void nativeRemoveTemplateUrls(long nativeLocaleTemplateUrlLoader); + private static native void nativeOverrideDefaultSearchProvider( + long nativeLocaleTemplateUrlLoader); + private static native void nativeSetGoogleAsDefaultSearch(long nativeLocaleTemplateUrlLoader); +}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/locale/SpecialLocaleHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/locale/SpecialLocaleHandler.java deleted file mode 100644 index 2745c95f..0000000 --- a/chrome/android/java/src/org/chromium/chrome/browser/locale/SpecialLocaleHandler.java +++ /dev/null
@@ -1,79 +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. - -package org.chromium.chrome.browser.locale; - -/** - * A Handler for changes in a given special locale. This is a JNI bridge and it owns the native - * object. Make sure to call Destroy() after this object is not used anymore. - */ -public class SpecialLocaleHandler { - private final String mLocaleId; - private long mNativeSpecialLocaleHandler; - private boolean mAddedToService; - - /** - * Creates a {@link SpecialLocaleHandler} that handles changes for the given locale. - * @param localeId Country id of the locale. Should be 2 characters long. - */ - public SpecialLocaleHandler(String localeId) { - assert localeId.length() == 2; - mLocaleId = localeId; - mNativeSpecialLocaleHandler = nativeInit(localeId); - } - - /** - * This *must* be called after the {@link SpecialLocaleHandler} is not used anymore. - */ - public void destroy() { - assert mNativeSpecialLocaleHandler != 0; - nativeDestroy(mNativeSpecialLocaleHandler); - mNativeSpecialLocaleHandler = 0; - } - - /** - * Loads the template urls for this locale, and adds it to template url service. If the device - * was initialized in the given special locale, no-op here. - * @return Whether loading is needed. - */ - public boolean loadTemplateUrls() { - assert mNativeSpecialLocaleHandler != 0; - // If the locale is the same as the one set at install time, there is no need to load the - // search engines, as they are already cached in the template url service. - mAddedToService = nativeLoadTemplateUrls(mNativeSpecialLocaleHandler); - return mAddedToService; - } - - /** - * Removes the template urls that was added by {@link #loadTemplateUrls()}. No-op if - * {@link #loadTemplateUrls()} returned false. - */ - public void removeTemplateUrls() { - assert mNativeSpecialLocaleHandler != 0; - if (mAddedToService) nativeRemoveTemplateUrls(mNativeSpecialLocaleHandler); - } - - /** - * Overrides the default search provider in special locale. - */ - public void overrideDefaultSearchProvider() { - assert mNativeSpecialLocaleHandler != 0; - nativeOverrideDefaultSearchProvider(mNativeSpecialLocaleHandler); - } - - /** - * Sets the default search provider back to Google. - */ - public void setGoogleAsDefaultSearch() { - assert mNativeSpecialLocaleHandler != 0; - nativeSetGoogleAsDefaultSearch(mNativeSpecialLocaleHandler); - } - - private static native long nativeInit(String localeId); - private static native void nativeDestroy(long nativeSpecialLocaleHandler); - private static native boolean nativeLoadTemplateUrls(long nativeSpecialLocaleHandler); - private static native void nativeRemoveTemplateUrls(long nativeSpecialLocaleHandler); - private static native void nativeOverrideDefaultSearchProvider(long nativeSpecialLocaleHandler); - private static native void nativeSetGoogleAsDefaultSearch(long nativeSpecialLocaleHandler); -}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/modelutil/LazyViewBinderAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/modelutil/LazyViewBinderAdapter.java index 17d9f45..268e89d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/modelutil/LazyViewBinderAdapter.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/modelutil/LazyViewBinderAdapter.java
@@ -14,43 +14,47 @@ * inflated view whenever a property with key {@link K} has changed. * The view used by this class is passed in as a {@link ViewStub} wrapped in a {@link StubHolder}. * The held stub is inflated when the observed model becomes visible for the first time. - * @param <K> The type of property keys which are published by model {@link M}. * @param <M> The observable model that contains the data which should be should to the view. + * @param <V> The type of the fully inflated ViewStub. + * @param <K> The type of property keys which are published by model {@link M}. */ -public class LazyViewBinderAdapter<K, M extends PropertyObservable<K>> - implements PropertyModelChangeProcessor.ViewBinder<M, LazyViewBinderAdapter.StubHolder, K> { +public class LazyViewBinderAdapter<M extends PropertyObservable<K>, V extends View, K> + implements PropertyModelChangeProcessor + .ViewBinder<M, LazyViewBinderAdapter.StubHolder<V>, K> { /** + * * Holds a {@link ViewStub} that is inflated by the {@link LazyViewBinderAdapter} which calls a * {@link SimpleViewBinder}. + * @param <V> The View type that the StubHolder holds. */ - public static class StubHolder { - @Nullable - private View mView; // Remains null until |mViewStub| is inflated. + public static class StubHolder<V extends View> { + private @Nullable V mView; // Remains null until |mViewStub| is inflated. private final ViewStub mViewStub; public StubHolder(ViewStub viewStub) { mViewStub = viewStub; } - // TODO(fhorschig): Consider parameterizing this view. @Nullable - public View getView() { + public V getView() { return mView; } + @SuppressWarnings("unchecked") // The StubHolder always holds a V! void inflateView() { - mView = mViewStub.inflate(); + mView = (V) mViewStub.inflate(); } } /** * A {@link PropertyModelChangeProcessor.ViewBinder} that provides information about when to * inflate a viewStub managed by a {@link LazyViewBinderAdapter}. - * @param <K> The class of the properties that model {@link M} propagates. * @param <M> The model holding data about the view and it's visibility. + * @param <V> The type of the fully inflated ViewStub. + * @param <K> The class of the properties that model {@link M} propagates. */ - public interface SimpleViewBinder<K, M> - extends PropertyModelChangeProcessor.ViewBinder<M, View, K> { + public interface SimpleViewBinder<M, V extends View, K> + extends PropertyModelChangeProcessor.ViewBinder<M, V, K> { /** * @return The Property that will indicate when this component becomes visible. */ @@ -64,26 +68,34 @@ * @return whether this component should be visible now. */ boolean isVisible(M model); + + /** + * Called when the lazy inflation of the view happens. + * @param model The model which might be useful for initializing the just inflated view. + * @param inflatedView The freshly inflated view. + */ + void onInitialInflation(M model, V inflatedView); } - private final SimpleViewBinder<K, M> mBinder; + private final SimpleViewBinder<M, V, K> mBinder; /** * Creates the adapter with a {@link SimpleViewBinder} that will be used to determine when to * inflate the {@link StubHolder} that is passed in by the {@link PropertyModelChangeProcessor}. * @param binder The binder to be called with the fully inflated view. */ - public LazyViewBinderAdapter(SimpleViewBinder<K, M> binder) { + public LazyViewBinderAdapter(SimpleViewBinder<M, V, K> binder) { mBinder = binder; } @Override - public void bind(M model, StubHolder stubHolder, K propertyKey) { + public void bind(M model, StubHolder<V> stubHolder, K propertyKey) { if (stubHolder.getView() == null) { if (propertyKey != mBinder.getVisibilityProperty() || !mBinder.isVisible(model)) { return; // Ignore model changes before the view is shown for the first time. } stubHolder.inflateView(); + mBinder.onInitialInflation(model, stubHolder.getView()); } mBinder.bind(model, stubHolder.getView(), propertyKey); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/modelutil/ListModelChangeProcessor.java b/chrome/android/java/src/org/chromium/chrome/browser/modelutil/ListModelChangeProcessor.java new file mode 100644 index 0000000..6ef7450e3 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/modelutil/ListModelChangeProcessor.java
@@ -0,0 +1,68 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.modelutil; + +import android.support.annotation.Nullable; +import android.support.v7.widget.RecyclerView; + +/** + * A model change processor for use with a {@link ListObservable} model. The + * {@link ListModelChangeProcessor} should be registered as a list observer of the model. + * Internally uses a view binder to bind model properties to a view like a TabLayout. + * + * Do not use this class to fill {@link RecyclerView}s - consider using the + * {@link RecyclerViewModelChangeProcessor} which was specifically designed for that use case! + * + * @param <M> The {@link ListObservable} model. + * @param <V> The view object that is changing. + */ +public class ListModelChangeProcessor<M extends ListObservable, V> + implements ListObservable.ListObserver { + /** + * A generic view binder that associates a view with a model. + * @param <M> The {@link ListObservable} model. + * @param <V> The view or view holder that should be changed based on the model. + */ + public interface ViewBinder<M, V> { + void onItemsInserted(M model, V view, int index, int count); + void onItemsRemoved(M model, V view, int index, int count); + void onItemsChanged(M model, V view, int index, int count); + } + + private final V mView; + private final M mModel; + private final ViewBinder<M, V> mViewBinder; + + /** + * Construct a new ListModelChangeProcessor. + * @param model The model containing the data to be bound. + * @param view The view to which data will be bound. + * @param viewBinder A class that binds the model to the view. + */ + public ListModelChangeProcessor(M model, V view, ViewBinder<M, V> viewBinder) { + mModel = model; + mView = view; + mViewBinder = viewBinder; + } + + @Override + public void onItemRangeInserted(ListObservable source, int index, int count) { + assert source == mModel; + mViewBinder.onItemsInserted(mModel, mView, index, count); + } + + @Override + public void onItemRangeRemoved(ListObservable source, int index, int count) { + assert source == mModel; + mViewBinder.onItemsRemoved(mModel, mView, index, count); + } + + @Override + public void onItemRangeChanged( + ListObservable source, int index, int count, @Nullable Object payload) { + assert source == mModel; + mViewBinder.onItemsChanged(mModel, mView, index, count); + } +} \ No newline at end of file
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/ContextualSuggestionsPreference.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/ContextualSuggestionsPreference.java index 8972603..79a0da5 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/ContextualSuggestionsPreference.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/ContextualSuggestionsPreference.java
@@ -7,7 +7,6 @@ import android.content.Context; import android.content.Intent; import android.os.Bundle; -import android.preference.Preference; import android.preference.PreferenceFragment; import android.support.annotation.Nullable; import android.text.SpannableString; @@ -109,12 +108,8 @@ } return true; }); - mSwitch.setManagedPreferenceDelegate(new ManagedPreferenceDelegate() { - @Override - public boolean isPreferenceControlledByPolicy(Preference preference) { - return ContextualSuggestionsBridge.isEnterprisePolicyManaged(); - } - }); + mSwitch.setManagedPreferenceDelegate( + preference -> ContextualSuggestionsBridge.isEnterprisePolicyManaged()); } /** Helper method to update the enabled state of the switch. */
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java index 1366f2c..0a9de77 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/MainPreferences.java
@@ -288,7 +288,8 @@ if (PREF_SEARCH_ENGINE.equals(preference.getKey())) { return TemplateUrlService.getInstance().isDefaultSearchManaged(); } - return super.isPreferenceClickDisabledByPolicy(preference); + return isPreferenceControlledByPolicy(preference) + || isPreferenceControlledByCustodian(preference); } }; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/ManagedPreferenceDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/ManagedPreferenceDelegate.java index 2773aea..ffb00f0 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/ManagedPreferenceDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/ManagedPreferenceDelegate.java
@@ -31,20 +31,20 @@ * ChromeSwitchPreference enableRocketsPref = ...; * enableRocketsPref.setManagedPreferenceDelegate(new RocketManagedPreferenceDelegate()); */ -public abstract class ManagedPreferenceDelegate { +public interface ManagedPreferenceDelegate { /** * Returns whether the given Preference is controlled by an enterprise policy. * @param preference the {@link Preference} under consideration. * @return whether the given Preference is controlled by an enterprise policy. */ - public abstract boolean isPreferenceControlledByPolicy(Preference preference); + boolean isPreferenceControlledByPolicy(Preference preference); /** * Returns whether the given Preference is controlled by the supervised user's custodian. * @param preference the {@link Preference} under consideration. * @return whether the given Preference is controlled by the supervised user's custodian. */ - public boolean isPreferenceControlledByCustodian(Preference preference) { + default boolean isPreferenceControlledByCustodian(Preference preference) { return false; } @@ -55,13 +55,9 @@ * informational subscreen, in which case this method needs a custom implementation. */ // TODO(bauerb): Rename to isPreferenceClickDisabled. - public boolean isPreferenceClickDisabledByPolicy(Preference preference) { - return !isPreferenceUserModifiable(preference); - } - - private boolean isPreferenceUserModifiable(Preference preference) { - return !isPreferenceControlledByPolicy(preference) - && !isPreferenceControlledByCustodian(preference); + default boolean isPreferenceClickDisabledByPolicy(Preference preference) { + return isPreferenceControlledByPolicy(preference) || + isPreferenceControlledByCustodian(preference); } /** @@ -70,7 +66,7 @@ * * This should be called once, before the preference is displayed. */ - public void initPreference(Preference preference) { + default void initPreference(Preference preference) { if (isPreferenceControlledByPolicy(preference)) { preference.setIcon(ManagedPreferencesUtils.getManagedByEnterpriseIconId()); } else if (isPreferenceControlledByCustodian(preference)) { @@ -99,7 +95,7 @@ * @param preference The Preference that owns the view * @param view The View that was bound to the Preference */ - public void onBindViewToPreference(Preference preference, View view) { + default void onBindViewToPreference(Preference preference, View view) { if (isPreferenceClickDisabledByPolicy(preference)) { ViewUtils.setEnabledRecursive(view, false); } @@ -114,7 +110,7 @@ * @return true if the click event was handled by this helper and shouldn't be further * propagated; false otherwise. */ - public boolean onClickPreference(Preference preference) { + default boolean onClickPreference(Preference preference) { if (!isPreferenceClickDisabledByPolicy(preference)) return false; if (isPreferenceControlledByPolicy(preference)) {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPreferences.java index 3b7b72c6..061d5df 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPreferences.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/datareduction/DataReductionPreferences.java
@@ -18,7 +18,6 @@ import org.chromium.chrome.browser.help.HelpAndFeedback; import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings; import org.chromium.chrome.browser.preferences.ChromeSwitchPreference; -import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegate; import org.chromium.chrome.browser.preferences.PreferenceUtils; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.snackbar.DataReductionPromoSnackbarController; @@ -162,12 +161,9 @@ return true; } }); - dataReductionSwitch.setManagedPreferenceDelegate(new ManagedPreferenceDelegate() { - @Override - public boolean isPreferenceControlledByPolicy(Preference preference) { - return CommandLine.getInstance().hasSwitch(ENABLE_DATA_REDUCTION_PROXY) - || DataReductionProxySettings.getInstance().isDataReductionProxyManaged(); - } + dataReductionSwitch.setManagedPreferenceDelegate(preference -> { + return CommandLine.getInstance().hasSwitch(ENABLE_DATA_REDUCTION_PROXY) + || DataReductionProxySettings.getInstance().isDataReductionProxyManaged(); }); getPreferenceScreen().addPreference(dataReductionSwitch);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/languages/LanguagesPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/languages/LanguagesPreferences.java index accfea0..cd16df9 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/languages/LanguagesPreferences.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/languages/LanguagesPreferences.java
@@ -12,7 +12,6 @@ import org.chromium.chrome.R; import org.chromium.chrome.browser.preferences.ChromeSwitchPreference; -import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegate; import org.chromium.chrome.browser.preferences.PrefServiceBridge; import org.chromium.chrome.browser.preferences.PreferenceUtils; import org.chromium.chrome.browser.preferences.PreferencesLauncher; @@ -57,12 +56,8 @@ return true; } }); - translateSwitch.setManagedPreferenceDelegate(new ManagedPreferenceDelegate() { - @Override - public boolean isPreferenceControlledByPolicy(Preference preference) { - return PrefServiceBridge.getInstance().isTranslateManaged(); - } - }); + translateSwitch.setManagedPreferenceDelegate( + preference -> PrefServiceBridge.getInstance().isTranslateManaged()); LanguagesManager.recordImpression(LanguagesManager.PAGE_MAIN); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferences.java index 62d817c..954e7db 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferences.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/password/SavePasswordsPreferences.java
@@ -35,7 +35,6 @@ import org.chromium.chrome.browser.preferences.ChromeBaseCheckBoxPreference; import org.chromium.chrome.browser.preferences.ChromeBasePreference; import org.chromium.chrome.browser.preferences.ChromeSwitchPreference; -import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegate; import org.chromium.chrome.browser.preferences.PrefServiceBridge; import org.chromium.chrome.browser.preferences.Preferences; import org.chromium.chrome.browser.preferences.PreferencesLauncher; @@ -461,12 +460,8 @@ return true; } }); - mSavePasswordsSwitch.setManagedPreferenceDelegate(new ManagedPreferenceDelegate() { - @Override - public boolean isPreferenceControlledByPolicy(Preference preference) { - return PrefServiceBridge.getInstance().isRememberPasswordsManaged(); - } - }); + mSavePasswordsSwitch.setManagedPreferenceDelegate( + preference -> PrefServiceBridge.getInstance().isRememberPasswordsManaged()); getPreferenceScreen().addPreference(mSavePasswordsSwitch); // Note: setting the switch state before the preference is added to the screen results in @@ -494,12 +489,8 @@ return true; } }); - mAutoSignInSwitch.setManagedPreferenceDelegate(new ManagedPreferenceDelegate() { - @Override - public boolean isPreferenceControlledByPolicy(Preference preference) { - return PrefServiceBridge.getInstance().isPasswordManagerAutoSigninManaged(); - } - }); + mAutoSignInSwitch.setManagedPreferenceDelegate( + preference -> PrefServiceBridge.getInstance().isPasswordManagerAutoSigninManaged()); getPreferenceScreen().addPreference(mAutoSignInSwitch); mAutoSignInSwitch.setChecked( PrefServiceBridge.getInstance().isPasswordManagerAutoSigninEnabled());
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ContextualSearchPreferenceFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ContextualSearchPreferenceFragment.java index d48d20b..10355f7 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ContextualSearchPreferenceFragment.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/ContextualSearchPreferenceFragment.java
@@ -12,7 +12,6 @@ import org.chromium.chrome.R; import org.chromium.chrome.browser.contextualsearch.ContextualSearchUma; import org.chromium.chrome.browser.preferences.ChromeSwitchPreference; -import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegate; import org.chromium.chrome.browser.preferences.PrefServiceBridge; import org.chromium.chrome.browser.preferences.PreferenceUtils; @@ -48,12 +47,8 @@ return true; } }); - contextualSearchSwitch.setManagedPreferenceDelegate(new ManagedPreferenceDelegate() { - @Override - public boolean isPreferenceControlledByPolicy(Preference preference) { - return PrefServiceBridge.getInstance().isContextualSearchDisabledByPolicy(); - } - }); + contextualSearchSwitch.setManagedPreferenceDelegate( + preference -> PrefServiceBridge.getInstance().isContextualSearchDisabledByPolicy()); } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java index ea92407..6884292 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferences.java
@@ -197,29 +197,26 @@ } private ManagedPreferenceDelegate createManagedPreferenceDelegate() { - return new ManagedPreferenceDelegate() { - @Override - public boolean isPreferenceControlledByPolicy(Preference preference) { - String key = preference.getKey(); - PrefServiceBridge prefs = PrefServiceBridge.getInstance(); - if (PREF_NAVIGATION_ERROR.equals(key)) { - return prefs.isResolveNavigationErrorManaged(); - } - if (PREF_SEARCH_SUGGESTIONS.equals(key)) { - return prefs.isSearchSuggestManaged(); - } - if (PREF_SAFE_BROWSING_EXTENDED_REPORTING.equals(key) - || PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) { - return prefs.isSafeBrowsingExtendedReportingManaged(); - } - if (PREF_SAFE_BROWSING.equals(key)) { - return prefs.isSafeBrowsingManaged(); - } - if (PREF_NETWORK_PREDICTIONS.equals(key)) { - return prefs.isNetworkPredictionManaged(); - } - return false; + return preference -> { + String key = preference.getKey(); + PrefServiceBridge prefs = PrefServiceBridge.getInstance(); + if (PREF_NAVIGATION_ERROR.equals(key)) { + return prefs.isResolveNavigationErrorManaged(); } + if (PREF_SEARCH_SUGGESTIONS.equals(key)) { + return prefs.isSearchSuggestManaged(); + } + if (PREF_SAFE_BROWSING_EXTENDED_REPORTING.equals(key) + || PREF_SAFE_BROWSING_SCOUT_REPORTING.equals(key)) { + return prefs.isSafeBrowsingExtendedReportingManaged(); + } + if (PREF_SAFE_BROWSING.equals(key)) { + return prefs.isSafeBrowsingManaged(); + } + if (PREF_NETWORK_PREDICTIONS.equals(key)) { + return prefs.isNetworkPredictionManaged(); + } + return false; }; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/UsageAndCrashReportsPreferenceFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/UsageAndCrashReportsPreferenceFragment.java index 15de6c3..24c25f0 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/UsageAndCrashReportsPreferenceFragment.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/UsageAndCrashReportsPreferenceFragment.java
@@ -12,7 +12,6 @@ import org.chromium.chrome.R; import org.chromium.chrome.browser.metrics.UmaSessionStats; import org.chromium.chrome.browser.preferences.ChromeSwitchPreference; -import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegate; import org.chromium.chrome.browser.preferences.PrefServiceBridge; import org.chromium.chrome.browser.preferences.PreferenceUtils; @@ -47,11 +46,7 @@ } }); - usageAndCrashReportsSwitch.setManagedPreferenceDelegate(new ManagedPreferenceDelegate() { - @Override - public boolean isPreferenceControlledByPolicy(Preference preference) { - return PrefServiceBridge.getInstance().isMetricsReportingManaged(); - } - }); + usageAndCrashReportsSwitch.setManagedPreferenceDelegate( + preference -> PrefServiceBridge.getInstance().isMetricsReportingManaged()); } }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java index 1d9ff44..ab3748c 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/SingleCategoryPreferences.java
@@ -854,12 +854,8 @@ thirdPartyCookiesPref.setChecked( !PrefServiceBridge.getInstance().isBlockThirdPartyCookiesEnabled()); thirdPartyCookiesPref.setEnabled(PrefServiceBridge.getInstance().isAcceptCookiesEnabled()); - thirdPartyCookiesPref.setManagedPreferenceDelegate(new ManagedPreferenceDelegate() { - @Override - public boolean isPreferenceControlledByPolicy(Preference preference) { - return PrefServiceBridge.getInstance().isBlockThirdPartyCookiesManaged(); - } - }); + thirdPartyCookiesPref.setManagedPreferenceDelegate( + preference -> PrefServiceBridge.getInstance().isBlockThirdPartyCookiesManaged()); } private void updateNotificationsVibrateCheckBox() {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/TranslatePreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/TranslatePreferences.java index 746405d..19542cc9 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/TranslatePreferences.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/TranslatePreferences.java
@@ -18,7 +18,6 @@ import org.chromium.chrome.browser.help.HelpAndFeedback; import org.chromium.chrome.browser.preferences.ButtonPreference; import org.chromium.chrome.browser.preferences.ChromeSwitchPreference; -import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegate; import org.chromium.chrome.browser.preferences.PrefServiceBridge; import org.chromium.chrome.browser.preferences.PreferenceUtils; import org.chromium.chrome.browser.profiles.Profile; @@ -55,12 +54,8 @@ return true; } }); - translateSwitch.setManagedPreferenceDelegate(new ManagedPreferenceDelegate() { - @Override - public boolean isPreferenceControlledByPolicy(Preference preference) { - return PrefServiceBridge.getInstance().isTranslateManaged(); - } - }); + translateSwitch.setManagedPreferenceDelegate( + preference -> PrefServiceBridge.getInstance().isTranslateManaged()); ButtonPreference resetTranslateButton = (ButtonPreference) findPreference(PREF_RESET_TRANSLATE_BUTTON);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/search_engines/TemplateUrlService.java b/chrome/android/java/src/org/chromium/chrome/browser/search_engines/TemplateUrlService.java index 21b19d0..9cba473 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/search_engines/TemplateUrlService.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/search_engines/TemplateUrlService.java
@@ -293,8 +293,8 @@ } /** - * Finds the URL for the search engine at the given index. - * @param index The templateUrl index to look up. + * Finds the URL for the search engine for the given keyword. + * @param keyword The templateUrl keyword to look up. * @return A {@link String} that contains the url of the specified search engine. */ public String getSearchEngineUrlFromTemplateUrl(String keyword) { @@ -302,6 +302,15 @@ } /** + * Finds the search engine type for the given keyword. + * @param keyword The templateUrl keyword to look up. + * @return The search engine type of the specified search engine that contains the keyword. + */ + public int getSearchEngineTypeFromTemplateUrl(String keyword) { + return nativeGetSearchEngineTypeFromTemplateUrl(mNativeTemplateUrlServiceAndroid, keyword); + } + + /** * Extracts the search query terms from a SRP URL. * @param url The SRP URL. * @return A string containing just the search terms stripped from the SRP URL. @@ -343,6 +352,8 @@ String query, String alternateTerm, boolean shouldPrefetch, String protocolVersion); private native String nativeGetSearchEngineUrlFromTemplateUrl( long nativeTemplateUrlServiceAndroid, String keyword); + private native int nativeGetSearchEngineTypeFromTemplateUrl( + long nativeTemplateUrlServiceAndroid, String keyword); private native String nativeAddSearchEngineForTesting( long nativeTemplateUrlServiceAndroid, String keyword, int offset); private native String nativeUpdateLastVisitedForTesting(
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java index 08f5cca..cf09fd1 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/AccountManagementFragment.java
@@ -35,7 +35,6 @@ import org.chromium.chrome.R; import org.chromium.chrome.browser.AppHooks; import org.chromium.chrome.browser.preferences.ChromeBasePreference; -import org.chromium.chrome.browser.preferences.ManagedPreferenceDelegate; import org.chromium.chrome.browser.preferences.PrefServiceBridge; import org.chromium.chrome.browser.preferences.Preferences; import org.chromium.chrome.browser.preferences.PreferencesLauncher; @@ -391,12 +390,7 @@ return true; }); - addAccountPreference.setManagedPreferenceDelegate(new ManagedPreferenceDelegate() { - @Override - public boolean isPreferenceControlledByPolicy(Preference preference) { - return !canAddAccounts(); - } - }); + addAccountPreference.setManagedPreferenceDelegate(preference -> !canAddAccounts()); return addAccountPreference; }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrClassesWrapperImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrClassesWrapperImpl.java index eeee7c8..647ae42 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrClassesWrapperImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/vr_shell/VrClassesWrapperImpl.java
@@ -75,7 +75,12 @@ Context context = ContextUtils.getApplicationContext(); // The call to isInVrSession crashes when called on a non-Daydream ready device, so we add // the device check (b/77268533). - return isDaydreamReadyDevice() && DaydreamApi.isInVrSession(context); + try { + return isDaydreamReadyDevice() && DaydreamApi.isInVrSession(context); + } catch (Exception ex) { + Log.e(TAG, "Unable to check if in vr session", ex); + return false; + } } @Override
diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni index aee8966..7c642a0 100644 --- a/chrome/android/java_sources.gni +++ b/chrome/android/java_sources.gni
@@ -612,7 +612,7 @@ "java/src/org/chromium/chrome/browser/locale/DefaultSearchEnginePromoDialog.java", "java/src/org/chromium/chrome/browser/locale/LocaleManager.java", "java/src/org/chromium/chrome/browser/locale/SogouPromoDialog.java", - "java/src/org/chromium/chrome/browser/locale/SpecialLocaleHandler.java", + "java/src/org/chromium/chrome/browser/locale/LocaleTemplateUrlLoader.java", "java/src/org/chromium/chrome/browser/media/MediaCaptureNotificationService.java", "java/src/org/chromium/chrome/browser/media/MediaViewerUtils.java", "java/src/org/chromium/chrome/browser/media/PictureInPicture.java", @@ -695,6 +695,7 @@ "java/src/org/chromium/chrome/browser/modaldialog/TabModalLifetimeHandler.java", "java/src/org/chromium/chrome/browser/modaldialog/TabModalPresenter.java", "java/src/org/chromium/chrome/browser/modelutil/LazyViewBinderAdapter.java", + "java/src/org/chromium/chrome/browser/modelutil/ListModelChangeProcessor.java", "java/src/org/chromium/chrome/browser/modelutil/ListObservable.java", "java/src/org/chromium/chrome/browser/modelutil/PropertyModelChangeProcessor.java", "java/src/org/chromium/chrome/browser/modelutil/PropertyObservable.java",
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetViewTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetViewTest.java index 4f4dd73..e45fba6 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetViewTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/AccessorySheetViewTest.java
@@ -34,7 +34,7 @@ @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) public class AccessorySheetViewTest { private AccessorySheetModel mModel; - private LazyViewBinderAdapter.StubHolder mStubHolder; + private LazyViewBinderAdapter.StubHolder<View> mStubHolder; @Rule public ChromeActivityTestRule<ChromeTabbedActivity> mActivityTestRule = @@ -43,7 +43,7 @@ @Before public void setUp() throws InterruptedException { mActivityTestRule.startMainActivityOnBlankPage(); - mStubHolder = new LazyViewBinderAdapter.StubHolder( + mStubHolder = new LazyViewBinderAdapter.StubHolder<>( mActivityTestRule.getActivity().findViewById(R.id.keyboard_accessory_sheet_stub)); mModel = new AccessorySheetModel(); mModel.addObserver(new PropertyModelChangeProcessor<>(
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryViewTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryViewTest.java index 7ce98699..42c2c2a5 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryViewTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryViewTest.java
@@ -10,11 +10,14 @@ import static android.support.test.espresso.assertion.ViewAssertions.matches; import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; import static android.support.test.espresso.matcher.ViewMatchers.isRoot; +import static android.support.test.espresso.matcher.ViewMatchers.withContentDescription; import static android.support.test.espresso.matcher.ViewMatchers.withText; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertNull; +import static org.hamcrest.Matchers.instanceOf; +import static org.hamcrest.core.AllOf.allOf; import static org.junit.Assert.assertTrue; import static org.chromium.chrome.test.util.ViewUtils.VIEW_GONE; @@ -22,10 +25,13 @@ import static org.chromium.chrome.test.util.ViewUtils.VIEW_NULL; import static org.chromium.chrome.test.util.ViewUtils.waitForView; +import android.graphics.drawable.Drawable; import android.support.test.filters.MediumTest; +import android.support.v7.widget.AppCompatImageView; import android.view.View; import android.view.ViewGroup; +import org.hamcrest.Matcher; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -36,10 +42,8 @@ import org.chromium.chrome.R; import org.chromium.chrome.browser.ChromeSwitches; import org.chromium.chrome.browser.ChromeTabbedActivity; -import org.chromium.chrome.browser.autofill.keyboard_accessory.KeyboardAccessoryViewBinder.ActionViewBinder; +import org.chromium.chrome.browser.modelutil.LazyViewBinderAdapter; import org.chromium.chrome.browser.modelutil.PropertyModelChangeProcessor; -import org.chromium.chrome.browser.modelutil.RecyclerViewAdapter; -import org.chromium.chrome.browser.modelutil.RecyclerViewModelChangeProcessor; import org.chromium.chrome.test.ChromeActivityTestRule; import org.chromium.chrome.test.ChromeJUnit4ClassRunner; @@ -53,7 +57,7 @@ @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) public class KeyboardAccessoryViewTest { private KeyboardAccessoryModel mModel; - private KeyboardAccessoryViewBinder.AccessoryViewHolder mViewHolder; + private LazyViewBinderAdapter.StubHolder<KeyboardAccessoryView> mViewHolder; @Rule public ChromeActivityTestRule<ChromeTabbedActivity> mActivityTestRule = @@ -74,22 +78,41 @@ }; } + private KeyboardAccessoryData.Tab createTestTab(String contentDescription) { + return new KeyboardAccessoryData.Tab() { + @Override + public Drawable getIcon() { + return mActivityTestRule.getActivity().getResources().getDrawable( + android.R.drawable.ic_lock_lock); + } + + @Override + public String getContentDescription() { + return contentDescription; + } + }; + } + + /** + * Matches a tab with a given content description. Selecting the content description alone will + * match all icons of the tabs as well. + * @param description The description to look for. + * @return Returns a matcher that can be used in |onView| or within other {@link Matcher}s. + */ + private static Matcher<View> isTabWithDescription(String description) { + return allOf(withContentDescription(description), + instanceOf(AppCompatImageView.class)); // Match only the image. + } + @Before public void setUp() throws InterruptedException { mActivityTestRule.startMainActivityOnBlankPage(); mModel = new KeyboardAccessoryModel(); + mViewHolder = new LazyViewBinderAdapter.StubHolder<>( + mActivityTestRule.getActivity().findViewById(R.id.keyboard_accessory_stub)); - RecyclerViewAdapter< - KeyboardAccessoryModel.SimpleListObservable<KeyboardAccessoryData.Action>, - ActionViewBinder.ViewHolder> actionsAdapter = - new RecyclerViewAdapter<>(mModel.getActionList(), new ActionViewBinder()); - mViewHolder = new KeyboardAccessoryViewBinder.AccessoryViewHolder( - mActivityTestRule.getActivity().findViewById(R.id.keyboard_accessory_stub), - actionsAdapter); - mModel.addObserver(new PropertyModelChangeProcessor<>( - mModel, mViewHolder, new KeyboardAccessoryViewBinder())); - - mModel.addActionListObserver(new RecyclerViewModelChangeProcessor<>(actionsAdapter)); + mModel.addObserver(new PropertyModelChangeProcessor<>(mModel, mViewHolder, + new LazyViewBinderAdapter<>(new KeyboardAccessoryViewBinder()))); } @Test @@ -141,10 +164,8 @@ onView(withText("First")).check(matches(isDisplayed())); onView(withText("Second")).check(matches(isDisplayed())); - ThreadUtils.runOnUiThreadBlocking(() -> { - mModel.setVisible(true); - mModel.getActionList().add(createTestAction("Third", action -> {})); - }); + ThreadUtils.runOnUiThreadBlocking( + () -> mModel.getActionList().add(createTestAction("Third", action -> {}))); onView(isRoot()).check((root, e) -> waitForView((ViewGroup) root, withText("Third"))); onView(withText("First")).check(matches(isDisplayed())); @@ -178,4 +199,55 @@ onView(withText("Second")).check(doesNotExist()); onView(withText("Third")).check(matches(isDisplayed())); } + + @Test + @MediumTest + public void testRemovesTabs() { + ThreadUtils.runOnUiThreadBlocking(() -> { + mModel.setVisible(true); + mModel.getTabList().set(new KeyboardAccessoryData.Tab[] {createTestTab("FirstTab"), + createTestTab("SecondTab"), createTestTab("ThirdTab")}); + }); + + onView(isRoot()).check( + (root, e) -> waitForView((ViewGroup) root, isTabWithDescription("FirstTab"))); + onView(isTabWithDescription("FirstTab")).check(matches(isDisplayed())); + onView(isTabWithDescription("SecondTab")).check(matches(isDisplayed())); + onView(isTabWithDescription("ThirdTab")).check(matches(isDisplayed())); + + ThreadUtils.runOnUiThreadBlocking( + () -> mModel.getTabList().remove(mModel.getTabList().get(1))); + + onView(isRoot()).check( + (root, e) + -> waitForView((ViewGroup) root, isTabWithDescription("SecondTab"), + VIEW_INVISIBLE | VIEW_GONE | VIEW_NULL)); + onView(isTabWithDescription("FirstTab")).check(matches(isDisplayed())); + onView(isTabWithDescription("SecondTab")).check(doesNotExist()); + onView(isTabWithDescription("ThirdTab")).check(matches(isDisplayed())); + } + + @Test + @MediumTest + public void testAddsTabs() { + ThreadUtils.runOnUiThreadBlocking(() -> { + mModel.setVisible(true); + mModel.getTabList().set(new KeyboardAccessoryData.Tab[] { + createTestTab("FirstTab"), createTestTab("SecondTab")}); + }); + + onView(isRoot()).check( + (root, e) -> waitForView((ViewGroup) root, isTabWithDescription("FirstTab"))); + onView(isTabWithDescription("FirstTab")).check(matches(isDisplayed())); + onView(isTabWithDescription("SecondTab")).check(matches(isDisplayed())); + onView(isTabWithDescription("ThirdTab")).check(doesNotExist()); + + ThreadUtils.runOnUiThreadBlocking(() -> mModel.getTabList().add(createTestTab("ThirdTab"))); + + onView(isRoot()).check( + (root, e) -> waitForView((ViewGroup) root, isTabWithDescription("ThirdTab"))); + onView(isTabWithDescription("FirstTab")).check(matches(isDisplayed())); + onView(isTabWithDescription("SecondTab")).check(matches(isDisplayed())); + onView(isTabWithDescription("ThirdTab")).check(matches(isDisplayed())); + } } \ No newline at end of file
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java index 9ba729c..f71351d 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/customtabs/CustomTabActivityTest.java
@@ -1326,77 +1326,22 @@ } /** - * Tests that Time To First Contentful Paint and Load Event Start timings are sent. + * Tests that page load metrice are sent. */ @Test @SmallTest @RetryOnFailure - public void testPageLoadMetricIsSent() throws Exception { - final AtomicReference<Long> firstContentfulPaintMs = new AtomicReference<>(-1L); - final AtomicReference<Long> activityStartTimeMs = new AtomicReference<>(-1L); - final AtomicReference<Long> loadEventStartMs = new AtomicReference<>(-1L); - final AtomicReference<Boolean> sawNetworkQualityEstimates = new AtomicReference<>(false); + public void testPageLoadMetricsAreSent() throws Exception { + checkPageLoadMetrics(true); + } - CustomTabsCallback cb = new CustomTabsCallback() { - @Override - public void extraCallback(String callbackName, Bundle args) { - Assert.assertEquals(CustomTabsConnection.PAGE_LOAD_METRICS_CALLBACK, callbackName); - - if (-1 != args.getLong(PageLoadMetrics.EFFECTIVE_CONNECTION_TYPE, -1)) { - sawNetworkQualityEstimates.set(true); - } - - long navigationStart = args.getLong(PageLoadMetrics.NAVIGATION_START, -1); - if (navigationStart == -1) { - // Untested metric callback. - return; - } - long current = SystemClock.uptimeMillis(); - Assert.assertTrue(navigationStart <= current); - Assert.assertTrue(navigationStart >= activityStartTimeMs.get()); - - long firstContentfulPaint = - args.getLong(PageLoadMetrics.FIRST_CONTENTFUL_PAINT, -1); - if (firstContentfulPaint > 0) { - Assert.assertTrue(firstContentfulPaint <= (current - navigationStart)); - firstContentfulPaintMs.set(firstContentfulPaint); - } - - long loadEventStart = args.getLong(PageLoadMetrics.LOAD_EVENT_START, -1); - if (loadEventStart > 0) { - Assert.assertTrue(loadEventStart <= (current - navigationStart)); - loadEventStartMs.set(loadEventStart); - } - } - }; - - CustomTabsSession session = CustomTabsTestUtils.bindWithCallback(cb); - Intent intent = new CustomTabsIntent.Builder(session).build().intent; - intent.setData(Uri.parse(mTestPage)); - intent.setComponent(new ComponentName( - InstrumentationRegistry.getTargetContext(), ChromeLauncherActivity.class)); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - - activityStartTimeMs.set(SystemClock.uptimeMillis()); - mCustomTabActivityTestRule.startCustomTabActivityWithIntent(intent); - CriteriaHelper.pollInstrumentationThread(new Criteria() { - @Override - public boolean isSatisfied() { - return firstContentfulPaintMs.get() > 0; - } - }); - CriteriaHelper.pollInstrumentationThread(new Criteria() { - @Override - public boolean isSatisfied() { - return loadEventStartMs.get() > 0; - } - }); - CriteriaHelper.pollInstrumentationThread(new Criteria() { - @Override - public boolean isSatisfied() { - return sawNetworkQualityEstimates.get(); - } - }); + /** + * Tests that page load metrics are not sent when the client is not whitelisted. + */ + @Test + @SmallTest + public void testPageLoadMetricsAreNotSentByDefault() throws Exception { + checkPageLoadMetrics(false); } private static void assertSuffixedHistogramTotalCount(long expected, String histogramPrefix) { @@ -2637,6 +2582,77 @@ return newActivity; } + private void checkPageLoadMetrics(boolean allowMetrics) + throws InterruptedException, TimeoutException { + final AtomicReference<Long> firstContentfulPaintMs = new AtomicReference<>(-1L); + final AtomicReference<Long> activityStartTimeMs = new AtomicReference<>(-1L); + final AtomicReference<Long> loadEventStartMs = new AtomicReference<>(-1L); + final AtomicReference<Boolean> sawNetworkQualityEstimates = new AtomicReference<>(false); + + CustomTabsCallback cb = new CustomTabsCallback() { + @Override + public void extraCallback(String callbackName, Bundle args) { + if (callbackName.equals(CustomTabsConnection.ON_WARMUP_COMPLETED)) return; + + Assert.assertEquals(CustomTabsConnection.PAGE_LOAD_METRICS_CALLBACK, callbackName); + if (-1 != args.getLong(PageLoadMetrics.EFFECTIVE_CONNECTION_TYPE, -1)) { + sawNetworkQualityEstimates.set(true); + } + + long navigationStart = args.getLong(PageLoadMetrics.NAVIGATION_START, -1); + if (navigationStart == -1) { + // Untested metric callback. + return; + } + long current = SystemClock.uptimeMillis(); + Assert.assertTrue(navigationStart <= current); + Assert.assertTrue(navigationStart >= activityStartTimeMs.get()); + + long firstContentfulPaint = + args.getLong(PageLoadMetrics.FIRST_CONTENTFUL_PAINT, -1); + if (firstContentfulPaint > 0) { + Assert.assertTrue(firstContentfulPaint <= (current - navigationStart)); + firstContentfulPaintMs.set(firstContentfulPaint); + } + + long loadEventStart = args.getLong(PageLoadMetrics.LOAD_EVENT_START, -1); + if (loadEventStart > 0) { + Assert.assertTrue(loadEventStart <= (current - navigationStart)); + loadEventStartMs.set(loadEventStart); + } + } + }; + + CustomTabsSession session = CustomTabsTestUtils.bindWithCallback(cb); + Intent intent = new CustomTabsIntent.Builder(session).build().intent; + + if (allowMetrics) { + CustomTabsSessionToken token = CustomTabsSessionToken.getSessionTokenFromIntent(intent); + CustomTabsConnection connection = CustomTabsTestUtils.warmUpAndWait(); + connection.mClientManager.setShouldGetPageLoadMetricsForSession(token, true); + } + + intent.setData(Uri.parse(mTestPage)); + intent.setComponent(new ComponentName( + InstrumentationRegistry.getTargetContext(), ChromeLauncherActivity.class)); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + + activityStartTimeMs.set(SystemClock.uptimeMillis()); + mCustomTabActivityTestRule.startCustomTabActivityWithIntent(intent); + if (allowMetrics) { + CriteriaHelper.pollInstrumentationThread(() -> firstContentfulPaintMs.get() > 0); + CriteriaHelper.pollInstrumentationThread(() -> loadEventStartMs.get() > 0); + CriteriaHelper.pollInstrumentationThread(() -> sawNetworkQualityEstimates.get()); + } else { + try { + CriteriaHelper.pollInstrumentationThread(() -> firstContentfulPaintMs.get() > 0); + } catch (AssertionError e) { + // Expected. + } + Assert.assertEquals(-1L, (long) firstContentfulPaintMs.get()); + } + } + private CustomTabsSessionToken warmUpAndLaunchUrlWithSession(Intent intentWithSession) throws Exception { CustomTabsConnection connection = CustomTabsTestUtils.warmUpAndWait();
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadActivityTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadActivityTest.java index 40f1e03..9729892 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadActivityTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/download/DownloadActivityTest.java
@@ -47,6 +47,7 @@ import org.chromium.chrome.browser.widget.selection.SelectionDelegate.SelectionObserver; import org.chromium.chrome.test.ChromeJUnit4ClassRunner; import org.chromium.chrome.test.util.browser.Features; +import org.chromium.chrome.test.util.browser.Features.DisableFeatures; import org.chromium.chrome.test.util.browser.Features.EnableFeatures; import org.chromium.components.offline_items_collection.OfflineItem; import org.chromium.content.browser.test.util.Criteria; @@ -512,6 +513,7 @@ @Test @MediumTest + @DisableFeatures("OfflinePagesSharing") public void testShareFiles() throws Exception { // Adapter positions: // 0 = space display
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridgeTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridgeTest.java index 346de66..5e1a4e0 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridgeTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageBridgeTest.java
@@ -20,6 +20,7 @@ import org.chromium.base.Callback; import org.chromium.base.ThreadUtils; import org.chromium.base.test.util.CommandLineFlags; +import org.chromium.base.test.util.DisabledTest; import org.chromium.base.test.util.RetryOnFailure; import org.chromium.chrome.browser.ChromeActivity; import org.chromium.chrome.browser.ChromeSwitches; @@ -403,6 +404,7 @@ @Test @SmallTest + @DisabledTest(message = "crbug.com/842801") public void testSavePageNoOrigin() throws Exception { mActivityTestRule.loadUrl(mTestPage); savePage(SavePageResult.SUCCESS, mTestPage);
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryControllerTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryControllerTest.java index 23836cf..4aee578 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryControllerTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/autofill/keyboard_accessory/KeyboardAccessoryControllerTest.java
@@ -53,8 +53,10 @@ @Mock private KeyboardAccessoryView mMockView; - private static class FakeTab implements KeyboardAccessoryData.Tab {} - private static class FakeAction implements Action { + @Mock + private KeyboardAccessoryData.Tab mMockTab; + + private static class FakeAction implements KeyboardAccessoryData.Action { @Override public String getCaption() { return null; @@ -111,18 +113,16 @@ @SmallTest @Feature({"keyboard-accessory"}) public void testChangingTabsNotifiesTabObserver() { - final FakeTab testTab = new FakeTab(); - mModel.addTabListObserver(mMockTabListObserver); // Calling addTab on the coordinator should make model propagate that it has a new tab. - mCoordinator.addTab(testTab); + mCoordinator.addTab(mMockTab); verify(mMockTabListObserver).onItemRangeInserted(mModel.getTabList(), 0, 1); assertThat(mModel.getTabList().getItemCount(), is(1)); - assertThat(mModel.getTabList().get(0), is(equalTo(testTab))); + assertThat(mModel.getTabList().get(0), is(equalTo(mMockTab))); // Calling hide on the coordinator should make model propagate that it's invisible. - mCoordinator.removeTab(testTab); + mCoordinator.removeTab(mMockTab); verify(mMockTabListObserver).onItemRangeRemoved(mModel.getTabList(), 0, 1); assertThat(mModel.getTabList().getItemCount(), is(0)); } @@ -240,7 +240,7 @@ assertThat(mModel.isVisible(), is(false)); // Adding actions while the keyboard is visible triggers the accessory. - mCoordinator.addTab(new FakeTab()); + mCoordinator.addTab(mMockTab); assertThat(mModel.isVisible(), is(true)); } } \ No newline at end of file
diff --git a/chrome/app/md_extensions_strings.grdp b/chrome/app/md_extensions_strings.grdp index f4a3fa4..732a5e4 100644 --- a/chrome/app/md_extensions_strings.grdp +++ b/chrome/app/md_extensions_strings.grdp
@@ -48,9 +48,6 @@ <message name="IDS_MD_EXTENSIONS_ACCESSIBILITY_ERROR_MULTI_LINE" desc="Accessibility message to indicate the lines that an error spans. The lines of code will be read to the user. The place holders will be numbers."> Error from line <ph name="ERROR_LINE_START">$1</ph> to <ph name="ERROR_LINE_END">$2</ph> </message> - <message name="IDS_MD_EXTENSIONS_GUEST_MODE_TITLE" desc="The text displayed when viewing the page under guest-mode to indicate that guests cannot use this feature."> - Extension management - </message> <message name="IDS_MD_EXTENSIONS_ITEM_ID" desc="The text for the label next to the extension id."> <span>ID: </span><ph name="EXTENSION_ID">$1<ex>cfhdojbkjhnklbpkdaibdccddilifddb</ex></ph> </message>
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp index 2573dec..0315fb5 100644 --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp
@@ -1259,6 +1259,9 @@ <message name="IDS_SETTINGS_PRINTING_CUPS_PRINTER_PROTOCOL_USB" desc="The dropdown menu of the printer USB protocol on the manually add printer dialog."> USB </message> + <message name="IDS_SETTINGS_PRINTING_CUPS_PRINTER_PROTOCOL_IPPUSB" desc="The dropdown menu of the printer IPPUSB protocol on the edit printer dialog."> + IPP over USB (IPPUSB) + </message> <message name="IDS_SETTINGS_PRINTING_CUPS_PRINTER_CONFIGURING_MESSAGE" desc="The configuring-in-progress message shown in the configuring printer dialog."> Configuring <ph name="PRINTER_NAME">$1<ex>printer</ex></ph> ... </message> @@ -1307,6 +1310,9 @@ <message name="IDS_SETTINGS_PRINTING_CUPS_PRINTER_ADDED_NATIVE_PRINTERS_NOT_ALLOWED_MESSAGE" desc="The message shown when the user is prevented from configuring printers due to an enterprise policy."> Printer configuration is handled by the administrator. </message> + <message name="IDS_SETTINGS_PRINTING_CUPS_EDIT_PRINTER_INVALID_PRINTER_UPDATE" desc="The message shown when the user attempts to edit a configured printer in a way that would make it unusable"> + Requested printer changes would make the printer unusable. + </message> <message name="IDS_SETTINGS_PRINTING_CUPS_PRINTER_REQUIRE_INTERNET_MESSAGE" desc="The message shown when there is no internet access to set up a printer."> Connect to the internet to add a printer </message> @@ -1347,18 +1353,24 @@ </message> <if expr="chromeos"> - <message name="IDS_SETTINGS_DOWNLOADS_SMB_SHARES" desc="In Downloads Settings, the title of the SMB Shares setting section."> + <message name="IDS_SETTINGS_DOWNLOADS_SMB_SHARES" desc="In Downloads Settings, the title of the SMB shares setting section."> Network File Shares </message> <message name="IDS_SETTINGS_DOWNLOADS_SMB_SHARES_LEARN_MORE_LABEL" desc="Label for the link that teaches users how to setup SMB shares."> Set up or manage Network File Shares. </message> - <message name="IDS_SETTINGS_DOWNLOADS_SMB_SHARES_ADD_SHARE" desc="In SMB Shares settings subpage, text for the link to add a new SMB Share."> + <message name="IDS_SETTINGS_DOWNLOADS_SMB_SHARES_ADD_SHARE" desc="In SMB shares settings subpage, text for the link to add a new SMB share."> Add File Share </message> <message name="IDS_SETTINGS_DOWNLOADS_ADD_SHARE_URL" desc="Title for the input that lets users specify the name of an SMB Url."> File Share Url </message> + <message name="IDS_SETTINGS_DOWNLOADS_ADD_SHARE_USERNAME" desc="Title for the input that lets users specify their username for an SMB share."> + Username + </message> + <message name="IDS_SETTINGS_DOWNLOADS_ADD_SHARE_PASSWORD" desc="Title for the input that lets users specify their password for an SMB Share."> + Password + </message> <!-- Date/Time Page --> <message name="IDS_SETTINGS_DATE_TIME" desc="Name of the settings page which displays date and time preferences.">
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 42dccdd..d73401f 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -2077,8 +2077,8 @@ "android/large_icon_bridge.h", "android/locale/locale_manager.cc", "android/locale/locale_manager.h", - "android/locale/special_locale_handler.cc", - "android/locale/special_locale_handler.h", + "android/locale/locale_template_url_loader.cc", + "android/locale/locale_template_url_loader.h", "android/location_settings.h", "android/location_settings_impl.cc", "android/location_settings_impl.h", @@ -2392,7 +2392,7 @@ "supervised_user/child_accounts/child_account_service_android.h", ] } - } else { + } else { # !is_android sources += [ "accessibility/invert_bubble_prefs.cc", "accessibility/invert_bubble_prefs.h", @@ -2664,8 +2664,6 @@ "resource_coordinator/site_characteristics_data_writer.h", "resource_coordinator/tab_activity_watcher.cc", "resource_coordinator/tab_activity_watcher.h", - "resource_coordinator/tab_features.cc", - "resource_coordinator/tab_features.h", "resource_coordinator/tab_lifecycle_observer.h", "resource_coordinator/tab_lifecycle_unit.cc", "resource_coordinator/tab_lifecycle_unit.h", @@ -2830,6 +2828,7 @@ "//chrome/browser/profile_resetter:profile_reset_report_proto", "//chrome/browser/resource_coordinator:site_characteristics_proto", "//chrome/browser/resource_coordinator:tab_metrics_event_proto", + "//chrome/browser/resource_coordinator/tab_ranker", "//chrome/browser/resources:component_extension_resources", "//chrome/browser/search:generated", "//chrome/common/importer:interfaces", @@ -4337,7 +4336,7 @@ "../android/java/src/org/chromium/chrome/browser/invalidation/InvalidationServiceFactory.java", "../android/java/src/org/chromium/chrome/browser/jsdialog/JavascriptTabModalDialog.java", "../android/java/src/org/chromium/chrome/browser/locale/LocaleManager.java", - "../android/java/src/org/chromium/chrome/browser/locale/SpecialLocaleHandler.java", + "../android/java/src/org/chromium/chrome/browser/locale/LocaleTemplateUrlLoader.java", "../android/java/src/org/chromium/chrome/browser/media/cdm/MediaDrmCredentialManager.java", "../android/java/src/org/chromium/chrome/browser/media/remote/RecordCastAction.java", "../android/java/src/org/chromium/chrome/browser/media/remote/RemoteMediaPlayerBridge.java",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 2906b88..367644d 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -2255,6 +2255,9 @@ {"keyboard-lock-api", flag_descriptions::kKeyboardLockApiName, flag_descriptions::kKeyboardLockApiDescription, kOsDesktop, FEATURE_VALUE_TYPE(features::kKeyboardLockAPI)}, + {"system-keyboard-lock", flag_descriptions::kSystemKeyboardLockName, + flag_descriptions::kSystemKeyboardLockDescription, kOsDesktop, + FEATURE_VALUE_TYPE(features::kSystemKeyboardLock)}, {"experimental-keyboard-lock-ui", flag_descriptions::kExperimentalKeyboardLockUiName, flag_descriptions::kExperimentalKeyboardLockUiDescription, kOsDesktop,
diff --git a/chrome/browser/android/locale/locale_manager.cc b/chrome/browser/android/locale/locale_manager.cc index c78583c..ec93c3c 100644 --- a/chrome/browser/android/locale/locale_manager.cc +++ b/chrome/browser/android/locale/locale_manager.cc
@@ -27,12 +27,3 @@ return base::android::ConvertJavaStringToUTF8( env, Java_LocaleManager_getMailRUReferralId(env, jlocale_manager)); } - -// static -int JNI_LocaleManager_GetEngineType( - JNIEnv* env, - const base::android::JavaParamRef<jclass>& clazz, - const base::android::JavaParamRef<jstring>& j_url) { - GURL url(base::android::ConvertJavaStringToUTF8(env, j_url)); - return TemplateURLPrepopulateData::GetEngineType(url); -}
diff --git a/chrome/browser/android/locale/special_locale_handler.cc b/chrome/browser/android/locale/locale_template_url_loader.cc similarity index 79% rename from chrome/browser/android/locale/special_locale_handler.cc rename to chrome/browser/android/locale/locale_template_url_loader.cc index a1e2b8d..45d7030 100644 --- a/chrome/browser/android/locale/special_locale_handler.cc +++ b/chrome/browser/android/locale/locale_template_url_loader.cc
@@ -1,9 +1,8 @@ -// Copyright (c) 2016 The Chromium Authors. All rights reserved. +// Copyright (c) 2018 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/locale/special_locale_handler.h" - +#include "chrome/browser/android/locale/locale_template_url_loader.h" #include "base/android/jni_android.h" #include "base/android/jni_string.h" #include "base/android/jni_weak_ref.h" @@ -14,7 +13,7 @@ #include "components/search_engines/template_url_prepopulate_data.h" #include "components/search_engines/template_url_service.h" #include "components/search_engines/util.h" -#include "jni/SpecialLocaleHandler_jni.h" +#include "jni/LocaleTemplateUrlLoader_jni.h" using base::android::JavaParamRef; using base::android::ScopedJavaGlobalRef; @@ -25,27 +24,27 @@ class PrefService; class TemplateURL; -static jlong JNI_SpecialLocaleHandler_Init( +static jlong JNI_LocaleTemplateUrlLoader_Init( JNIEnv* env, const JavaParamRef<jclass>& clazz, const JavaParamRef<jstring>& jlocale) { Profile* profile = ProfileManager::GetActiveUserProfile()->GetOriginalProfile(); - return reinterpret_cast<intptr_t>(new SpecialLocaleHandler( + return reinterpret_cast<intptr_t>(new LocaleTemplateUrlLoader( ConvertJavaStringToUTF8(env, jlocale), TemplateURLServiceFactory::GetForProfile(profile))); } -SpecialLocaleHandler::SpecialLocaleHandler(const std::string& locale, - TemplateURLService* service) +LocaleTemplateUrlLoader::LocaleTemplateUrlLoader(const std::string& locale, + TemplateURLService* service) : locale_(locale), template_url_service_(service) {} -void SpecialLocaleHandler::Destroy(JNIEnv* env, - const JavaParamRef<jobject>& obj) { +void LocaleTemplateUrlLoader::Destroy(JNIEnv* env, + const JavaParamRef<jobject>& obj) { delete this; } -jboolean SpecialLocaleHandler::LoadTemplateUrls( +jboolean LocaleTemplateUrlLoader::LoadTemplateUrls( JNIEnv* env, const JavaParamRef<jobject>& obj) { DCHECK(locale_.length() == 2); @@ -97,7 +96,7 @@ return true; } -void SpecialLocaleHandler::RemoveTemplateUrls( +void LocaleTemplateUrlLoader::RemoveTemplateUrls( JNIEnv* env, const JavaParamRef<jobject>& obj) { while (!prepopulate_ids_.empty()) { @@ -110,7 +109,7 @@ } } -void SpecialLocaleHandler::OverrideDefaultSearchProvider( +void LocaleTemplateUrlLoader::OverrideDefaultSearchProvider( JNIEnv* env, const JavaParamRef<jobject>& obj) { // If the user has changed their default search provider, no-op. @@ -121,21 +120,22 @@ return; } - TemplateURL* turl = FindURLByPrepopulateID( - template_url_service_->GetTemplateURLs(), GetDesignatedSearchEngine()); + TemplateURL* turl = + FindURLByPrepopulateID(template_url_service_->GetTemplateURLs(), + GetDesignatedSearchEngineForChina()); if (turl) { template_url_service_->SetUserSelectedDefaultSearchProvider(turl); } } -void SpecialLocaleHandler::SetGoogleAsDefaultSearch( +void LocaleTemplateUrlLoader::SetGoogleAsDefaultSearch( JNIEnv* env, const JavaParamRef<jobject>& obj) { // If the user has changed their default search provider, no-op. const TemplateURL* current_dsp = template_url_service_->GetDefaultSearchProvider(); if (!current_dsp || - current_dsp->prepopulate_id() != GetDesignatedSearchEngine()) { + current_dsp->prepopulate_id() != GetDesignatedSearchEngineForChina()) { return; } @@ -148,12 +148,12 @@ } std::vector<std::unique_ptr<TemplateURLData>> -SpecialLocaleHandler::GetLocalPrepopulatedEngines() { +LocaleTemplateUrlLoader::GetLocalPrepopulatedEngines() { return TemplateURLPrepopulateData::GetLocalPrepopulatedEngines(locale_); } -int SpecialLocaleHandler::GetDesignatedSearchEngine() { +int LocaleTemplateUrlLoader::GetDesignatedSearchEngineForChina() { return TemplateURLPrepopulateData::sogou.id; } -SpecialLocaleHandler::~SpecialLocaleHandler() {} +LocaleTemplateUrlLoader::~LocaleTemplateUrlLoader() {}
diff --git a/chrome/browser/android/locale/special_locale_handler.h b/chrome/browser/android/locale/locale_template_url_loader.h similarity index 65% rename from chrome/browser/android/locale/special_locale_handler.h rename to chrome/browser/android/locale/locale_template_url_loader.h index 932df7e..3e043e0 100644 --- a/chrome/browser/android/locale/special_locale_handler.h +++ b/chrome/browser/android/locale/locale_template_url_loader.h
@@ -1,9 +1,9 @@ -// Copyright (c) 2016 The Chromium Authors. All rights reserved. +// Copyright (c) 2018 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_ANDROID_LOCALE_SPECIAL_LOCALE_HANDLER_H_ -#define CHROME_BROWSER_ANDROID_LOCALE_SPECIAL_LOCALE_HANDLER_H_ +#ifndef CHROME_BROWSER_ANDROID_LOCALE_LOCALE_TEMPLATE_URL_LOADER_H_ +#define CHROME_BROWSER_ANDROID_LOCALE_LOCALE_TEMPLATE_URL_LOADER_H_ #include "base/android/scoped_java_ref.h" #include "base/macros.h" @@ -13,9 +13,10 @@ class TemplateURLService; -class SpecialLocaleHandler { +class LocaleTemplateUrlLoader { public: - SpecialLocaleHandler(const std::string& locale, TemplateURLService* service); + LocaleTemplateUrlLoader(const std::string& locale, + TemplateURLService* service); void Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj); jboolean LoadTemplateUrls(JNIEnv* env, const JavaParamRef<jobject>& obj); void RemoveTemplateUrls(JNIEnv* env, const JavaParamRef<jobject>& obj); @@ -23,12 +24,12 @@ const JavaParamRef<jobject>& obj); void SetGoogleAsDefaultSearch(JNIEnv* env, const JavaParamRef<jobject>& obj); - virtual ~SpecialLocaleHandler(); + virtual ~LocaleTemplateUrlLoader(); protected: virtual std::vector<std::unique_ptr<TemplateURLData>> GetLocalPrepopulatedEngines(); - virtual int GetDesignatedSearchEngine(); + virtual int GetDesignatedSearchEngineForChina(); private: std::string locale_; @@ -39,7 +40,7 @@ // Pointer to the TemplateUrlService for the main profile. TemplateURLService* template_url_service_; - DISALLOW_COPY_AND_ASSIGN(SpecialLocaleHandler); + DISALLOW_COPY_AND_ASSIGN(LocaleTemplateUrlLoader); }; -#endif // CHROME_BROWSER_ANDROID_LOCALE_SPECIAL_LOCALE_HANDLER_H_ +#endif // CHROME_BROWSER_ANDROID_LOCALE_LOCALE_TEMPLATE_URL_LOADER_H_
diff --git a/chrome/browser/android/locale/special_locale_handler_unittest.cc b/chrome/browser/android/locale/locale_template_url_loader_unittest.cc similarity index 71% rename from chrome/browser/android/locale/special_locale_handler_unittest.cc rename to chrome/browser/android/locale/locale_template_url_loader_unittest.cc index d24adc39..5d236ac8 100644 --- a/chrome/browser/android/locale/special_locale_handler_unittest.cc +++ b/chrome/browser/android/locale/locale_template_url_loader_unittest.cc
@@ -1,9 +1,8 @@ -// Copyright (c) 2016 The Chromium Authors. All rights reserved. +// Copyright (c) 2018 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/android/locale/special_locale_handler.h" - +#include <chrome/browser/android/locale/locale_template_url_loader.h> #include <stddef.h> #include "base/strings/string_util.h" @@ -18,12 +17,12 @@ #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -class MockSpecialLocaleHandler : public SpecialLocaleHandler { +class MockLocaleTemplateUrlLoader : public LocaleTemplateUrlLoader { public: - MockSpecialLocaleHandler(std::string locale, TemplateURLService* service) - : SpecialLocaleHandler(locale, service) {} + MockLocaleTemplateUrlLoader(std::string locale, TemplateURLService* service) + : LocaleTemplateUrlLoader(locale, service) {} - ~MockSpecialLocaleHandler() override {} + ~MockLocaleTemplateUrlLoader() override {} protected: std::vector<std::unique_ptr<TemplateURLData>> GetLocalPrepopulatedEngines() @@ -38,41 +37,40 @@ return result; } - int GetDesignatedSearchEngine() override { + int GetDesignatedSearchEngineForChina() override { return TemplateURLPrepopulateData::naver.id; } }; -class SpecialLocaleHandlerTest : public testing::Test { -public: - SpecialLocaleHandlerTest() {} +class LocaleTemplateUrlLoaderTest : public testing::Test { + public: + LocaleTemplateUrlLoaderTest() {} void SetUp() override; void TearDown() override; - SpecialLocaleHandler* handler() { return handler_.get(); } + LocaleTemplateUrlLoader* loader() { return loader_.get(); } TemplateURLServiceTestUtil* test_util() { return test_util_.get(); } TemplateURLService* model() { return test_util_->model(); } - private: content::TestBrowserThreadBundle thread_bundle_; // To set up BrowserThreads. - std::unique_ptr<SpecialLocaleHandler> handler_; + std::unique_ptr<LocaleTemplateUrlLoader> loader_; std::unique_ptr<TemplateURLServiceTestUtil> test_util_; - DISALLOW_COPY_AND_ASSIGN(SpecialLocaleHandlerTest); + DISALLOW_COPY_AND_ASSIGN(LocaleTemplateUrlLoaderTest); }; -void SpecialLocaleHandlerTest::SetUp() { +void LocaleTemplateUrlLoaderTest::SetUp() { test_util_.reset(new TemplateURLServiceTestUtil); - handler_.reset(new MockSpecialLocaleHandler("jp", model())); + loader_.reset(new MockLocaleTemplateUrlLoader("jp", model())); } -void SpecialLocaleHandlerTest::TearDown() { - handler_.reset(); +void LocaleTemplateUrlLoaderTest::TearDown() { + loader_.reset(); test_util_.reset(); } -TEST_F(SpecialLocaleHandlerTest, AddLocalSearchEngines) { +TEST_F(LocaleTemplateUrlLoaderTest, AddLocalSearchEngines) { test_util()->VerifyLoad(); auto naver = base::ASCIIToUTF16("naver.com"); auto keyword_so = base::ASCIIToUTF16("so.com"); @@ -80,7 +78,7 @@ ASSERT_EQ(nullptr, model()->GetTemplateURLForKeyword(keyword_so)); ASSERT_TRUE( - handler()->LoadTemplateUrls(nullptr, JavaParamRef<jobject>(nullptr))); + loader()->LoadTemplateUrls(nullptr, JavaParamRef<jobject>(nullptr))); EXPECT_EQ(TemplateURLPrepopulateData::naver.id, model()->GetTemplateURLForKeyword(naver)->prepopulate_id()); @@ -90,14 +88,14 @@ // Ensure multiple calls to Load do not duplicate the search engines. size_t existing_size = model()->GetTemplateURLs().size(); ASSERT_TRUE( - handler()->LoadTemplateUrls(nullptr, JavaParamRef<jobject>(nullptr))); + loader()->LoadTemplateUrls(nullptr, JavaParamRef<jobject>(nullptr))); EXPECT_EQ(existing_size, model()->GetTemplateURLs().size()); } -TEST_F(SpecialLocaleHandlerTest, RemoveLocalSearchEngines) { +TEST_F(LocaleTemplateUrlLoaderTest, RemoveLocalSearchEngines) { test_util()->VerifyLoad(); ASSERT_TRUE( - handler()->LoadTemplateUrls(nullptr, JavaParamRef<jobject>(nullptr))); + loader()->LoadTemplateUrls(nullptr, JavaParamRef<jobject>(nullptr))); // Make sure locale engines are loaded. auto keyword_naver = base::ASCIIToUTF16("naver.com"); auto keyword_so = base::ASCIIToUTF16("so.com"); @@ -106,36 +104,36 @@ ASSERT_EQ(TemplateURLPrepopulateData::so_360.id, model()->GetTemplateURLForKeyword(keyword_so)->prepopulate_id()); - handler()->RemoveTemplateUrls(nullptr, JavaParamRef<jobject>(nullptr)); + loader()->RemoveTemplateUrls(nullptr, JavaParamRef<jobject>(nullptr)); ASSERT_EQ(nullptr, model()->GetTemplateURLForKeyword(keyword_naver)); ASSERT_EQ(nullptr, model()->GetTemplateURLForKeyword(keyword_so)); } -TEST_F(SpecialLocaleHandlerTest, OverrideDefaultSearch) { +TEST_F(LocaleTemplateUrlLoaderTest, OverrideDefaultSearch) { test_util()->VerifyLoad(); ASSERT_EQ(TemplateURLPrepopulateData::google.id, model()->GetDefaultSearchProvider()->prepopulate_id()); // Load local search engines first. ASSERT_TRUE( - handler()->LoadTemplateUrls(nullptr, JavaParamRef<jobject>(nullptr))); + loader()->LoadTemplateUrls(nullptr, JavaParamRef<jobject>(nullptr))); ASSERT_EQ(TemplateURLPrepopulateData::google.id, model()->GetDefaultSearchProvider()->prepopulate_id()); // Set one of the local search engine as default. - handler()->OverrideDefaultSearchProvider(nullptr, - JavaParamRef<jobject>(nullptr)); + loader()->OverrideDefaultSearchProvider(nullptr, + JavaParamRef<jobject>(nullptr)); ASSERT_EQ(TemplateURLPrepopulateData::naver.id, model()->GetDefaultSearchProvider()->prepopulate_id()); // Revert the default search engine tweak. - handler()->SetGoogleAsDefaultSearch(nullptr, JavaParamRef<jobject>(nullptr)); + loader()->SetGoogleAsDefaultSearch(nullptr, JavaParamRef<jobject>(nullptr)); ASSERT_EQ(TemplateURLPrepopulateData::google.id, model()->GetDefaultSearchProvider()->prepopulate_id()); } -TEST_F(SpecialLocaleHandlerTest, ChangedGoogleBaseURL) { +TEST_F(LocaleTemplateUrlLoaderTest, ChangedGoogleBaseURL) { test_util()->VerifyLoad(); auto google_keyword = base::ASCIIToUTF16("google.com"); ASSERT_THAT(model()->GetTemplateURLForKeyword(google_keyword), @@ -147,7 +145,7 @@ ASSERT_EQ(nullptr, model()->GetTemplateURLForKeyword(google_keyword)); ASSERT_TRUE( - handler()->LoadTemplateUrls(nullptr, JavaParamRef<jobject>(nullptr))); + loader()->LoadTemplateUrls(nullptr, JavaParamRef<jobject>(nullptr))); auto template_urls = model()->GetTemplateURLs(); ASSERT_EQ(1, std::count_if(template_urls.begin(), template_urls.end(),
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc index 1346a89..1e669aad 100644 --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc
@@ -393,9 +393,8 @@ if (!input) input = &empty_input; const TemplateURLService* template_url_service = GetTemplateURLService(); - return AutocompleteMatch::GURLToStrippedGURL(url1, AutocompleteInput(), - template_url_service, - base::string16()) == + return AutocompleteMatch::GURLToStrippedGURL( + url1, *input, template_url_service, base::string16()) == AutocompleteMatch::GURLToStrippedGURL( url2, *input, template_url_service, base::string16()); }
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client_unittest.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client_unittest.cc index ef002e0..477659b8 100644 --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client_unittest.cc +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client_unittest.cc
@@ -110,6 +110,10 @@ {"http://google.com", "https://google.com", "", true}, // Because we provided scheme, must match in scheme. {"http://google.com", "https://google.com", "http://google.com", false}, + {"https://www.apple.com/", "http://www.apple.com/", + "https://www.apple.com/", false}, + {"https://www.apple.com/", "https://www.apple.com/", + "https://www.apple.com/", true}, // Ignore ref if not in input. {"http://drive.google.com/doc/blablabla#page=10", "http://drive.google.com/doc/blablabla#page=111", "", true},
diff --git a/chrome/browser/autofill/android/phone_number_util_android.cc b/chrome/browser/autofill/android/phone_number_util_android.cc index 79044d6..e2b0dee 100644 --- a/chrome/browser/autofill/android/phone_number_util_android.cc +++ b/chrome/browser/autofill/android/phone_number_util_android.cc
@@ -22,12 +22,12 @@ std::string FormatPhoneNumberWithCountryCode( const std::string& phone_number, const std::string& country_code, - i18n::phonenumbers::PhoneNumberUtil::PhoneNumberFormat format) { - i18n::phonenumbers::PhoneNumber parsed_number; - i18n::phonenumbers::PhoneNumberUtil* phone_number_util = - i18n::phonenumbers::PhoneNumberUtil::GetInstance(); + ::i18n::phonenumbers::PhoneNumberUtil::PhoneNumberFormat format) { + ::i18n::phonenumbers::PhoneNumber parsed_number; + ::i18n::phonenumbers::PhoneNumberUtil* phone_number_util = + ::i18n::phonenumbers::PhoneNumberUtil::GetInstance(); if (phone_number_util->Parse(phone_number, country_code, &parsed_number) != - i18n::phonenumbers::PhoneNumberUtil::NO_PARSING_ERROR) { + ::i18n::phonenumbers::PhoneNumberUtil::NO_PARSING_ERROR) { return phone_number; } @@ -41,7 +41,7 @@ // not possible. std::string FormatPhoneNumber( const std::string& phone_number, - i18n::phonenumbers::PhoneNumberUtil::PhoneNumberFormat format) { + ::i18n::phonenumbers::PhoneNumberUtil::PhoneNumberFormat format) { return FormatPhoneNumberWithCountryCode( phone_number, autofill::AutofillCountry::CountryCodeForLocale( @@ -63,12 +63,12 @@ return ConvertUTF8ToJavaString( env, jcountry_code.is_null() ? FormatPhoneNumber(ConvertJavaStringToUTF8(env, jphone_number), - i18n::phonenumbers::PhoneNumberUtil:: + ::i18n::phonenumbers::PhoneNumberUtil:: PhoneNumberFormat::INTERNATIONAL) : FormatPhoneNumberWithCountryCode( ConvertJavaStringToUTF8(env, jphone_number), ConvertJavaStringToUTF8(env, jcountry_code), - i18n::phonenumbers::PhoneNumberUtil::PhoneNumberFormat:: + ::i18n::phonenumbers::PhoneNumberUtil::PhoneNumberFormat:: INTERNATIONAL)); } @@ -84,7 +84,7 @@ return ConvertUTF8ToJavaString( env, FormatPhoneNumber( ConvertJavaStringToUTF8(env, jphone_number), - i18n::phonenumbers::PhoneNumberUtil::PhoneNumberFormat::E164)); + ::i18n::phonenumbers::PhoneNumberUtil::PhoneNumberFormat::E164)); } // Checks whether the given number |jphone_number| is a possible number for a @@ -101,7 +101,7 @@ g_browser_process->GetApplicationLocale()) : ConvertJavaStringToUTF8(env, jcountry_code); - return i18n::phonenumbers::PhoneNumberUtil::GetInstance() + return ::i18n::phonenumbers::PhoneNumberUtil::GetInstance() ->IsPossibleNumberForString(phone_number, country_code); }
diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd index 07cd3ef..ed5bf61 100644 --- a/chrome/browser/browser_resources.grd +++ b/chrome/browser/browser_resources.grd
@@ -651,6 +651,9 @@ <include name="IDR_RESET_PASSWORD_JS" file="resources\reset_password\reset_password.js" type="BINDATA" compress="gzip" /> <include name="IDR_RESET_PASSWORD_MOJO_JS" file="${root_gen_dir}\chrome\browser\ui\webui\reset_password\reset_password.mojom.js" use_base_dir="false" type="BINDATA" compress="gzip" /> </if> + <if expr="not is_android"> + <include name="IDR_TAB_RANKER_EXAMPLE_PREPROCESSOR_CONFIG_PB" file="resource_coordinator\tab_ranker\example_preprocessor_config.pb" type="BINDATA" /> + </if> </includes> </release> </grit>
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index d8659f74..de08ac7 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc
@@ -4192,11 +4192,12 @@ ChromeContentBrowserClient::CreateLoginDelegate( net::AuthChallengeInfo* auth_info, content::ResourceRequestInfo::WebContentsGetter web_contents_getter, - bool is_main_frame, + bool is_request_for_main_frame, const GURL& url, bool first_auth_attempt, LoginAuthRequiredCallback auth_required_callback) { - return CreateLoginPrompt(auth_info, web_contents_getter, is_main_frame, url, + return CreateLoginPrompt(auth_info, web_contents_getter, + is_request_for_main_frame, url, std::move(auth_required_callback)); }
diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chrome_content_browser_client.h index 8f75f762..4cf48e87 100644 --- a/chrome/browser/chrome_content_browser_client.h +++ b/chrome/browser/chrome_content_browser_client.h
@@ -422,7 +422,7 @@ scoped_refptr<content::LoginDelegate> CreateLoginDelegate( net::AuthChallengeInfo* auth_info, content::ResourceRequestInfo::WebContentsGetter web_contents_getter, - bool is_main_frame, + bool is_request_for_main_frame, const GURL& url, bool first_auth_attempt, LoginAuthRequiredCallback auth_required_callback) override;
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index 68384ac9..1570c66 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn
@@ -1583,6 +1583,8 @@ "smb_client/smb_service.h", "smb_client/smb_service_factory.cc", "smb_client/smb_service_factory.h", + "smb_client/smb_service_helper.cc", + "smb_client/smb_service_helper.h", "smb_client/smb_task_queue.cc", "smb_client/smb_task_queue.h", "smb_client/smb_url.cc", @@ -2085,6 +2087,7 @@ "smb_client/discovery/mdns_host_locator_unittest.cc", "smb_client/discovery/network_scanner_unittest.cc", "smb_client/smb_file_system_id_test.cc", + "smb_client/smb_service_helper_unittest.cc", "smb_client/smb_service_unittest.cc", "smb_client/smb_task_queue_unittest.cc", "smb_client/smb_url_unittest.cc",
diff --git a/chrome/browser/chromeos/login/lock/views_screen_locker.cc b/chrome/browser/chromeos/login/lock/views_screen_locker.cc index 2115c40..8e08dbd 100644 --- a/chrome/browser/chromeos/login/lock/views_screen_locker.cc +++ b/chrome/browser/chromeos/login/lock/views_screen_locker.cc
@@ -8,6 +8,7 @@ #include <string> #include <utility> +#include "ash/public/interfaces/login_user_info.mojom.h" #include "base/bind.h" #include "base/i18n/time_formatting.h" #include "base/metrics/histogram_macros.h" @@ -39,6 +40,21 @@ namespace { constexpr char kLockDisplay[] = "lock"; + +ash::mojom::FingerprintUnlockState ConvertFromFingerprintState( + ScreenLocker::FingerprintState state) { + switch (state) { + case ScreenLocker::FingerprintState::kRemoved: + case ScreenLocker::FingerprintState::kHidden: + case ScreenLocker::FingerprintState::kDefault: + return ash::mojom::FingerprintUnlockState::UNAVAILABLE; + case ScreenLocker::FingerprintState::kSignin: + return ash::mojom::FingerprintUnlockState::AUTH_SUCCESS; + case ScreenLocker::FingerprintState::kFailed: + return ash::mojom::FingerprintUnlockState::AUTH_FAILED; + } +} + } // namespace ViewsScreenLocker::ViewsScreenLocker(ScreenLocker* screen_locker) @@ -150,7 +166,8 @@ void ViewsScreenLocker::SetFingerprintState( const AccountId& account_id, ScreenLocker::FingerprintState state) { - NOTIMPLEMENTED(); + LoginScreenClient::Get()->login_screen()->SetFingerprintUnlockState( + account_id, ConvertFromFingerprintState(state)); } content::WebContents* ViewsScreenLocker::GetWebContents() {
diff --git a/chrome/browser/chromeos/printing/printer_configurer.cc b/chrome/browser/chromeos/printing/printer_configurer.cc index fb3ba15..235439b 100644 --- a/chrome/browser/chromeos/printing/printer_configurer.cc +++ b/chrome/browser/chromeos/printing/printer_configurer.cc
@@ -315,6 +315,9 @@ case kNativePrintersNotAllowed: out << "native printers denied by policy"; break; + case kInvalidPrinterUpdate: + out << "printer edits would make printer unusable"; + break; case kPpdTooLarge: out << "PPD too large"; break;
diff --git a/chrome/browser/chromeos/printing/printer_configurer.h b/chrome/browser/chromeos/printing/printer_configurer.h index c672ba7..e6b8f53 100644 --- a/chrome/browser/chromeos/printing/printer_configurer.h +++ b/chrome/browser/chromeos/printing/printer_configurer.h
@@ -23,6 +23,7 @@ kPrinterUnreachable = 2, // Could not reach printer kDbusError = 3, // Could not contact debugd kNativePrintersNotAllowed = 4, // Tried adding/editing printers policy set + kInvalidPrinterUpdate = 5, // Tried updating printer with invalid values // Space left for additional errors // PPD errors
diff --git a/chrome/browser/chromeos/smb_client/discovery/network_scanner.cc b/chrome/browser/chromeos/smb_client/discovery/network_scanner.cc index b10a2c9..54302f7 100644 --- a/chrome/browser/chromeos/smb_client/discovery/network_scanner.cc +++ b/chrome/browser/chromeos/smb_client/discovery/network_scanner.cc
@@ -9,6 +9,7 @@ #include "base/bind.h" #include "base/bind_helpers.h" +#include "base/strings/string_util.h" #include "chrome/browser/chromeos/smb_client/discovery/host_locator.h" namespace chromeos { @@ -53,6 +54,17 @@ locators_.push_back(std::move(locator)); } +std::string NetworkScanner::ResolveHost(const std::string& host) const { + DCHECK(find_hosts_returned_); + + const auto& host_iter = found_hosts_.find(base::ToLowerASCII(host)); + if (host_iter == found_hosts_.end()) { + return ""; + } + + return host_iter->second; +} + void NetworkScanner::OnHostsFound(uint32_t request_id, bool success, const HostMap& host_map) { @@ -102,7 +114,11 @@ RequestInfo info = std::move(request_iter->second); requests_.erase(request_iter); - std::move(info.callback).Run(true /* success */, info.hosts_found); + // Save the found hosts for name resolution. + found_hosts_ = std::move(info.hosts_found); + find_hosts_returned_ = true; + + std::move(info.callback).Run(true /* success */, found_hosts_); } }
diff --git a/chrome/browser/chromeos/smb_client/discovery/network_scanner.h b/chrome/browser/chromeos/smb_client/discovery/network_scanner.h index ce5d4b7f..56bda3e 100644 --- a/chrome/browser/chromeos/smb_client/discovery/network_scanner.h +++ b/chrome/browser/chromeos/smb_client/discovery/network_scanner.h
@@ -31,7 +31,10 @@ }; // NetworkScanner discovers SMB hosts in the local network by querying -// registered HostLocators and aggregating their results. +// registered HostLocators and aggregating their results. RegisterHostLocator is +// used to register HostLocators that are responsible for finding hosts. +// FindHostsInNetwork is called to get a list of discoverable hosts in the +// network. ResolveHost is used to get the IP address of a given host. class NetworkScanner : public base::SupportsWeakPtr<NetworkScanner> { public: NetworkScanner(); @@ -40,12 +43,19 @@ // Query the registered HostLocators and return all the hosts found. // |callback| is called once all the HostLocators have responded with their // results. If there are no locators, the callback is fired immediately with - // an empty result and success set to false. + // an empty result and success set to false. Once this call has returned, the + // hosts found are cached locally and are resolvable individually through + // ResolveHost(). void FindHostsInNetwork(FindHostsCallback callback); // Registeres a |locator| to be queried when FindHostsInNetwork() is called. void RegisterHostLocator(std::unique_ptr<HostLocator> locator); + // Resolves |host| to an address using the cached results of + // FindHostsInNetwork(). FindHostsInNetwork() has to be called beforehand. If + // no address is found, this returns an empty string. + std::string ResolveHost(const std::string& host) const; + private: // Callback handler for HostLocator::FindHosts(). void OnHostsFound(uint32_t request_id, bool success, const HostMap& host_map); @@ -72,6 +82,14 @@ uint32_t next_request_id_ = 0; + // Hosts that are found from FindHostsInNetwork(). This is cached for name + // resolution when calling ResolveHost(). + HostMap found_hosts_; + + // True if FindHostsInNetwork() has been called and returned results + // regardless if any hosts are found. + bool find_hosts_returned_ = false; + DISALLOW_COPY_AND_ASSIGN(NetworkScanner); };
diff --git a/chrome/browser/chromeos/smb_client/discovery/network_scanner_unittest.cc b/chrome/browser/chromeos/smb_client/discovery/network_scanner_unittest.cc index 014232c..c74754d 100644 --- a/chrome/browser/chromeos/smb_client/discovery/network_scanner_unittest.cc +++ b/chrome/browser/chromeos/smb_client/discovery/network_scanner_unittest.cc
@@ -54,6 +54,18 @@ scanner_.FindHostsInNetwork(base::BindOnce(&ExpectFailure)); } + void ExpectResolvedHostEquals(const std::string& expected, + const std::string& host) { + EXPECT_EQ(expected, scanner_.ResolveHost(host)); + } + + // Registers |hosts| with a host locator and call FindHostsInNetwork() which + // caches the results. + void RegisterAndCacheHosts(const HostMap& hosts) { + RegisterHostLocatorWithHosts(hosts); + ExpectHostMapEqual(hosts); + } + private: NetworkScanner scanner_; @@ -134,5 +146,35 @@ ExpectHostMapEqual(expected); } +TEST_F(NetworkScannerTest, ResolveHostReturnsEmptyStringIfNoHostFound) { + HostMap hosts; + // Register a hostlocator with no hosts. + RegisterAndCacheHosts(hosts); + + // Returns an empty string since host could not be resolved. + ExpectResolvedHostEquals("", "server"); +} + +TEST_F(NetworkScannerTest, ResolveHostResolvesHostsFound) { + HostMap hosts; + hosts["share1"] = "1.2.3.4"; + hosts["share2"] = "4.5.6.7"; + RegisterAndCacheHosts(hosts); + + ExpectResolvedHostEquals("1.2.3.4", "share1"); + ExpectResolvedHostEquals("4.5.6.7", "share2"); + + // Returns an empty string since host could not be resolved. + ExpectResolvedHostEquals("", "share3"); +} + +TEST_F(NetworkScannerTest, ResolveHostWithUppercaseHost) { + HostMap hosts; + hosts["share1"] = "1.2.3.4"; + RegisterAndCacheHosts(hosts); + + ExpectResolvedHostEquals("1.2.3.4", "SHARE1"); +} + } // namespace smb_client } // namespace chromeos
diff --git a/chrome/browser/chromeos/smb_client/smb_service.cc b/chrome/browser/chromeos/smb_client/smb_service.cc index 8153cd3..7137287 100644 --- a/chrome/browser/chromeos/smb_client/smb_service.cc +++ b/chrome/browser/chromeos/smb_client/smb_service.cc
@@ -13,6 +13,7 @@ #include "chrome/browser/chromeos/smb_client/smb_file_system_id.h" #include "chrome/browser/chromeos/smb_client/smb_provider.h" #include "chrome/browser/chromeos/smb_client/smb_service_factory.h" +#include "chrome/browser/chromeos/smb_client/smb_service_helper.h" #include "chrome/common/chrome_features.h" #include "chromeos/dbus/dbus_thread_manager.h" #include "chromeos/dbus/smb_provider_client.h" @@ -22,6 +23,14 @@ namespace chromeos { namespace smb_client { +namespace { + +bool ContainsAt(const std::string& username) { + return username.find('@') != std::string::npos; +} + +} // namespace + SmbService::SmbService(Profile* profile) : provider_id_(ProviderId::CreateFromNativeId("smb")), profile_(profile) { if (base::FeatureList::IsEnabled(features::kNativeSmb)) { @@ -38,18 +47,23 @@ void SmbService::Mount(const file_system_provider::MountOptions& options, const base::FilePath& share_path, + const std::string& username, + const std::string& password, MountResponse callback) { if (!temp_file_manager_) { - InitTempFileManagerAndMount(options, share_path, std::move(callback)); + InitTempFileManagerAndMount(options, share_path, username, password, + std::move(callback)); return; } - CallMount(options, share_path, std::move(callback)); + CallMount(options, share_path, username, password, std::move(callback)); } void SmbService::InitTempFileManagerAndMount( const file_system_provider::MountOptions& options, const base::FilePath& share_path, + const std::string& username, + const std::string& password, MountResponse callback) { // InitTempFileManager() has to be called on a separate thread since it // contains a call that requires a blockable thread. @@ -60,7 +74,7 @@ base::BindOnce(&SmbService::InitTempFileManager, base::Unretained(this)); base::OnceClosure reply = base::BindOnce(&SmbService::CallMount, base::Unretained(this), options, - share_path, base::Passed(&callback)); + share_path, username, password, base::Passed(&callback)); base::PostTaskWithTraitsAndReply(FROM_HERE, task_traits, std::move(task), std::move(reply)); @@ -68,12 +82,35 @@ void SmbService::CallMount(const file_system_provider::MountOptions& options, const base::FilePath& share_path, + const std::string& username_input, + const std::string& password_input, MountResponse callback) { - // TODO(allenvic): Implement passing of credentials. This currently passes - // empty credentials to SmbProvider. + std::string username; + std::string password; + std::string workgroup; + + if (username_input.empty()) { + // If no credentials were provided and the user is ChromAD, pass the users + // username and workgroup for their email address to be used for Kerberos + // authentication. + user_manager::User* user = + chromeos::ProfileHelper::Get()->GetUserByProfile(profile_); + if (user && user->IsActiveDirectoryUser()) { + ParseUserPrincipalName(user->GetDisplayEmail(), &username, &workgroup); + } + } else { + // Credentials were provided so use them and parse the username into + // username and workgroup if neccessary. + username = username_input; + password = password_input; + if (ContainsAt(username)) { + ParseUserPrincipalName(username_input, &username, &workgroup); + } + } + GetSmbProviderClient()->Mount( - share_path, "" /* workgroup */, "" /* username */, - temp_file_manager_->WritePasswordToFile("" /* password */), + share_path, workgroup, username, + temp_file_manager_->WritePasswordToFile(password), base::BindOnce(&SmbService::OnMountResponse, AsWeakPtr(), base::Passed(&callback), options, share_path)); }
diff --git a/chrome/browser/chromeos/smb_client/smb_service.h b/chrome/browser/chromeos/smb_client/smb_service.h index c995d931..8ac313e 100644 --- a/chrome/browser/chromeos/smb_client/smb_service.h +++ b/chrome/browser/chromeos/smb_client/smb_service.h
@@ -49,6 +49,8 @@ // Calls SmbProviderClient::Mount(). void Mount(const file_system_provider::MountOptions& options, const base::FilePath& share_path, + const std::string& username, + const std::string& password, MountResponse callback); // Completes the mounting of an SMB file system, passing |options| on to @@ -68,12 +70,16 @@ void InitTempFileManagerAndMount( const file_system_provider::MountOptions& options, const base::FilePath& share_path, + const std::string& username, + const std::string& password, MountResponse callback); // Calls SmbProviderClient::Mount(). temp_file_manager_ must be initialized // before this is called. void CallMount(const file_system_provider::MountOptions& options, const base::FilePath& share_path, + const std::string& username, + const std::string& password, MountResponse callback); // Calls file_system_provider::Service::UnmountFileSystem().
diff --git a/chrome/browser/chromeos/smb_client/smb_service_helper.cc b/chrome/browser/chromeos/smb_client/smb_service_helper.cc new file mode 100644 index 0000000..da68159 --- /dev/null +++ b/chrome/browser/chromeos/smb_client/smb_service_helper.cc
@@ -0,0 +1,32 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/chromeos/smb_client/smb_service_helper.h" + +#include "base/strings/string_split.h" +#include "base/strings/string_util.h" + +namespace chromeos { +namespace smb_client { + +bool ParseUserPrincipalName(const std::string& user_principal_name, + std::string* user_name, + std::string* workgroup) { + DCHECK(user_name); + DCHECK(workgroup); + std::vector<std::string> parts = base::SplitString( + user_principal_name, "@", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); + if (parts.size() != 2 || parts.at(0).empty() || parts.at(1).empty()) { + // Don't log user_principal_name, it might contain sensitive data. + LOG(ERROR) << "Failed to parse user principal name. Expected form " + "'user@some.realm'."; + return false; + } + *user_name = std::move(parts.at(0)); + *workgroup = base::ToUpperASCII(std::move(parts.at(1))); + return true; +} + +} // namespace smb_client +} // namespace chromeos
diff --git a/chrome/browser/chromeos/smb_client/smb_service_helper.h b/chrome/browser/chromeos/smb_client/smb_service_helper.h new file mode 100644 index 0000000..e541ed0 --- /dev/null +++ b/chrome/browser/chromeos/smb_client/smb_service_helper.h
@@ -0,0 +1,23 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_CHROMEOS_SMB_CLIENT_SMB_SERVICE_HELPER_H_ +#define CHROME_BROWSER_CHROMEOS_SMB_CLIENT_SMB_SERVICE_HELPER_H_ + +#include <string> +#include <vector> + +#include <base/logging.h> + +namespace chromeos { +namespace smb_client { + +bool ParseUserPrincipalName(const std::string& user_principal_name, + std::string* user_name, + std::string* workgroup); + +} // namespace smb_client +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_SMB_CLIENT_SMB_SERVICE_HELPER_H_
diff --git a/chrome/browser/chromeos/smb_client/smb_service_helper_unittest.cc b/chrome/browser/chromeos/smb_client/smb_service_helper_unittest.cc new file mode 100644 index 0000000..02f4ad7 --- /dev/null +++ b/chrome/browser/chromeos/smb_client/smb_service_helper_unittest.cc
@@ -0,0 +1,102 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/chromeos/smb_client/smb_service_helper.h" + +#include <string> + +#include "testing/gtest/include/gtest/gtest.h" + +namespace chromeos { +namespace smb_client { + +class SmbServiceHelperTest : public ::testing::Test { + public: + SmbServiceHelperTest() = default; + ~SmbServiceHelperTest() override = default; + + protected: + // Helpers for ParseUserPrincipleName. + std::string user_name_; + std::string realm_; + + bool ParseUserPrincipalName(const char* user_principal_name_) { + return ::chromeos::smb_client::ParseUserPrincipalName(user_principal_name_, + &user_name_, &realm_); + } + + private: + DISALLOW_COPY_AND_ASSIGN(SmbServiceHelperTest); +}; + +// a@b.c succeeds. +TEST_F(SmbServiceHelperTest, ParseUPNSuccess) { + EXPECT_TRUE(ParseUserPrincipalName("user@domain.com")); + EXPECT_EQ(user_name_, "user"); + EXPECT_EQ(realm_, "DOMAIN.COM"); +} + +// a@b.c.d.e succeeds. +TEST_F(SmbServiceHelperTest, ParseUPNSuccess_Long) { + EXPECT_TRUE(ParseUserPrincipalName("user@a.domain.company.com")); + EXPECT_EQ(user_name_, "user"); + EXPECT_EQ(realm_, "A.DOMAIN.COMPANY.COM"); +} + +// Capitalization works as expected. +TEST_F(SmbServiceHelperTest, ParseUPNSuccess_MixedCaps) { + EXPECT_TRUE(ParseUserPrincipalName("UsEr@CoMPaNy.DOMain.com")); + EXPECT_EQ(user_name_, "UsEr"); + EXPECT_EQ(realm_, "COMPANY.DOMAIN.COM"); +} + +// a.b@c.d succeeds, even though it is invalid (rejected by kinit). +TEST_F(SmbServiceHelperTest, ParseUPNSuccess_DotAtDot) { + EXPECT_TRUE(ParseUserPrincipalName("user.team@domain.com")); + EXPECT_EQ(user_name_, "user.team"); + EXPECT_EQ(realm_, "DOMAIN.COM"); +} + +// a@ fails (no workgroup.domain). +TEST_F(SmbServiceHelperTest, ParseUPNFail_NoRealm) { + EXPECT_FALSE(ParseUserPrincipalName("user@")); +} + +// a fails (no @workgroup.domain). +TEST_F(SmbServiceHelperTest, ParseUPNFail_NoAtRealm) { + EXPECT_FALSE(ParseUserPrincipalName("user")); +} + +// a. fails (no @workgroup.domain and trailing . is invalid, anyway). +TEST_F(SmbServiceHelperTest, ParseUPNFail_NoAtRealmButDot) { + EXPECT_FALSE(ParseUserPrincipalName("user.")); +} + +// a@b@c fails (double at). +TEST_F(SmbServiceHelperTest, ParseUPNFail_AtAt) { + EXPECT_FALSE(ParseUserPrincipalName("user@company@domain")); +} + +// a@b@c fails (double at). +TEST_F(SmbServiceHelperTest, ParseUPNFail_AtAtDot) { + EXPECT_FALSE(ParseUserPrincipalName("user@company@domain.com")); +} + +// @b.c fails (empty user name). +TEST_F(SmbServiceHelperTest, ParseUPNFail_NoUpn) { + EXPECT_FALSE(ParseUserPrincipalName("@company.domain")); +} + +// b.c fails (no user name@). +TEST_F(SmbServiceHelperTest, ParseUPNFail_NoUpnAt) { + EXPECT_FALSE(ParseUserPrincipalName("company.domain")); +} + +// .b.c fails (no user name@ and initial . is invalid, anyway). +TEST_F(SmbServiceHelperTest, ParseUPNFail_NoUpnAtButDot) { + EXPECT_FALSE(ParseUserPrincipalName(".company.domain")); +} + +} // namespace smb_client +} // namespace chromeos
diff --git a/chrome/browser/extensions/api/tabs/tabs_event_router.cc b/chrome/browser/extensions/api/tabs/tabs_event_router.cc index af63faf..05f4274 100644 --- a/chrome/browser/extensions/api/tabs/tabs_event_router.cc +++ b/chrome/browser/extensions/api/tabs/tabs_event_router.cc
@@ -248,7 +248,9 @@ std::move(args), EventRouter::USER_GESTURE_UNKNOWN); } -void TabsEventRouter::TabDetachedAt(WebContents* contents, int index) { +void TabsEventRouter::TabDetachedAt(WebContents* contents, + int index, + bool was_active) { if (!GetTabEntry(contents)) { // The tab was removed. Don't send detach event. return;
diff --git a/chrome/browser/extensions/api/tabs/tabs_event_router.h b/chrome/browser/extensions/api/tabs/tabs_event_router.h index 7f0ac1eec..d0b11d8 100644 --- a/chrome/browser/extensions/api/tabs/tabs_event_router.h +++ b/chrome/browser/extensions/api/tabs/tabs_event_router.h
@@ -61,7 +61,9 @@ void TabClosingAt(TabStripModel* tab_strip_model, content::WebContents* contents, int index) override; - void TabDetachedAt(content::WebContents* contents, int index) override; + void TabDetachedAt(content::WebContents* contents, + int index, + bool was_active) override; void ActiveTabChanged(content::WebContents* old_contents, content::WebContents* new_contents, int index,
diff --git a/chrome/browser/extensions/install_signer.cc b/chrome/browser/extensions/install_signer.cc index 0a2b2c04..4758b480 100644 --- a/chrome/browser/extensions/install_signer.cc +++ b/chrome/browser/extensions/install_signer.cc
@@ -100,7 +100,7 @@ hash->Update(salt.data(), salt.size()); std::string result_bytes(crypto::kSHA256Length, 0); - hash->Finish(base::string_as_array(&result_bytes), result_bytes.size()); + hash->Finish(base::data(result_bytes), result_bytes.size()); base::Base64Encode(result_bytes, result); return true; @@ -333,8 +333,7 @@ } salt_ = std::string(kSaltBytes, 0); - DCHECK_EQ(kSaltBytes, salt_.size()); - crypto::RandBytes(base::string_as_array(&salt_), salt_.size()); + crypto::RandBytes(base::data(salt_), salt_.size()); std::string hash_base64; if (!HashWithMachineId(salt_, &hash_base64)) {
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 6a57ffd7..6994314 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -1593,6 +1593,12 @@ const char kSyncSandboxDescription[] = "Connects to the testing server for Chrome Sync."; +const char kSystemKeyboardLockName[] = "Experimental system keyboard lock"; +const char kSystemKeyboardLockDescription[] = + "Enables websites to use the keyboard.lock() API to intercept system " + "keyboard shortcuts and have the events routed directly to the website " + "when in fullscreen mode."; + const char kTabAudioMutingName[] = "Tab audio muting UI control"; const char kTabAudioMutingDescription[] = "When enabled, the audio indicators in the tab strip double as tab audio "
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index a116e83..37cfbf3 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -964,6 +964,9 @@ extern const char kStopNonTimersInBackgroundName[]; extern const char kStopNonTimersInBackgroundDescription[]; +extern const char kSystemKeyboardLockName[]; +extern const char kSystemKeyboardLockDescription[]; + extern const char kTLS13VariantName[]; extern const char kTLS13VariantDescription[]; extern const char kTLS13VariantDisabled[];
diff --git a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc index 99ec259..5f123c4 100644 --- a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc +++ b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
@@ -13,7 +13,6 @@ #include "base/guid.h" #include "base/logging.h" #include "base/memory/ptr_util.h" -#include "base/metrics/field_trial.h" #include "base/metrics/histogram_macros.h" #include "base/strings/string_util.h" #include "build/build_config.h" @@ -365,32 +364,6 @@ #endif } -bool ChromeResourceDispatcherHostDelegate::ShouldBeginRequest( - const std::string& method, - const GURL& url, - ResourceType resource_type, - content::ResourceContext* resource_context) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - - // Handle a PREFETCH resource type. If prefetch is disabled, squelch the - // request. Otherwise, do a normal request to warm the cache. - if (resource_type == content::RESOURCE_TYPE_PREFETCH) { - // All PREFETCH requests should be GETs, but be defensive about it. - if (method != "GET") - return false; - - // If prefetch is disabled, kill the request. - std::string prefetch_experiment = - base::FieldTrialList::FindFullName("Prefetch"); - if (base::StartsWith(prefetch_experiment, "ExperimentDisable", - base::CompareCase::INSENSITIVE_ASCII)) { - return false; - } - } - - return true; -} - void ChromeResourceDispatcherHostDelegate::RequestBeginning( net::URLRequest* request, content::ResourceContext* resource_context,
diff --git a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.h b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.h index a2767b5..47ef7539 100644 --- a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.h +++ b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.h
@@ -49,10 +49,6 @@ ~ChromeResourceDispatcherHostDelegate() override; // ResourceDispatcherHostDelegate implementation. - bool ShouldBeginRequest(const std::string& method, - const GURL& url, - content::ResourceType resource_type, - content::ResourceContext* resource_context) override; void RequestBeginning(net::URLRequest* request, content::ResourceContext* resource_context, content::AppCacheService* appcache_service,
diff --git a/chrome/browser/media_galleries/fileapi/supported_image_type_validator.cc b/chrome/browser/media_galleries/fileapi/supported_image_type_validator.cc index f1f0703..991b0a6 100644 --- a/chrome/browser/media_galleries/fileapi/supported_image_type_validator.cc +++ b/chrome/browser/media_galleries/fileapi/supported_image_type_validator.cc
@@ -44,8 +44,7 @@ result.reset(new std::string); result->resize(file_info.size); - if (file.Read(0, base::string_as_array(result.get()), file_info.size) != - file_info.size) { + if (file.Read(0, base::data(*result), file_info.size) != file_info.size) { result.reset(); }
diff --git a/chrome/browser/metrics/process_memory_metrics_emitter.cc b/chrome/browser/metrics/process_memory_metrics_emitter.cc index d347bd46..26813ee5 100644 --- a/chrome/browser/metrics/process_memory_metrics_emitter.cc +++ b/chrome/browser/metrics/process_memory_metrics_emitter.cc
@@ -377,18 +377,19 @@ #if BUILDFLAG(ENABLE_EXTENSIONS) // Retrieve the renderer process host for the given pid. int rph_id = -1; - auto iter = content::RenderProcessHost::AllHostsIterator(); - while (!iter.IsAtEnd()) { + bool found = false; + for (auto iter = content::RenderProcessHost::AllHostsIterator(); + !iter.IsAtEnd(); iter.Advance()) { if (!iter.GetCurrentValue()->GetProcess().IsValid()) continue; if (iter.GetCurrentValue()->GetProcess().Pid() == pid) { + found = true; rph_id = iter.GetCurrentValue()->GetID(); break; } - iter.Advance(); } - if (iter.IsAtEnd()) + if (!found) return 0; // Count the number of extensions associated with that renderer process host
diff --git a/chrome/browser/plugins/plugin_power_saver_browsertest.cc b/chrome/browser/plugins/plugin_power_saver_browsertest.cc index f2ca7bd6..aad2b870 100644 --- a/chrome/browser/plugins/plugin_power_saver_browsertest.cc +++ b/chrome/browser/plugins/plugin_power_saver_browsertest.cc
@@ -180,10 +180,10 @@ int w = 0; int h = 0; std::vector<unsigned char> decoded; - if (!gfx::PNGCodec::Decode(reinterpret_cast<unsigned char*>( - base::string_as_array(&reference_data)), - reference_data.size(), gfx::PNGCodec::FORMAT_BGRA, - &decoded, &w, &h)) { + if (!gfx::PNGCodec::Decode( + reinterpret_cast<const unsigned char*>(base::data(reference_data)), + reference_data.size(), gfx::PNGCodec::FORMAT_BGRA, &decoded, &w, + &h)) { return false; }
diff --git a/chrome/browser/predictors/autocomplete_action_predictor.cc b/chrome/browser/predictors/autocomplete_action_predictor.cc index 581bac3b7..6d9624a 100644 --- a/chrome/browser/predictors/autocomplete_action_predictor.cc +++ b/chrome/browser/predictors/autocomplete_action_predictor.cc
@@ -352,11 +352,11 @@ DATABASE_ACTION_DELETE_ALL, DATABASE_ACTION_COUNT); } -void AutocompleteActionPredictor::DeleteRowsWithURLs( - const history::URLRows& rows) { +void AutocompleteActionPredictor::DeleteRowsFromCaches( + const history::URLRows& rows, + std::vector<AutocompleteActionPredictorTable::Row::Id>* id_list) { DCHECK(initialized_); - - std::vector<AutocompleteActionPredictorTable::Row::Id> id_list; + DCHECK(id_list); for (DBCacheMap::iterator it = db_cache_.begin(); it != db_cache_.end();) { if (std::find_if(rows.begin(), rows.end(), @@ -364,22 +364,13 @@ rows.end()) { const DBIdCacheMap::iterator id_it = db_id_cache_.find(it->first); DCHECK(id_it != db_id_cache_.end()); - id_list.push_back(id_it->second); + id_list->push_back(id_it->second); db_id_cache_.erase(id_it); db_cache_.erase(it++); } else { ++it; } } - - if (table_.get()) { - table_->GetTaskRunner()->PostTask( - FROM_HERE, base::BindOnce(&AutocompleteActionPredictorTable::DeleteRows, - table_, id_list)); - } - - UMA_HISTOGRAM_ENUMERATION("AutocompleteActionPredictor.DatabaseAction", - DATABASE_ACTION_DELETE_SOME, DATABASE_ACTION_COUNT); } void AutocompleteActionPredictor::AddAndUpdateRows( @@ -488,11 +479,9 @@ std::vector<AutocompleteActionPredictorTable::Row::Id>* id_list) { CHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); DCHECK(!profile_->IsOffTheRecord()); - DCHECK(!initialized_); DCHECK(url_db); DCHECK(id_list); - id_list->clear(); for (DBCacheMap::iterator it = db_cache_.begin(); it != db_cache_.end();) { history::URLRow url_row; @@ -565,10 +554,28 @@ const history::DeletionInfo& deletion_info) { DCHECK(initialized_); - if (deletion_info.IsAllHistory()) + if (deletion_info.IsAllHistory()) { DeleteAllRows(); - else - DeleteRowsWithURLs(deletion_info.deleted_rows()); + return; + } + + std::vector<AutocompleteActionPredictorTable::Row::Id> id_list; + DeleteRowsFromCaches(deletion_info.deleted_rows(), &id_list); + + if (!deletion_info.is_from_expiration() && history_service) { + auto* url_db = history_service->InMemoryDatabase(); + if (url_db) + DeleteOldIdsFromCaches(url_db, &id_list); + } + + if (table_.get()) { + table_->GetTaskRunner()->PostTask( + FROM_HERE, base::BindOnce(&AutocompleteActionPredictorTable::DeleteRows, + table_, std::move(id_list))); + } + + UMA_HISTOGRAM_ENUMERATION("AutocompleteActionPredictor.DatabaseAction", + DATABASE_ACTION_DELETE_SOME, DATABASE_ACTION_COUNT); } void AutocompleteActionPredictor::OnHistoryServiceLoaded(
diff --git a/chrome/browser/predictors/autocomplete_action_predictor.h b/chrome/browser/predictors/autocomplete_action_predictor.h index 1244fcc..5380272 100644 --- a/chrome/browser/predictors/autocomplete_action_predictor.h +++ b/chrome/browser/predictors/autocomplete_action_predictor.h
@@ -175,8 +175,12 @@ // Removes all rows from the database and caches. void DeleteAllRows(); - // Removes rows from the database and caches that contain a URL in |rows|. - void DeleteRowsWithURLs(const history::URLRows& rows); + // Removes rows that contain a URL in |rows| from the local caches. + // |id_list| must not be nullptr. Every row id deleted will be added to + // |id_list|. + void DeleteRowsFromCaches( + const history::URLRows& rows, + std::vector<AutocompleteActionPredictorTable::Row::Id>* id_list); // Adds and updates rows in the database and caches. void AddAndUpdateRows( @@ -198,7 +202,8 @@ void DeleteOldEntries(history::URLDatabase* url_db); // Deletes any old or invalid entries from the local caches. |url_db| and - // |id_list| must not be NULL. Every row id deleted will be added to id_list. + // |id_list| must not be nullptr. Every row id deleted will be added to + // |id_list|. void DeleteOldIdsFromCaches( history::URLDatabase* url_db, std::vector<AutocompleteActionPredictorTable::Row::Id>* id_list);
diff --git a/chrome/browser/predictors/autocomplete_action_predictor_unittest.cc b/chrome/browser/predictors/autocomplete_action_predictor_unittest.cc index da90cff..0cf0e91e 100644 --- a/chrome/browser/predictors/autocomplete_action_predictor_unittest.cc +++ b/chrome/browser/predictors/autocomplete_action_predictor_unittest.cc
@@ -120,11 +120,6 @@ typedef AutocompleteActionPredictor::DBCacheMap DBCacheMap; typedef AutocompleteActionPredictor::DBIdCacheMap DBIdCacheMap; - void AddAllRowsToHistory() { - for (size_t i = 0; i < arraysize(test_url_db); ++i) - ASSERT_TRUE(AddRowToHistory(test_url_db[i])); - } - history::URLID AddRowToHistory(const TestUrlInfo& test_row) { history::HistoryService* history = HistoryServiceFactory::GetForProfile( profile_.get(), ServiceAccessType::EXPLICIT_ACCESS); @@ -155,7 +150,7 @@ } void AddAllRows() { - for (size_t i = 0; i < arraysize(test_url_db); ++i) + for (size_t i = 0; i < base::size(test_url_db); ++i) AddRow(test_url_db[i]); } @@ -177,12 +172,66 @@ AutocompleteActionPredictorTable::Rows(1, row)); } + void OnURLsDeletedTest(bool expired) { + ASSERT_NO_FATAL_FAILURE(AddAllRows()); + + EXPECT_EQ(base::size(test_url_db), db_cache()->size()); + EXPECT_EQ(base::size(test_url_db), db_id_cache()->size()); + + std::vector<size_t> expected; + history::URLRows rows; + for (size_t i = 0; i < base::size(test_url_db); ++i) { + bool expect_deleted = false; + + if (i < 2) { + rows.push_back(history::URLRow(test_url_db[i].url)); + expect_deleted = true; + } + + if (!expired && + test_url_db[i].days_from_now > maximum_days_to_keep_entry()) { + expect_deleted = true; + } + + if (i != 3 && i != 4) + ASSERT_TRUE(AddRowToHistory(test_url_db[i])); + else if (!expired) + expect_deleted = true; + + if (!expect_deleted) + expected.push_back(i); + } + + history::HistoryService* history_service = + HistoryServiceFactory::GetForProfile( + profile_.get(), ServiceAccessType::EXPLICIT_ACCESS); + ASSERT_TRUE(history_service); + + predictor_->OnURLsDeleted( + history_service, + history::DeletionInfo(history::DeletionTimeRange::Invalid(), expired, + rows, std::set<GURL>(), base::nullopt)); + + EXPECT_EQ(expected.size(), db_cache()->size()); + EXPECT_EQ(expected.size(), db_id_cache()->size()); + + for (size_t i = 0; i < base::size(test_url_db); ++i) { + DBCacheKey key = {test_url_db[i].user_text, test_url_db[i].url}; + + bool deleted = !base::ContainsValue(expected, i); + EXPECT_EQ(deleted, db_cache()->find(key) == db_cache()->end()); + EXPECT_EQ(deleted, db_id_cache()->find(key) == db_id_cache()->end()); + } + } + void DeleteAllRows() { predictor_->DeleteAllRows(); } - void DeleteRowsWithURLs(const history::URLRows& rows) { - predictor_->DeleteRowsWithURLs(rows); + void DeleteRowsFromCaches( + const history::URLRows& rows, + std::vector<AutocompleteActionPredictorTable::Row::Id>* id_list) { + predictor_->DeleteRowsFromCaches(rows, id_list); } void DeleteOldIdsFromCaches( @@ -195,10 +244,6 @@ history::URLDatabase* url_db = history_service->InMemoryDatabase(); ASSERT_TRUE(url_db); - // Reset the predictor's |initialized_| flag for the life of this call, - // since outside of testing this function is only supposed to be reached - // before initialization is completed. - base::AutoReset<bool> initialized_reset(&predictor_->initialized_, false); predictor_->DeleteOldIdsFromCaches(url_db, id_list); } @@ -240,8 +285,8 @@ TEST_F(AutocompleteActionPredictorTest, UpdateRow) { ASSERT_NO_FATAL_FAILURE(AddAllRows()); - EXPECT_EQ(arraysize(test_url_db), db_cache()->size()); - EXPECT_EQ(arraysize(test_url_db), db_id_cache()->size()); + EXPECT_EQ(base::size(test_url_db), db_cache()->size()); + EXPECT_EQ(base::size(test_url_db), db_id_cache()->size()); // Get the data back out of the cache. const DBCacheKey key = { test_url_db[0].user_text, test_url_db[0].url }; @@ -276,8 +321,8 @@ TEST_F(AutocompleteActionPredictorTest, DeleteAllRows) { ASSERT_NO_FATAL_FAILURE(AddAllRows()); - EXPECT_EQ(arraysize(test_url_db), db_cache()->size()); - EXPECT_EQ(arraysize(test_url_db), db_id_cache()->size()); + EXPECT_EQ(base::size(test_url_db), db_cache()->size()); + EXPECT_EQ(base::size(test_url_db), db_id_cache()->size()); DeleteAllRows(); @@ -285,27 +330,34 @@ EXPECT_TRUE(db_id_cache()->empty()); } -TEST_F(AutocompleteActionPredictorTest, DeleteRowsWithURLs) { - ASSERT_NO_FATAL_FAILURE(AddAllRows()); - - EXPECT_EQ(arraysize(test_url_db), db_cache()->size()); - EXPECT_EQ(arraysize(test_url_db), db_id_cache()->size()); - +TEST_F(AutocompleteActionPredictorTest, DeleteRowsFromCaches) { + std::vector<AutocompleteActionPredictorTable::Row::Id> all_ids; history::URLRows rows; - for (size_t i = 0; i < 2; ++i) - rows.push_back(history::URLRow(test_url_db[i].url)); + for (size_t i = 0; i < base::size(test_url_db); ++i) { + std::string row_id = AddRow(test_url_db[i]); + all_ids.push_back(row_id); - DeleteRowsWithURLs(rows); + if (i < 2) + rows.push_back(history::URLRow(test_url_db[i].url)); + } - EXPECT_EQ(arraysize(test_url_db) - 2, db_cache()->size()); - EXPECT_EQ(arraysize(test_url_db) - 2, db_id_cache()->size()); + EXPECT_EQ(base::size(test_url_db), all_ids.size()); + EXPECT_EQ(base::size(test_url_db), db_cache()->size()); + EXPECT_EQ(base::size(test_url_db), db_id_cache()->size()); - for (size_t i = 0; i < arraysize(test_url_db); ++i) { + std::vector<AutocompleteActionPredictorTable::Row::Id> id_list; + DeleteRowsFromCaches(rows, &id_list); + + EXPECT_EQ(base::size(test_url_db) - 2, db_cache()->size()); + EXPECT_EQ(base::size(test_url_db) - 2, db_id_cache()->size()); + + for (size_t i = 0; i < base::size(test_url_db); ++i) { DBCacheKey key = { test_url_db[i].user_text, test_url_db[i].url }; bool deleted = (i < 2); EXPECT_EQ(deleted, db_cache()->find(key) == db_cache()->end()); EXPECT_EQ(deleted, db_id_cache()->find(key) == db_id_cache()->end()); + EXPECT_EQ(deleted, base::ContainsValue(id_list, all_ids[i])); } } @@ -313,7 +365,7 @@ std::vector<AutocompleteActionPredictorTable::Row::Id> expected; std::vector<AutocompleteActionPredictorTable::Row::Id> all_ids; - for (size_t i = 0; i < arraysize(test_url_db); ++i) { + for (size_t i = 0; i < base::size(test_url_db); ++i) { std::string row_id = AddRow(test_url_db[i]); all_ids.push_back(row_id); @@ -334,15 +386,21 @@ EXPECT_EQ(all_ids.size() - expected.size(), db_cache()->size()); EXPECT_EQ(all_ids.size() - expected.size(), db_id_cache()->size()); - for (std::vector<AutocompleteActionPredictorTable::Row::Id>::iterator it = - all_ids.begin(); - it != all_ids.end(); ++it) { + for (auto it = all_ids.begin(); it != all_ids.end(); ++it) { bool in_expected = base::ContainsValue(expected, *it); bool in_list = base::ContainsValue(id_list, *it); EXPECT_EQ(in_expected, in_list); } } +TEST_F(AutocompleteActionPredictorTest, OnURLsDeletedExpired) { + OnURLsDeletedTest(true); +} + +TEST_F(AutocompleteActionPredictorTest, OnURLsDeletedNonExpired) { + OnURLsDeletedTest(false); +} + TEST_F(AutocompleteActionPredictorTest, RecommendActionURL) { ASSERT_NO_FATAL_FAILURE(AddAllRows()); @@ -352,7 +410,7 @@ prerender::PrerenderManager::SetMode( prerender::PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH); - for (size_t i = 0; i < arraysize(test_url_db); ++i) { + for (size_t i = 0; i < base::size(test_url_db); ++i) { match.destination_url = GURL(test_url_db[i].url); EXPECT_EQ(test_url_db[i].expected_action, predictor()->RecommendAction(test_url_db[i].user_text, match)) @@ -369,7 +427,7 @@ prerender::PrerenderManager::SetMode( prerender::PrerenderManager::PRERENDER_MODE_NOSTATE_PREFETCH); - for (size_t i = 0; i < arraysize(test_url_db); ++i) { + for (size_t i = 0; i < base::size(test_url_db); ++i) { match.destination_url = GURL(test_url_db[i].url); AutocompleteActionPredictor::Action expected_action = (test_url_db[i].expected_action ==
diff --git a/chrome/browser/prefetch/prefetch_browsertest.cc b/chrome/browser/prefetch/prefetch_browsertest.cc index 032a31c..9ffb06b 100644 --- a/chrome/browser/prefetch/prefetch_browsertest.cc +++ b/chrome/browser/prefetch/prefetch_browsertest.cc
@@ -3,7 +3,6 @@ // found in the LICENSE file. #include "base/base_switches.h" -#include "base/command_line.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/net/prediction_options.h" #include "chrome/browser/profiles/profile.h" @@ -40,17 +39,9 @@ } }; -class PrefetchBrowserTestBase : public InProcessBrowserTest { +class PrefetchBrowserTest : public InProcessBrowserTest { public: - explicit PrefetchBrowserTestBase(bool disabled_via_field_trial) - : disabled_via_field_trial_(disabled_via_field_trial) {} - - void SetUpCommandLine(base::CommandLine* command_line) override { - if (disabled_via_field_trial_) { - command_line->AppendSwitchASCII(switches::kForceFieldTrials, - "Prefetch/ExperimentDisabled/"); - } - } + PrefetchBrowserTest() {} void SetUpOnMainThread() override { ASSERT_TRUE(embedded_test_server()->Start()); @@ -72,33 +63,11 @@ ui_test_utils::NavigateToURL(browser, url); return expected_title == title_watcher.WaitAndGetTitle(); } - - private: - bool disabled_via_field_trial_; }; -class PrefetchBrowserTestPrediction : public PrefetchBrowserTestBase { - public: - PrefetchBrowserTestPrediction() : PrefetchBrowserTestBase(false) {} -}; - -class PrefetchBrowserTestPredictionDisabled : public PrefetchBrowserTestBase { - public: - PrefetchBrowserTestPredictionDisabled() : PrefetchBrowserTestBase(true) {} -}; - -// Prefetch is disabled via field experiment. Prefetch should be dropped. -IN_PROC_BROWSER_TEST_F(PrefetchBrowserTestPredictionDisabled, - ExperimentDisabled) { - EXPECT_TRUE(RunPrefetchExperiment(false, browser())); - // Should not prefetch even if preference is WIFI_ONLY. - SetPreference(NetworkPredictionOptions::NETWORK_PREDICTION_WIFI_ONLY); - EXPECT_TRUE(RunPrefetchExperiment(false, browser())); -} - // When initiated from the renderer, prefetch should be allowed regardless of // the network type. -IN_PROC_BROWSER_TEST_F(PrefetchBrowserTestPrediction, PreferenceWorks) { +IN_PROC_BROWSER_TEST_F(PrefetchBrowserTest, PreferenceWorks) { // Set real NetworkChangeNotifier singleton aside. std::unique_ptr<NetworkChangeNotifier::DisableForTest> disable_for_test( new NetworkChangeNotifier::DisableForTest); @@ -131,7 +100,7 @@ // Bug 339909: When in incognito mode the browser crashed due to an // uninitialized preference member. Verify that it no longer does. -IN_PROC_BROWSER_TEST_F(PrefetchBrowserTestPrediction, IncognitoTest) { +IN_PROC_BROWSER_TEST_F(PrefetchBrowserTest, IncognitoTest) { Profile* incognito_profile = browser()->profile()->GetOffTheRecordProfile(); Browser* incognito_browser = new Browser(Browser::CreateParams(incognito_profile, true));
diff --git a/chrome/browser/resource_coordinator/tab_activity_watcher.cc b/chrome/browser/resource_coordinator/tab_activity_watcher.cc index fd3dcc4f..a097c84 100644 --- a/chrome/browser/resource_coordinator/tab_activity_watcher.cc +++ b/chrome/browser/resource_coordinator/tab_activity_watcher.cc
@@ -7,6 +7,9 @@ #include "base/metrics/histogram_macros.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/resource_coordinator/tab_metrics_logger.h" +#include "chrome/browser/resource_coordinator/tab_ranker/mru_features.h" +#include "chrome/browser/resource_coordinator/tab_ranker/tab_features.h" +#include "chrome/browser/resource_coordinator/tab_ranker/window_features.h" #include "chrome/browser/resource_coordinator/time.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" @@ -48,6 +51,31 @@ public: ~WebContentsData() override = default; + // Calculates the tab reactivation score for a background tab. Returns false + // if the score could not be calculated, e.g. because the tab is in the + // foreground. + base::Optional<float> CalculateReactivationScore() { + if (web_contents()->IsBeingDestroyed() || backgrounded_time_.is_null()) + return base::nullopt; + + const Browser* browser = chrome::FindBrowserWithWebContents(web_contents()); + if (!browser) + return base::nullopt; + + tab_ranker::TabFeatures tab = TabMetricsLogger::GetTabFeatures( + browser, tab_metrics_, NowTicks() - backgrounded_time_); + tab_ranker::WindowFeatures window = + WindowActivityWatcher::CreateWindowFeatures(browser); + + float score; + tab_ranker::TabRankerResult result = + TabActivityWatcher::GetInstance()->predictor_.ScoreTab( + tab, window, GetMRUFeatures(), &score); + if (result == tab_ranker::TabRankerResult::kSuccess) + return score; + return base::nullopt; + } + // Call when the associated WebContents has been replaced. void WasReplaced() { was_replaced_ = true; } @@ -157,11 +185,13 @@ // Log the event before updating times. TabActivityWatcher::GetInstance() ->tab_metrics_logger_->LogBackgroundTabShown( - ukm_source_id_, NowTicks() - backgrounded_time_, GetMRUMetrics()); + ukm_source_id_, NowTicks() - backgrounded_time_, GetMRUFeatures()); backgrounded_time_ = base::TimeTicks(); foregrounded_time_ = NowTicks(); creation_time_ = NowTicks(); + + tab_metrics_.page_metrics.num_reactivations++; } // content::WebContentsObserver: @@ -265,7 +295,8 @@ // See https://crbug.com/817174. TabActivityWatcher::GetInstance() ->tab_metrics_logger_->LogBackgroundTabClosed( - ukm_source_id_, NowTicks() - backgrounded_time_, GetMRUMetrics()); + ukm_source_id_, NowTicks() - backgrounded_time_, + GetMRUFeatures()); } } @@ -282,15 +313,15 @@ // Iterates through tabstrips to determine the index of |contents| in // most-recently-used order out of all non-incognito tabs. // Linear in the number of tabs (most users have <10 tabs open). - TabMetricsLogger::MRUMetrics GetMRUMetrics() { - TabMetricsLogger::MRUMetrics mru_metrics; + tab_ranker::MRUFeatures GetMRUFeatures() { + tab_ranker::MRUFeatures mru_features; for (Browser* browser : *BrowserList::GetInstance()) { // Ignore incognito browsers. if (browser->profile()->IsOffTheRecord()) continue; int count = browser->tab_strip_model()->count(); - mru_metrics.total += count; + mru_features.total += count; // Increment the MRU index for each WebContents that was foregrounded more // recently than this one. @@ -305,11 +336,11 @@ if (foregrounded_time_ < other->foregrounded_time_ || (foregrounded_time_ == other->foregrounded_time_ && creation_time_ < other->creation_time_)) { - mru_metrics.index++; + mru_features.index++; } } } - return mru_metrics; + return mru_features; } // Updated when a navigation is finished. @@ -360,6 +391,15 @@ TabActivityWatcher::~TabActivityWatcher() = default; +base::Optional<float> TabActivityWatcher::CalculateReactivationScore( + content::WebContents* web_contents) { + WebContentsData* web_contents_data = + WebContentsData::FromWebContents(web_contents); + if (!web_contents_data) + return base::nullopt; + return web_contents_data->CalculateReactivationScore(); +} + void TabActivityWatcher::OnBrowserSetLastActive(Browser* browser) { if (browser->tab_strip_model()->closing_all()) return; @@ -388,7 +428,8 @@ } void TabActivityWatcher::TabDetachedAt(content::WebContents* contents, - int index) { + int index, + bool was_active) { WebContentsData::FromWebContents(contents)->TabDetached(); } @@ -416,6 +457,9 @@ bool TabActivityWatcher::ShouldTrackBrowser(Browser* browser) { // Don't track incognito browsers. This is also enforced by UKM. + // TODO(michaelpg): Keep counters for incognito browsers so we can score them + // using the TabScorePredictor. We should be able to do this without logging + // these values. return !browser->profile()->IsOffTheRecord(); }
diff --git a/chrome/browser/resource_coordinator/tab_activity_watcher.h b/chrome/browser/resource_coordinator/tab_activity_watcher.h index b97617ec..9863fb6 100644 --- a/chrome/browser/resource_coordinator/tab_activity_watcher.h +++ b/chrome/browser/resource_coordinator/tab_activity_watcher.h
@@ -8,6 +8,8 @@ #include <memory> #include "base/macros.h" +#include "base/optional.h" +#include "chrome/browser/resource_coordinator/tab_ranker/tab_score_predictor.h" #include "chrome/browser/ui/browser_list_observer.h" #include "chrome/browser/ui/browser_tab_strip_tracker.h" #include "chrome/browser/ui/browser_tab_strip_tracker_delegate.h" @@ -17,9 +19,9 @@ namespace resource_coordinator { -// Observes background tab activity in order to log UKMs for tabs. Metrics will -// be compared against tab reactivation/close events to determine the end state -// of each background tab. +// Observes background tab activity in order to log UKMs for tabs and score tabs +// using the Tab Ranker. Metrics will be compared against tab reactivation/close +// events to determine the end state of each background tab. class TabActivityWatcher : public BrowserListObserver, public TabStripModelObserver, public BrowserTabStripTrackerDelegate { @@ -31,6 +33,12 @@ TabActivityWatcher(); ~TabActivityWatcher() override; + // Uses the Tab Ranker model to predict a score for the tab, where a higher + // value indicates a higher likelihood of being reactivated. + // Returns the score if the tab could be scored. + base::Optional<float> CalculateReactivationScore( + content::WebContents* web_contents); + // Returns the single instance, creating it if necessary. static TabActivityWatcher* GetInstance(); @@ -45,7 +53,9 @@ content::WebContents* contents, int index, bool foreground) override; - void TabDetachedAt(content::WebContents* contents, int index) override; + void TabDetachedAt(content::WebContents* contents, + int index, + bool was_active) override; void TabReplacedAt(TabStripModel* tab_strip_model, content::WebContents* old_contents, content::WebContents* new_contents, @@ -66,6 +76,9 @@ // browsers are created and destroyed. BrowserTabStripTracker browser_tab_strip_tracker_; + // Loads the Tab Ranker model on first use and calculates tab scores. + tab_ranker::TabScorePredictor predictor_; + DISALLOW_COPY_AND_ASSIGN(TabActivityWatcher); };
diff --git a/chrome/browser/resource_coordinator/tab_activity_watcher_browsertest.cc b/chrome/browser/resource_coordinator/tab_activity_watcher_browsertest.cc index a5c5b29..f04d1fb3 100644 --- a/chrome/browser/resource_coordinator/tab_activity_watcher_browsertest.cc +++ b/chrome/browser/resource_coordinator/tab_activity_watcher_browsertest.cc
@@ -2,9 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "chrome/browser/resource_coordinator/tab_activity_watcher.h" + #include <memory> #include "base/macros.h" +#include "base/test/simple_test_tick_clock.h" +#include "chrome/browser/resource_coordinator/time.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" @@ -15,7 +19,6 @@ #include "content/public/test/web_contents_tester.h" #include "net/test/embedded_test_server/embedded_test_server.h" #include "services/metrics/public/cpp/ukm_builders.h" -#include "services/metrics/public/mojom/ukm_interface.mojom.h" #include "testing/gtest/include/gtest/gtest.h" using ukm::builders::TabManager_TabMetrics; @@ -51,19 +54,66 @@ } // namespace +class TabActivityWatcherTest : public InProcessBrowserTest { + protected: + TabActivityWatcherTest() = default; + ~TabActivityWatcherTest() override = default; + + // InProcessBrowserTest: + void SetUpOnMainThread() override { + ASSERT_TRUE(embedded_test_server()->Start()); + test_urls_ = {embedded_test_server()->GetURL("/title1.html"), + embedded_test_server()->GetURL("/title2.html"), + embedded_test_server()->GetURL("/title3.html")}; + } + + std::vector<GURL> test_urls_; + + private: + DISALLOW_COPY_AND_ASSIGN(TabActivityWatcherTest); +}; + +// Tests calculating tab scores using the Tab Ranker. +IN_PROC_BROWSER_TEST_F(TabActivityWatcherTest, CalculateReactivationScore) { + // Use test clock so tabs have non-zero backgrounded times. + base::SimpleTestTickClock test_clock; + ScopedSetTickClockForTesting scoped_set_tick_clock_for_testing(&test_clock); + test_clock.Advance(base::TimeDelta::FromMinutes(1)); + + AddTabAtIndex(1, test_urls_[0], ui::PAGE_TRANSITION_LINK); + test_clock.Advance(base::TimeDelta::FromMinutes(1)); + + browser()->tab_strip_model()->ActivateTabAt(0, kIsUserGesture); + test_clock.Advance(base::TimeDelta::FromMinutes(1)); + + // A background tab is scored successfully. + base::Optional<float> background_score = + TabActivityWatcher::GetInstance()->CalculateReactivationScore( + browser()->tab_strip_model()->GetWebContentsAt(1)); + EXPECT_TRUE(background_score.has_value()); + + // Foreground tabs are not modeled by the tab ranker and should not be scored. + base::Optional<float> foreground_score = + TabActivityWatcher::GetInstance()->CalculateReactivationScore( + browser()->tab_strip_model()->GetWebContentsAt(0)); + EXPECT_FALSE(foreground_score.has_value()); + + CloseBrowserSynchronously(browser()); +} + // Tests UKM entries generated by TabActivityWatcher/TabMetricsLogger as tabs // are backgrounded and foregrounded. // Modeled after the TabActivityWatcherTest unit tests, these browser tests // focus on end-to-end testing from the first browser launch onwards, verifying // that window and browser commands are really triggering the paths that lead // to UKM logs. -class TabActivityWatcherTest : public InProcessBrowserTest { +class TabActivityWatcherUkmTest : public TabActivityWatcherTest { protected: - TabActivityWatcherTest() = default; + TabActivityWatcherUkmTest() = default; - // InProcessBrowserTest: + // TabActivityWatcherTest: void PreRunTestOnMainThread() override { - InProcessBrowserTest::PreRunTestOnMainThread(); + TabActivityWatcherTest::PreRunTestOnMainThread(); ukm_entry_checker_ = std::make_unique<UkmEntryChecker>(); } @@ -73,16 +123,13 @@ // being logged. EXPECT_EQ(0u, ukm_entry_checker_->NumEntries(kEntryName)); - ASSERT_TRUE(embedded_test_server()->Start()); - test_urls_ = {embedded_test_server()->GetURL("/title1.html"), - embedded_test_server()->GetURL("/title2.html"), - embedded_test_server()->GetURL("/title3.html")}; + TabActivityWatcherTest::SetUpOnMainThread(); } void TearDown() override { EXPECT_EQ(0, ukm_entry_checker_->NumNewEntriesRecorded(kEntryName)); - InProcessBrowserTest::TearDown(); + TabActivityWatcherTest::TearDown(); } protected: @@ -102,15 +149,14 @@ ukm_entry_checker_->ExpectNewEntry(kFOCEntryName, url, expected_metrics); } - std::vector<GURL> test_urls_; std::unique_ptr<UkmEntryChecker> ukm_entry_checker_; private: - DISALLOW_COPY_AND_ASSIGN(TabActivityWatcherTest); + DISALLOW_COPY_AND_ASSIGN(TabActivityWatcherUkmTest); }; // Tests TabMetrics UKMs logged by creating and switching between tabs. -IN_PROC_BROWSER_TEST_F(TabActivityWatcherTest, SwitchTabs) { +IN_PROC_BROWSER_TEST_F(TabActivityWatcherUkmTest, SwitchTabs) { const GURL kTabUrls[] = { GURL(), // "about:blank" tab doesn't have a UKM source. test_urls_[0], test_urls_[1], @@ -167,7 +213,7 @@ // This is a sanity check; window activation shouldn't make any difference to // what we log. If we needed to actually test different behavior based on window // focus, we would run these tests in interactive_ui_tests. -IN_PROC_BROWSER_TEST_F(TabActivityWatcherTest, SwitchWindows) { +IN_PROC_BROWSER_TEST_F(TabActivityWatcherUkmTest, SwitchWindows) { Browser* browser_2 = CreateBrowser(browser()->profile()); EXPECT_EQ(0, ukm_entry_checker_->NumNewEntriesRecorded(kEntryName)); @@ -201,7 +247,7 @@ } // Tests page with a beforeunload handler. -IN_PROC_BROWSER_TEST_F(TabActivityWatcherTest, BeforeUnloadHandler) { +IN_PROC_BROWSER_TEST_F(TabActivityWatcherUkmTest, BeforeUnloadHandler) { // Navigate to a page with a beforeunload handler. GURL url(embedded_test_server()->GetURL("/beforeunload.html")); ui_test_utils::NavigateToURL(browser(), url); @@ -226,7 +272,7 @@ } // Tests events logged when dragging a tab between browsers. -IN_PROC_BROWSER_TEST_F(TabActivityWatcherTest, TabDrag) { +IN_PROC_BROWSER_TEST_F(TabActivityWatcherUkmTest, TabDrag) { // This test will navigate 3 tabs. const GURL kBrowserStartUrl = test_urls_[0]; const GURL kBrowser2StartUrl = test_urls_[1];
diff --git a/chrome/browser/resource_coordinator/tab_lifecycle_unit_source.cc b/chrome/browser/resource_coordinator/tab_lifecycle_unit_source.cc index bd1fffd..d1571570 100644 --- a/chrome/browser/resource_coordinator/tab_lifecycle_unit_source.cc +++ b/chrome/browser/resource_coordinator/tab_lifecycle_unit_source.cc
@@ -163,7 +163,8 @@ } void TabLifecycleUnitSource::TabDetachedAt(content::WebContents* contents, - int index) { + int index, + bool was_active) { TabLifecycleUnit* lifecycle_unit = GetTabLifecycleUnit(contents); DCHECK(lifecycle_unit); if (focused_lifecycle_unit_ == lifecycle_unit)
diff --git a/chrome/browser/resource_coordinator/tab_lifecycle_unit_source.h b/chrome/browser/resource_coordinator/tab_lifecycle_unit_source.h index 09c2305..850b99e6 100644 --- a/chrome/browser/resource_coordinator/tab_lifecycle_unit_source.h +++ b/chrome/browser/resource_coordinator/tab_lifecycle_unit_source.h
@@ -79,7 +79,9 @@ content::WebContents* contents, int index, bool foreground) override; - void TabDetachedAt(content::WebContents* contents, int index) override; + void TabDetachedAt(content::WebContents* contents, + int index, + bool was_active) override; void ActiveTabChanged(content::WebContents* old_contents, content::WebContents* new_contents, int index,
diff --git a/chrome/browser/resource_coordinator/tab_metrics_logger.cc b/chrome/browser/resource_coordinator/tab_metrics_logger.cc index ab2f8be..9ca358b 100644 --- a/chrome/browser/resource_coordinator/tab_metrics_logger.cc +++ b/chrome/browser/resource_coordinator/tab_metrics_logger.cc
@@ -12,7 +12,8 @@ #include "chrome/browser/browser_process.h" #include "chrome/browser/engagement/site_engagement_service.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/resource_coordinator/tab_features.h" +#include "chrome/browser/resource_coordinator/tab_ranker/mru_features.h" +#include "chrome/browser/resource_coordinator/tab_ranker/tab_features.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" #include "chrome/browser/ui/browser_list.h" @@ -30,7 +31,7 @@ namespace { // Populates navigation-related metrics. -void PopulatePageTransitionFeatures(resource_coordinator::TabFeatures* tab, +void PopulatePageTransitionFeatures(tab_ranker::TabFeatures* tab, ui::PageTransition page_transition) { // We only report the following core types. // Note: Redirects unrelated to clicking a link still get the "link" type. @@ -55,16 +56,16 @@ void LogBackgroundTabForegroundedOrClosed( ukm::SourceId ukm_source_id, base::TimeDelta inactive_duration, - const TabMetricsLogger::MRUMetrics& mru_metrics, + const tab_ranker::MRUFeatures& mru_features, bool is_foregrounded) { if (!ukm_source_id) return; ukm::builders::TabManager_Background_ForegroundedOrClosed(ukm_source_id) .SetIsForegrounded(is_foregrounded) - .SetMRUIndex(mru_metrics.index) + .SetMRUIndex(mru_features.index) .SetTimeFromBackgrounded(inactive_duration.InMilliseconds()) - .SetTotalTabCount(mru_metrics.total) + .SetTotalTabCount(mru_features.total) .Record(ukm::UkmRecorder::Get()); } @@ -114,20 +115,22 @@ } // static -resource_coordinator::TabFeatures TabMetricsLogger::GetTabFeatures( +tab_ranker::TabFeatures TabMetricsLogger::GetTabFeatures( const Browser* browser, - const TabMetricsLogger::TabMetrics& tab_metrics) { + const TabMetrics& tab_metrics, + base::TimeDelta inactive_duration) { DCHECK(browser); const TabStripModel* tab_strip_model = browser->tab_strip_model(); content::WebContents* web_contents = tab_metrics.web_contents; - resource_coordinator::TabFeatures tab; + tab_ranker::TabFeatures tab; tab.has_before_unload_handler = web_contents->GetMainFrame()->GetSuddenTerminationDisablerState( blink::kBeforeUnloadHandler); tab.has_form_entry = web_contents->GetPageImportanceSignals().had_form_interaction; + tab.host = web_contents->GetLastCommittedURL().host(); int index = tab_strip_model->GetIndexOfWebContents(web_contents); DCHECK_NE(index, TabStripModel::kNoTab); @@ -136,13 +139,14 @@ tab.key_event_count = tab_metrics.page_metrics.key_event_count; tab.mouse_event_count = tab_metrics.page_metrics.mouse_event_count; tab.navigation_entry_count = web_contents->GetController().GetEntryCount(); + tab.num_reactivations = tab_metrics.page_metrics.num_reactivations; PopulatePageTransitionFeatures(&tab, tab_metrics.page_transition); - if (SiteEngagementService::IsEnabled()) { + if (SiteEngagementService::IsEnabled()) tab.site_engagement_score = GetSiteEngagementScore(web_contents); - } + tab.time_from_backgrounded = inactive_duration.InMilliseconds(); tab.touch_event_count = tab_metrics.page_metrics.touch_event_count; // This checks if the tab was audible within the past two seconds, same as the @@ -177,13 +181,13 @@ int index = tab_strip_model->GetIndexOfWebContents(web_contents); DCHECK_NE(index, TabStripModel::kNoTab); - ukm::builders::TabManager_TabMetrics entry(ukm_source_id); - resource_coordinator::TabFeatures tab = GetTabFeatures(browser, tab_metrics); + // inactive_duration isn't used when logging a tab that gets backgrounded. + tab_ranker::TabFeatures tab = GetTabFeatures( + browser, tab_metrics, base::TimeDelta() /*inactive_duration*/); // Keep these Set functions in alphabetical order so they're easy to check // against the list of metrics in the UKM event. - // TODO(michaelpg): Add PluginType field if mime type matches "application/*" - // using PluginUMAReporter. + ukm::builders::TabManager_TabMetrics entry(ukm_source_id); entry.SetHasBeforeUnloadHandler(tab.has_before_unload_handler); entry.SetHasFormEntry(tab.has_form_entry); entry.SetIsPinned(tab.is_pinned); @@ -206,18 +210,20 @@ entry.Record(ukm::UkmRecorder::Get()); } -void TabMetricsLogger::LogBackgroundTabShown(ukm::SourceId ukm_source_id, - base::TimeDelta inactive_duration, - const MRUMetrics& mru_metrics) { +void TabMetricsLogger::LogBackgroundTabShown( + ukm::SourceId ukm_source_id, + base::TimeDelta inactive_duration, + const tab_ranker::MRUFeatures& mru_features) { LogBackgroundTabForegroundedOrClosed(ukm_source_id, inactive_duration, - mru_metrics, true /* is_shown */); + mru_features, true /* is_shown */); } -void TabMetricsLogger::LogBackgroundTabClosed(ukm::SourceId ukm_source_id, - base::TimeDelta inactive_duration, - const MRUMetrics& mru_metrics) { +void TabMetricsLogger::LogBackgroundTabClosed( + ukm::SourceId ukm_source_id, + base::TimeDelta inactive_duration, + const tab_ranker::MRUFeatures& mru_features) { LogBackgroundTabForegroundedOrClosed(ukm_source_id, inactive_duration, - mru_metrics, false /* is_shown */); + mru_features, false /* is_shown */); } void TabMetricsLogger::LogTabLifetime(ukm::SourceId ukm_source_id,
diff --git a/chrome/browser/resource_coordinator/tab_metrics_logger.h b/chrome/browser/resource_coordinator/tab_metrics_logger.h index cb5ebd1e..7602f98 100644 --- a/chrome/browser/resource_coordinator/tab_metrics_logger.h +++ b/chrome/browser/resource_coordinator/tab_metrics_logger.h
@@ -20,9 +20,10 @@ class WebContents; } // namespace content -namespace resource_coordinator { +namespace tab_ranker { +struct MRUFeatures; struct TabFeatures; -} // namespace resource_coordinator +} // namespace tab_ranker // Logs metrics for a tab and its WebContents when requested. // Must be used on the UI thread. @@ -37,6 +38,8 @@ int mouse_event_count = 0; // Number of touch events. int touch_event_count = 0; + // Number of times this tab has been reactivated. + int num_reactivations = 0; }; // The state of a tab. @@ -51,13 +54,6 @@ PageMetrics page_metrics = {}; }; - // Index in most-recently-used order and total number of tabs. - struct MRUMetrics { - int index = 0; // Zero-based, so this indicates how many of the |total| - // tabs are more recently used than this tab. - int total = 0; - }; - TabMetricsLogger(); ~TabMetricsLogger(); @@ -70,13 +66,13 @@ // shown after being inactive. void LogBackgroundTabShown(ukm::SourceId ukm_source_id, base::TimeDelta inactive_duration, - const MRUMetrics& mru_metrics); + const tab_ranker::MRUFeatures& mru_metrics); // Logs TabManager.Background.ForegroundedOrClosed UKM for a tab that was // closed after being inactive. void LogBackgroundTabClosed(ukm::SourceId ukm_source_id, base::TimeDelta inactive_duration, - const MRUMetrics& mru_metrics); + const tab_ranker::MRUFeatures& mru_metrics); // Logs TabManager.TabLifetime UKM for a closed tab. void LogTabLifetime(ukm::SourceId ukm_source_id, @@ -94,9 +90,10 @@ // A common function for populating these features ensures that the same // values are used for logging training examples to UKM and for locally // scoring tabs. - static resource_coordinator::TabFeatures GetTabFeatures( + static tab_ranker::TabFeatures GetTabFeatures( const Browser* browser, - const TabMetrics& tab_metrics); + const TabMetrics& tab_metrics, + base::TimeDelta inactive_duration); private: // A counter to be incremented and logged with each UKM entry, used to
diff --git a/chrome/browser/resource_coordinator/tab_metrics_logger_unittest.cc b/chrome/browser/resource_coordinator/tab_metrics_logger_unittest.cc index 4273110a..21b1911 100644 --- a/chrome/browser/resource_coordinator/tab_metrics_logger_unittest.cc +++ b/chrome/browser/resource_coordinator/tab_metrics_logger_unittest.cc
@@ -6,7 +6,7 @@ #include "chrome/browser/browser_process.h" #include "chrome/browser/engagement/site_engagement_service.h" -#include "chrome/browser/resource_coordinator/tab_features.h" +#include "chrome/browser/resource_coordinator/tab_ranker/tab_features.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/tabs/tab_activity_simulator.h" #include "chrome/browser/ui/tabs/tab_strip_model.h" @@ -48,14 +48,18 @@ bg_metrics.web_contents = bg_contents; bg_metrics.page_transition = ui::PAGE_TRANSITION_FORM_SUBMIT; - resource_coordinator::TabFeatures bg_features = - TabMetricsLogger::GetTabFeatures(browser.get(), bg_metrics); + base::TimeDelta inactive_duration = base::TimeDelta::FromSeconds(10); + + tab_ranker::TabFeatures bg_features = TabMetricsLogger::GetTabFeatures( + browser.get(), bg_metrics, inactive_duration); EXPECT_EQ(bg_features.has_before_unload_handler, false); EXPECT_EQ(bg_features.has_form_entry, false); + EXPECT_EQ(bg_features.host, "example.com"); EXPECT_EQ(bg_features.is_pinned, false); EXPECT_EQ(bg_features.key_event_count, 0); EXPECT_EQ(bg_features.mouse_event_count, 0); EXPECT_EQ(bg_features.navigation_entry_count, 1); + EXPECT_EQ(bg_features.num_reactivations, 0); ASSERT_TRUE(bg_features.page_transition_core_type.has_value()); EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( ui::PAGE_TRANSITION_FORM_SUBMIT, @@ -64,6 +68,8 @@ EXPECT_EQ(bg_features.page_transition_is_redirect, false); ASSERT_TRUE(bg_features.site_engagement_score.has_value()); EXPECT_EQ(bg_features.site_engagement_score.value(), 0); + EXPECT_EQ(bg_features.time_from_backgrounded, + inactive_duration.InMilliseconds()); EXPECT_EQ(bg_features.touch_event_count, 0); EXPECT_EQ(bg_features.was_recently_audible, false); } @@ -83,16 +89,21 @@ bg_metrics.page_transition = page_transition; bg_metrics.page_metrics.key_event_count = 3; bg_metrics.page_metrics.mouse_event_count = 42; + bg_metrics.page_metrics.num_reactivations = 5; bg_metrics.page_metrics.touch_event_count = 10; - resource_coordinator::TabFeatures bg_features = - TabMetricsLogger::GetTabFeatures(browser.get(), bg_metrics); + base::TimeDelta inactive_duration = base::TimeDelta::FromSeconds(5); + + tab_ranker::TabFeatures bg_features = TabMetricsLogger::GetTabFeatures( + browser.get(), bg_metrics, inactive_duration); EXPECT_EQ(bg_features.has_before_unload_handler, false); EXPECT_EQ(bg_features.has_form_entry, false); + EXPECT_EQ(bg_features.host, "www.chromium.org"); EXPECT_EQ(bg_features.is_pinned, true); EXPECT_EQ(bg_features.key_event_count, 3); EXPECT_EQ(bg_features.mouse_event_count, 42); EXPECT_EQ(bg_features.navigation_entry_count, 2); + EXPECT_EQ(bg_features.num_reactivations, 5); ASSERT_TRUE(bg_features.page_transition_core_type.has_value()); EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( ui::PAGE_TRANSITION_LINK, @@ -102,6 +113,8 @@ ASSERT_TRUE(bg_features.site_engagement_score.has_value()); // Site engagement score should round down to the nearest 10. EXPECT_EQ(bg_features.site_engagement_score.value(), 90); + EXPECT_EQ(bg_features.time_from_backgrounded, + inactive_duration.InMilliseconds()); EXPECT_EQ(bg_features.touch_event_count, 10); EXPECT_EQ(bg_features.was_recently_audible, false); }
diff --git a/chrome/browser/resource_coordinator/tab_ranker/BUILD.gn b/chrome/browser/resource_coordinator/tab_ranker/BUILD.gn new file mode 100644 index 0000000..9ca357b --- /dev/null +++ b/chrome/browser/resource_coordinator/tab_ranker/BUILD.gn
@@ -0,0 +1,31 @@ +# Copyright 2018 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +source_set("tab_ranker") { + # Dependent targets should not include native_inference.h directly. + public = [ + "mru_features.h", + "tab_features.h", + "tab_score_predictor.h", + "window_features.h", + ] + + sources = [ + "native_inference.cc", + "native_inference.h", + "tab_features.cc", + "tab_score_predictor.cc", + "window_features.cc", + ] + + deps = [ + "//base", + "//chrome/browser:resources", + "//chrome/browser/resource_coordinator:tab_metrics_event_proto", + "//components/assist_ranker", + "//components/assist_ranker/proto", + "//components/sessions", + "//ui/base", + ] +}
diff --git a/chrome/browser/resource_coordinator/tab_ranker/OWNERS b/chrome/browser/resource_coordinator/tab_ranker/OWNERS new file mode 100644 index 0000000..68bf6c5 --- /dev/null +++ b/chrome/browser/resource_coordinator/tab_ranker/OWNERS
@@ -0,0 +1,2 @@ +set noparent +michaelpg@chromium.org
diff --git a/chrome/browser/resource_coordinator/tab_ranker/README.md b/chrome/browser/resource_coordinator/tab_ranker/README.md new file mode 100644 index 0000000..4d3a35b --- /dev/null +++ b/chrome/browser/resource_coordinator/tab_ranker/README.md
@@ -0,0 +1,56 @@ +# Tab Ranker + +The Tab Ranker is an experimental model used to predict tab reactivation. We +are setting up experiments to use this model as a factor in deciding which tabs +to discard when the system is low on memory. + +## Model + +The input to the model is a list of metrics about a background tab, such as +whether it is pinned, how long it has been in the background, and how many +events it has received. The output is a floating point value, where a higher +number suggests the tab is more likely to be reactivated than a lower number. +The range of possible outputs is dependent on the model; what matters is the +relative ordering of scores, not the precise value of a score. + +The metrics used for inference are the same metrics logged to UKM by +TabMetricsLogger. Using these metrics, we trained a +[DNN](https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks) model. +The inferencing code in `native_inference.cc` consists of the model weights +generated by TensorFlow and basic operations to execute the model over an +example. + +See [native_inference.md] for details on how the tf.native code is cleaned up +for Chromium. + +## Example preprocessing + +Examples are provided to the model as an array of floats, with each element +corresponding to a feature. For scalar metrics like WasRecentlyActive(), this +feature is simply a 0 or 1. + +A metric with multiple possible values, like an enum or bucketized number, is +broken into a number of features, each corresponding to one of its possible +values. For example, a value of 7 for the PageTransitionCoreType metric is +represented as a 1 in the `PageTransitionCoreType_7` feature. See +https://en.wikipedia.org/wiki/One-hot. + +The AssistRanker handles this example preprocessing based on the configuration +provided in example_preprocessor_config.pb. This can be examined with the +`print_example_preprocessor_config.py` utility: + +``` + ./components/assist_ranker/print_example_preprocessor_config.py \ + out/Release \ + chrome/browser/resource_coordinator/tab_ranker/example_preprocessor_config.pb +``` + +## Scoring a tab + +Use `TabActivityWatcher::CalculateReactivationScore()` to get a score from a +WebContents. + +Internally, `TabScorePredictor::ScoreTab` is the interface to the model. The +caller needs to track a number of metrics about the tab and its window. These +metrics must be calculated in the same way they were logged, as otherwise the +results will not be valid.
diff --git a/chrome/browser/resource_coordinator/tab_ranker/example_preprocessor_config.pb b/chrome/browser/resource_coordinator/tab_ranker/example_preprocessor_config.pb new file mode 100644 index 0000000..de17ca0 --- /dev/null +++ b/chrome/browser/resource_coordinator/tab_ranker/example_preprocessor_config.pb Binary files differ
diff --git a/chrome/browser/resource_coordinator/tab_ranker/mru_features.h b/chrome/browser/resource_coordinator/tab_ranker/mru_features.h new file mode 100644 index 0000000..570613a --- /dev/null +++ b/chrome/browser/resource_coordinator/tab_ranker/mru_features.h
@@ -0,0 +1,26 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_RANKER_MRU_FEATURES_H_ +#define CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_RANKER_MRU_FEATURES_H_ + +#include <stdint.h> +#include <string> + +namespace tab_ranker { + +// Identifies how recently the tab was used. +struct MRUFeatures { + // Zero-based, so this indicates how many of the |total| tabs are more + // recently used than this tab. + int index = 0; + + // Total number of tabs considered when calculating MRU index, ie number of + // non-incognito tabs open. + int total = 0; +}; + +} // namespace tab_ranker + +#endif // CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_RANKER_MRU_FEATURES_H_
diff --git a/chrome/browser/resource_coordinator/tab_ranker/native_inference.cc b/chrome/browser/resource_coordinator/tab_ranker/native_inference.cc new file mode 100644 index 0000000..3c428f2 --- /dev/null +++ b/chrome/browser/resource_coordinator/tab_ranker/native_inference.cc
@@ -0,0 +1,2640 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// This file was generated using tf.native from a neural network trained by +// TensorFlow, then simplified and cleaned up by hand. Please do not edit except +// when updating to a new model. See native_inference.md for details. + +#include "chrome/browser/resource_coordinator/tab_ranker/native_inference.h" + +#include <algorithm> +#include <cmath> +#include <limits> + +#include "base/logging.h" + +namespace tab_ranker { +namespace tfnative_model { +namespace { + +// The size of a shape in terms of number of coefficients. +inline int32_t ShapeSize(const int32_t rank, const int32_t* shape) { + int32_t size = 1; + for (int32_t i = 0; i < rank; ++i) + size *= shape[i]; + return size; +} + +template <typename T> +void FullyConnected(const int32_t* __restrict input_shape, + const T* __restrict input_values, + const int32_t* __restrict weight_shape, + const T* __restrict weight_values, + const int32_t* __restrict bias_shape, + const T* __restrict bias_values, + T* __restrict output_values) { + const int32_t batch_size = input_shape[0]; + const int32_t num_inputs = weight_shape[0]; + const int32_t num_outputs = weight_shape[1]; + CHECK_EQ(input_shape[1], num_inputs); + CHECK_EQ(bias_shape[0], num_outputs); + for (int32_t batch = 0; batch < batch_size; ++batch) { + for (int32_t out_i = 0; out_i < num_outputs; ++out_i) { + T value = 0; + for (int32_t in_i = 0; in_i < num_inputs; ++in_i) { + value += input_values[batch * num_inputs + in_i] * + weight_values[in_i * num_outputs + out_i]; + } + value += bias_values[out_i]; + output_values[batch * num_outputs + out_i] = value; + } + } +} + +// ----------------------------------------------------------------------------- +// Simple unary ops +// ----------------------------------------------------------------------------- + +template <typename T> +void Relu(const int32_t rank, + const int32_t* __restrict input_shape, + const T* __restrict input_values, + T* __restrict output_values) { + const int32_t size = ShapeSize(rank, input_shape); + for (int32_t i = 0; i < size; ++i) { + const T value = input_values[i]; + output_values[i] = std::max(value, static_cast<T>(0)); + } +} + +// ----------------------------------------------------------------------------- +// Dequantize ops +// ----------------------------------------------------------------------------- + +template <typename T> +void DequantizeMinFirst(const int32_t rank, + const int32_t* __restrict input_shape, + const T* __restrict input_values, + const float* __restrict min_range, + const float* __restrict max_range, + float* __restrict output_values) { + const int32_t size = ShapeSize(rank, input_shape); + const float range_scale = (max_range[0] - min_range[0]) / + (static_cast<float>(std::numeric_limits<T>::max()) - + std::numeric_limits<T>::min()); + const float range_min_rounded = + (max_range[0] == min_range[0] + ? min_range[0] + : round(min_range[0] / range_scale) * range_scale); + for (int32_t i = 0; i < size; i++) { + output_values[i] = ((static_cast<int32_t>(input_values[i]) - + std::numeric_limits<T>::min()) * + range_scale) + + range_min_rounded; + } +} + +// ----------------------------------------------------------------------------- +// CONSTANTS +// Note that for now, endianness of the target machine needs to match that of +// the one training was performed on. +// ----------------------------------------------------------------------------- +const int32_t dnn_logits_biases__2__cf__2_shape[1] = {1}; +const union { + uint8_t bytes[4]; + float values[1]; +} dnn_logits_biases__2__cf__2 = {{ + 0xca, 0xc4, 0x74, 0xbf, +}}; + +const int32_t dnn_hiddenlayer_0_weights__1__cf__1_quantized_const_shape[2] = { + FEATURES_SIZE, DNN_BIASES_SIZE}; +const union { + uint8_t bytes[DNN_WEIGHTS_SIZE]; + uint8_t values[DNN_WEIGHTS_SIZE]; +} dnn_hiddenlayer_0_weights__1__cf__1_quantized_const = {{ + 0x6d, 0x6c, 0x6f, 0x71, 0x6f, 0x6d, 0x6d, 0x6b, 0x6f, 0x69, 0x6f, 0x6e, + 0x6d, 0x6f, 0x54, 0x6c, 0x6f, 0x6f, 0x6c, 0x6e, 0x6f, 0x63, 0x6e, 0x6d, + 0x6e, 0x6d, 0x6c, 0x6f, 0x70, 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x74, 0x69, + 0x70, 0x59, 0x72, 0x6e, 0x6f, 0x74, 0x6f, 0x68, 0x6f, 0x6f, 0x73, 0x6f, + 0x6e, 0x63, 0x6f, 0x70, 0x6e, 0x6f, 0x65, 0x6d, 0x6f, 0x6f, 0x6f, 0x78, + 0x6b, 0x6b, 0x6b, 0x6e, 0x6f, 0x6c, 0x6e, 0x6f, 0x6d, 0x6f, 0x6f, 0x6e, + 0x71, 0x5e, 0x64, 0x6d, 0x6f, 0x73, 0x74, 0x6f, 0x59, 0x6c, 0x6f, 0x5c, + 0x6e, 0x6f, 0x6e, 0x6e, 0x6c, 0x66, 0x6c, 0x6c, 0x6e, 0x6e, 0x70, 0x6f, + 0x6d, 0x6f, 0x6f, 0x62, 0x69, 0x5d, 0x6a, 0x6e, 0x6e, 0x6c, 0x6e, 0x6c, + 0x74, 0x6f, 0x6c, 0x54, 0x6e, 0x58, 0x5f, 0x70, 0x6f, 0x62, 0x73, 0x6c, + 0x76, 0x75, 0x71, 0x6d, 0x6f, 0x6d, 0x71, 0x6d, 0x70, 0x70, 0x6f, 0x6e, + 0x6d, 0x6f, 0x70, 0x6c, 0x6d, 0x66, 0x6d, 0x7a, 0x6d, 0x76, 0x6e, 0x6e, + 0x6d, 0x6a, 0x6e, 0x70, 0x70, 0x6e, 0x6f, 0x74, 0x6f, 0x68, 0x71, 0x6a, + 0x6f, 0x6d, 0x6d, 0x6c, 0x6f, 0x76, 0x71, 0x6c, 0x71, 0x70, 0x71, 0x6e, + 0x70, 0x6e, 0x70, 0x6b, 0x6e, 0x6e, 0x75, 0x6f, 0x6e, 0x66, 0x6e, 0x70, + 0x70, 0x75, 0x70, 0x6f, 0x6d, 0x6c, 0x6e, 0x6f, 0x71, 0x6d, 0x6d, 0x6d, + 0x6e, 0x76, 0x6a, 0x6f, 0x6d, 0x74, 0x6a, 0x6b, 0x75, 0x71, 0x70, 0x6f, + 0x70, 0x6f, 0x6e, 0x70, 0x70, 0x6d, 0x6f, 0x6d, 0x6e, 0x73, 0x61, 0x70, + 0x6e, 0x65, 0x6e, 0x6f, 0x71, 0x6b, 0x70, 0x6e, 0x6d, 0x70, 0x6f, 0x6f, + 0x72, 0x6e, 0x6e, 0x71, 0x6e, 0x70, 0x60, 0x6e, 0x6f, 0x70, 0x6d, 0x6c, + 0x75, 0x71, 0x71, 0x6f, 0x70, 0x70, 0x6c, 0x70, 0x71, 0x6a, 0x6f, 0x6d, + 0x6e, 0x72, 0x67, 0x70, 0x6c, 0x66, 0x70, 0x6e, 0x71, 0x66, 0x70, 0x6e, + 0x6d, 0x6f, 0x70, 0x70, 0x72, 0x6e, 0x6e, 0x71, 0x6d, 0x6f, 0x6a, 0x6f, + 0x71, 0x6e, 0x6c, 0x6c, 0x74, 0x70, 0x70, 0x6f, 0x70, 0x6f, 0x6d, 0x70, + 0x71, 0x6c, 0x6f, 0x6c, 0x6e, 0x73, 0x65, 0x6e, 0x6d, 0x66, 0x6f, 0x6f, + 0x70, 0x69, 0x71, 0x6e, 0x6d, 0x6f, 0x6f, 0x6f, 0x72, 0x6e, 0x6e, 0x70, + 0x6d, 0x6f, 0x5d, 0x6f, 0x70, 0x6e, 0x6d, 0x6c, 0x75, 0x71, 0x70, 0x6f, + 0x70, 0x6f, 0x6e, 0x6f, 0x71, 0x6a, 0x6f, 0x6f, 0x70, 0x72, 0x60, 0x6e, + 0x6d, 0x66, 0x70, 0x6d, 0x6e, 0x65, 0x72, 0x70, 0x6d, 0x71, 0x6e, 0x70, + 0x71, 0x6e, 0x6f, 0x6f, 0x6b, 0x6e, 0x68, 0x6e, 0x6f, 0x6c, 0x6e, 0x6d, + 0x75, 0x70, 0x71, 0x6f, 0x70, 0x70, 0x6d, 0x6f, 0x72, 0x6e, 0x6f, 0x6f, + 0x70, 0x73, 0x66, 0x6f, 0x6d, 0x66, 0x6f, 0x6e, 0x71, 0x69, 0x72, 0x6f, + 0x6c, 0x71, 0x6f, 0x70, 0x71, 0x6f, 0x6f, 0x70, 0x6c, 0x6e, 0x63, 0x70, + 0x6f, 0x6c, 0x6d, 0x6d, 0x76, 0x6f, 0x70, 0x6e, 0x70, 0x70, 0x6d, 0x6f, + 0x71, 0x6c, 0x6f, 0x6e, 0x6d, 0x73, 0x6b, 0x70, 0x6c, 0x66, 0x6f, 0x6c, + 0x71, 0x68, 0x72, 0x70, 0x6d, 0x70, 0x6f, 0x70, 0x72, 0x6e, 0x6f, 0x71, + 0x6c, 0x6d, 0x69, 0x6e, 0x70, 0x6d, 0x70, 0x6d, 0x74, 0x6e, 0x70, 0x71, + 0x70, 0x70, 0x6d, 0x70, 0x70, 0x6b, 0x6f, 0x6e, 0x6f, 0x73, 0x65, 0x6e, + 0x6d, 0x67, 0x70, 0x6c, 0x70, 0x6b, 0x72, 0x70, 0x6d, 0x6e, 0x6e, 0x6f, + 0x73, 0x6e, 0x6e, 0x71, 0x6d, 0x6c, 0x60, 0x6f, 0x6f, 0x69, 0x71, 0x6c, + 0x73, 0x6f, 0x71, 0x71, 0x70, 0x70, 0x6b, 0x70, 0x70, 0x6d, 0x6e, 0x6e, + 0x6e, 0x73, 0x67, 0x70, 0x6c, 0x65, 0x6e, 0x6a, 0x70, 0x6b, 0x72, 0x70, + 0x6e, 0x71, 0x6f, 0x6f, 0x72, 0x6e, 0x6e, 0x70, 0x6b, 0x6c, 0x67, 0x6e, + 0x6f, 0x6b, 0x6f, 0x6c, 0x74, 0x6d, 0x6f, 0x70, 0x71, 0x6f, 0x6d, 0x6f, + 0x72, 0x6e, 0x6f, 0x6e, 0x6f, 0x73, 0x63, 0x6f, 0x6c, 0x65, 0x6e, 0x67, + 0x6f, 0x69, 0x72, 0x6e, 0x6c, 0x73, 0x6e, 0x6f, 0x72, 0x6f, 0x6e, 0x6e, + 0x6c, 0x6b, 0x67, 0x6e, 0x70, 0x6d, 0x6e, 0x6e, 0x73, 0x6e, 0x70, 0x6f, + 0x70, 0x70, 0x6b, 0x70, 0x71, 0x6d, 0x6f, 0x6d, 0x6f, 0x72, 0x63, 0x6e, + 0x6c, 0x66, 0x6f, 0x64, 0x71, 0x68, 0x74, 0x6e, 0x6e, 0x71, 0x6e, 0x6e, + 0x73, 0x6e, 0x6d, 0x6e, 0x6d, 0x6b, 0x6c, 0x70, 0x70, 0x66, 0x70, 0x6c, + 0x72, 0x72, 0x71, 0x6e, 0x70, 0x70, 0x70, 0x6e, 0x6f, 0x70, 0x6f, 0x6c, + 0x6e, 0x6f, 0x6e, 0x6e, 0x6f, 0x66, 0x6f, 0x74, 0x6e, 0x76, 0x6e, 0x70, + 0x6d, 0x6e, 0x70, 0x6e, 0x6f, 0x6e, 0x6e, 0x6f, 0x6f, 0x73, 0x68, 0x6f, + 0x6f, 0x74, 0x6c, 0x6c, 0x73, 0x6e, 0x6f, 0x6f, 0x71, 0x6e, 0x6c, 0x70, + 0x72, 0x6e, 0x6f, 0x6d, 0x70, 0x72, 0x67, 0x70, 0x6b, 0x64, 0x6e, 0x63, + 0x71, 0x69, 0x71, 0x6e, 0x6d, 0x70, 0x6f, 0x6f, 0x71, 0x6f, 0x6d, 0x6f, + 0x6d, 0x68, 0x64, 0x6f, 0x6f, 0x6c, 0x6f, 0x6d, 0x74, 0x6d, 0x6e, 0x6e, + 0x71, 0x6d, 0x6c, 0x70, 0x71, 0x66, 0x70, 0x6e, 0x70, 0x73, 0x6a, 0x6f, + 0x6d, 0x64, 0x6d, 0x5f, 0x6e, 0x67, 0x74, 0x70, 0x6d, 0x70, 0x6d, 0x6f, + 0x71, 0x6f, 0x6e, 0x6f, 0x6d, 0x67, 0x6a, 0x6e, 0x6f, 0x6c, 0x70, 0x6d, + 0x73, 0x6d, 0x6f, 0x6f, 0x70, 0x70, 0x6b, 0x6f, 0x72, 0x6c, 0x6e, 0x6e, + 0x6e, 0x74, 0x68, 0x6e, 0x6c, 0x66, 0x6e, 0x63, 0x6f, 0x67, 0x72, 0x6e, + 0x6c, 0x71, 0x6e, 0x70, 0x73, 0x70, 0x6c, 0x6e, 0x6d, 0x68, 0x68, 0x6e, + 0x71, 0x6b, 0x6f, 0x6d, 0x72, 0x6d, 0x6f, 0x6d, 0x70, 0x70, 0x6b, 0x6e, + 0x71, 0x6e, 0x6e, 0x6d, 0x6f, 0x73, 0x6c, 0x6f, 0x6b, 0x67, 0x70, 0x63, + 0x70, 0x6b, 0x73, 0x6e, 0x6d, 0x72, 0x6f, 0x6f, 0x72, 0x6f, 0x6d, 0x6d, + 0x6c, 0x6a, 0x6a, 0x6e, 0x70, 0x6f, 0x6f, 0x6c, 0x71, 0x6d, 0x6f, 0x6b, + 0x70, 0x6f, 0x6a, 0x70, 0x70, 0x6a, 0x6f, 0x6c, 0x6e, 0x71, 0x64, 0x70, + 0x6b, 0x65, 0x6f, 0x60, 0x71, 0x6c, 0x73, 0x6e, 0x6d, 0x71, 0x6f, 0x6e, + 0x71, 0x6f, 0x6d, 0x6c, 0x6d, 0x69, 0x6b, 0x6e, 0x70, 0x70, 0x6f, 0x6d, + 0x74, 0x6b, 0x6f, 0x6b, 0x70, 0x6f, 0x6b, 0x6f, 0x73, 0x70, 0x6f, 0x6f, + 0x6e, 0x72, 0x69, 0x70, 0x6b, 0x65, 0x70, 0x5a, 0x6f, 0x6b, 0x74, 0x6f, + 0x6d, 0x70, 0x6f, 0x6f, 0x70, 0x70, 0x6d, 0x6f, 0x70, 0x68, 0x6f, 0x6f, + 0x71, 0x75, 0x6f, 0x6d, 0x72, 0x6c, 0x6f, 0x6d, 0x6f, 0x6f, 0x6c, 0x70, + 0x71, 0x6c, 0x6e, 0x6d, 0x6f, 0x72, 0x66, 0x6e, 0x6a, 0x66, 0x6f, 0x5b, + 0x70, 0x62, 0x72, 0x6f, 0x6d, 0x70, 0x6f, 0x6f, 0x70, 0x70, 0x6c, 0x6f, + 0x70, 0x67, 0x73, 0x6e, 0x71, 0x71, 0x6f, 0x6c, 0x73, 0x6e, 0x6f, 0x6d, + 0x6f, 0x6f, 0x6c, 0x6f, 0x70, 0x6f, 0x6e, 0x6d, 0x70, 0x71, 0x65, 0x6e, + 0x6a, 0x66, 0x6f, 0x59, 0x6e, 0x62, 0x72, 0x70, 0x6d, 0x6e, 0x6e, 0x6f, + 0x70, 0x6f, 0x6c, 0x70, 0x73, 0x67, 0x6a, 0x6d, 0x71, 0x67, 0x6e, 0x6c, + 0x72, 0x6f, 0x70, 0x61, 0x6f, 0x6e, 0x6b, 0x70, 0x6e, 0x6f, 0x6e, 0x6d, + 0x6e, 0x6f, 0x6e, 0x70, 0x69, 0x66, 0x6e, 0x5f, 0x75, 0x6e, 0x70, 0x70, + 0x6d, 0x6d, 0x6f, 0x6e, 0x6f, 0x6f, 0x6c, 0x71, 0x73, 0x6b, 0x6d, 0x6e, + 0x6f, 0x6a, 0x6c, 0x6b, 0x72, 0x71, 0x71, 0x75, 0x70, 0x6e, 0x69, 0x6f, + 0x6c, 0x6f, 0x6e, 0x69, 0x70, 0x6f, 0x6e, 0x70, 0x68, 0x65, 0x6e, 0x6a, + 0x7c, 0x72, 0x6d, 0x70, 0x6d, 0x71, 0x6e, 0x6e, 0x72, 0x6d, 0x6b, 0x72, + 0x70, 0x6d, 0x71, 0x6e, 0x6f, 0x6b, 0x6b, 0x6b, 0x74, 0x76, 0x71, 0x6f, + 0x70, 0x70, 0x72, 0x6e, 0x6d, 0x72, 0x6e, 0x6d, 0x6e, 0x6f, 0x72, 0x6f, + 0x6e, 0x65, 0x6e, 0x73, 0x6e, 0x71, 0x6c, 0x6d, 0x6e, 0x6d, 0x6e, 0x6e, + 0x6e, 0x70, 0x6f, 0x6f, 0x71, 0x6f, 0x6a, 0x70, 0x70, 0x6f, 0x6d, 0x6c, + 0x6d, 0x6b, 0x6e, 0x6e, 0x70, 0x6e, 0x66, 0x6e, 0x6a, 0x74, 0x6f, 0x67, + 0x6f, 0x6e, 0x6e, 0x6e, 0x67, 0x66, 0x6f, 0x70, 0x76, 0x74, 0x6b, 0x71, + 0x6d, 0x70, 0x6e, 0x6c, 0x74, 0x6c, 0x6b, 0x73, 0x71, 0x6d, 0x6e, 0x6f, + 0x6e, 0x6b, 0x6e, 0x68, 0x72, 0x74, 0x70, 0x70, 0x70, 0x6e, 0x70, 0x6e, + 0x6f, 0x71, 0x6f, 0x6c, 0x70, 0x70, 0x72, 0x70, 0x6e, 0x66, 0x6e, 0x71, + 0x6e, 0x6d, 0x6c, 0x6f, 0x6d, 0x6f, 0x6f, 0x6f, 0x6e, 0x6f, 0x6e, 0x6e, + 0x6e, 0x72, 0x66, 0x6e, 0x70, 0x72, 0x6c, 0x6b, 0x75, 0x75, 0x6f, 0x6f, + 0x70, 0x6e, 0x71, 0x70, 0x6e, 0x70, 0x6f, 0x6c, 0x6e, 0x71, 0x6f, 0x6f, + 0x6d, 0x67, 0x6f, 0x74, 0x70, 0x6e, 0x68, 0x6e, 0x6e, 0x6c, 0x6e, 0x6f, + 0x6f, 0x6f, 0x6e, 0x70, 0x70, 0x6f, 0x67, 0x6e, 0x70, 0x6e, 0x6e, 0x6c, + 0x72, 0x74, 0x70, 0x6f, 0x70, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6c, + 0x71, 0x72, 0x6f, 0x6e, 0x6d, 0x66, 0x6e, 0x71, 0x70, 0x6b, 0x6d, 0x6f, + 0x6d, 0x6e, 0x6e, 0x6f, 0x6e, 0x6f, 0x6e, 0x6f, 0x6d, 0x71, 0x60, 0x6f, + 0x6f, 0x70, 0x6c, 0x6c, 0x73, 0x74, 0x6f, 0x6e, 0x6f, 0x70, 0x6f, 0x70, + 0x6f, 0x6b, 0x6e, 0x6c, 0x6f, 0x73, 0x6a, 0x6f, 0x6d, 0x68, 0x70, 0x74, + 0x70, 0x66, 0x6d, 0x70, 0x6d, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6d, 0x6e, + 0x6e, 0x72, 0x63, 0x6e, 0x71, 0x6f, 0x69, 0x6c, 0x74, 0x72, 0x70, 0x6e, + 0x70, 0x70, 0x6e, 0x70, 0x70, 0x6d, 0x6e, 0x6e, 0x6e, 0x72, 0x66, 0x70, + 0x6d, 0x67, 0x6e, 0x71, 0x6e, 0x6b, 0x6f, 0x6e, 0x6d, 0x6f, 0x6f, 0x6f, + 0x6f, 0x6f, 0x6e, 0x70, 0x6e, 0x72, 0x66, 0x6f, 0x6f, 0x70, 0x6c, 0x6d, + 0x75, 0x71, 0x71, 0x6f, 0x71, 0x6e, 0x6e, 0x70, 0x70, 0x6b, 0x6f, 0x6d, + 0x6e, 0x72, 0x61, 0x6f, 0x6d, 0x66, 0x6e, 0x6f, 0x71, 0x6b, 0x70, 0x70, + 0x6d, 0x6e, 0x6f, 0x6f, 0x71, 0x6e, 0x6f, 0x71, 0x6e, 0x71, 0x60, 0x70, + 0x70, 0x71, 0x6d, 0x6d, 0xbb, 0x4e, 0x87, 0x50, 0x77, 0x6f, 0x85, 0x6e, + 0x7d, 0x70, 0x91, 0x7e, 0x70, 0x4b, 0x60, 0x6d, 0xa6, 0xc7, 0x6d, 0x51, + 0x7f, 0x6a, 0x40, 0x70, 0x7e, 0x6e, 0x6d, 0x81, 0x5e, 0x67, 0x6e, 0x5d, + 0x62, 0x5a, 0x62, 0x6f, 0x63, 0x55, 0x6b, 0x8b, 0x6f, 0x7a, 0x1f, 0x60, + 0x6e, 0x6d, 0x65, 0x6d, 0x77, 0x73, 0x6e, 0x68, 0x6e, 0x79, 0x67, 0x6b, + 0x41, 0x97, 0x6e, 0x69, 0x80, 0x69, 0x70, 0x6f, 0x5d, 0x6b, 0x6c, 0x5e, + 0x49, 0x6a, 0x8a, 0x6b, 0x78, 0x67, 0x6e, 0x6a, 0x6e, 0x68, 0x6f, 0x75, + 0x75, 0x75, 0x70, 0x7e, 0x75, 0x6f, 0x7b, 0x6f, 0x66, 0x72, 0x6e, 0x78, + 0x6f, 0x79, 0x6e, 0x6e, 0x69, 0x47, 0x70, 0x78, 0x59, 0x74, 0x77, 0x6e, + 0x6b, 0x74, 0x70, 0x85, 0x71, 0x6d, 0x69, 0x7a, 0x6e, 0x69, 0x68, 0x70, + 0x7d, 0x75, 0x73, 0x69, 0x78, 0x69, 0x72, 0x80, 0x76, 0x70, 0x75, 0x6e, + 0x72, 0x72, 0x6f, 0x79, 0x6e, 0x78, 0x6e, 0x70, 0x68, 0x46, 0x6f, 0x7d, + 0x57, 0x74, 0x75, 0x6e, 0x6c, 0x71, 0x70, 0x85, 0x6f, 0x6d, 0x77, 0x85, + 0x6e, 0x69, 0x66, 0x6e, 0x7e, 0x74, 0x76, 0x6c, 0x88, 0x6a, 0x72, 0x80, + 0x72, 0x6d, 0x75, 0x6e, 0x7e, 0x6d, 0x6d, 0x6d, 0x6f, 0x7c, 0x6e, 0x70, + 0x68, 0x45, 0x70, 0x7d, 0x82, 0x74, 0x7b, 0x70, 0x78, 0x69, 0x6f, 0x84, + 0x61, 0x7d, 0x82, 0x83, 0x54, 0x6f, 0x66, 0x70, 0x82, 0x72, 0x6a, 0x6e, + 0x7c, 0x56, 0x70, 0x80, 0x60, 0x6e, 0x51, 0x70, 0x89, 0x65, 0x6e, 0x3a, + 0x6f, 0x7c, 0x61, 0x6f, 0x69, 0x54, 0x6e, 0x65, 0x78, 0x6e, 0x74, 0x6f, + 0x78, 0x6d, 0x6f, 0x7f, 0x75, 0x7d, 0x7e, 0x79, 0x4c, 0x71, 0x65, 0x70, + 0x88, 0x6d, 0x67, 0x70, 0x6f, 0x6a, 0x76, 0x61, 0x61, 0x6e, 0x54, 0x6e, + 0x7e, 0x58, 0x6e, 0x48, 0x6e, 0x77, 0x65, 0x6f, 0x54, 0x53, 0x6f, 0x7b, + 0x55, 0x65, 0x69, 0x70, 0x76, 0x7b, 0x70, 0x77, 0x64, 0x79, 0x6e, 0x82, + 0x51, 0x7d, 0x5f, 0x6f, 0x88, 0x68, 0x65, 0x63, 0x5c, 0x47, 0x84, 0x54, + 0x5c, 0x70, 0x73, 0x70, 0x87, 0x5a, 0x66, 0x4e, 0x6f, 0x61, 0x60, 0x70, + 0x69, 0x53, 0x6f, 0x7f, 0x69, 0x61, 0x6e, 0x6e, 0x69, 0x70, 0x6f, 0x82, + 0x5d, 0x74, 0x73, 0x58, 0x67, 0x77, 0x59, 0x70, 0x84, 0x6c, 0x58, 0x57, + 0x70, 0x5d, 0x73, 0x5b, 0x63, 0x6e, 0x6e, 0x6f, 0x6e, 0x5e, 0x6f, 0x6f, + 0x6e, 0x71, 0x58, 0x70, 0x81, 0x54, 0x6f, 0x77, 0x76, 0x6f, 0x6d, 0x6f, + 0x6b, 0x6c, 0x70, 0x6c, 0x6f, 0x75, 0x64, 0x6d, 0x54, 0x6e, 0x56, 0x70, + 0x66, 0x6f, 0x5e, 0x69, 0x6e, 0x70, 0x70, 0x69, 0x6e, 0x70, 0x71, 0x6e, + 0x6e, 0x67, 0x6e, 0x6c, 0x70, 0x75, 0x68, 0x6f, 0x70, 0x71, 0x70, 0x6e, + 0x6f, 0x6e, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x6d, 0x76, 0x6f, 0x70, + 0x70, 0x6f, 0x6e, 0x6e, 0x71, 0x70, 0x6c, 0x6e, 0x68, 0x66, 0x77, 0x71, + 0x6c, 0x6e, 0x74, 0x6e, 0x73, 0x59, 0x6e, 0x70, 0x6f, 0x69, 0x61, 0x6f, + 0x69, 0x53, 0x6e, 0x70, 0x71, 0x70, 0x69, 0x70, 0x70, 0x72, 0x6e, 0x6f, + 0x6d, 0x79, 0x71, 0x70, 0x6a, 0x70, 0x7a, 0x6f, 0x71, 0x70, 0x6d, 0x6d, + 0x63, 0x6f, 0x77, 0x6b, 0x70, 0x6f, 0x73, 0x6f, 0x6f, 0x6c, 0x70, 0x70, + 0x6e, 0x74, 0x6f, 0x70, 0x79, 0x4c, 0x6f, 0x70, 0x76, 0x6e, 0x6f, 0x70, + 0x6f, 0x70, 0x6f, 0x6f, 0x72, 0x81, 0x71, 0x73, 0x75, 0x70, 0x7c, 0x70, + 0x6f, 0x70, 0x70, 0x6e, 0x72, 0x7a, 0x87, 0x66, 0x73, 0x6e, 0x40, 0x6f, + 0x4c, 0x72, 0x6f, 0x70, 0x6f, 0x76, 0x69, 0x6e, 0x55, 0x88, 0x6e, 0x6c, + 0x63, 0x6c, 0x72, 0x6e, 0x63, 0x6c, 0x6f, 0x81, 0x55, 0x63, 0x43, 0x74, + 0x76, 0x69, 0x6e, 0x6e, 0x6c, 0x6b, 0x6f, 0x72, 0x6e, 0x7b, 0x55, 0x67, + 0x6c, 0x6f, 0x80, 0x6e, 0x65, 0x73, 0x83, 0x6d, 0x6f, 0x76, 0x6b, 0x6e, + 0x60, 0x7a, 0x6e, 0x6b, 0x74, 0x6d, 0x72, 0x70, 0x6b, 0x6f, 0x6f, 0x4c, + 0x8e, 0x68, 0x54, 0x54, 0x76, 0x6a, 0x6c, 0x6f, 0x69, 0x6e, 0x70, 0x6e, + 0x7e, 0x79, 0x7f, 0x6b, 0x72, 0x6f, 0x82, 0x6f, 0x76, 0x73, 0x3d, 0x73, + 0x6e, 0x75, 0x6c, 0x6f, 0x62, 0x6a, 0x70, 0x6d, 0x7e, 0x6c, 0x73, 0x6e, + 0x64, 0x6a, 0x70, 0x86, 0x7c, 0x62, 0x68, 0x6f, 0x74, 0x6a, 0x6b, 0x6d, + 0x6a, 0x6e, 0x74, 0x6a, 0x76, 0x79, 0x67, 0x75, 0x6e, 0x6f, 0x43, 0x6e, + 0x93, 0x73, 0x61, 0x6f, 0x70, 0x74, 0x6c, 0x6e, 0x7e, 0x5d, 0x6f, 0x6f, + 0x5e, 0x6e, 0x78, 0x6e, 0x5d, 0x61, 0x6f, 0x6b, 0x88, 0x63, 0x6c, 0x70, + 0x6e, 0x6e, 0x6c, 0x70, 0x68, 0x6f, 0x6f, 0x67, 0x83, 0x79, 0x78, 0x72, + 0x76, 0x70, 0x79, 0x6f, 0x73, 0x73, 0x74, 0x76, 0x6e, 0x76, 0x6d, 0x6e, + 0x66, 0x4e, 0x6d, 0x70, 0x62, 0x70, 0x78, 0x6e, 0x60, 0x76, 0x6e, 0x7c, + 0x7b, 0x66, 0x6e, 0x88, 0x72, 0x6e, 0x6b, 0x6d, 0x71, 0x72, 0x72, 0x22, + 0x9f, 0x7a, 0x38, 0x74, 0x76, 0x70, 0x49, 0x6f, 0x6e, 0x72, 0x6f, 0x75, + 0x70, 0x79, 0x6d, 0x6f, 0x67, 0x48, 0x6f, 0x71, 0x41, 0x72, 0x7c, 0x6e, + 0x73, 0x7f, 0x6f, 0x7f, 0x76, 0x9e, 0x78, 0x63, 0x70, 0x6f, 0x6a, 0x6f, + 0x75, 0x73, 0x6f, 0x69, 0x6b, 0x79, 0x4b, 0x7a, 0x78, 0x70, 0x7a, 0x70, + 0x69, 0x73, 0x6c, 0x6f, 0x6e, 0x7d, 0x6e, 0x6f, 0x67, 0x44, 0x70, 0x75, + 0x57, 0x72, 0x7b, 0x6e, 0x69, 0x8b, 0x6e, 0x7b, 0x76, 0x6b, 0x7c, 0x60, + 0x6f, 0x6c, 0x69, 0x70, 0x7b, 0x74, 0x73, 0x6a, 0x78, 0x76, 0x76, 0x7d, + 0x74, 0x6f, 0x7a, 0x6f, 0x7c, 0x72, 0x71, 0x7a, 0x70, 0x6f, 0x6d, 0x6f, + 0x68, 0x47, 0x6e, 0x79, 0x5b, 0x70, 0x78, 0x70, 0x71, 0x74, 0x6e, 0x84, + 0x73, 0x6b, 0x76, 0x7b, 0x6f, 0x69, 0x68, 0x70, 0x7b, 0x73, 0x73, 0x6c, + 0x63, 0x71, 0x6e, 0x73, 0x6f, 0x6f, 0x74, 0x6f, 0x70, 0x77, 0x6e, 0x6e, + 0x6e, 0x6e, 0x76, 0x6f, 0x6c, 0x66, 0x70, 0x5a, 0x66, 0x79, 0x6e, 0x70, + 0x6b, 0x6d, 0x6e, 0x70, 0x6c, 0x6d, 0x6e, 0x65, 0x6b, 0x69, 0x7e, 0x6f, + 0x6c, 0x73, 0x65, 0x6d, 0x70, 0x73, 0x70, 0x6e, 0x6f, 0x70, 0x6f, 0x6f, + 0x71, 0x74, 0x6f, 0x6d, 0x70, 0x72, 0x6d, 0x6f, 0x6a, 0x67, 0x70, 0x65, + 0x6e, 0x73, 0x74, 0x6f, 0x6b, 0x68, 0x70, 0x70, 0x72, 0x6f, 0x6d, 0x6e, + 0x6f, 0x6c, 0x6b, 0x6f, 0x71, 0x6b, 0x70, 0x6b, 0x74, 0x71, 0x71, 0x71, + 0x70, 0x6e, 0x6e, 0x6e, 0x6e, 0x6a, 0x6f, 0x6d, 0x70, 0x73, 0x69, 0x6f, + 0x6d, 0x67, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x6f, 0x6d, 0x6c, 0x70, 0x6f, + 0x70, 0x6f, 0x6e, 0x73, 0x6f, 0x70, 0x63, 0x6f, 0x70, 0x70, 0x6f, 0x6c, + 0x74, 0x71, 0x70, 0x71, 0x70, 0x6e, 0x6c, 0x6f, 0x6f, 0x6a, 0x6f, 0x6d, + 0x6e, 0x74, 0x67, 0x6f, 0x6d, 0x66, 0x6e, 0x71, 0x71, 0x65, 0x6e, 0x70, + 0x6d, 0x6e, 0x70, 0x6f, 0x70, 0x6f, 0x6e, 0x73, 0x6e, 0x6f, 0x67, 0x70, + 0x70, 0x6f, 0x6f, 0x6b, 0x75, 0x71, 0x70, 0x70, 0x70, 0x70, 0x6c, 0x6e, + 0x70, 0x68, 0x6f, 0x6d, 0x70, 0x74, 0x65, 0x6f, 0x6d, 0x66, 0x6f, 0x71, + 0x70, 0x64, 0x6f, 0x6f, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x6f, 0x6e, 0x73, + 0x6f, 0x6e, 0x64, 0x6e, 0x71, 0x6f, 0x6e, 0x6c, 0x76, 0x70, 0x71, 0x70, + 0x70, 0x6e, 0x6c, 0x6f, 0x6f, 0x6a, 0x6f, 0x6d, 0x70, 0x74, 0x66, 0x6e, + 0x6d, 0x66, 0x6f, 0x71, 0x71, 0x65, 0x6e, 0x6e, 0x6d, 0x6f, 0x6f, 0x6f, + 0x71, 0x6f, 0x6e, 0x72, 0x6f, 0x6b, 0x63, 0x6f, 0x71, 0x6f, 0x6f, 0x6c, + 0x76, 0x70, 0x70, 0x6f, 0x70, 0x6e, 0x6a, 0x6e, 0x6f, 0x6c, 0x6f, 0x6e, + 0x6e, 0x74, 0x65, 0x6e, 0x6c, 0x66, 0x6f, 0x70, 0x72, 0x62, 0x6e, 0x6f, + 0x6d, 0x70, 0x6f, 0x6f, 0x71, 0x6f, 0x6e, 0x72, 0x6f, 0x69, 0x66, 0x6e, + 0x71, 0x6f, 0x6f, 0x6c, 0x77, 0x70, 0x70, 0x6f, 0x70, 0x6f, 0x6a, 0x6d, + 0x6f, 0x69, 0x6f, 0x6e, 0x6f, 0x73, 0x62, 0x6f, 0x6d, 0x66, 0x6f, 0x6f, + 0x73, 0x60, 0x6f, 0x6f, 0x6d, 0x71, 0x6e, 0x6f, 0x72, 0x70, 0x6e, 0x72, + 0x6f, 0x68, 0x62, 0x70, 0x71, 0x6f, 0x70, 0x6c, 0x77, 0x70, 0x70, 0x6d, + 0x70, 0x6f, 0x69, 0x6f, 0x6f, 0x6b, 0x6f, 0x6e, 0x70, 0x73, 0x66, 0x6f, + 0x6d, 0x66, 0x6e, 0x6e, 0x76, 0x65, 0x6f, 0x6f, 0x6e, 0x73, 0x6d, 0x6f, + 0x72, 0x6f, 0x6e, 0x71, 0x6e, 0x64, 0x61, 0x70, 0x71, 0x6d, 0x70, 0x6d, + 0x78, 0x70, 0x70, 0x6b, 0x70, 0x6f, 0x68, 0x70, 0x6e, 0x69, 0x6e, 0x6e, + 0x70, 0x73, 0x67, 0x70, 0x6c, 0x66, 0x6e, 0x6a, 0x76, 0x5e, 0x70, 0x6e, + 0x6e, 0x74, 0x6f, 0x6f, 0x73, 0x70, 0x6e, 0x70, 0x6f, 0x66, 0x64, 0x6f, + 0x71, 0x6e, 0x71, 0x6c, 0x7b, 0x6f, 0x70, 0x6a, 0x71, 0x6f, 0x67, 0x6d, + 0x70, 0x6b, 0x6f, 0x6e, 0x6f, 0x72, 0x64, 0x6e, 0x6d, 0x66, 0x70, 0x67, + 0x78, 0x64, 0x72, 0x70, 0x6e, 0x75, 0x6f, 0x6f, 0x73, 0x70, 0x6e, 0x70, + 0x72, 0x64, 0x67, 0x6f, 0x71, 0x5e, 0x71, 0x6d, 0x7c, 0x6e, 0x6f, 0x64, + 0x71, 0x6d, 0x67, 0x6e, 0x6f, 0x6d, 0x6e, 0x6e, 0x6e, 0x71, 0x6c, 0x6e, + 0x6d, 0x67, 0x70, 0x64, 0x76, 0x69, 0x73, 0x6e, 0x6e, 0x79, 0x6f, 0x6e, + 0x73, 0x6f, 0x6e, 0x6e, 0x75, 0x68, 0x65, 0x6e, 0x71, 0x63, 0x71, 0x6d, + 0x6f, 0x73, 0x6f, 0x6e, 0x6f, 0x6e, 0x72, 0x6e, 0x70, 0x74, 0x6e, 0x6d, + 0x6e, 0x73, 0x71, 0x70, 0x6b, 0x67, 0x6f, 0x64, 0x6b, 0x75, 0x72, 0x6e, + 0x6b, 0x68, 0x6f, 0x70, 0x6e, 0x6e, 0x6d, 0x72, 0x6f, 0x6f, 0x6b, 0x6f, + 0x70, 0x6b, 0x6d, 0x6b, 0x7c, 0x69, 0x6f, 0x5c, 0x74, 0x6f, 0x63, 0x70, + 0x6e, 0x6d, 0x6e, 0x6a, 0x6f, 0x6f, 0x6b, 0x6e, 0x6d, 0x66, 0x6e, 0x69, + 0x7c, 0x70, 0x75, 0x6f, 0x6c, 0x7d, 0x6f, 0x6c, 0x74, 0x6e, 0x6d, 0x6f, + 0x78, 0x6a, 0x6d, 0x70, 0x70, 0x6a, 0x71, 0x6c, 0x72, 0x72, 0x70, 0x71, + 0x6f, 0x70, 0x71, 0x70, 0x70, 0x73, 0x6e, 0x6d, 0x6e, 0x72, 0x71, 0x6e, + 0x6c, 0x67, 0x6f, 0x6a, 0x6d, 0x73, 0x72, 0x6e, 0x6b, 0x6b, 0x6e, 0x70, + 0x6f, 0x6e, 0x6e, 0x71, 0x6f, 0x71, 0x5a, 0x6d, 0x70, 0x6f, 0x6a, 0x6c, + 0x72, 0x72, 0x71, 0x72, 0x6f, 0x70, 0x70, 0x70, 0x70, 0x70, 0x6f, 0x6c, + 0x6f, 0x72, 0x6d, 0x6f, 0x6d, 0x67, 0x6e, 0x72, 0x6e, 0x6c, 0x71, 0x6f, + 0x6c, 0x6b, 0x6e, 0x6f, 0x70, 0x6e, 0x6f, 0x72, 0x6d, 0x72, 0x58, 0x6f, + 0x70, 0x6f, 0x6d, 0x6b, 0x73, 0x72, 0x71, 0x71, 0x70, 0x6f, 0x6f, 0x6f, + 0x70, 0x6f, 0x6f, 0x6d, 0x70, 0x72, 0x6c, 0x6f, 0x6c, 0x66, 0x6e, 0x73, + 0x6e, 0x69, 0x70, 0x6e, 0x6d, 0x6b, 0x6e, 0x6f, 0x6f, 0x6e, 0x6f, 0x72, + 0x6d, 0x72, 0x66, 0x70, 0x70, 0x70, 0x6e, 0x6b, 0x73, 0x71, 0x71, 0x72, + 0x70, 0x70, 0x6f, 0x70, 0x6f, 0x70, 0x70, 0x6c, 0x70, 0x72, 0x6a, 0x70, + 0x6c, 0x66, 0x6e, 0x73, 0x6f, 0x6a, 0x70, 0x6f, 0x6d, 0x6b, 0x6f, 0x6f, + 0x70, 0x6e, 0x6e, 0x73, 0x6d, 0x71, 0x6b, 0x6f, 0x70, 0x70, 0x6f, 0x6c, + 0x73, 0x72, 0x71, 0x71, 0x70, 0x70, 0x6e, 0x70, 0x6f, 0x6d, 0x6f, 0x6c, + 0x6e, 0x73, 0x6a, 0x6f, 0x6d, 0x67, 0x6f, 0x73, 0x70, 0x69, 0x70, 0x70, + 0x6d, 0x6c, 0x6e, 0x6f, 0x70, 0x6e, 0x6e, 0x73, 0x6e, 0x71, 0x64, 0x70, + 0x71, 0x70, 0x6e, 0x6b, 0x73, 0x72, 0x71, 0x71, 0x70, 0x70, 0x6e, 0x6e, + 0x6f, 0x6d, 0x6f, 0x6d, 0x6e, 0x73, 0x69, 0x6e, 0x6d, 0x66, 0x6e, 0x73, + 0x6f, 0x68, 0x6f, 0x6f, 0x6d, 0x6c, 0x70, 0x6f, 0x6f, 0x6f, 0x6e, 0x73, + 0x6e, 0x70, 0x67, 0x6f, 0x70, 0x6f, 0x6e, 0x6c, 0x74, 0x71, 0x70, 0x71, + 0x70, 0x70, 0x6e, 0x6f, 0x70, 0x6a, 0x6f, 0x6d, 0x6e, 0x73, 0x69, 0x6e, + 0x6d, 0x67, 0x6e, 0x73, 0x70, 0x67, 0x6f, 0x6f, 0x6d, 0x6c, 0x70, 0x6f, + 0x6f, 0x6f, 0x6e, 0x73, 0x6e, 0x70, 0x64, 0x6f, 0x70, 0x6e, 0x6e, 0x6c, + 0x78, 0x5b, 0x71, 0x7c, 0x6f, 0x6f, 0x70, 0x6e, 0x6e, 0x6e, 0x6f, 0x6d, + 0x6d, 0x74, 0x6e, 0x6d, 0x6e, 0x64, 0x6e, 0x6f, 0x6e, 0x6f, 0x7d, 0x6f, + 0x70, 0x6d, 0x6f, 0x6f, 0x72, 0x6f, 0x70, 0x6c, 0x6f, 0x78, 0x73, 0x6e, + 0x70, 0x7a, 0x65, 0x6c, 0x76, 0x65, 0x71, 0x7e, 0x70, 0x70, 0x6d, 0x6f, + 0x72, 0x6f, 0x70, 0x6d, 0x6e, 0x75, 0x7f, 0x6e, 0x6e, 0x64, 0x6d, 0x74, + 0x6f, 0x6f, 0x78, 0x70, 0x6e, 0x71, 0x70, 0x70, 0x73, 0x6e, 0x6e, 0x6b, + 0x71, 0x73, 0x69, 0x6e, 0x70, 0x75, 0x6b, 0x6c, 0x72, 0x72, 0x71, 0x52, + 0x70, 0x70, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6b, 0x6e, 0x74, 0x6d, 0x6e, + 0x6a, 0x64, 0x6f, 0x6d, 0x71, 0x6d, 0x70, 0x6e, 0x6d, 0x6d, 0x6f, 0x6e, + 0x71, 0x6d, 0x6d, 0x72, 0x6e, 0x67, 0x5e, 0x6e, 0x6f, 0x67, 0x6e, 0x6b, + 0x71, 0x73, 0x71, 0x50, 0x6f, 0x6f, 0x6d, 0x6e, 0x6f, 0x6f, 0x6f, 0x6a, + 0x6e, 0x74, 0x60, 0x6e, 0x6b, 0x64, 0x70, 0x6c, 0x70, 0x6f, 0x6f, 0x6e, + 0x6c, 0x6d, 0x6f, 0x6e, 0x70, 0x6d, 0x6c, 0x72, 0x6e, 0x68, 0x5f, 0x6e, + 0x6f, 0x68, 0x6e, 0x6a, 0x70, 0x74, 0x70, 0x4e, 0x70, 0x70, 0x6d, 0x70, + 0x6f, 0x6e, 0x6f, 0x6a, 0x6f, 0x73, 0x64, 0x70, 0x6a, 0x64, 0x6e, 0x6c, + 0x6f, 0x70, 0x6f, 0x70, 0x6c, 0x6c, 0x6e, 0x6e, 0x70, 0x6e, 0x6c, 0x71, + 0x6d, 0x6a, 0x64, 0x6d, 0x6f, 0x66, 0x6e, 0x6b, 0x71, 0x77, 0x6f, 0x4c, + 0x6e, 0x6e, 0x6e, 0x70, 0x6e, 0x6f, 0x6e, 0x6c, 0x70, 0x73, 0x65, 0x6e, + 0x6b, 0x64, 0x70, 0x6b, 0x70, 0x70, 0x6e, 0x70, 0x6b, 0x6c, 0x70, 0x6f, + 0x6f, 0x6e, 0x6c, 0x71, 0x6f, 0x6c, 0x62, 0x6e, 0x6f, 0x6d, 0x6e, 0x6b, + 0x6f, 0x78, 0x6f, 0x4c, 0x6f, 0x6e, 0x6d, 0x6f, 0x6d, 0x6c, 0x6e, 0x69, + 0x71, 0x73, 0x61, 0x70, 0x6a, 0x64, 0x6e, 0x6a, 0x71, 0x71, 0x6d, 0x6e, + 0x6d, 0x6c, 0x70, 0x6e, 0x71, 0x6d, 0x6b, 0x73, 0x6e, 0x69, 0x64, 0x6f, + 0x6f, 0x6c, 0x6e, 0x69, 0x6f, 0x78, 0x70, 0x58, 0x70, 0x6e, 0x6b, 0x70, + 0x6d, 0x6c, 0x70, 0x69, 0x70, 0x72, 0x65, 0x6f, 0x6b, 0x64, 0x6e, 0x6e, + 0x74, 0x6e, 0x6a, 0x6d, 0x6c, 0x6b, 0x6e, 0x6e, 0x70, 0x6d, 0x6c, 0x71, + 0x6e, 0x6c, 0x62, 0x70, 0x70, 0x6e, 0x6e, 0x6a, 0x70, 0x7d, 0x70, 0x4f, + 0x6e, 0x6e, 0x6d, 0x6f, 0x6b, 0x6c, 0x6e, 0x6a, 0x6f, 0x73, 0x63, 0x6f, + 0x6b, 0x65, 0x6f, 0x67, 0x74, 0x6f, 0x69, 0x6e, 0x6d, 0x6b, 0x6f, 0x6d, + 0x6d, 0x6e, 0x6c, 0x73, 0x6d, 0x6a, 0x69, 0x70, 0x6f, 0x6b, 0x6e, 0x69, + 0x70, 0x7c, 0x6f, 0x4d, 0x6f, 0x6d, 0x6c, 0x6e, 0x6a, 0x6d, 0x6e, 0x6a, + 0x70, 0x73, 0x61, 0x6e, 0x6b, 0x64, 0x6e, 0x67, 0x76, 0x72, 0x69, 0x6e, + 0x6c, 0x6c, 0x6e, 0x6e, 0x72, 0x6d, 0x6c, 0x72, 0x6d, 0x71, 0x67, 0x6f, + 0x6e, 0x6c, 0x6e, 0x69, 0x75, 0x87, 0x72, 0x52, 0x6f, 0x6f, 0x6e, 0x6e, + 0x6a, 0x6d, 0x6d, 0x6a, 0x6f, 0x72, 0x6e, 0x6e, 0x6d, 0x63, 0x6f, 0x64, + 0x74, 0x74, 0x67, 0x6e, 0x6c, 0x6e, 0x6f, 0x6d, 0x6f, 0x6e, 0x6d, 0x6f, + 0x6f, 0x6c, 0x64, 0x6e, 0x6f, 0x6b, 0x6d, 0x6a, 0x75, 0x8d, 0x71, 0x47, + 0x6f, 0x6f, 0x6f, 0x6f, 0x68, 0x6a, 0x6d, 0x6a, 0x70, 0x72, 0x69, 0x6f, + 0x6f, 0x64, 0x6f, 0x5c, 0x75, 0x72, 0x63, 0x6e, 0x6c, 0x6e, 0x70, 0x6c, + 0x6c, 0x6e, 0x6d, 0x6f, 0x6e, 0x67, 0x62, 0x6f, 0x70, 0x68, 0x6d, 0x69, + 0x78, 0x6a, 0x71, 0x75, 0x70, 0x6e, 0x6d, 0x6f, 0x73, 0x71, 0x70, 0x6d, + 0x6e, 0x74, 0x65, 0x6e, 0x6c, 0x64, 0x6f, 0x71, 0x6f, 0x6d, 0x75, 0x6e, + 0x6e, 0x6f, 0x70, 0x70, 0x72, 0x6e, 0x6e, 0x74, 0x6f, 0x73, 0x6c, 0x6d, + 0x6f, 0x74, 0x6c, 0x6d, 0x77, 0x65, 0x70, 0x69, 0x70, 0x6f, 0x6b, 0x6f, + 0x6a, 0x74, 0x6e, 0x6a, 0x6f, 0x6e, 0x6c, 0x70, 0x75, 0x65, 0x6e, 0x70, + 0x6c, 0x6f, 0x6c, 0x70, 0x71, 0x70, 0x70, 0x73, 0x6f, 0x6e, 0x71, 0x70, + 0x6e, 0x70, 0x76, 0x70, 0x6a, 0x70, 0x6f, 0x6e, 0x78, 0x6d, 0x71, 0x73, + 0x70, 0x6f, 0x6d, 0x70, 0x72, 0x71, 0x70, 0x6d, 0x6e, 0x74, 0x6b, 0x6f, + 0x6c, 0x64, 0x6e, 0x71, 0x70, 0x6d, 0x75, 0x6e, 0x6d, 0x6f, 0x6d, 0x70, + 0x71, 0x6e, 0x6d, 0x75, 0x6f, 0x70, 0x68, 0x6d, 0x6e, 0x6c, 0x6b, 0x6c, + 0x77, 0x6e, 0x71, 0x70, 0x70, 0x6e, 0x6d, 0x6f, 0x72, 0x71, 0x70, 0x6d, + 0x6f, 0x75, 0x65, 0x6f, 0x6c, 0x64, 0x6f, 0x6f, 0x6f, 0x6d, 0x76, 0x70, + 0x6d, 0x70, 0x6f, 0x70, 0x71, 0x6d, 0x6d, 0x74, 0x6e, 0x66, 0x65, 0x6f, + 0x6e, 0x69, 0x6c, 0x6d, 0x74, 0x6e, 0x70, 0x5b, 0x70, 0x6f, 0x6d, 0x70, + 0x70, 0x71, 0x6f, 0x6d, 0x6f, 0x76, 0x68, 0x70, 0x6b, 0x64, 0x6e, 0x6b, + 0x6c, 0x6d, 0x75, 0x6f, 0x6d, 0x6f, 0x70, 0x6f, 0x73, 0x6e, 0x6d, 0x71, + 0x6d, 0x69, 0x5e, 0x6d, 0x6e, 0x68, 0x6c, 0x6c, 0x74, 0x6f, 0x70, 0x59, + 0x70, 0x6f, 0x6d, 0x6d, 0x70, 0x71, 0x6f, 0x6d, 0x6f, 0x76, 0x5e, 0x6f, + 0x6a, 0x64, 0x70, 0x6d, 0x6f, 0x6f, 0x73, 0x6f, 0x6c, 0x70, 0x6d, 0x6f, + 0x72, 0x6e, 0x6d, 0x71, 0x6e, 0x67, 0x60, 0x6e, 0x6f, 0x6b, 0x6c, 0x6c, + 0x74, 0x6f, 0x71, 0x51, 0x70, 0x70, 0x6d, 0x6f, 0x70, 0x70, 0x6f, 0x6c, + 0x6f, 0x75, 0x69, 0x70, 0x6a, 0x64, 0x6f, 0x6c, 0x6f, 0x70, 0x72, 0x6f, + 0x6c, 0x6e, 0x6f, 0x6f, 0x72, 0x6e, 0x6d, 0x73, 0x6e, 0x68, 0x5d, 0x6e, + 0x6f, 0x6b, 0x6d, 0x6c, 0x73, 0x71, 0x70, 0x58, 0x70, 0x6e, 0x6c, 0x6f, + 0x70, 0x6f, 0x6f, 0x6c, 0x6e, 0x74, 0x6c, 0x70, 0x6a, 0x64, 0x6e, 0x6d, + 0x6f, 0x70, 0x72, 0x70, 0x6d, 0x6e, 0x6d, 0x6f, 0x72, 0x6e, 0x6c, 0x72, + 0x6d, 0x67, 0x5f, 0x6f, 0x6f, 0x6e, 0x6d, 0x6b, 0x72, 0x71, 0x70, 0x54, + 0x71, 0x6f, 0x6b, 0x6f, 0x70, 0x70, 0x70, 0x6c, 0x70, 0x74, 0x69, 0x70, + 0x6b, 0x64, 0x6f, 0x6e, 0x71, 0x6f, 0x70, 0x70, 0x6c, 0x6f, 0x6f, 0x6f, + 0x72, 0x6d, 0x6d, 0x71, 0x6f, 0x69, 0x62, 0x6e, 0x6f, 0x6c, 0x6d, 0x6b, + 0x81, 0x70, 0x72, 0x63, 0x70, 0x6d, 0x93, 0x6e, 0x7e, 0x6f, 0x4a, 0x70, + 0x6e, 0x78, 0x6d, 0x6d, 0x6f, 0xff, 0x6e, 0x69, 0x6f, 0x67, 0x5e, 0x6e, + 0x51, 0x69, 0x6d, 0x6f, 0x82, 0x5f, 0x4f, 0x7b, 0x7b, 0x69, 0x8c, 0x6d, + 0x41, 0x65, 0x66, 0x8c, 0x7f, 0x70, 0x6f, 0x73, 0x70, 0x6e, 0x69, 0x6d, + 0x6d, 0x73, 0x6e, 0x69, 0x6d, 0x5a, 0x72, 0x6e, 0x6e, 0x66, 0x6f, 0x74, + 0x6e, 0x74, 0x32, 0x6d, 0x73, 0x7c, 0x6d, 0x6c, 0x70, 0x6d, 0x6b, 0x77, + 0x6b, 0x6e, 0x6d, 0x6d, 0x6c, 0x6a, 0x75, 0x6b, 0x80, 0x71, 0x70, 0x72, + 0x70, 0x6f, 0x69, 0x70, 0x6d, 0x72, 0x6e, 0x6b, 0x6e, 0x67, 0x70, 0x6e, + 0x6e, 0x65, 0x6f, 0x70, 0x6d, 0x6f, 0x61, 0x6e, 0x71, 0x7b, 0x6d, 0x6c, + 0x70, 0x6e, 0x6c, 0x77, 0x6b, 0x71, 0x57, 0x6e, 0x6f, 0x71, 0x73, 0x6c, + 0x72, 0x72, 0x70, 0x6d, 0x6e, 0x6f, 0x6c, 0x70, 0x70, 0x68, 0x6f, 0x6d, + 0x6e, 0x70, 0x6a, 0x6e, 0x6c, 0x65, 0x6e, 0x6f, 0x6c, 0x66, 0x6f, 0x6f, + 0x6d, 0x6f, 0x6e, 0x6e, 0x70, 0x6e, 0x6c, 0x6e, 0x6e, 0x69, 0x66, 0x70, + 0x6e, 0x6e, 0x6c, 0x6c, 0x75, 0x70, 0x71, 0x6b, 0x6f, 0x6e, 0x6a, 0x70, + 0x71, 0x6b, 0x6f, 0x6d, 0x6e, 0x71, 0x64, 0x6e, 0x6c, 0x65, 0x6e, 0x6a, + 0x6f, 0x6e, 0x73, 0x70, 0x6d, 0x6e, 0x6e, 0x6d, 0x72, 0x6e, 0x6d, 0x6e, + 0x6e, 0x68, 0x65, 0x6e, 0x6f, 0x6d, 0x6c, 0x6c, 0x73, 0x71, 0x71, 0x6a, + 0x6d, 0x6e, 0x6c, 0x6f, 0x71, 0x6f, 0x6e, 0x6b, 0x6d, 0x70, 0x6e, 0x6e, + 0x6d, 0x65, 0x70, 0x6e, 0x6f, 0x6c, 0x76, 0x6d, 0x6d, 0x6d, 0x70, 0x6c, + 0x6f, 0x6e, 0x6c, 0x6e, 0x6f, 0x67, 0x6c, 0x6f, 0x6f, 0x6e, 0x6c, 0x6b, + 0x72, 0x71, 0x72, 0x6a, 0x6e, 0x70, 0x6c, 0x6e, 0x71, 0x67, 0x6e, 0x6d, + 0x6e, 0x72, 0x67, 0x70, 0x6c, 0x66, 0x6f, 0x6e, 0x6f, 0x62, 0x75, 0x6f, + 0x6d, 0x6d, 0x70, 0x6d, 0x70, 0x6e, 0x6c, 0x6d, 0x6e, 0x6b, 0x73, 0x6f, + 0x6e, 0x6d, 0x6a, 0x6c, 0x71, 0x70, 0x70, 0x6a, 0x6e, 0x6e, 0x6d, 0x6e, + 0x71, 0x6f, 0x6e, 0x6d, 0x6d, 0x71, 0x6d, 0x6f, 0x6c, 0x65, 0x6f, 0x6d, + 0x6c, 0x68, 0x75, 0x6e, 0x6c, 0x6a, 0x6e, 0x6d, 0x70, 0x6d, 0x6d, 0x6e, + 0x70, 0x65, 0x6b, 0x6e, 0x6e, 0x6f, 0x6c, 0x6a, 0x71, 0x71, 0x71, 0x6a, + 0x6e, 0x70, 0x6d, 0x6e, 0x72, 0x6e, 0x6f, 0x6e, 0x6e, 0x71, 0x67, 0x70, + 0x6c, 0x66, 0x70, 0x6c, 0x6d, 0x60, 0x76, 0x70, 0x6c, 0x69, 0x6f, 0x6e, + 0x6f, 0x6f, 0x6c, 0x6c, 0x71, 0x6b, 0x6f, 0x6f, 0x6e, 0x67, 0x6b, 0x6c, + 0x6f, 0x70, 0x70, 0x5d, 0x6d, 0x6e, 0x6d, 0x6e, 0x71, 0x6c, 0x6e, 0x6e, + 0x70, 0x71, 0x6c, 0x70, 0x6b, 0x65, 0x6e, 0x69, 0x6b, 0x64, 0x76, 0x6f, + 0x6c, 0x68, 0x6e, 0x6e, 0x6f, 0x6e, 0x6c, 0x6c, 0x70, 0x6d, 0x68, 0x6f, + 0x6e, 0x6a, 0x6c, 0x6b, 0x73, 0x71, 0x71, 0x67, 0x6c, 0x70, 0x6c, 0x70, + 0x73, 0x71, 0x6f, 0x6e, 0x6f, 0x72, 0x6c, 0x6d, 0x6c, 0x65, 0x70, 0x6a, + 0x73, 0x6a, 0x7a, 0x70, 0x6b, 0x65, 0x70, 0x6f, 0x70, 0x6e, 0x6c, 0x6d, + 0x71, 0x67, 0x71, 0x6f, 0x6d, 0x68, 0x6c, 0x6a, 0x6f, 0x6f, 0x70, 0x5b, + 0x6d, 0x6f, 0x6c, 0x70, 0x74, 0x6f, 0x6d, 0x6d, 0x6e, 0x73, 0x65, 0x6f, + 0x6c, 0x65, 0x6e, 0x6a, 0x6d, 0x61, 0x79, 0x6f, 0x6c, 0x67, 0x6f, 0x6d, + 0x72, 0x6e, 0x6b, 0x6b, 0x73, 0x69, 0x6c, 0x6e, 0x70, 0x6b, 0x6c, 0x6b, + 0x70, 0x6f, 0x71, 0x5f, 0x6d, 0x6f, 0x6f, 0x70, 0x74, 0x6e, 0x6f, 0x6c, + 0x70, 0x73, 0x65, 0x70, 0x6d, 0x64, 0x70, 0x6d, 0x6f, 0x78, 0x7d, 0x6f, + 0x6b, 0x64, 0x70, 0x6e, 0x6f, 0x6d, 0x6b, 0x6a, 0x73, 0x69, 0x69, 0x70, + 0x6e, 0x68, 0x6c, 0x6a, 0x7d, 0x70, 0x70, 0x72, 0x70, 0x6e, 0x69, 0x6e, + 0x6e, 0x70, 0x6e, 0x6b, 0x6f, 0x6a, 0x6f, 0x6f, 0x6d, 0x65, 0x6f, 0x6f, + 0x6e, 0x6d, 0x64, 0x6f, 0x70, 0x79, 0x6e, 0x6d, 0x70, 0x6e, 0x6b, 0x76, + 0x6c, 0x72, 0x5b, 0x6e, 0x6f, 0x73, 0x71, 0x6c, 0x6e, 0x6e, 0x70, 0x62, + 0x6c, 0x6e, 0x6f, 0x70, 0x74, 0x6e, 0x70, 0x6d, 0x6e, 0x72, 0x69, 0x6e, + 0x6c, 0x66, 0x70, 0x69, 0x6e, 0x5f, 0x7c, 0x6e, 0x6c, 0x64, 0x6f, 0x6e, + 0x6e, 0x6e, 0x6d, 0x69, 0x74, 0x6b, 0x6f, 0x6e, 0x6d, 0x70, 0x6d, 0x6a, + 0x6d, 0x6f, 0x70, 0x62, 0x6d, 0x6e, 0x6f, 0x70, 0x73, 0x6e, 0x6e, 0x6b, + 0x70, 0x74, 0x67, 0x70, 0x6e, 0x65, 0x6f, 0x65, 0x70, 0x62, 0x81, 0x6f, + 0x6b, 0x63, 0x70, 0x6d, 0x6d, 0x6d, 0x6d, 0x69, 0x73, 0x69, 0x76, 0x6e, + 0x6d, 0x6a, 0x6c, 0x68, 0x70, 0x6f, 0x71, 0x61, 0x6d, 0x6e, 0x71, 0x6f, + 0x77, 0x6e, 0x6f, 0x6f, 0x6e, 0x74, 0x67, 0x6f, 0x6d, 0x65, 0x6e, 0x6c, + 0x72, 0x66, 0x7f, 0x70, 0x69, 0x5f, 0x6f, 0x70, 0x6d, 0x6e, 0x6d, 0x6a, + 0x73, 0x6b, 0x72, 0x6e, 0x6f, 0x6b, 0x6b, 0x6b, 0x66, 0x6f, 0x6f, 0x64, + 0x6c, 0x6f, 0x73, 0x6e, 0x72, 0x6f, 0x6d, 0x67, 0x6e, 0x72, 0x69, 0x70, + 0x6d, 0x65, 0x6f, 0x6e, 0x6a, 0x68, 0x81, 0x70, 0x6b, 0x61, 0x6f, 0x6c, + 0x6c, 0x6d, 0x6a, 0x66, 0x74, 0x6a, 0x73, 0x6f, 0x6d, 0x6b, 0x6d, 0x66, + 0x6b, 0x6e, 0x72, 0x62, 0x6e, 0x70, 0x6c, 0x6e, 0x75, 0x70, 0x70, 0x6c, + 0x70, 0x76, 0x6c, 0x6e, 0x6d, 0x66, 0x6f, 0x69, 0x71, 0x5f, 0x81, 0x70, + 0x6a, 0x65, 0x6f, 0x6d, 0x72, 0x6d, 0x6c, 0x63, 0x73, 0x6b, 0x74, 0x6f, + 0x6e, 0x66, 0x6b, 0x6b, 0x6a, 0x6d, 0x70, 0x64, 0x6e, 0x70, 0x6e, 0x70, + 0x78, 0x6f, 0x6f, 0x71, 0x70, 0x75, 0x6c, 0x6f, 0x6b, 0x66, 0x70, 0x6a, + 0x6f, 0x69, 0x7f, 0x6f, 0x68, 0x5f, 0x70, 0x70, 0x71, 0x6e, 0x6f, 0x65, + 0x74, 0x6c, 0x73, 0x6e, 0x6e, 0x69, 0x6a, 0x6c, 0x65, 0x70, 0x75, 0x62, + 0x6c, 0x6e, 0x69, 0x6f, 0x74, 0x6a, 0x70, 0x6b, 0x6e, 0x77, 0x6c, 0x70, + 0x6c, 0x66, 0x70, 0x6d, 0x6c, 0x6d, 0x80, 0x6f, 0x6c, 0x5d, 0x6e, 0x6d, + 0x73, 0x6f, 0x6d, 0x61, 0x71, 0x6e, 0x75, 0x70, 0x70, 0x6b, 0x70, 0x6a, + 0x67, 0x6b, 0x6d, 0x64, 0x6c, 0x70, 0x76, 0x70, 0x76, 0x6a, 0x6e, 0x70, + 0x6d, 0x77, 0x6c, 0x6f, 0x6a, 0x66, 0x6f, 0x68, 0x63, 0x72, 0x7a, 0x6e, + 0x6b, 0x61, 0x70, 0x71, 0x72, 0x6e, 0x6e, 0x69, 0x77, 0x70, 0x72, 0x6e, + 0x6d, 0x6c, 0x72, 0x6b, 0x63, 0x70, 0x71, 0x6a, 0x6e, 0x6f, 0x75, 0x6f, + 0x73, 0x6c, 0x6e, 0x72, 0x6e, 0x7c, 0x6a, 0x6d, 0x6e, 0x67, 0x6f, 0x6b, + 0x66, 0x71, 0x82, 0x70, 0x68, 0x60, 0x6e, 0x6c, 0x6a, 0x6e, 0x72, 0x64, + 0x72, 0x6e, 0x78, 0x70, 0x69, 0x6a, 0x69, 0x6c, 0x63, 0x70, 0x77, 0x65, + 0x6c, 0x6f, 0x79, 0x6e, 0x6d, 0x68, 0x72, 0x71, 0x6d, 0x85, 0x6c, 0x70, + 0x6f, 0x66, 0x6e, 0x6c, 0x71, 0x70, 0x76, 0x6d, 0x67, 0x5b, 0x70, 0x70, + 0x6d, 0x6d, 0x71, 0x63, 0x70, 0x6e, 0x74, 0x70, 0x6a, 0x6d, 0x68, 0x70, + 0x7b, 0x70, 0x71, 0x71, 0x6f, 0x70, 0x6a, 0x70, 0x6e, 0x6f, 0x6e, 0x6b, + 0x6e, 0x6c, 0x6d, 0x6e, 0x6c, 0x65, 0x6f, 0x6f, 0x6f, 0x6d, 0x68, 0x70, + 0x6f, 0x78, 0x6f, 0x6d, 0x71, 0x6e, 0x6c, 0x75, 0x6c, 0x73, 0x5b, 0x6d, + 0x6f, 0x73, 0x70, 0x6c, 0x63, 0x6e, 0x84, 0x66, 0x73, 0x6f, 0x77, 0x6f, + 0x72, 0x6a, 0x73, 0x75, 0x6e, 0x8b, 0x6f, 0x70, 0x5d, 0x65, 0x6f, 0x6a, + 0x70, 0x6e, 0x75, 0x6e, 0x67, 0x73, 0x70, 0x7b, 0x74, 0x6c, 0x77, 0x6e, + 0x6a, 0x6e, 0x76, 0x70, 0x6a, 0x6f, 0x74, 0x69, 0x78, 0x70, 0x70, 0x70, + 0x6f, 0x6f, 0x6a, 0x70, 0x6e, 0x6e, 0x6e, 0x6c, 0x6e, 0x6d, 0x6c, 0x6e, + 0x6c, 0x65, 0x6f, 0x6e, 0x6e, 0x6c, 0x6a, 0x6f, 0x6f, 0x76, 0x6d, 0x6c, + 0x70, 0x6e, 0x6c, 0x72, 0x6c, 0x72, 0x5f, 0x6f, 0x6f, 0x72, 0x6e, 0x6c, + 0x77, 0x70, 0x70, 0x6f, 0x6f, 0x70, 0x6a, 0x6d, 0x6e, 0x6f, 0x6e, 0x6c, + 0x6e, 0x6e, 0x6b, 0x6e, 0x6c, 0x65, 0x6e, 0x6f, 0x6e, 0x6c, 0x6c, 0x71, + 0x6f, 0x74, 0x6e, 0x6c, 0x70, 0x6e, 0x6c, 0x72, 0x6d, 0x72, 0x5f, 0x6e, + 0x6e, 0x72, 0x6e, 0x6c, 0x74, 0x6f, 0x70, 0x6e, 0x6e, 0x6f, 0x6a, 0x6f, + 0x6f, 0x6d, 0x6e, 0x6c, 0x70, 0x6f, 0x6b, 0x6f, 0x6c, 0x65, 0x6e, 0x6f, + 0x6d, 0x65, 0x6c, 0x6f, 0x6e, 0x72, 0x70, 0x6d, 0x71, 0x6d, 0x6b, 0x72, + 0x6d, 0x71, 0x63, 0x6f, 0x6f, 0x72, 0x6d, 0x6b, 0x75, 0x70, 0x70, 0x6e, + 0x6e, 0x70, 0x6b, 0x6e, 0x6f, 0x6d, 0x6e, 0x6d, 0x70, 0x6f, 0x6a, 0x6f, + 0x6c, 0x66, 0x6f, 0x6e, 0x6c, 0x68, 0x6e, 0x70, 0x6e, 0x71, 0x70, 0x6d, + 0x70, 0x6e, 0x6c, 0x70, 0x6d, 0x6f, 0x66, 0x6f, 0x6f, 0x71, 0x6c, 0x6b, + 0x74, 0x70, 0x70, 0x6d, 0x6f, 0x70, 0x69, 0x70, 0x6f, 0x69, 0x6e, 0x6b, + 0x6f, 0x6f, 0x69, 0x6e, 0x6b, 0x65, 0x6f, 0x6e, 0x6f, 0x6d, 0x70, 0x6e, + 0x6d, 0x70, 0x6e, 0x6d, 0x70, 0x6d, 0x6c, 0x70, 0x6d, 0x6f, 0x64, 0x6f, + 0x6f, 0x70, 0x6c, 0x6b, 0x74, 0x70, 0x70, 0x6d, 0x6e, 0x70, 0x6b, 0x6e, + 0x70, 0x6d, 0x6d, 0x6d, 0x6e, 0x6f, 0x62, 0x6f, 0x6b, 0x65, 0x6e, 0x6e, + 0x6f, 0x6c, 0x71, 0x6f, 0x6d, 0x6e, 0x70, 0x6e, 0x70, 0x6e, 0x6c, 0x70, + 0x6d, 0x6b, 0x68, 0x6e, 0x6f, 0x72, 0x6c, 0x6b, 0x72, 0x81, 0x6f, 0x7d, + 0x6d, 0x6d, 0x74, 0x6c, 0x69, 0x63, 0x6d, 0x72, 0x6f, 0x6b, 0x80, 0x6d, + 0x73, 0x6f, 0x6d, 0x77, 0x69, 0x6e, 0x6d, 0x6d, 0x6e, 0x6e, 0x6c, 0x6f, + 0x6e, 0x73, 0x6f, 0x67, 0x73, 0x72, 0x80, 0x6a, 0x76, 0x7b, 0x7b, 0x6e, + 0x72, 0x71, 0x6f, 0x72, 0x6e, 0x6f, 0x72, 0x6d, 0x6e, 0x63, 0x6f, 0x71, + 0x70, 0x6d, 0x66, 0x6f, 0x70, 0x6f, 0x6e, 0x77, 0x6b, 0x70, 0x6e, 0x6e, + 0x6e, 0x6e, 0x6d, 0x71, 0x70, 0x72, 0x6e, 0x71, 0x75, 0x79, 0x78, 0x6d, + 0x72, 0x68, 0x77, 0x6f, 0x72, 0x81, 0x6e, 0x79, 0x6d, 0x70, 0x73, 0x6f, + 0x69, 0x6d, 0x6d, 0x72, 0x6f, 0x6b, 0x6c, 0x6e, 0x73, 0x6f, 0x6e, 0x81, + 0x69, 0x71, 0x6d, 0x6d, 0x6e, 0x6c, 0x6e, 0x6f, 0x6e, 0x74, 0x6f, 0x66, + 0x77, 0x7c, 0x7b, 0x6f, 0x76, 0x67, 0x82, 0x6e, 0x6b, 0x7b, 0x6f, 0x6b, + 0x6c, 0x6f, 0x69, 0x6d, 0x63, 0x6f, 0x6c, 0x6c, 0x6e, 0x70, 0x64, 0x6f, + 0x6f, 0x6f, 0x6e, 0x66, 0x73, 0x56, 0x6e, 0x6e, 0x6f, 0x6b, 0x6f, 0x6a, + 0x77, 0x71, 0x6e, 0x65, 0x7a, 0x73, 0x60, 0x6d, 0x71, 0x6a, 0x76, 0x6a, + 0x72, 0x72, 0x6f, 0x74, 0x6e, 0x6e, 0x73, 0x6e, 0x6c, 0x62, 0x6e, 0x71, + 0x6d, 0x6c, 0x67, 0x6d, 0x72, 0x6e, 0x70, 0x78, 0x69, 0x74, 0x6b, 0x6e, + 0x6e, 0x69, 0x70, 0x70, 0x6d, 0x72, 0x6f, 0x72, 0x77, 0x74, 0x6e, 0x6e, + 0x73, 0x65, 0x7d, 0x6e, 0x6b, 0x64, 0x6f, 0x76, 0x6f, 0x6f, 0x6a, 0x6f, + 0x74, 0x75, 0x70, 0x6e, 0x6d, 0x71, 0x4d, 0x6e, 0x6e, 0x6f, 0x6e, 0x67, + 0x70, 0x52, 0x6c, 0x6e, 0x6e, 0x6f, 0x6e, 0x70, 0x73, 0x6f, 0x6e, 0x6e, + 0x6f, 0x7b, 0x6b, 0x6f, 0x6f, 0x68, 0x71, 0x6e, 0x75, 0x6d, 0x70, 0x6c, + 0x71, 0x6d, 0x6c, 0x6e, 0x73, 0x6e, 0x70, 0x6e, 0x6d, 0x77, 0x69, 0x6f, + 0x68, 0x63, 0x6e, 0x6a, 0x70, 0x65, 0x72, 0x6d, 0x6b, 0x6e, 0x6d, 0x71, + 0x72, 0x6e, 0x6e, 0x70, 0x61, 0x73, 0x64, 0x6e, 0x6f, 0x65, 0x70, 0x6c, + 0x75, 0x6f, 0x70, 0x6c, 0x70, 0x6d, 0x6d, 0x6f, 0x71, 0x6d, 0x70, 0x6c, + 0x6d, 0x76, 0x6d, 0x6e, 0x69, 0x63, 0x6f, 0x6d, 0x71, 0x6b, 0x70, 0x6f, + 0x6c, 0x6d, 0x6f, 0x6f, 0x71, 0x6f, 0x6e, 0x70, 0x6b, 0x71, 0x68, 0x6e, + 0x70, 0x68, 0x6f, 0x6b, 0x71, 0x72, 0x71, 0x74, 0x71, 0x70, 0x6d, 0x6e, + 0x6e, 0x6d, 0x6e, 0x6a, 0x6e, 0x73, 0x63, 0x70, 0x6a, 0x63, 0x6f, 0x6f, + 0x72, 0x6e, 0x6e, 0x6f, 0x6a, 0x6f, 0x6e, 0x6d, 0x6e, 0x6d, 0x6d, 0x70, + 0x75, 0x61, 0x68, 0x6f, 0x6e, 0x72, 0x6b, 0x6b, 0x75, 0x70, 0x71, 0x6c, + 0x70, 0x6f, 0x6c, 0x6d, 0x71, 0x6e, 0x6f, 0x6b, 0x70, 0x75, 0x6e, 0x6e, + 0x69, 0x62, 0x6f, 0x6d, 0x71, 0x6e, 0x70, 0x6f, 0x6b, 0x6e, 0x6e, 0x6f, + 0x72, 0x6f, 0x6d, 0x70, 0x6e, 0x6f, 0x67, 0x6f, 0x70, 0x6e, 0x6f, 0x6a, + 0x75, 0x70, 0x71, 0x6b, 0x70, 0x6e, 0x6c, 0x70, 0x70, 0x6e, 0x6f, 0x6b, + 0x6e, 0x74, 0x6d, 0x6f, 0x6a, 0x63, 0x6f, 0x6d, 0x70, 0x6e, 0x70, 0x6d, + 0x6a, 0x6e, 0x6f, 0x6e, 0x72, 0x6f, 0x6d, 0x71, 0x6f, 0x6e, 0x68, 0x6f, + 0x6f, 0x6a, 0x6f, 0x6a, 0x75, 0x71, 0x71, 0x6d, 0x70, 0x70, 0x6d, 0x70, + 0x70, 0x6e, 0x6e, 0x6a, 0x6f, 0x75, 0x6e, 0x6e, 0x6b, 0x63, 0x6e, 0x6c, + 0x70, 0x6f, 0x6f, 0x6f, 0x6b, 0x6f, 0x70, 0x6e, 0x72, 0x6f, 0x6d, 0x71, + 0x70, 0x6c, 0x68, 0x6f, 0x70, 0x6d, 0x6f, 0x6a, 0x75, 0x70, 0x71, 0x6c, + 0x70, 0x6e, 0x6d, 0x6d, 0x70, 0x6e, 0x6e, 0x6b, 0x6e, 0x74, 0x6c, 0x70, + 0x6a, 0x63, 0x6d, 0x6c, 0x6f, 0x6e, 0x6f, 0x6f, 0x6a, 0x6e, 0x6e, 0x6e, + 0x72, 0x6f, 0x6e, 0x70, 0x71, 0x68, 0x69, 0x6d, 0x6f, 0x6f, 0x6f, 0x6b, + 0x75, 0x70, 0x71, 0x6e, 0x70, 0x6f, 0x6d, 0x6e, 0x70, 0x6d, 0x6e, 0x6a, + 0x6e, 0x74, 0x68, 0x6e, 0x6b, 0x63, 0x70, 0x6c, 0x70, 0x6e, 0x70, 0x70, + 0x6a, 0x6f, 0x6e, 0x6e, 0x71, 0x6f, 0x6d, 0x71, 0x72, 0x6c, 0x6a, 0x6f, + 0x70, 0x73, 0x6e, 0x6a, 0x75, 0x71, 0x71, 0x6e, 0x70, 0x6e, 0x6d, 0x6e, + 0x70, 0x6d, 0x6e, 0x6a, 0x70, 0x73, 0x64, 0x6f, 0x6b, 0x63, 0x6f, 0x6c, + 0x70, 0x6e, 0x71, 0x6f, 0x6a, 0x6f, 0x6f, 0x6e, 0x71, 0x6f, 0x6d, 0x71, + 0x73, 0x64, 0x6a, 0x6d, 0x70, 0x70, 0x6c, 0x6a, 0x75, 0x71, 0x72, 0x6f, + 0x70, 0x70, 0x6e, 0x6e, 0x70, 0x6d, 0x6e, 0x6b, 0x6e, 0x74, 0x66, 0x6e, + 0x6b, 0x63, 0x70, 0x6c, 0x70, 0x6d, 0x70, 0x70, 0x6b, 0x70, 0x6e, 0x6e, + 0x71, 0x6f, 0x6d, 0x71, 0x73, 0x66, 0x69, 0x6e, 0x6f, 0x73, 0x6c, 0x6a, + 0x73, 0x70, 0x72, 0x71, 0x71, 0x6f, 0x6d, 0x6e, 0x6f, 0x6d, 0x6e, 0x6b, + 0x6f, 0x73, 0x69, 0x6e, 0x6b, 0x62, 0x6f, 0x6c, 0x6f, 0x6f, 0x70, 0x6f, + 0x6b, 0x71, 0x70, 0x6d, 0x71, 0x6e, 0x6e, 0x70, 0x73, 0x61, 0x69, 0x6f, + 0x6f, 0x70, 0x6a, 0x6b, 0x93, 0x5a, 0x63, 0x71, 0x89, 0x70, 0x6d, 0x6e, + 0x7e, 0x54, 0x92, 0x62, 0x6f, 0x5d, 0x72, 0x70, 0x7c, 0x69, 0x6f, 0x6d, + 0x83, 0x67, 0x6a, 0x70, 0x9d, 0x95, 0x6f, 0x92, 0x89, 0x65, 0x64, 0x80, + 0x68, 0x70, 0x6f, 0x6e, 0x69, 0x72, 0x4a, 0x82, 0x57, 0x5d, 0x66, 0x6f, + 0x64, 0x6f, 0x70, 0x6f, 0x73, 0x60, 0x70, 0x62, 0x6f, 0x5b, 0x73, 0x6d, + 0x7c, 0x6a, 0x6d, 0x73, 0x7d, 0x72, 0x64, 0x6e, 0x7c, 0x86, 0x6e, 0x6e, + 0x72, 0x65, 0x90, 0x7a, 0x6d, 0x6a, 0x72, 0x6e, 0x66, 0x71, 0x64, 0x64, + 0x77, 0x8e, 0x9f, 0x67, 0x3e, 0x6f, 0x70, 0x70, 0x64, 0xbc, 0x76, 0x8a, + 0x6e, 0x86, 0x74, 0x70, 0x7d, 0x93, 0x70, 0x57, 0x6f, 0x83, 0x6e, 0x6f, + 0x6b, 0x85, 0x70, 0x6a, 0x6f, 0x7a, 0x97, 0x7d, 0x88, 0x69, 0x68, 0x70, + 0x44, 0x6a, 0x76, 0x66, 0x75, 0x8d, 0x78, 0xa4, 0x4a, 0x6e, 0x89, 0x70, + 0x69, 0xbd, 0x73, 0x67, 0x6f, 0xab, 0x6d, 0x6e, 0x8e, 0x6e, 0x6f, 0x7c, + 0x73, 0x7e, 0x79, 0x6f, 0x6f, 0x57, 0x6e, 0x6e, 0x41, 0x76, 0x77, 0x6b, + 0x71, 0x7c, 0x65, 0x6e, 0x5d, 0x68, 0x81, 0x6b, 0x78, 0x82, 0x7b, 0x7a, + 0x4f, 0x6e, 0x5e, 0x70, 0x80, 0xb8, 0x6f, 0x73, 0x6f, 0xa8, 0x75, 0x6f, + 0x89, 0x72, 0x70, 0x69, 0x6f, 0x6b, 0x89, 0x70, 0x6e, 0x65, 0x6f, 0x70, + 0x54, 0x58, 0x6f, 0x6a, 0x73, 0x6d, 0x61, 0x6f, 0x61, 0x70, 0x6c, 0x6e, + 0x79, 0x92, 0x7b, 0x9d, 0x4f, 0x70, 0x4d, 0x70, 0x77, 0x79, 0x74, 0x6c, + 0x70, 0x8d, 0x63, 0x6e, 0x75, 0x71, 0x6e, 0x62, 0x78, 0x6c, 0x81, 0x6e, + 0x6e, 0x65, 0x70, 0x6f, 0x70, 0x6a, 0x71, 0x60, 0x82, 0x6d, 0x76, 0x6e, + 0x77, 0x6f, 0x6b, 0x6f, 0x77, 0x73, 0x70, 0x86, 0x53, 0x70, 0x56, 0x6e, + 0x76, 0x99, 0x72, 0x69, 0x70, 0xa3, 0x6b, 0x70, 0x5b, 0x6f, 0x6e, 0x63, + 0x66, 0x6a, 0x86, 0x70, 0x6e, 0x71, 0x6e, 0x6e, 0x69, 0x6f, 0x7d, 0x60, + 0x79, 0x6e, 0x74, 0x70, 0x6d, 0x6d, 0x75, 0x6e, 0x64, 0x5f, 0x73, 0x6f, + 0x7a, 0x6e, 0x6d, 0x6d, 0x2f, 0x62, 0x83, 0x65, 0x70, 0x5c, 0x71, 0x6f, + 0x76, 0x69, 0x6f, 0x73, 0x66, 0x72, 0x6c, 0x70, 0x4e, 0x78, 0x6f, 0x84, + 0x66, 0x69, 0x8b, 0x79, 0x6f, 0x6d, 0x72, 0x6e, 0x6f, 0x6f, 0x67, 0x77, + 0x52, 0x60, 0x62, 0x6d, 0x4d, 0x6e, 0x73, 0x6d, 0x33, 0x63, 0x78, 0xa3, + 0x6e, 0x5c, 0x6f, 0x6d, 0x74, 0x69, 0x6d, 0x72, 0x76, 0x71, 0x6b, 0x6e, + 0x52, 0x70, 0x6d, 0x2b, 0x5f, 0x6d, 0x51, 0x78, 0x70, 0x75, 0x70, 0x6e, + 0x71, 0x6e, 0x68, 0x71, 0x7c, 0x62, 0x63, 0x6b, 0x94, 0x6e, 0x70, 0x6e, + 0x66, 0x63, 0x27, 0x6f, 0x6f, 0x5d, 0x70, 0x6f, 0x77, 0x6a, 0x6f, 0x73, + 0x8b, 0x72, 0x6d, 0x6f, 0x56, 0x3c, 0x6f, 0x2e, 0x66, 0x6a, 0x4f, 0x76, + 0x6e, 0x72, 0x6f, 0x6f, 0x6e, 0x6c, 0x69, 0x92, 0x8a, 0x63, 0x63, 0x68, + 0xa5, 0x6e, 0x75, 0x70, 0x6a, 0x64, 0x2a, 0x6e, 0x6f, 0x5c, 0x6f, 0x6e, + 0x77, 0x69, 0x6f, 0x74, 0x76, 0x71, 0x6f, 0x6e, 0x55, 0x3f, 0x6f, 0x2f, + 0x66, 0x6d, 0x43, 0x77, 0x6f, 0x6f, 0x6e, 0x6e, 0x6f, 0x6d, 0x6c, 0x37, + 0xa4, 0x65, 0x67, 0x68, 0x69, 0x6f, 0x7a, 0x6f, 0x4a, 0x64, 0x2c, 0x3b, + 0x6e, 0x5c, 0x6d, 0x6d, 0x76, 0x6c, 0x6f, 0x75, 0x65, 0x70, 0x74, 0x6d, + 0x5d, 0x54, 0x6f, 0x4b, 0x66, 0xb1, 0x4f, 0x7d, 0x6c, 0x6e, 0x6d, 0x6e, + 0x6f, 0x6d, 0x6f, 0x3b, 0x8c, 0x60, 0x6b, 0x6b, 0x5d, 0x6f, 0x78, 0x6f, + 0x6c, 0x67, 0x57, 0x55, 0x6e, 0x5b, 0x68, 0x70, 0x75, 0x9a, 0x6f, 0x75, + 0x71, 0x6c, 0x6a, 0x70, 0x6b, 0x63, 0x6f, 0x76, 0x65, 0x71, 0x63, 0x81, + 0x6a, 0x67, 0x6b, 0x70, 0xcd, 0x70, 0x6e, 0x7c, 0x85, 0x69, 0x70, 0x67, + 0x0e, 0x6e, 0x72, 0x70, 0x72, 0x6c, 0x5a, 0x55, 0x6f, 0x5c, 0x67, 0x70, + 0x74, 0x99, 0x6e, 0x6d, 0x77, 0x6f, 0x70, 0x6e, 0x6b, 0x8e, 0x6f, 0x6e, + 0x67, 0x76, 0x62, 0x6b, 0x6f, 0x63, 0x6a, 0x70, 0xb7, 0x75, 0x80, 0x66, + 0x92, 0x6d, 0xa2, 0x7c, 0x0e, 0x70, 0x73, 0x6f, 0x67, 0x76, 0x6e, 0x57, + 0x6f, 0x75, 0x6a, 0x6f, 0x6f, 0x99, 0x6e, 0x57, 0x48, 0x76, 0x6b, 0x70, + 0x70, 0x94, 0x70, 0x57, 0x79, 0x72, 0x98, 0x71, 0x85, 0x6c, 0x6a, 0x6f, + 0x95, 0x73, 0x9f, 0x62, 0x5e, 0x74, 0x90, 0x73, 0x6d, 0x6d, 0x77, 0x6e, + 0x6a, 0x74, 0x71, 0x68, 0x6d, 0x87, 0x72, 0x6f, 0x75, 0x67, 0x6e, 0x78, + 0x72, 0x74, 0x69, 0x6e, 0x69, 0x24, 0x6e, 0x70, 0x6e, 0x69, 0x6e, 0x2c, + 0x73, 0x68, 0x6b, 0x6d, 0x6d, 0x70, 0x7f, 0x67, 0x6f, 0x76, 0x71, 0x73, + 0x6d, 0x6e, 0x79, 0x6f, 0x73, 0x75, 0x6d, 0x70, 0x70, 0x87, 0x76, 0x6f, + 0x73, 0x68, 0x6f, 0x7a, 0x68, 0x73, 0x6e, 0x6f, 0x69, 0x5d, 0x6e, 0x72, + 0x75, 0x70, 0x6e, 0x5f, 0x71, 0x78, 0x6d, 0x6e, 0x74, 0x72, 0x85, 0x69, + 0x76, 0x70, 0x6d, 0x73, 0x72, 0x6f, 0x6c, 0x6f, 0x72, 0x6f, 0x6f, 0x6e, + 0x6f, 0x6d, 0x6e, 0x6e, 0x6e, 0x68, 0x6f, 0x71, 0x72, 0x70, 0x75, 0x6f, + 0x6d, 0x74, 0x6f, 0x70, 0x6f, 0x70, 0x6c, 0x78, 0x6f, 0x70, 0x6f, 0x70, + 0x71, 0x73, 0x73, 0x6e, 0x77, 0x70, 0x6e, 0x72, 0x71, 0x6e, 0x6c, 0x6f, + 0x71, 0x6f, 0x6f, 0x6f, 0x6e, 0x6d, 0x6d, 0x6e, 0x6e, 0x68, 0x6f, 0x6f, + 0x73, 0x6f, 0x73, 0x6e, 0x6d, 0x75, 0x70, 0x6f, 0x70, 0x70, 0x6d, 0x78, + 0x6e, 0x6d, 0x6f, 0x6e, 0x70, 0x72, 0x6f, 0x6e, 0x71, 0x69, 0x70, 0x6d, + 0x69, 0x6e, 0x6a, 0x70, 0x79, 0x69, 0x77, 0x6a, 0x6e, 0x77, 0x6e, 0x6e, + 0x72, 0x67, 0x6f, 0x71, 0x6e, 0x6e, 0x73, 0x6f, 0x66, 0x5f, 0x6e, 0x86, + 0x6f, 0x73, 0x66, 0x6d, 0x79, 0x6e, 0x6c, 0x6e, 0x76, 0x6f, 0x6c, 0x72, + 0x76, 0x70, 0x6f, 0x70, 0x72, 0x6f, 0x6c, 0x6e, 0x71, 0x6e, 0x70, 0x6f, + 0x6f, 0x6d, 0x6c, 0x6e, 0x6d, 0x68, 0x6f, 0x6d, 0x72, 0x6e, 0x72, 0x70, + 0x6e, 0x74, 0x70, 0x6f, 0x71, 0x6f, 0x6d, 0x73, 0x6e, 0x66, 0x6f, 0x70, + 0x6f, 0x71, 0x6e, 0x6e, 0x79, 0x6f, 0x6f, 0x6f, 0x72, 0x70, 0x6c, 0x70, + 0x70, 0x6d, 0x6f, 0x6e, 0x6e, 0x6c, 0x6c, 0x70, 0x6c, 0x68, 0x6e, 0x6c, + 0x72, 0x6e, 0x72, 0x6e, 0x6f, 0x74, 0x70, 0x6f, 0x72, 0x70, 0x6e, 0x76, + 0x6f, 0x6b, 0x6e, 0x6f, 0x70, 0x6f, 0x6d, 0x6e, 0x76, 0x6f, 0x6f, 0x6d, + 0x71, 0x6d, 0x6b, 0x70, 0x6f, 0x6c, 0x6e, 0x6f, 0x6e, 0x6b, 0x6a, 0x6f, + 0x6d, 0x68, 0x6e, 0x6a, 0x72, 0x6f, 0x71, 0x6f, 0x6e, 0x76, 0x6d, 0x6e, + 0x72, 0x6f, 0x6c, 0x71, 0x6e, 0x67, 0x6e, 0x6e, 0x6f, 0x6f, 0x6b, 0x6d, + 0x77, 0x6f, 0x6f, 0x6d, 0x71, 0x6f, 0x6b, 0x6f, 0x6f, 0x6d, 0x6f, 0x6e, + 0x71, 0x6a, 0x69, 0x6e, 0x6b, 0x68, 0x6f, 0x6a, 0x73, 0x6b, 0x71, 0x6f, + 0x6f, 0x74, 0x6e, 0x6f, 0x72, 0x6f, 0x6d, 0x72, 0x6f, 0x6b, 0x6d, 0x6d, + 0x6f, 0x6d, 0x6b, 0x6e, 0x76, 0x70, 0x6f, 0x6b, 0x71, 0x6e, 0x6d, 0x70, + 0x6f, 0x6a, 0x6e, 0x6e, 0x6e, 0x63, 0x69, 0x70, 0x6c, 0x68, 0x6f, 0x6b, + 0x6f, 0x6b, 0x70, 0x6e, 0x6f, 0x75, 0x70, 0x6e, 0x70, 0x70, 0x6d, 0x71, + 0x6f, 0x69, 0x6c, 0x6e, 0x6e, 0x6d, 0x6b, 0x6d, 0x79, 0x6f, 0x6e, 0x6b, + 0x71, 0x6e, 0x6b, 0x70, 0x6f, 0x6b, 0x6f, 0x6e, 0x6f, 0x69, 0x68, 0x6f, + 0x6c, 0x68, 0x70, 0x67, 0x72, 0x6d, 0x70, 0x6f, 0x6f, 0x76, 0x70, 0x6f, + 0x72, 0x6f, 0x6d, 0x73, 0x6f, 0x6d, 0x6e, 0x6e, 0x6f, 0x6b, 0x6a, 0x6e, + 0x79, 0x70, 0x70, 0x69, 0x71, 0x6f, 0x6c, 0x70, 0x6f, 0x6b, 0x6f, 0x6d, + 0x70, 0x66, 0x68, 0x70, 0x6c, 0x68, 0x6e, 0x68, 0x70, 0x6c, 0x71, 0x6f, + 0x70, 0x75, 0x70, 0x6e, 0x72, 0x6f, 0x6e, 0x74, 0x6e, 0x66, 0x6c, 0x70, + 0x6f, 0x6b, 0x6a, 0x6e, 0x73, 0x76, 0x6f, 0x74, 0x6d, 0x70, 0x78, 0x70, + 0x74, 0x75, 0x6d, 0x71, 0x6f, 0x87, 0x77, 0x6f, 0x75, 0x68, 0x6e, 0x78, + 0x67, 0x74, 0x6d, 0x6f, 0x69, 0x60, 0x70, 0x72, 0x72, 0x71, 0x6e, 0x67, + 0x71, 0x7b, 0x6e, 0x6e, 0x74, 0x70, 0x84, 0x6b, 0x78, 0x6f, 0x6f, 0x69, + 0x71, 0x70, 0x6d, 0x6e, 0x70, 0x6b, 0x6f, 0x6e, 0x6f, 0x69, 0x6a, 0x6e, + 0x6c, 0x68, 0x6e, 0x67, 0x71, 0x6d, 0x71, 0x6f, 0x70, 0x73, 0x6d, 0x70, + 0x71, 0x70, 0x6e, 0x6f, 0x6f, 0x6a, 0x6b, 0x70, 0x6f, 0x6a, 0x68, 0x6e, + 0x7a, 0x6e, 0x6f, 0x69, 0x71, 0x6f, 0x6c, 0x6e, 0x6f, 0x69, 0x6f, 0x6d, + 0x6e, 0x61, 0x66, 0x6f, 0x6c, 0x68, 0x6f, 0x67, 0x6f, 0x6c, 0x70, 0x6f, + 0x6f, 0x74, 0x6e, 0x6f, 0x71, 0x6f, 0x6f, 0x75, 0x6f, 0x64, 0x6d, 0x6e, + 0x6e, 0x6c, 0x68, 0x6d, 0x77, 0x6f, 0x6f, 0x68, 0x70, 0x6e, 0x6a, 0x6e, + 0x6f, 0x6a, 0x6e, 0x6f, 0x70, 0x62, 0x67, 0x6d, 0x6b, 0x68, 0x6e, 0x67, + 0x71, 0x6c, 0x70, 0x6e, 0x70, 0x73, 0x70, 0x6f, 0x72, 0x6f, 0x6e, 0x70, + 0x6e, 0x69, 0x6b, 0x6e, 0x6e, 0x66, 0x66, 0x6d, 0x79, 0x6e, 0x6f, 0x67, + 0x71, 0x6e, 0x6a, 0x6e, 0x6e, 0x69, 0x6e, 0x6e, 0x70, 0x64, 0x64, 0x6f, + 0x6b, 0x68, 0x6e, 0x65, 0x71, 0x6c, 0x70, 0x70, 0x70, 0x75, 0x6e, 0x6e, + 0x73, 0x6e, 0x6e, 0x73, 0x6d, 0x6a, 0x6c, 0x6e, 0x6e, 0x66, 0x66, 0x6d, + 0x7b, 0x6f, 0x6f, 0x64, 0x71, 0x6f, 0x69, 0x6f, 0x6e, 0x6a, 0x6e, 0x6e, + 0x6e, 0x67, 0x68, 0x6e, 0x6a, 0x68, 0x6e, 0x66, 0x71, 0x67, 0x6e, 0x6f, + 0x70, 0x77, 0x6e, 0x6e, 0x73, 0x6f, 0x6e, 0x74, 0x6e, 0x6d, 0x6a, 0x70, + 0x6e, 0x5f, 0x65, 0x6d, 0x7b, 0x6f, 0x6e, 0x65, 0x70, 0x6e, 0x68, 0x6f, + 0x6e, 0x69, 0x6e, 0x6e, 0x6e, 0x60, 0x64, 0x6f, 0x6a, 0x68, 0x6f, 0x62, + 0x72, 0x68, 0x6f, 0x6e, 0x70, 0x77, 0x6f, 0x6e, 0x73, 0x6e, 0x6f, 0x76, + 0x6d, 0x68, 0x6a, 0x70, 0x6e, 0x67, 0x5f, 0x6d, 0x77, 0x6d, 0x6e, 0x5d, + 0x6e, 0x70, 0x64, 0x6e, 0x69, 0x66, 0x6d, 0x69, 0x6f, 0x60, 0x64, 0x6e, + 0x68, 0x68, 0x6f, 0x5d, 0x72, 0x5c, 0x6b, 0x6e, 0x70, 0x74, 0x6f, 0x6c, + 0x74, 0x6b, 0x72, 0x7c, 0x6c, 0x68, 0x67, 0x6f, 0x6c, 0x68, 0x3c, 0x68, + 0x70, 0x6b, 0x6f, 0x5c, 0x6c, 0x6f, 0x5f, 0x70, 0x63, 0x60, 0x6c, 0x67, + 0x6f, 0x5c, 0x5c, 0x70, 0x65, 0x67, 0x6f, 0x51, 0x73, 0x5b, 0x62, 0x6f, + 0x72, 0x6f, 0x6f, 0x69, 0x77, 0x66, 0x77, 0x76, 0x69, 0x62, 0x63, 0x6d, + 0x69, 0x64, 0x3f, 0x65, 0x6f, 0x6b, 0x6e, 0x5b, 0x6b, 0x6e, 0x60, 0x6e, + 0x66, 0x68, 0x6c, 0x68, 0x70, 0x60, 0x5f, 0x6f, 0x66, 0x68, 0x6f, 0x5b, + 0x6f, 0x5a, 0x64, 0x70, 0x6f, 0x70, 0x6f, 0x6a, 0x75, 0x68, 0x73, 0x73, + 0x69, 0x64, 0x5b, 0x70, 0x69, 0x65, 0x3b, 0x67, 0x72, 0x6b, 0x6e, 0x5d, + 0x6b, 0x70, 0x5f, 0x70, 0x63, 0x68, 0x6d, 0x65, 0x70, 0x5e, 0x5a, 0x6f, + 0x65, 0x67, 0x70, 0x56, 0x75, 0x5d, 0x5f, 0x6f, 0x6e, 0x70, 0x70, 0x69, + 0x75, 0x67, 0x76, 0x79, 0x68, 0x5d, 0x62, 0x6e, 0x69, 0x61, 0x30, 0x65, + 0x79, 0x75, 0x6b, 0x76, 0x71, 0x6f, 0x77, 0x6d, 0x73, 0x76, 0x6e, 0x72, + 0x6d, 0x83, 0x76, 0x6d, 0x74, 0x69, 0x6e, 0x76, 0x68, 0x74, 0x71, 0x6f, + 0x6a, 0x6d, 0x6f, 0x70, 0x66, 0x71, 0x6f, 0x78, 0x73, 0x7b, 0x6f, 0x6d, + 0x73, 0x71, 0x81, 0x6e, 0x73, 0x6d, 0x71, 0x6c, 0x7a, 0x6f, 0x5d, 0x6f, + 0x71, 0x69, 0x73, 0x69, 0x6e, 0x5f, 0x79, 0x70, 0x5d, 0x67, 0x6e, 0x66, + 0x67, 0x6a, 0x65, 0x70, 0x6c, 0x74, 0x6f, 0x66, 0x76, 0x69, 0x70, 0x62, + 0x47, 0x6d, 0x65, 0x6f, 0x74, 0x6f, 0x65, 0x74, 0x75, 0x72, 0x6b, 0x77, + 0x71, 0x6e, 0x70, 0x6f, 0x75, 0x75, 0x6f, 0x71, 0x6f, 0x79, 0x72, 0x6e, + 0x71, 0x68, 0x6f, 0x76, 0x6e, 0x73, 0x76, 0x70, 0x6c, 0x6f, 0x6f, 0x71, + 0x67, 0x71, 0x6d, 0x78, 0x72, 0x78, 0x70, 0x6f, 0x72, 0x73, 0x7c, 0x6f, + 0x74, 0x71, 0x6c, 0x76, 0x71, 0x6f, 0x6f, 0x6f, 0x75, 0x73, 0x6f, 0x70, + 0x6e, 0x74, 0x71, 0x6f, 0x70, 0x68, 0x6f, 0x74, 0x6e, 0x72, 0x76, 0x6e, + 0x6c, 0x70, 0x6f, 0x71, 0x6a, 0x70, 0x6d, 0x77, 0x71, 0x75, 0x70, 0x6d, + 0x71, 0x73, 0x79, 0x6f, 0x74, 0x71, 0x6d, 0x74, 0x71, 0x6e, 0x6d, 0x6e, + 0x75, 0x71, 0x70, 0x70, 0x6e, 0x72, 0x6f, 0x6f, 0x6f, 0x68, 0x6f, 0x73, + 0x71, 0x71, 0x76, 0x6f, 0x6c, 0x73, 0x70, 0x71, 0x6e, 0x70, 0x6c, 0x74, + 0x70, 0x73, 0x6f, 0x6f, 0x71, 0x74, 0x76, 0x6e, 0x6d, 0x72, 0x6b, 0x78, + 0x78, 0x70, 0x77, 0x6f, 0x74, 0x6d, 0x73, 0x68, 0x6e, 0x80, 0x7a, 0x70, + 0x6b, 0x68, 0x71, 0x6c, 0x6f, 0x70, 0x79, 0x6f, 0x70, 0x67, 0x70, 0x6a, + 0x71, 0x77, 0x6e, 0x6e, 0x6c, 0x70, 0x80, 0x6f, 0x72, 0x74, 0x69, 0x6c, + 0x6d, 0x6b, 0x78, 0x70, 0x6b, 0x6e, 0x6d, 0x70, 0x6b, 0x6f, 0x69, 0x6b, + 0x70, 0x72, 0x6f, 0x6f, 0x6a, 0x67, 0x70, 0x75, 0x6a, 0x6a, 0x6e, 0x6f, + 0x6e, 0x6f, 0x6f, 0x71, 0x75, 0x71, 0x74, 0x70, 0x6a, 0x6f, 0x79, 0x6e, + 0x75, 0x75, 0x77, 0x75, 0x74, 0x70, 0x6e, 0x74, 0x71, 0x6d, 0x6d, 0x6f, + 0x74, 0x72, 0x6f, 0x6f, 0x6e, 0x72, 0x6f, 0x70, 0x6f, 0x68, 0x6e, 0x72, + 0x70, 0x70, 0x75, 0x70, 0x6c, 0x74, 0x6f, 0x6f, 0x6e, 0x70, 0x6c, 0x74, + 0x70, 0x73, 0x70, 0x70, 0x71, 0x75, 0x73, 0x6e, 0x64, 0x6e, 0x65, 0x6e, + 0x6b, 0x6f, 0x7a, 0x6f, 0x71, 0x76, 0x6f, 0x73, 0x6e, 0x70, 0x58, 0x6f, + 0x6d, 0x70, 0x6f, 0x66, 0x63, 0x73, 0x67, 0x6f, 0x6d, 0x69, 0x6e, 0x73, + 0x6b, 0x6e, 0x71, 0x62, 0x55, 0x6a, 0x6e, 0x70, 0x71, 0x6c, 0x72, 0x6f, + 0x65, 0x6d, 0x6a, 0x6a, 0x6b, 0x70, 0x72, 0x6f, 0x6e, 0x6e, 0x6e, 0x69, + 0x6e, 0x68, 0x6b, 0x6e, 0x6d, 0x6d, 0x6f, 0x79, 0x6c, 0x74, 0x71, 0x70, + 0x6b, 0x72, 0x6e, 0x6f, 0x69, 0x6b, 0x71, 0x7d, 0x70, 0x6d, 0x5f, 0x70, + 0x6d, 0x73, 0x67, 0x6b, 0x6d, 0x5e, 0x5f, 0x6d, 0x6b, 0x6f, 0x83, 0x70, + 0x7b, 0x71, 0x6f, 0x6f, 0x6f, 0x74, 0x63, 0x70, 0x6d, 0x6f, 0x71, 0x65, + 0x68, 0x72, 0x73, 0x6f, 0x6b, 0x6b, 0x6f, 0x7a, 0x60, 0x72, 0x6e, 0x6f, + 0x50, 0x6e, 0x77, 0x70, 0x7c, 0x62, 0x64, 0x70, 0x5f, 0x67, 0x67, 0x79, + 0x72, 0x6e, 0x6f, 0x70, 0x7b, 0x6b, 0x75, 0x5f, 0x6e, 0x6c, 0x60, 0x70, + 0x69, 0x6f, 0x6f, 0x65, 0x59, 0x7a, 0x60, 0x6f, 0x77, 0x6f, 0x6f, 0x6e, + 0x62, 0x72, 0x65, 0x67, 0x58, 0x69, 0x70, 0x6e, 0x6e, 0x68, 0x74, 0x6c, + 0x75, 0x75, 0x6d, 0x65, 0x71, 0x6f, 0x78, 0x6f, 0x67, 0x72, 0x75, 0x6f, + 0x6e, 0x70, 0x72, 0x70, 0x70, 0x6e, 0x70, 0x69, 0x72, 0x68, 0x71, 0x6f, + 0x76, 0x70, 0x6f, 0x74, 0x64, 0x6d, 0x6f, 0x6a, 0x64, 0x6d, 0x72, 0x70, + 0x71, 0x6f, 0x7b, 0x77, 0x6e, 0x6c, 0x69, 0x53, 0x6d, 0x6e, 0x6b, 0x6e, + 0x65, 0x76, 0x6a, 0x6f, 0x6f, 0x6d, 0x67, 0x70, 0x70, 0x6f, 0x6e, 0x7b, + 0x76, 0x6b, 0x6d, 0x6f, 0x71, 0x79, 0x70, 0x6a, 0x6b, 0x71, 0x6d, 0x65, + 0x73, 0x69, 0x6b, 0x6f, 0x6e, 0x6e, 0x73, 0x6c, 0x68, 0x75, 0x70, 0x66, + 0x69, 0x6e, 0x7b, 0x6f, 0x6d, 0x71, 0x6d, 0x72, 0x6e, 0x7e, 0x70, 0x70, + 0x73, 0x6e, 0x70, 0x62, 0x65, 0x72, 0x6c, 0x6e, 0x76, 0x62, 0x6e, 0x76, + 0x66, 0x70, 0x73, 0x5a, 0x65, 0x6f, 0x65, 0x6f, 0x73, 0x6f, 0x77, 0x72, + 0x6e, 0x5d, 0x72, 0x6c, 0x6e, 0x70, 0x70, 0x6f, 0x6f, 0x72, 0x72, 0x6d, + 0x6e, 0x71, 0x66, 0x70, 0x6e, 0x6f, 0x6f, 0x6d, 0x6d, 0x7a, 0x65, 0x70, + 0x71, 0x6f, 0x6e, 0x71, 0x6f, 0x70, 0x6e, 0x6d, 0x64, 0x6a, 0x75, 0x70, + 0x71, 0x6c, 0x72, 0x6f, 0x59, 0x6a, 0x5d, 0x73, 0x72, 0x70, 0x74, 0x70, + 0x71, 0x70, 0x74, 0x73, 0x6f, 0x62, 0x63, 0x6f, 0x6b, 0x70, 0x6e, 0x7d, + 0x88, 0x6c, 0x5a, 0x6e, 0x6d, 0x5f, 0x6f, 0x72, 0x5d, 0x7e, 0x63, 0x4b, + 0x55, 0x70, 0x6a, 0x6d, 0x7b, 0x61, 0x78, 0x74, 0x7b, 0x72, 0x73, 0x6f, + 0x70, 0x6f, 0x6b, 0x6e, 0x58, 0x70, 0x6e, 0x6e, 0x70, 0x72, 0x6f, 0x6f, + 0x72, 0x6f, 0x6e, 0x6e, 0x72, 0x7e, 0x71, 0x6e, 0x78, 0x74, 0x70, 0x6a, + 0x69, 0x74, 0x72, 0x6e, 0x68, 0x6d, 0x6d, 0x70, 0x77, 0x6f, 0x69, 0x6d, + 0x65, 0x65, 0x6e, 0x5b, 0x6f, 0x6f, 0x6e, 0x70, 0x73, 0x74, 0x73, 0x7b, + 0x70, 0x72, 0x6b, 0x6f, 0x72, 0x6f, 0x6e, 0x7a, 0x77, 0x69, 0x62, 0x6f, + 0x69, 0x63, 0x70, 0x74, 0x67, 0x6e, 0x6a, 0x61, 0x66, 0x6e, 0x78, 0x6e, + 0x70, 0x6e, 0x80, 0x76, 0x68, 0x6f, 0x70, 0x6f, 0x74, 0x6e, 0x70, 0x6e, + 0x71, 0x63, 0x6c, 0x65, 0x6e, 0x6f, 0x6b, 0x6f, 0x6d, 0x6f, 0x6d, 0x61, + 0x6b, 0x73, 0x73, 0x70, 0x6e, 0x74, 0x6f, 0x73, 0x69, 0x70, 0x59, 0x75, + 0x72, 0x6d, 0x6f, 0x70, 0x6a, 0x6c, 0x63, 0x6d, 0x70, 0x72, 0x69, 0x63, + 0x6d, 0x6e, 0x76, 0x6f, 0x71, 0x6c, 0x73, 0x76, 0x70, 0x65, 0x6a, 0x6e, + 0x69, 0x6e, 0x6e, 0x6a, 0x66, 0x68, 0x69, 0x6f, 0x75, 0x70, 0x70, 0x79, + 0x6a, 0x77, 0x68, 0x63, 0x6b, 0x6e, 0x7a, 0x6f, 0x78, 0x6a, 0x8c, 0x78, + 0x6f, 0x6f, 0x71, 0x6a, 0x71, 0x6e, 0x76, 0x6f, 0x6b, 0x6c, 0x6f, 0x6e, + 0x6f, 0x5b, 0x71, 0x70, 0x6c, 0x6f, 0x70, 0x6a, 0x76, 0x6e, 0x79, 0x70, + 0x6e, 0x81, 0x6e, 0x6a, 0x6a, 0x73, 0x72, 0x65, 0x5c, 0x6f, 0x6f, 0x6f, + 0x6d, 0x6c, 0x6c, 0x73, 0x76, 0x70, 0x68, 0x62, 0x75, 0x6e, 0x73, 0x70, + 0x76, 0x72, 0x70, 0x70, 0x6e, 0x71, 0x6d, 0x6e, 0x67, 0x6f, 0x70, 0x70, + 0x6c, 0x6c, 0x65, 0x70, 0x6d, 0x74, 0x70, 0x6e, 0x72, 0x73, 0x6d, 0x6e, + 0x5a, 0x72, 0x69, 0x6f, 0x73, 0x6f, 0x73, 0x72, 0x6e, 0x75, 0x62, 0x6a, + 0x72, 0x6f, 0x6c, 0x6f, 0x6d, 0x70, 0x71, 0x72, 0x6e, 0x7f, 0x70, 0x70, + 0x6e, 0x6e, 0x6f, 0x66, 0x6e, 0x70, 0x72, 0x6f, 0x6e, 0x74, 0x6f, 0x70, + 0x68, 0x67, 0x77, 0x74, 0x6c, 0x6e, 0x6e, 0x6f, 0x6f, 0x6e, 0x75, 0x75, + 0x63, 0x63, 0x68, 0x5f, 0x79, 0x70, 0x6b, 0x6e, 0x77, 0x93, 0x78, 0x6d, + 0x6f, 0x83, 0x6d, 0x70, 0x6c, 0x70, 0x70, 0x74, 0x6f, 0x4e, 0x61, 0x6e, + 0x6a, 0x79, 0x70, 0x6f, 0x6a, 0x7c, 0x70, 0x73, 0x7c, 0x6d, 0x6b, 0x6e, + 0x75, 0x71, 0x84, 0x76, 0x7a, 0x74, 0x70, 0x6c, 0x6d, 0x70, 0x71, 0x6e, + 0x6f, 0x69, 0x71, 0x6e, 0x6e, 0x67, 0x60, 0x6f, 0x70, 0x6f, 0x70, 0x6c, + 0x6e, 0x76, 0x7a, 0x6e, 0x65, 0x70, 0x70, 0x66, 0x78, 0x71, 0x74, 0x7a, + 0x75, 0x6d, 0x70, 0x70, 0x6e, 0x65, 0x73, 0x6f, 0x6f, 0x6b, 0x70, 0x6c, + 0x71, 0x70, 0x71, 0x6e, 0x71, 0x6e, 0x71, 0x72, 0x6d, 0x6e, 0x63, 0x6d, + 0x6f, 0x6f, 0x70, 0x64, 0x6e, 0x75, 0x6e, 0x6f, 0x6f, 0x72, 0x6f, 0x70, + 0x6c, 0x6b, 0x6f, 0x6b, 0x5b, 0x6a, 0x70, 0x70, 0x6f, 0x64, 0x70, 0x70, + 0x6b, 0x6f, 0x6e, 0x65, 0x6e, 0x6f, 0x6f, 0x6e, 0x7a, 0x69, 0x6f, 0x72, + 0x6e, 0x70, 0x66, 0x6f, 0x68, 0x6f, 0x6f, 0x66, 0x74, 0x79, 0x68, 0x70, + 0x6e, 0x6c, 0x6e, 0x72, 0x6d, 0x72, 0x6d, 0x65, 0x5b, 0x6e, 0x6f, 0x6f, + 0x72, 0x6d, 0x71, 0x70, 0x70, 0x75, 0x6f, 0x6d, 0x6c, 0x70, 0x70, 0x6e, + 0x70, 0x70, 0x6b, 0x6f, 0x6e, 0x5e, 0x6c, 0x6f, 0x74, 0x6e, 0x70, 0x65, + 0x72, 0x76, 0x7a, 0x6e, 0x6e, 0x74, 0x6f, 0x6e, 0x74, 0x6b, 0x70, 0x62, + 0x79, 0x6e, 0x62, 0x70, 0x6e, 0x6d, 0x72, 0x6e, 0x73, 0x74, 0x65, 0x65, + 0x6e, 0x6e, 0x6c, 0x6e, 0x70, 0x77, 0x74, 0x77, 0x6e, 0x71, 0x67, 0x6e, + 0x6f, 0x70, 0x70, 0x67, 0x61, 0x6a, 0x62, 0x70, 0x69, 0x64, 0x70, 0x73, + 0x66, 0x7c, 0x71, 0x72, 0x63, 0x70, 0x6e, 0x6e, 0x76, 0x6d, 0x77, 0x70, + 0x6b, 0x68, 0x6f, 0x53, 0x6f, 0x6e, 0x6b, 0x6f, 0x72, 0x76, 0x70, 0x76, + 0x6d, 0x71, 0x59, 0x6d, 0x68, 0x6f, 0x6f, 0x7a, 0x65, 0x68, 0x72, 0x6f, + 0x6f, 0x6c, 0x6f, 0x73, 0x77, 0x6f, 0x6f, 0x6d, 0x43, 0x65, 0x64, 0x6d, + 0x71, 0x6d, 0x84, 0x71, 0x78, 0x71, 0x71, 0x5f, 0x6f, 0x70, 0x77, 0x70, + 0x6c, 0x6c, 0x70, 0x71, 0x6e, 0x6d, 0x64, 0x6e, 0x6f, 0x6f, 0x6e, 0x69, + 0x6a, 0x74, 0x71, 0x70, 0x6e, 0x6c, 0x6e, 0x6f, 0x6d, 0x72, 0x73, 0x77, + 0x65, 0x6d, 0x75, 0x6f, 0x72, 0x6f, 0x64, 0x71, 0x79, 0x75, 0x6b, 0x6b, + 0x6e, 0x70, 0x6d, 0x6e, 0x6b, 0x74, 0x6a, 0x72, 0x70, 0x70, 0x66, 0x70, + 0x73, 0x6e, 0x70, 0x73, 0x71, 0x74, 0x69, 0x6e, 0x6f, 0x74, 0x6f, 0x6f, + 0x71, 0x74, 0x6c, 0x70, 0x72, 0x6c, 0x72, 0x70, 0x75, 0x6d, 0x74, 0x6d, + 0x7a, 0x75, 0x72, 0x6a, 0x6f, 0x6e, 0x69, 0x6f, 0x70, 0x6d, 0x71, 0x6c, + 0x6f, 0x6c, 0x65, 0x6f, 0x71, 0x6f, 0x70, 0x78, 0x78, 0x73, 0x72, 0x70, + 0x6e, 0x77, 0x6e, 0x6e, 0x7b, 0x6b, 0x6e, 0x7d, 0x69, 0x70, 0x76, 0x70, + 0x6e, 0x72, 0x6f, 0x70, 0x66, 0x60, 0x71, 0x66, 0x73, 0x6e, 0x6e, 0x70, + 0x6e, 0x69, 0x6f, 0x72, 0x70, 0x64, 0x6b, 0x6f, 0x6d, 0x6f, 0x70, 0x6c, + 0x65, 0x6e, 0x6a, 0x6e, 0x67, 0x67, 0x6e, 0x6e, 0x76, 0x6c, 0x73, 0x66, + 0x71, 0x6c, 0x6e, 0x70, 0x70, 0x6f, 0x72, 0x6f, 0x73, 0x70, 0x6f, 0x6e, + 0x6f, 0x6f, 0x68, 0x70, 0x74, 0x6c, 0x74, 0x79, 0x6d, 0x70, 0x6d, 0x6f, + 0x6a, 0x70, 0x6e, 0x6b, 0x6f, 0x78, 0x6e, 0x6f, 0x6c, 0x65, 0x6f, 0x73, + 0x75, 0x6e, 0x74, 0x73, 0x5b, 0x6c, 0x72, 0x6f, 0x71, 0x69, 0x6d, 0x73, + 0x6d, 0x66, 0x5e, 0x63, 0x70, 0x70, 0x63, 0x6e, 0x7a, 0x6d, 0x6e, 0x6e, + 0x6f, 0x7d, 0x6d, 0x70, 0x6a, 0x6f, 0x70, 0x67, 0x7c, 0x67, 0x78, 0x70, + 0x6c, 0x80, 0x6e, 0x74, 0x6f, 0x6b, 0x66, 0x70, 0x65, 0x6e, 0x73, 0x6f, + 0x74, 0x6d, 0x7e, 0x73, 0x6a, 0x72, 0x70, 0x62, 0x6f, 0x6f, 0x6f, 0x6e, + 0x6c, 0x70, 0x6f, 0x6d, 0x70, 0x6d, 0x65, 0x70, 0x6f, 0x6f, 0x6e, 0x78, + 0x73, 0x6e, 0x6e, 0x70, 0x6f, 0x65, 0x6e, 0x70, 0x67, 0x6e, 0x6b, 0x6c, + 0x70, 0x67, 0x70, 0x70, 0x6a, 0x6b, 0x79, 0x6d, 0x6a, 0x73, 0x6f, 0x5b, + 0x6e, 0x6e, 0x63, 0x70, 0x78, 0x64, 0x73, 0x71, 0x70, 0x6f, 0x67, 0x6d, + 0x67, 0x6f, 0x6f, 0x6b, 0x79, 0x66, 0x6a, 0x6d, 0x74, 0x70, 0x6e, 0x77, + 0x7b, 0x6a, 0x6b, 0x6b, 0x76, 0x6f, 0x68, 0x6f, 0x6b, 0x66, 0x6f, 0x70, + 0x5a, 0x6d, 0x6e, 0x69, 0x6c, 0x70, 0x6f, 0x70, 0x6f, 0x6f, 0x6d, 0x6c, + 0x70, 0x63, 0x69, 0x70, 0x6b, 0x6f, 0x70, 0x5d, 0x69, 0x68, 0x65, 0x6f, + 0x6e, 0x73, 0x6f, 0x71, 0x73, 0x6c, 0x6a, 0x5f, 0x60, 0x6b, 0x66, 0x70, + 0x6f, 0x78, 0x50, 0x6c, 0x63, 0x6e, 0x67, 0x68, 0x71, 0x6e, 0x6e, 0x70, + 0x6b, 0x7e, 0x74, 0x75, 0x6f, 0x6f, 0x6b, 0x70, 0x68, 0x71, 0x6f, 0x6e, + 0x73, 0x7a, 0x73, 0x6f, 0x75, 0x68, 0x6f, 0x6f, 0x6f, 0x74, 0x6e, 0x6b, + 0x77, 0x70, 0x71, 0x6f, 0x74, 0x71, 0x7a, 0x70, 0x6e, 0x6e, 0x63, 0x68, + 0x70, 0x6e, 0x76, 0x6f, 0x6c, 0x75, 0x76, 0x78, 0x6f, 0x67, 0x6d, 0x70, + 0x6b, 0x6f, 0x70, 0x66, 0x68, 0x74, 0x67, 0x6f, 0x70, 0x69, 0x6f, 0x73, + 0x6a, 0x6e, 0x6c, 0x6b, 0x63, 0x6e, 0x6a, 0x6e, 0x70, 0x70, 0x86, 0x71, + 0x78, 0x82, 0x77, 0x6c, 0x6f, 0x70, 0x75, 0x70, 0x6a, 0x71, 0x6d, 0x6e, + 0x70, 0x6c, 0x68, 0x70, 0x74, 0x6f, 0x70, 0x6d, 0x6e, 0x7d, 0x76, 0x6e, + 0x6e, 0x6f, 0x70, 0x6d, 0x6d, 0x6f, 0x72, 0x6b, 0x6e, 0x75, 0x71, 0x6f, + 0x71, 0x6e, 0x67, 0x6e, 0x61, 0x72, 0x74, 0x6b, 0x6a, 0x6f, 0x79, 0x6e, + 0x73, 0x71, 0x76, 0x70, 0x6f, 0x72, 0x73, 0x6e, 0x6f, 0x6f, 0x6e, 0x60, + 0x6c, 0x75, 0x52, 0x6e, 0x66, 0x60, 0x70, 0x77, 0x6a, 0x70, 0x71, 0x51, + 0x70, 0x6d, 0x6d, 0x6f, 0x6e, 0x71, 0x63, 0x73, 0x74, 0x68, 0x6e, 0x6a, + 0x70, 0x70, 0x76, 0x71, 0x75, 0x6f, 0x72, 0x74, 0x6e, 0x6e, 0x66, 0x6e, + 0x6f, 0x6e, 0x6e, 0x67, 0x62, 0x76, 0x71, 0x70, 0x6f, 0x6c, 0x6d, 0x72, + 0x6b, 0x6f, 0x72, 0x73, 0x56, 0x70, 0x6e, 0x70, 0x72, 0x6d, 0x73, 0x72, + 0x69, 0x77, 0x68, 0x5a, 0x6f, 0x6f, 0x69, 0x6f, 0x6f, 0x70, 0x70, 0x6b, + 0x6f, 0x6d, 0x60, 0x70, 0x6f, 0x70, 0x6f, 0x66, 0x72, 0x6a, 0x73, 0x70, + 0x68, 0x72, 0x6e, 0x74, 0x70, 0x6e, 0x6a, 0x6b, 0x75, 0x6a, 0x7b, 0x70, + 0x6f, 0x6c, 0x6f, 0x71, 0x61, 0x75, 0x69, 0x62, 0x69, 0x6e, 0x6a, 0x6e, + 0x70, 0x6e, 0x6c, 0x72, 0x70, 0x6f, 0x6a, 0x6f, 0x60, 0x6f, 0x6f, 0x68, + 0x79, 0x6f, 0x78, 0x6f, 0x6c, 0x6f, 0x70, 0x71, 0x77, 0x6b, 0x6c, 0x6b, + 0x6f, 0x6f, 0x77, 0x6d, 0x68, 0x6f, 0x66, 0x6f, 0x6d, 0x7f, 0x67, 0x68, + 0x68, 0x6f, 0x77, 0x6f, 0x6b, 0x75, 0x6e, 0x71, 0x6e, 0x75, 0x6f, 0x6e, + 0x73, 0x6f, 0x6e, 0x6b, 0x71, 0x6c, 0x6b, 0x70, 0x75, 0x6e, 0x6e, 0x71, + 0x66, 0x6a, 0x71, 0x71, 0x5a, 0x6e, 0x71, 0x6f, 0x6a, 0x6f, 0x73, 0x76, + 0x68, 0x6e, 0x6b, 0x6a, 0x6c, 0x70, 0x67, 0x6f, 0x6f, 0x76, 0x71, 0x77, + 0x6e, 0x6b, 0x70, 0x6e, 0x69, 0x6e, 0x6e, 0x79, 0x69, 0x6e, 0x66, 0x6e, + 0x6b, 0x6e, 0x6f, 0x76, 0x73, 0x73, 0x70, 0x69, 0x62, 0x6d, 0x69, 0x6f, + 0x6e, 0x6f, 0x7e, 0x73, 0x6f, 0x69, 0x6f, 0x60, 0x6e, 0x70, 0x6c, 0x70, + 0x6c, 0x70, 0x6e, 0x71, 0x6f, 0x6c, 0x69, 0x70, 0x70, 0x6f, 0x6f, 0x78, + 0x74, 0x79, 0x63, 0x70, 0x6b, 0x6c, 0x70, 0x71, 0x6a, 0x72, 0x6e, 0x77, + 0x6f, 0x6b, 0x76, 0x6e, 0x6e, 0x6f, 0x6a, 0x72, 0x6c, 0x5f, 0x6b, 0x5a, + 0x6f, 0x6f, 0x6b, 0x70, 0x71, 0x75, 0x68, 0x6b, 0x6f, 0x60, 0x8a, 0x6e, + 0x66, 0x6f, 0x6f, 0x6e, 0x69, 0x64, 0x73, 0x6f, 0x70, 0x73, 0x70, 0x6d, + 0x73, 0x6f, 0x6a, 0x73, 0x79, 0x6d, 0x88, 0x6e, 0x73, 0x8f, 0x81, 0x6b, + 0x7a, 0x70, 0x71, 0x75, 0x6c, 0x6e, 0x6c, 0x6e, 0x75, 0x6a, 0x6e, 0x66, + 0x6f, 0x5c, 0x6a, 0x6f, 0x74, 0x6f, 0x6f, 0x5e, 0x72, 0x7e, 0x71, 0x6f, + 0x6f, 0x7c, 0x6e, 0x69, 0x79, 0x70, 0x6f, 0x7a, 0x6f, 0x6d, 0x70, 0x6e, + 0x76, 0x6c, 0x6c, 0x6b, 0x72, 0x74, 0x6e, 0x6a, 0x68, 0x6f, 0x72, 0x70, + 0x6b, 0x6e, 0x6a, 0x78, 0x6f, 0x73, 0x6d, 0x6e, 0x71, 0x6f, 0x6f, 0x6b, + 0x6b, 0x6f, 0x6e, 0x6f, 0x6c, 0x72, 0x6f, 0x70, 0x6c, 0x6f, 0x6d, 0x70, + 0x65, 0x6e, 0x79, 0x71, 0x72, 0x70, 0x74, 0x6c, 0x6d, 0x66, 0x73, 0x74, + 0x6a, 0x70, 0x70, 0x6f, 0x6f, 0x73, 0x6e, 0x6d, 0x70, 0x71, 0x66, 0x6f, + 0x6b, 0x6f, 0x70, 0x67, 0x73, 0x63, 0x6f, 0x6e, 0x72, 0x68, 0x70, 0x6e, + 0x6d, 0x71, 0x6b, 0x76, 0x6f, 0x6b, 0x73, 0x6e, 0x69, 0x7a, 0x69, 0x6b, + 0x6c, 0x82, 0x73, 0x82, 0x6f, 0x6f, 0x64, 0x6e, 0x6d, 0x6c, 0x6f, 0x77, + 0x6d, 0x6d, 0x61, 0x70, 0x6f, 0x6f, 0x6f, 0x7b, 0x81, 0x62, 0x67, 0x6f, + 0x6c, 0x6a, 0x6e, 0x70, 0x81, 0x71, 0x6f, 0x62, 0x5e, 0x6e, 0x70, 0x71, + 0x6d, 0x5d, 0x8e, 0x71, 0x71, 0x6c, 0x70, 0x68, 0x6f, 0x70, 0x6b, 0x70, + 0x70, 0x6f, 0x6c, 0x73, 0x70, 0x70, 0x6c, 0x6e, 0x6b, 0x70, 0x6f, 0x6f, + 0x6f, 0x78, 0x62, 0x71, 0x6c, 0x73, 0x70, 0x6c, 0x6f, 0x72, 0x6f, 0x6e, + 0x6c, 0x76, 0x71, 0x70, 0x73, 0x70, 0x6c, 0x6d, 0x76, 0x7b, 0x67, 0x62, + 0x70, 0x6f, 0x73, 0x70, 0x75, 0x7a, 0x6f, 0x78, 0x70, 0x74, 0x61, 0x6f, + 0x72, 0x6e, 0x6e, 0x72, 0x6b, 0x67, 0x6f, 0x70, 0x6e, 0x71, 0x6e, 0x76, + 0x6d, 0x6f, 0x6f, 0x6f, 0x5a, 0x6d, 0x67, 0x6e, 0x73, 0x6d, 0x78, 0x72, + 0x6f, 0x6e, 0x64, 0x6b, 0x6d, 0x6e, 0x73, 0x70, 0x77, 0x76, 0x6a, 0x75, + 0x6f, 0x74, 0x67, 0x70, 0x69, 0x6f, 0x6e, 0x72, 0x67, 0x74, 0x69, 0x6e, + 0x6b, 0x79, 0x70, 0x72, 0x72, 0x75, 0x68, 0x74, 0x5a, 0x6f, 0x70, 0x70, + 0x70, 0x70, 0x71, 0x73, 0x70, 0x6b, 0x6e, 0x56, 0x6a, 0x70, 0x72, 0x6e, + 0x75, 0x6b, 0x6f, 0x74, 0x70, 0x71, 0x63, 0x6f, 0x6d, 0x6f, 0x70, 0x63, + 0x6e, 0x76, 0x71, 0x6e, 0x6d, 0x6e, 0x71, 0x77, 0x70, 0x6f, 0x6b, 0x70, + 0x53, 0x6c, 0x6c, 0x70, 0x70, 0x66, 0x71, 0x6e, 0x57, 0x70, 0x63, 0x72, + 0x6c, 0x6e, 0x6f, 0x70, 0x74, 0x89, 0x74, 0x7b, 0x6e, 0x71, 0x61, 0x6f, + 0x65, 0x6f, 0x6e, 0x5a, 0x7d, 0x5d, 0x69, 0x6e, 0x76, 0x7e, 0x6f, 0x7e, + 0x79, 0x73, 0x6c, 0x6b, 0x71, 0x70, 0x62, 0x6f, 0x6e, 0x5e, 0x78, 0x72, + 0x71, 0x67, 0x6b, 0x70, 0x70, 0x70, 0x74, 0x6e, 0x74, 0x74, 0x74, 0x70, + 0x6f, 0x6d, 0x64, 0x6e, 0x6d, 0x6f, 0x70, 0x75, 0x6b, 0x66, 0x6f, 0x70, + 0x6c, 0x6d, 0x6f, 0x73, 0x70, 0x6e, 0x72, 0x75, 0x64, 0x72, 0x72, 0x6f, + 0x72, 0x6f, 0x71, 0x73, 0x68, 0x78, 0x6a, 0x6d, 0x69, 0x70, 0x7b, 0x6f, + 0x70, 0x6a, 0x71, 0x6c, 0x6f, 0x57, 0x68, 0x6f, 0x7a, 0x6f, 0x6f, 0x6a, + 0x70, 0x73, 0x6e, 0x71, 0x71, 0x7d, 0x70, 0x74, 0x66, 0x74, 0x6e, 0x64, + 0x66, 0x6e, 0x66, 0x6e, 0x74, 0x6b, 0x6f, 0x6e, 0x6f, 0x70, 0x73, 0x66, + 0x6f, 0x70, 0x69, 0x70, 0x76, 0x70, 0x70, 0x76, 0x6f, 0x6e, 0x60, 0x6e, + 0x68, 0x6f, 0x6f, 0x6e, 0x6a, 0x6b, 0x6d, 0x70, 0x6e, 0x6f, 0x70, 0x75, + 0x79, 0x70, 0x6f, 0x71, 0x64, 0x71, 0x67, 0x6f, 0x71, 0x62, 0x77, 0x72, + 0x67, 0x78, 0x6b, 0x5c, 0x6d, 0x70, 0x6f, 0x70, 0x78, 0x70, 0x70, 0x70, + 0x70, 0x6a, 0x61, 0x6e, 0x70, 0x70, 0x70, 0x7e, 0x85, 0x6b, 0x74, 0x6f, + 0x69, 0x66, 0x6f, 0x7d, 0x5e, 0x6a, 0x5f, 0x7f, 0x68, 0x71, 0x78, 0x70, + 0x71, 0x63, 0x5a, 0x6f, 0x79, 0x53, 0x6f, 0x5d, 0x70, 0x6e, 0x78, 0x70, + 0x82, 0x7a, 0x76, 0x75, 0x6e, 0x7a, 0x68, 0x70, 0x6c, 0x70, 0x6f, 0x68, + 0x5e, 0x69, 0x74, 0x6f, 0x6e, 0x79, 0x6e, 0x76, 0x6d, 0x6b, 0x73, 0x71, + 0x57, 0x6d, 0x5e, 0x6f, 0x6a, 0x6e, 0x7b, 0x78, 0x6c, 0x6a, 0x6f, 0x72, + 0x7b, 0x6f, 0x6d, 0x6f, 0x71, 0x6d, 0x6f, 0x68, 0x70, 0x60, 0x61, 0x6f, + 0x69, 0x70, 0x6e, 0x68, 0x7b, 0x77, 0x53, 0x70, 0x75, 0x64, 0x70, 0x6a, + 0x69, 0x6f, 0x66, 0x4b, 0x5b, 0x67, 0x6e, 0x70, 0x6d, 0x6b, 0x83, 0x6b, + 0x6d, 0x70, 0x6e, 0x4e, 0x6d, 0x6f, 0x74, 0x6f, 0x70, 0x67, 0x73, 0x70, + 0x6e, 0x6d, 0x61, 0x6e, 0x66, 0x6f, 0x6e, 0x6a, 0x6e, 0x7e, 0x77, 0x6f, + 0x6d, 0x5a, 0x6e, 0x73, 0x6a, 0x66, 0x71, 0x74, 0x59, 0x6b, 0x69, 0x6f, + 0x68, 0x64, 0x72, 0x70, 0x81, 0x6b, 0x66, 0x75, 0x6c, 0x70, 0x50, 0x6e, + 0x68, 0x74, 0x6a, 0x76, 0x6e, 0x6e, 0x74, 0x6e, 0x61, 0x6f, 0x70, 0x63, + 0x70, 0x75, 0x79, 0x6e, 0x66, 0x81, 0x6f, 0x6c, 0x8b, 0x76, 0x70, 0x72, + 0x67, 0x6d, 0x64, 0x6e, 0x6d, 0x6e, 0x8f, 0x6f, 0x6f, 0x5c, 0x73, 0x69, + 0x6e, 0x70, 0x73, 0x6e, 0x6b, 0x6e, 0x74, 0x74, 0x6f, 0x6c, 0x6e, 0x6e, + 0x6f, 0x6f, 0x6f, 0x6b, 0x70, 0x6c, 0x71, 0x6e, 0x69, 0x71, 0x6f, 0x6f, + 0x78, 0x6d, 0x77, 0x6c, 0x73, 0x6f, 0x75, 0x6f, 0x6e, 0x6e, 0x6e, 0x78, + 0x6a, 0x64, 0x6c, 0x61, 0x6e, 0x6e, 0x6b, 0x70, 0x61, 0x72, 0x6e, 0x6f, + 0x6e, 0x6b, 0x6f, 0x70, 0x6b, 0x6f, 0x6f, 0x6f, 0x72, 0x74, 0x6a, 0x70, + 0x70, 0x6c, 0x6f, 0x6c, 0x6a, 0x6e, 0x6d, 0x73, 0x6f, 0x74, 0x77, 0x6f, + 0x6d, 0x6f, 0x6a, 0x70, 0x71, 0x72, 0x71, 0x6f, 0x71, 0x6f, 0x6a, 0x6f, + 0x7b, 0x77, 0x74, 0x6e, 0x70, 0x6b, 0x62, 0x6f, 0x6f, 0x6f, 0x6f, 0x71, + 0x68, 0x74, 0x76, 0x6f, 0x6f, 0x67, 0x70, 0x6b, 0x76, 0x70, 0x72, 0x69, + 0x73, 0x6f, 0x6a, 0x6f, 0x70, 0x68, 0x81, 0x6b, 0x76, 0x71, 0x6b, 0x6b, + 0x70, 0x6e, 0x73, 0x6e, 0x6e, 0x6f, 0x74, 0x72, 0x70, 0x72, 0x6e, 0x6e, + 0x70, 0x6e, 0x6e, 0x69, 0x70, 0x6f, 0x5f, 0x6f, 0x75, 0x6f, 0x6f, 0x71, + 0x72, 0x71, 0x71, 0x6e, 0x67, 0x6d, 0x66, 0x70, 0x70, 0x6f, 0x6c, 0x77, + 0x68, 0x65, 0x72, 0x72, 0x6f, 0x70, 0x75, 0x70, 0x68, 0x69, 0x73, 0x69, + 0x6f, 0x5c, 0x67, 0x70, 0x6c, 0x6f, 0x6e, 0x79, 0x70, 0x7f, 0x69, 0x6e, + 0x68, 0x74, 0x6e, 0x6e, 0x71, 0x6e, 0x7c, 0x6c, 0x71, 0x70, 0x6d, 0x70, + 0x6b, 0x6f, 0x75, 0x72, 0x6a, 0x71, 0x6e, 0x6a, 0x6e, 0x6f, 0x6e, 0x6e, + 0x72, 0x68, 0x70, 0x6c, 0x70, 0x63, 0x6f, 0x70, 0x6b, 0x6f, 0x6f, 0x77, + 0x6c, 0x65, 0x78, 0x70, 0x6a, 0x6f, 0x6e, 0x72, 0x6c, 0x6e, 0x71, 0x7b, + 0x6f, 0x6c, 0x69, 0x70, 0x6a, 0x70, 0x73, 0x6e, 0x70, 0x60, 0x70, 0x5f, + 0x6f, 0x6f, 0x60, 0x6f, 0x65, 0x66, 0x75, 0x7a, 0x6f, 0x6c, 0x5f, 0x6e, + 0x67, 0x6f, 0x70, 0x62, 0x72, 0x60, 0x6b, 0x6f, 0x70, 0x6d, 0x6e, 0x6d, + 0x73, 0x71, 0x76, 0x6e, 0x63, 0x6d, 0x71, 0x70, 0x7d, 0x6d, 0x75, 0x75, + 0x6f, 0x6e, 0x6f, 0x65, 0x69, 0x6e, 0x6c, 0x6e, 0x74, 0x75, 0x71, 0x6b, + 0x6e, 0x64, 0x5f, 0x70, 0x73, 0x6f, 0x6f, 0x7a, 0x75, 0x71, 0x68, 0x70, + 0x6a, 0x6e, 0x6e, 0x73, 0x65, 0x74, 0x6e, 0x6a, 0x76, 0x6f, 0x6f, 0x70, + 0x78, 0x62, 0x73, 0x6c, 0x71, 0x6e, 0x6f, 0x65, 0x6f, 0x6e, 0x77, 0x6e, + 0x73, 0x6f, 0x6b, 0x6f, 0x6d, 0x75, 0x6c, 0x6f, 0x74, 0x6e, 0x70, 0x67, + 0x69, 0x6b, 0x5a, 0x70, 0x6d, 0x6c, 0x6d, 0x6e, 0x68, 0x70, 0x6e, 0x70, + 0x69, 0x6f, 0x67, 0x6f, 0x74, 0x6d, 0x76, 0x6e, 0x71, 0x6c, 0x6d, 0x72, + 0x6d, 0x70, 0x6e, 0x70, 0x74, 0x74, 0x71, 0x74, 0x6f, 0x70, 0x6f, 0x6e, + 0x6f, 0x6e, 0x6e, 0x73, 0x70, 0x72, 0x7c, 0x70, 0x6d, 0x6d, 0x6f, 0x73, + 0x6d, 0x6c, 0x70, 0x6e, 0x66, 0x6b, 0x6f, 0x6e, 0x6e, 0x70, 0x73, 0x72, + 0x6d, 0x6b, 0x72, 0x70, 0x6f, 0x70, 0x70, 0x6e, 0x6f, 0x6f, 0x70, 0x6e, + 0x70, 0x6f, 0x70, 0x70, 0x6f, 0x6d, 0x6e, 0x6d, 0x6f, 0x6e, 0x6d, 0x6e, + 0x6e, 0x6e, 0x6f, 0x6f, 0x6e, 0x73, 0x6f, 0x70, 0x71, 0x6e, 0x6f, 0x6e, + 0x70, 0x70, 0x6c, 0x6f, 0x7e, 0x63, 0x77, 0x77, 0x72, 0x6f, 0x6b, 0x70, + 0x74, 0x6d, 0x75, 0x6a, 0x6f, 0x78, 0x65, 0x70, 0x6c, 0x6f, 0x6e, 0x7a, + 0x70, 0x7a, 0x7a, 0x6f, 0x75, 0x70, 0x6e, 0x70, 0x79, 0x6b, 0x71, 0x6e, + 0x51, 0x6e, 0x62, 0x71, 0x6a, 0x6f, 0x6b, 0x73, 0x68, 0x66, 0x6d, 0x6c, + 0x6b, 0x6e, 0x73, 0x6f, 0x72, 0x6d, 0x6f, 0x6c, 0x71, 0x6c, 0x6b, 0x6f, + 0x6b, 0x6f, 0x70, 0x53, 0x6a, 0x7a, 0x70, 0x70, 0x6d, 0x6a, 0x6e, 0x71, + 0x6d, 0x6c, 0x6f, 0x7e, 0x62, 0x63, 0x6d, 0x6f, 0x6d, 0x5d, 0x54, 0x6c, + 0x64, 0x64, 0x6f, 0x68, 0x6b, 0x6e, 0x6a, 0x70, 0x6f, 0x77, 0x75, 0x6d, + 0x70, 0x70, 0x72, 0x6e, 0x6c, 0x71, 0x70, 0x8c, 0x72, 0x67, 0x72, 0x6f, + 0x66, 0x6d, 0x70, 0x6c, 0x70, 0x70, 0x78, 0x72, 0x7c, 0x71, 0x70, 0x6f, + 0x6f, 0x79, 0x60, 0x68, 0x73, 0x70, 0x69, 0x6c, 0x71, 0x6e, 0x68, 0x6f, + 0x7c, 0x76, 0x77, 0x76, 0x70, 0x79, 0x6d, 0x6e, 0x6b, 0x6f, 0x6f, 0x68, + 0x6e, 0x6d, 0x74, 0x70, 0x68, 0x75, 0x6f, 0x76, 0x74, 0x6a, 0x76, 0x72, + 0x3f, 0x73, 0x58, 0x6e, 0x6a, 0x75, 0x76, 0x75, 0x6e, 0x75, 0x76, 0x6a, + 0x69, 0x6d, 0x69, 0x6f, 0x72, 0x6e, 0x73, 0x6d, 0x6e, 0x6a, 0x6a, 0x6e, + 0x70, 0x6f, 0x70, 0x75, 0x74, 0x73, 0x7d, 0x6e, 0x73, 0x6b, 0x70, 0x72, + 0x74, 0x6e, 0x6e, 0x66, 0x67, 0x6c, 0x71, 0x6f, 0x6a, 0x6e, 0x66, 0x6a, + 0x6e, 0x69, 0x66, 0x68, 0x6f, 0x6e, 0x70, 0x6f, 0x78, 0x76, 0x70, 0x6b, + 0x70, 0x74, 0x6e, 0x6f, 0x68, 0x6f, 0x6f, 0x6d, 0x72, 0x66, 0x7b, 0x6e, + 0x6c, 0x73, 0x6e, 0x73, 0x6d, 0x69, 0x70, 0x77, 0x54, 0x6e, 0x6f, 0x70, + 0x6e, 0x6e, 0x72, 0x6d, 0x75, 0x5f, 0x69, 0x69, 0x6d, 0x6e, 0x7a, 0x6f, + 0x6f, 0x71, 0x6d, 0x70, 0x70, 0x70, 0x69, 0x6f, 0x72, 0x6e, 0x6f, 0x61, + 0x66, 0x73, 0x61, 0x6f, 0x6f, 0x69, 0x70, 0x72, 0x68, 0x6f, 0x6f, 0x71, + 0x71, 0x67, 0x6a, 0x6e, 0x71, 0x6f, 0x79, 0x70, 0x6f, 0x6e, 0x6a, 0x60, + 0x6e, 0x6f, 0x75, 0x6e, 0x74, 0x74, 0x73, 0x77, 0x70, 0x70, 0x72, 0x6e, + 0x6b, 0x6f, 0x6f, 0x78, 0x6a, 0x63, 0x6f, 0x6f, 0x6c, 0x72, 0x6e, 0x74, + 0x65, 0x6e, 0x71, 0x74, 0x64, 0x70, 0x56, 0x70, 0x6b, 0x6f, 0x72, 0x7c, + 0x73, 0x70, 0x75, 0x70, 0x72, 0x6e, 0x70, 0x6e, 0x6b, 0x6d, 0x76, 0x67, + 0x6f, 0x6d, 0x75, 0x6f, 0x6c, 0x6f, 0x70, 0x60, 0x6b, 0x71, 0x6c, 0x70, + 0x74, 0x7e, 0x6f, 0x6e, 0x70, 0x68, 0x76, 0x7a, 0x6f, 0x6f, 0x71, 0x6e, + 0x65, 0x74, 0x6c, 0x73, 0x6d, 0x70, 0x6c, 0x6a, 0x73, 0x70, 0x74, 0x70, + 0x6d, 0x6e, 0x6d, 0x6e, 0x6e, 0x6c, 0x67, 0x70, 0x6f, 0x70, 0x6f, 0x71, + 0x64, 0x7f, 0x68, 0x70, 0x72, 0x70, 0x70, 0x6a, 0x72, 0x6e, 0x6b, 0x70, + 0x63, 0x68, 0x75, 0x70, 0x70, 0x6c, 0x76, 0x6d, 0x7a, 0x74, 0x70, 0x6f, + 0x72, 0x6e, 0x6c, 0x6e, 0x6c, 0x70, 0x71, 0x6d, 0x70, 0x6e, 0x6b, 0x6f, + 0x74, 0x6f, 0x6e, 0x75, 0x75, 0x76, 0x70, 0x70, 0x74, 0x6e, 0x6f, 0x6f, + 0x6d, 0x6d, 0x6f, 0x71, 0x66, 0x6e, 0x74, 0x6e, 0x71, 0x6f, 0x6c, 0x6e, + 0x6e, 0x79, 0x77, 0x7b, 0x6a, 0x6e, 0x73, 0x6e, 0x70, 0x72, 0x72, 0x6f, + 0x6e, 0x74, 0x68, 0x70, 0x7a, 0x70, 0x6f, 0x63, 0x77, 0x66, 0x6b, 0x6e, + 0x6d, 0x70, 0x6f, 0x74, 0x73, 0x77, 0x74, 0x68, 0x6a, 0x71, 0x67, 0x70, + 0x6d, 0x74, 0x75, 0x6b, 0x6f, 0x79, 0x64, 0x60, 0x68, 0x70, 0x77, 0x6f, + 0x72, 0x75, 0x70, 0x74, 0x70, 0x6e, 0x6d, 0x6e, 0x6b, 0x6f, 0x6e, 0x6f, + 0x68, 0x6c, 0x73, 0x70, 0x75, 0x73, 0x70, 0x78, 0x6a, 0x73, 0x6f, 0x70, + 0x4c, 0x6e, 0x68, 0x70, 0x6f, 0x71, 0x79, 0x71, 0x75, 0x5f, 0x71, 0x63, + 0x72, 0x6e, 0x6e, 0x70, 0x7d, 0x6a, 0x73, 0x72, 0x70, 0x67, 0x69, 0x6f, + 0x6a, 0x6e, 0x6f, 0x6f, 0x67, 0x76, 0x77, 0x6f, 0x6b, 0x71, 0x6f, 0x74, + 0x70, 0x6f, 0x6c, 0x79, 0x6a, 0x70, 0x75, 0x6f, 0x72, 0x67, 0x80, 0x71, + 0x69, 0x69, 0x6d, 0x65, 0x6f, 0x70, 0x65, 0x6f, 0x79, 0x77, 0x79, 0x6f, + 0x6e, 0x7d, 0x6c, 0x70, 0x72, 0x6f, 0x70, 0x67, 0x6d, 0x69, 0x63, 0x6f, + 0x6c, 0x73, 0x6f, 0x75, 0x6c, 0x6b, 0x6e, 0x78, 0x6d, 0x6f, 0x6b, 0x6e, + 0x6d, 0x6f, 0x67, 0x73, 0x7f, 0x72, 0x6d, 0x5e, 0x6f, 0x6f, 0x77, 0x70, + 0x6b, 0x76, 0x71, 0x77, 0x6e, 0x70, 0x69, 0x70, 0x78, 0x6f, 0x6e, 0x6e, + 0x71, 0x75, 0x6a, 0x6f, 0x6f, 0x6a, 0x6f, 0x73, 0x6f, 0x72, 0x6d, 0x6f, + 0x6b, 0x6f, 0x68, 0x6f, 0x73, 0x67, 0x85, 0x73, 0x6f, 0x6f, 0x70, 0x6a, + 0x70, 0x6e, 0x6b, 0x6f, 0x6b, 0x5f, 0x6f, 0x6f, 0x70, 0x6f, 0x6e, 0x6f, + 0x73, 0x6c, 0x6e, 0x6f, 0x6c, 0x70, 0x71, 0x6f, 0x6f, 0x6e, 0x6e, 0x6c, + 0x73, 0x77, 0x6d, 0x75, 0x72, 0x70, 0x7d, 0x6e, 0x6c, 0x6f, 0x6e, 0x74, + 0x61, 0x69, 0x63, 0x5f, 0x74, 0x70, 0x77, 0x6e, 0x69, 0x6d, 0x78, 0x7f, + 0x6e, 0x5f, 0x70, 0x6f, 0x6d, 0x6f, 0x6e, 0x6b, 0x74, 0x73, 0x62, 0x70, + 0x68, 0x6b, 0x70, 0x7a, 0x68, 0x72, 0x74, 0x5e, 0x5d, 0x6d, 0x78, 0x6e, + 0x6a, 0x6e, 0x78, 0x78, 0x71, 0x59, 0x6b, 0x6c, 0x6e, 0x6f, 0x75, 0x70, + 0x78, 0x6e, 0x71, 0x73, 0x6f, 0x73, 0x6f, 0x70, 0x68, 0x6e, 0x6e, 0x61, + 0x6d, 0x63, 0x72, 0x6e, 0x6f, 0x75, 0x6e, 0x75, 0x6f, 0x6d, 0x73, 0x76, + 0x57, 0x6f, 0x63, 0x70, 0x6c, 0x6d, 0x7b, 0x77, 0x71, 0x69, 0x6a, 0x59, + 0x69, 0x70, 0x6e, 0x70, 0x76, 0x75, 0x71, 0x73, 0x6f, 0x78, 0x7e, 0x6e, + 0x6e, 0x6f, 0x6e, 0x70, 0x68, 0x73, 0x77, 0x6f, 0x70, 0x73, 0x6f, 0x77, + 0x6c, 0x6a, 0x6f, 0x6e, 0x53, 0x6c, 0x5e, 0x6e, 0x71, 0x70, 0x77, 0x6f, + 0x6f, 0x6f, 0x71, 0x67, 0x68, 0x6f, 0x6f, 0x70, 0x78, 0x6a, 0x7b, 0x6d, + 0x70, 0x78, 0x6a, 0x6e, 0x73, 0x6d, 0x6e, 0x79, 0x6f, 0x6b, 0x71, 0x6f, + 0x70, 0x76, 0x6e, 0x78, 0x70, 0x68, 0x79, 0x6f, 0x71, 0x6e, 0x6c, 0x6f, + 0x6d, 0x6d, 0x72, 0x6b, 0x76, 0x72, 0x70, 0x5b, 0x70, 0x70, 0x74, 0x6f, + 0x6d, 0x6e, 0x6c, 0x6f, 0x6e, 0x6f, 0x62, 0x70, 0x73, 0x6f, 0x6f, 0x71, + 0x74, 0x7a, 0x68, 0x70, 0x6d, 0x71, 0x70, 0x6d, 0x6d, 0x6e, 0x6f, 0x77, + 0x6a, 0x6f, 0x72, 0x6e, 0x73, 0x69, 0x72, 0x6c, 0x6b, 0x71, 0x70, 0x6f, + 0x6f, 0x70, 0x71, 0x70, 0x6e, 0x72, 0x6e, 0x70, 0x6f, 0x6d, 0x6b, 0x6e, + 0x6c, 0x70, 0x70, 0x73, 0x72, 0x6c, 0x77, 0x6f, 0x6c, 0x72, 0x6f, 0x6b, + 0x6e, 0x69, 0x6c, 0x68, 0x63, 0x6e, 0x75, 0x6e, 0x69, 0x6f, 0x7e, 0x70, + 0x68, 0x66, 0x6c, 0x7a, 0x6b, 0x6e, 0x6e, 0x6f, 0x76, 0x79, 0x6f, 0x68, + 0x70, 0x67, 0x5d, 0x70, 0x6d, 0x70, 0x70, 0x6c, 0x7c, 0x74, 0x64, 0x6d, + 0x74, 0x6f, 0x6e, 0x6f, 0x67, 0x78, 0x63, 0x53, 0x6c, 0x6e, 0x75, 0x6e, + 0x7e, 0x63, 0x75, 0x68, 0x67, 0x66, 0x6f, 0x5d, 0x6c, 0x6e, 0x74, 0x6e, + 0x6c, 0x73, 0x6f, 0x72, 0x6f, 0x6f, 0x62, 0x6e, 0x6f, 0x6f, 0x6e, 0x6b, + 0x6a, 0x71, 0x73, 0x6e, 0x6b, 0x68, 0x6f, 0x72, 0x72, 0x6e, 0x6e, 0x6c, + 0x72, 0x6e, 0x66, 0x6e, 0x6c, 0x67, 0x5e, 0x6f, 0x71, 0x69, 0x6e, 0x70, + 0x6f, 0x6e, 0x70, 0x70, 0x71, 0x6d, 0x70, 0x73, 0x6e, 0x70, 0x60, 0x70, + 0x6f, 0x6e, 0x6f, 0x5e, 0x71, 0x78, 0x77, 0x6f, 0x6f, 0x74, 0x6e, 0x71, + 0x6a, 0x6f, 0x6f, 0x6c, 0x56, 0x6c, 0x6e, 0x70, 0x6e, 0x67, 0x71, 0x72, + 0x68, 0x6d, 0x71, 0x6b, 0x6c, 0x6e, 0x76, 0x6f, 0x71, 0x63, 0x70, 0x6f, + 0x6e, 0x66, 0x68, 0x70, 0x72, 0x6e, 0x6f, 0x76, 0x70, 0x6f, 0x74, 0x6e, + 0x72, 0x63, 0x6f, 0x78, 0x6e, 0x76, 0x6f, 0x64, 0x76, 0x70, 0x70, 0x6d, + 0x6c, 0x74, 0x73, 0x75, 0x75, 0x6f, 0x6b, 0x67, 0x71, 0x6e, 0x6d, 0x6f, + 0x6f, 0x75, 0x72, 0x71, 0x6e, 0x6e, 0x74, 0x70, 0x71, 0x6e, 0x6e, 0x67, + 0x6b, 0x75, 0x7a, 0x6f, 0x6e, 0x76, 0x6f, 0x71, 0x69, 0x70, 0x6f, 0x74, + 0x64, 0x6e, 0x72, 0x70, 0x6e, 0x6f, 0x65, 0x75, 0x6b, 0x7b, 0x6b, 0x72, + 0x72, 0x70, 0x6d, 0x6e, 0x75, 0x6a, 0x6f, 0x72, 0x70, 0x77, 0x6d, 0x70, + 0x63, 0x6d, 0x70, 0x6c, 0x70, 0x6e, 0x73, 0x70, 0x76, 0x70, 0x6f, 0x6d, + 0x72, 0x6f, 0x71, 0x73, 0x73, 0x6e, 0x6f, 0x6f, 0x6e, 0x70, 0x7c, 0x6c, + 0x6d, 0x72, 0x7c, 0x65, 0x6c, 0x6e, 0x70, 0x70, 0x72, 0x6b, 0x70, 0x70, + 0x6e, 0x61, 0x6d, 0x70, 0x75, 0x6f, 0x70, 0x75, 0x6c, 0x73, 0x71, 0x6f, + 0x6e, 0x6e, 0x6f, 0x70, 0x75, 0x6d, 0x71, 0x67, 0x69, 0x6f, 0x75, 0x6f, + 0x74, 0x6f, 0x70, 0x6d, 0x83, 0x77, 0x72, 0x5a, 0x6b, 0x6f, 0x60, 0x70, + 0x67, 0x74, 0x71, 0x6b, 0x6e, 0x6d, 0x59, 0x6e, 0x75, 0x70, 0x70, 0x62, + 0x77, 0x74, 0x7e, 0x6f, 0x74, 0x74, 0x6e, 0x6c, 0x7d, 0x6e, 0x71, 0x8a, + 0x79, 0x72, 0x6e, 0x6e, 0x6b, 0x5c, 0x78, 0x6b, 0x64, 0x6f, 0x6d, 0x60, + 0x6f, 0x6f, 0x70, 0x6e, 0x69, 0x69, 0x70, 0x78, 0x6f, 0x70, 0x6a, 0x6e, + 0x69, 0x6f, 0x6f, 0x68, 0x6d, 0x6c, 0x71, 0x70, 0x6b, 0x73, 0x6d, 0x6f, + 0x75, 0x6c, 0x71, 0x6e, 0x69, 0x6c, 0x6c, 0x6f, 0x6e, 0x6e, 0x62, 0x72, + 0x77, 0x6e, 0x73, 0x72, 0x70, 0x6f, 0x71, 0x6e, 0x6f, 0x73, 0x71, 0x73, + 0x6d, 0x6a, 0x64, 0x6e, 0x6d, 0x6f, 0x71, 0x6d, 0x6f, 0x6b, 0x73, 0x6f, + 0x6d, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x75, 0x77, 0x63, 0x70, 0x73, 0x6e, + 0x70, 0x69, 0x75, 0x73, 0x73, 0x68, 0x67, 0x68, 0x6b, 0x6f, 0x6f, 0x70, + 0x67, 0x6c, 0x6e, 0x6a, 0x6e, 0x6b, 0x65, 0x70, 0x67, 0x6f, 0x6f, 0x67, + 0x71, 0x7d, 0x72, 0x6f, 0x6f, 0x66, 0x6f, 0x6d, 0x6e, 0x6d, 0x6e, 0x83, + 0x66, 0x6a, 0x6d, 0x70, 0x6d, 0x69, 0x53, 0x6a, 0x76, 0x7b, 0x65, 0x5a, + 0x6d, 0x6f, 0x77, 0x6f, 0x79, 0x73, 0x71, 0x73, 0x6f, 0x76, 0x67, 0x6e, + 0x6c, 0x70, 0x6e, 0x64, 0x5f, 0x68, 0x79, 0x6e, 0x6c, 0x77, 0x6f, 0x76, + 0x6c, 0x71, 0x70, 0x72, 0x54, 0x70, 0x66, 0x6f, 0x71, 0x6b, 0x7c, 0x70, + 0x6c, 0x72, 0x74, 0x6d, 0x6d, 0x70, 0x6d, 0x6f, 0x73, 0x69, 0x73, 0x72, + 0x6f, 0x73, 0x6e, 0x70, 0x72, 0x6f, 0x6f, 0x7b, 0x73, 0x6e, 0x70, 0x6e, + 0x6d, 0x7a, 0x70, 0x73, 0x78, 0x6a, 0x74, 0x76, 0x61, 0x6e, 0x67, 0x70, + 0x6f, 0x6e, 0x76, 0x70, 0x7a, 0x65, 0x6f, 0x71, 0x73, 0x70, 0x6f, 0x6f, + 0x76, 0x6f, 0x74, 0x78, 0x6f, 0x72, 0x63, 0x70, 0x6a, 0x70, 0x6e, 0x5e, + 0x6c, 0x77, 0x71, 0x6f, 0x6f, 0x76, 0x70, 0x72, 0x70, 0x6f, 0x72, 0x6c, + 0x48, 0x70, 0x68, 0x6f, 0x72, 0x6b, 0x72, 0x77, 0x60, 0x6e, 0x7d, 0x6b, + 0x77, 0x6e, 0x74, 0x6e, 0x70, 0x64, 0x6e, 0x6c, 0x6f, 0x70, 0x70, 0x70, + 0x6a, 0x6b, 0x70, 0x70, 0x76, 0x70, 0x6f, 0x6f, 0x6f, 0x6e, 0x6e, 0x6e, + 0x72, 0x92, 0x6f, 0x75, 0x70, 0x70, 0x71, 0x6e, 0x6d, 0x6e, 0x70, 0x6f, + 0x75, 0x6b, 0x63, 0x6b, 0x6c, 0x6f, 0x72, 0x70, 0x73, 0x6a, 0x74, 0x77, + 0x6f, 0x75, 0x62, 0x70, 0x70, 0x6f, 0x6d, 0x75, 0x6b, 0x76, 0x70, 0x6f, + 0x6a, 0x6c, 0x6e, 0x77, 0x69, 0x6a, 0x72, 0x78, 0x5f, 0x70, 0x71, 0x6e, + 0x68, 0x6b, 0x71, 0x72, 0x6b, 0x60, 0x68, 0x66, 0x69, 0x6f, 0x74, 0x70, + 0x6d, 0x6f, 0x6e, 0x6f, 0x71, 0x6b, 0x6b, 0x6e, 0x70, 0x6f, 0x6f, 0x6e, + 0x73, 0x70, 0x65, 0x70, 0x6f, 0x75, 0x6e, 0x75, 0x6d, 0x71, 0x67, 0x76, + 0x7a, 0x6f, 0x76, 0x6f, 0x6f, 0x6e, 0x5d, 0x6a, 0x63, 0x6c, 0x6c, 0x7f, + 0x6d, 0x6e, 0x6e, 0x6e, 0x66, 0x6c, 0x71, 0x72, 0x6f, 0x73, 0x6a, 0x70, + 0x6f, 0x6e, 0x6f, 0x61, 0x71, 0x7a, 0x69, 0x70, 0x6e, 0x78, 0x6f, 0x6f, + 0x69, 0x6a, 0x72, 0x5e, 0x53, 0x78, 0x6a, 0x6f, 0x6d, 0x60, 0x6b, 0x70, + 0x6d, 0x6b, 0x6c, 0x67, 0x6c, 0x6f, 0x79, 0x6f, 0x79, 0x70, 0x71, 0x6d, + 0x6e, 0x6d, 0x67, 0x6e, 0x74, 0x6f, 0x6f, 0x60, 0x64, 0x6d, 0x76, 0x6f, + 0x6d, 0x6d, 0x6f, 0x76, 0x6a, 0x68, 0x6d, 0x6c, 0x58, 0x6f, 0x68, 0x70, + 0x70, 0x6c, 0x5e, 0x6c, 0x78, 0x67, 0x71, 0x73, 0x6e, 0x6f, 0x67, 0x70, + 0x71, 0x6b, 0x73, 0x74, 0x6e, 0x70, 0x5f, 0x70, 0x6f, 0x6f, 0x6f, 0x55, + 0x7d, 0x6b, 0x72, 0x6e, 0x72, 0x6a, 0x70, 0x74, 0x78, 0x68, 0x70, 0x78, + 0x61, 0x6a, 0x6a, 0x6f, 0x69, 0x61, 0x6a, 0x6f, 0x6a, 0x72, 0x6f, 0x58, + 0x6d, 0x6e, 0x6b, 0x70, 0x73, 0x6e, 0x70, 0x76, 0x6f, 0x6d, 0x6a, 0x6e, + 0x68, 0x6f, 0x70, 0x6f, 0x6f, 0x73, 0x75, 0x70, 0x6c, 0x6e, 0x6f, 0x75, + 0x75, 0x70, 0x70, 0x6a, 0x64, 0x6e, 0x69, 0x6e, 0x70, 0x6a, 0x70, 0x71, + 0x72, 0x72, 0x62, 0x5b, 0x74, 0x70, 0x6e, 0x6f, 0x71, 0x6c, 0x77, 0x75, + 0x6e, 0x70, 0x68, 0x6e, 0x71, 0x6e, 0x6f, 0x6c, 0x68, 0x6c, 0x6f, 0x6f, + 0x68, 0x6b, 0x6e, 0x6d, 0x65, 0x6f, 0x70, 0x77, 0x5e, 0x6c, 0x72, 0x6f, + 0x71, 0x66, 0x69, 0x75, 0x6f, 0x67, 0x66, 0x61, 0x75, 0x6f, 0x78, 0x70, + 0x74, 0x6f, 0x72, 0x6d, 0x6f, 0x6f, 0x74, 0x6f, 0x6c, 0x6f, 0x6e, 0x6e, + 0x6c, 0x6c, 0x64, 0x6f, 0x71, 0x70, 0x70, 0x74, 0x63, 0x6f, 0x6b, 0x75, + 0x68, 0x6d, 0x67, 0x6e, 0x74, 0x70, 0x7f, 0x70, 0x6e, 0x6f, 0x71, 0x5b, + 0x6e, 0x6f, 0x70, 0x70, 0x6e, 0x6f, 0x70, 0x70, 0x70, 0x6b, 0x5c, 0x6f, + 0x6f, 0x6f, 0x70, 0x77, 0x6d, 0x70, 0x72, 0x70, 0x6f, 0x6d, 0x70, 0x70, + 0x71, 0x6e, 0x6f, 0x6d, 0x74, 0x69, 0x61, 0x6e, 0x6e, 0x60, 0x5d, 0x70, + 0x65, 0x76, 0x73, 0x66, 0x6e, 0x70, 0x76, 0x70, 0x67, 0x70, 0x69, 0x68, + 0x6f, 0x68, 0x6a, 0x70, 0x6f, 0x6f, 0x6e, 0x71, 0x6a, 0x77, 0x7e, 0x6f, + 0x70, 0x66, 0x70, 0x65, 0x72, 0x6d, 0x75, 0x6d, 0x63, 0x6d, 0x7d, 0x6e, + 0x71, 0x64, 0x6e, 0x62, 0x71, 0x71, 0x74, 0x68, 0x6e, 0x6f, 0x6b, 0x70, + 0x71, 0x6b, 0x70, 0x70, 0x6f, 0x67, 0x6b, 0x6e, 0x72, 0x70, 0x70, 0x6b, + 0x6a, 0x65, 0x73, 0x70, 0x6c, 0x71, 0x6f, 0x72, 0x74, 0x71, 0x76, 0x73, + 0x63, 0x77, 0x72, 0x70, 0x6f, 0x6d, 0x7b, 0x76, 0x75, 0x6b, 0x69, 0x67, + 0x79, 0x6e, 0x71, 0x70, 0x6f, 0x72, 0x75, 0x6d, 0x70, 0x6e, 0x73, 0x6e, + 0x71, 0x6f, 0x6e, 0x6d, 0x67, 0x71, 0x64, 0x70, 0x6d, 0x77, 0x6e, 0x6b, + 0x72, 0x6b, 0x73, 0x75, 0x64, 0x6c, 0x64, 0x6e, 0x6d, 0x6e, 0x74, 0x75, + 0x7d, 0x6e, 0x70, 0x70, 0x70, 0x6e, 0x6c, 0x6f, 0x69, 0x6d, 0x6c, 0x6f, + 0x70, 0x67, 0x5d, 0x6e, 0x6f, 0x6f, 0x70, 0x76, 0x6d, 0x77, 0x6a, 0x70, + 0x75, 0x6b, 0x70, 0x68, 0x6d, 0x6f, 0x70, 0x78, 0x7a, 0x71, 0x6f, 0x70, + 0x71, 0x6b, 0x78, 0x70, 0x6e, 0x72, 0x6d, 0x70, 0x6b, 0x70, 0x6e, 0x6e, + 0x65, 0x6b, 0x6b, 0x6e, 0x6e, 0x6f, 0x61, 0x70, 0x70, 0x6f, 0x6f, 0x71, + 0x72, 0x70, 0x72, 0x6e, 0x71, 0x76, 0x6f, 0x6d, 0x6d, 0x6a, 0x6c, 0x74, + 0x67, 0x6c, 0x6b, 0x6e, 0x6b, 0x67, 0x8a, 0x68, 0x73, 0x70, 0x72, 0x5b, + 0x76, 0x6e, 0x76, 0x6f, 0x70, 0x72, 0x79, 0x76, 0x6f, 0x6b, 0x6d, 0x70, + 0x71, 0x6f, 0x6e, 0x76, 0x71, 0x6d, 0x6e, 0x70, 0x6c, 0x66, 0x70, 0x70, + 0x6a, 0x73, 0x6e, 0x69, 0x6c, 0x6d, 0x6c, 0x70, 0x67, 0x6e, 0x75, 0x73, + 0x68, 0x6c, 0x6e, 0x6a, 0x6d, 0x6f, 0x70, 0x6f, 0x6e, 0x6a, 0x6b, 0x71, + 0x6d, 0x6f, 0x6d, 0x70, 0x70, 0x6f, 0x70, 0x6a, 0x64, 0x6f, 0x71, 0x6e, + 0x70, 0x78, 0x70, 0x6d, 0x69, 0x6f, 0x6f, 0x67, 0x56, 0x6f, 0x69, 0x6e, + 0x70, 0x72, 0x75, 0x6d, 0x6d, 0x7b, 0x6f, 0x65, 0x70, 0x70, 0x74, 0x6f, + 0x6a, 0x6d, 0x6e, 0x68, 0x6f, 0x71, 0x68, 0x70, 0x72, 0x70, 0x6f, 0x70, + 0x68, 0x61, 0x64, 0x70, 0x6d, 0x7c, 0x6f, 0x6b, 0x6d, 0x65, 0x6e, 0x72, + 0x64, 0x6f, 0x6e, 0x6e, 0x68, 0x6e, 0x7b, 0x6d, 0x6f, 0x6c, 0x61, 0x63, + 0x6f, 0x70, 0x6f, 0x6f, 0x77, 0x77, 0x73, 0x76, 0x6f, 0x76, 0x66, 0x6f, + 0x6b, 0x6f, 0x6e, 0x69, 0x73, 0x6a, 0x72, 0x70, 0x6b, 0x6b, 0x6f, 0x76, + 0x6c, 0x71, 0x71, 0x77, 0x69, 0x6d, 0x69, 0x6f, 0x6e, 0x6d, 0x83, 0x74, + 0x68, 0x5f, 0x73, 0x61, 0x72, 0x6e, 0x7b, 0x70, 0x6f, 0x70, 0x6f, 0x74, + 0x6e, 0x6e, 0x69, 0x6f, 0x71, 0x6f, 0x6f, 0x60, 0x6a, 0x87, 0x83, 0x6e, + 0x73, 0x69, 0x70, 0x6c, 0x69, 0x6d, 0x69, 0x59, 0x5b, 0x6e, 0x70, 0x6f, + 0x70, 0x6e, 0x70, 0x70, 0x6d, 0x72, 0x70, 0x5b, 0x6e, 0x70, 0x78, 0x6f, + 0x6e, 0x72, 0x70, 0x73, 0x6f, 0x6b, 0x61, 0x6e, 0x6f, 0x6f, 0x6e, 0x74, + 0x67, 0x68, 0x6e, 0x6e, 0x6f, 0x69, 0x6f, 0x72, 0x6d, 0x6f, 0x70, 0x6f, + 0x6b, 0x6a, 0x69, 0x6e, 0x6f, 0x71, 0x58, 0x71, 0x68, 0x6f, 0x74, 0x6b, + 0x79, 0x6f, 0x73, 0x6f, 0x70, 0x69, 0x68, 0x6c, 0x6e, 0x71, 0x6e, 0x6e, + 0x70, 0x6c, 0x6e, 0x70, 0x72, 0x70, 0x6f, 0x70, 0x6e, 0x6b, 0x6f, 0x71, + 0x74, 0x85, 0x6f, 0x72, 0x6c, 0x6d, 0x82, 0x70, 0x6c, 0x6f, 0x6e, 0x6f, + 0x63, 0x6c, 0x6a, 0x69, 0x6e, 0x6e, 0x74, 0x6e, 0x77, 0x75, 0x6b, 0x74, + 0x6f, 0x69, 0x7c, 0x6e, 0x6d, 0x6e, 0x6f, 0x78, 0x66, 0x6d, 0x6f, 0x6d, + 0x6c, 0x6d, 0x70, 0x70, 0x6d, 0x72, 0x69, 0x67, 0x67, 0x6b, 0x70, 0x6e, + 0x70, 0x6d, 0x72, 0x6f, 0x66, 0x70, 0x78, 0x6a, 0x7f, 0x6f, 0x74, 0x6e, + 0x6e, 0x6b, 0x67, 0x6b, 0x6f, 0x71, 0x6e, 0x70, 0x6e, 0x6b, 0x70, 0x6f, + 0x73, 0x70, 0x6e, 0x6e, 0x6e, 0x6c, 0x6e, 0x70, 0x78, 0x8a, 0x6e, 0x74, + 0x6e, 0x70, 0x79, 0x6f, 0x6d, 0x6e, 0x6f, 0x6e, 0x66, 0x5e, 0x69, 0x6d, + 0x71, 0x6f, 0x72, 0x70, 0x7b, 0x6d, 0x71, 0x7d, 0x6e, 0x71, 0x68, 0x6f, + 0x6c, 0x70, 0x6f, 0x6a, 0x74, 0x7d, 0x76, 0x70, 0x66, 0x6f, 0x70, 0x79, + 0x64, 0x70, 0x6f, 0x6d, 0x62, 0x6f, 0x64, 0x6f, 0x6c, 0x6f, 0x5c, 0x75, + 0x6d, 0x71, 0x6e, 0x6f, 0x71, 0x6f, 0x6c, 0x6f, 0x73, 0x69, 0x74, 0x6a, + 0x6f, 0x6d, 0x67, 0x6f, 0x6e, 0x6f, 0x6e, 0x6f, 0x68, 0x6b, 0x6d, 0x6e, + 0x6c, 0x6f, 0x70, 0x73, 0x6f, 0x6e, 0x6c, 0x6c, 0x67, 0x6e, 0x72, 0x6e, + 0x6f, 0x72, 0x80, 0x74, 0x6e, 0x73, 0x6f, 0x65, 0x6c, 0x6e, 0x74, 0x6f, + 0x6f, 0x71, 0x6f, 0x71, 0x70, 0x6e, 0x69, 0x6f, 0x71, 0x6f, 0x6e, 0x68, + 0x6b, 0x87, 0x72, 0x6f, 0x6f, 0x69, 0x6d, 0x70, 0x6b, 0x6e, 0x72, 0x6c, + 0x65, 0x70, 0x6e, 0x6f, 0x6b, 0x6f, 0x6b, 0x70, 0x71, 0x6e, 0x6d, 0x65, + 0x71, 0x6f, 0x72, 0x6e, 0x6c, 0x73, 0x6f, 0x70, 0x6f, 0x50, 0x79, 0x70, + 0x72, 0x6e, 0x70, 0x7e, 0x72, 0x65, 0x70, 0x6f, 0x71, 0x65, 0x6f, 0x70, + 0x6d, 0x73, 0x6f, 0x66, 0x7a, 0x6b, 0x75, 0x70, 0x70, 0x71, 0x73, 0x6e, + 0x71, 0x6a, 0x6e, 0x6b, 0x6f, 0x6e, 0x70, 0x6e, 0x74, 0x67, 0x70, 0x6f, + 0x6f, 0x6e, 0x5d, 0x6f, 0x6c, 0x6f, 0x6f, 0x71, 0x71, 0x6b, 0x73, 0x6f, + 0x6f, 0x71, 0x70, 0x72, 0x73, 0x6e, 0x6d, 0x72, 0x60, 0x66, 0x6f, 0x6f, + 0x70, 0x5f, 0x78, 0x6f, 0x6a, 0x79, 0x6f, 0x5a, 0x6c, 0x70, 0x78, 0x6f, + 0x62, 0x77, 0x6d, 0x69, 0x6e, 0x65, 0x6d, 0x6f, 0x73, 0x6c, 0x6e, 0x76, + 0x7e, 0x67, 0x6c, 0x6e, 0x75, 0x6d, 0x6f, 0x6f, 0x67, 0x6e, 0x6f, 0x72, + 0x7a, 0x70, 0x68, 0x6f, 0x6a, 0x6d, 0x62, 0x6a, 0x75, 0x71, 0x6a, 0x67, + 0x6d, 0x6e, 0x6d, 0x70, 0x6f, 0x6f, 0x6f, 0x78, 0x6e, 0x70, 0x67, 0x6e, + 0x6d, 0x70, 0x6e, 0x6a, 0x6f, 0x6e, 0x69, 0x70, 0x6f, 0x70, 0x70, 0x70, + 0x73, 0x71, 0x6f, 0x74, 0x67, 0x6c, 0x68, 0x6e, 0x6f, 0x68, 0x7a, 0x70, + 0x6b, 0x68, 0x71, 0x5f, 0x71, 0x6e, 0x6a, 0x6f, 0x6f, 0x75, 0x70, 0x78, + 0x6e, 0x6a, 0x6a, 0x70, 0x6d, 0x6f, 0x70, 0x6c, 0x6d, 0x6e, 0x68, 0x6e, + 0x6c, 0x6e, 0x70, 0x72, 0x75, 0x72, 0x70, 0x64, 0x75, 0x6a, 0x6f, 0x6f, + 0x6e, 0x6f, 0x72, 0x72, 0x69, 0x74, 0x66, 0x69, 0x77, 0x6f, 0x72, 0x6e, + 0x7c, 0x72, 0x74, 0x6d, 0x6e, 0x77, 0x68, 0x6e, 0x6f, 0x70, 0x6e, 0x67, + 0x74, 0x68, 0x6a, 0x70, 0x73, 0x6b, 0x70, 0x75, 0x67, 0x79, 0x75, 0x5c, + 0x5c, 0x71, 0x6a, 0x71, 0x79, 0x6e, 0x77, 0x69, 0x71, 0x6b, 0x74, 0x66, + 0x70, 0x70, 0x64, 0x6e, 0x72, 0x6f, 0x71, 0x75, 0x6f, 0x6f, 0x68, 0x70, + 0x6d, 0x6f, 0x6f, 0x6e, 0x73, 0x6b, 0x78, 0x6f, 0x6d, 0x78, 0x6e, 0x72, + 0x7a, 0x6d, 0x6d, 0x73, 0x5a, 0x6f, 0x77, 0x6f, 0x6a, 0x65, 0x7d, 0x71, + 0x73, 0x74, 0x6c, 0x65, 0x75, 0x6f, 0x74, 0x6e, 0x6b, 0x71, 0x76, 0x6c, + 0x70, 0x72, 0x6d, 0x6e, 0x75, 0x6f, 0x70, 0x62, 0x6c, 0x77, 0x62, 0x6f, + 0x68, 0x73, 0x6e, 0x6c, 0x69, 0x6a, 0x77, 0x78, 0x67, 0x70, 0x74, 0x6f, + 0x67, 0x6d, 0x62, 0x70, 0x76, 0x6e, 0x70, 0x72, 0x6d, 0x6f, 0x66, 0x70, + 0x70, 0x6c, 0x75, 0x7a, 0x6e, 0x6e, 0x62, 0x70, 0x75, 0x70, 0x6e, 0x6b, + 0x72, 0x77, 0x6c, 0x6e, 0x69, 0x62, 0x6e, 0x71, 0x6c, 0x76, 0x78, 0x7d, + 0x70, 0x6f, 0x73, 0x6f, 0x6e, 0x6b, 0x6c, 0x77, 0x73, 0x5d, 0x68, 0x5d, + 0x75, 0x6f, 0x76, 0x6f, 0x78, 0x67, 0x73, 0x73, 0x6d, 0x70, 0x64, 0x70, + 0x6b, 0x6f, 0x70, 0x61, 0x6f, 0x6f, 0x76, 0x6f, 0x66, 0x7f, 0x70, 0x79, + 0x6f, 0x6c, 0x66, 0x6f, 0x66, 0x6f, 0x70, 0x6e, 0x6c, 0x6c, 0x5c, 0x7a, + 0x70, 0x66, 0x75, 0x62, 0x6b, 0x6e, 0x6c, 0x6e, 0x77, 0x69, 0x6e, 0x73, + 0x70, 0x6e, 0x6e, 0x70, 0x6f, 0x6f, 0x6f, 0x6d, 0x67, 0x7d, 0x7c, 0x70, + 0x6c, 0x67, 0x6e, 0x75, 0x78, 0x6d, 0x6a, 0x71, 0x74, 0x70, 0x69, 0x6e, + 0x6e, 0x71, 0x64, 0x6d, 0x72, 0x74, 0x71, 0x61, 0x71, 0x6e, 0x71, 0x6f, + 0x6b, 0x70, 0x70, 0x73, 0x70, 0x6c, 0x77, 0x70, 0x6f, 0x6f, 0x70, 0x7b, + 0x71, 0x65, 0x64, 0x6f, 0x72, 0x6b, 0x6f, 0x6e, 0x67, 0x72, 0x6f, 0x79, + 0x70, 0x68, 0x73, 0x6f, 0x6f, 0x6e, 0x6d, 0x76, 0x7a, 0x76, 0x67, 0x79, + 0x71, 0x6e, 0x76, 0x6e, 0x70, 0x6b, 0x6d, 0x67, 0x6f, 0x6f, 0x7d, 0x70, + 0x6f, 0x6f, 0x6f, 0x6c, 0x74, 0x76, 0x75, 0x6e, 0x72, 0x7b, 0x6f, 0x6c, + 0x69, 0x71, 0x6b, 0x77, 0x72, 0x6a, 0x6c, 0x6e, 0x76, 0x6e, 0x69, 0x70, + 0x71, 0x77, 0x69, 0x58, 0x70, 0x6e, 0x76, 0x6e, 0x67, 0x6f, 0x72, 0x71, + 0x6f, 0x60, 0x61, 0x6f, 0x6c, 0x6f, 0x70, 0x72, 0x75, 0x6f, 0x6d, 0x6f, + 0x72, 0x66, 0x6e, 0x72, 0x66, 0x70, 0x71, 0x6f, 0x6f, 0x6e, 0x73, 0x70, + 0x6e, 0x63, 0x75, 0x71, 0x79, 0x69, 0x6d, 0x67, 0x6f, 0x70, 0x6c, 0x70, + 0x75, 0x78, 0x70, 0x78, 0x6f, 0x76, 0x69, 0x70, 0x6d, 0x6f, 0x70, 0x85, + 0x68, 0x73, 0x6c, 0x70, 0x6f, 0x71, 0x6f, 0x76, 0x6f, 0x6f, 0x6f, 0x72, + 0x70, 0x6e, 0x66, 0x70, 0x72, 0x7d, 0x8c, 0x76, 0x75, 0x6e, 0x6d, 0x70, + 0x6f, 0x70, 0x6f, 0x6f, 0x71, 0x6e, 0x6e, 0x73, 0x70, 0x72, 0x56, 0x70, + 0x6e, 0x6f, 0x6e, 0x6a, 0x6c, 0x75, 0x73, 0x70, 0x6d, 0x73, 0x70, 0x71, + 0x6e, 0x70, 0x70, 0x74, 0x61, 0x6d, 0x73, 0x6f, 0x6f, 0x61, 0x75, 0x71, + 0x6e, 0x5a, 0x71, 0x6d, 0x6c, 0x6e, 0x6b, 0x6f, 0x77, 0x71, 0x6d, 0x76, + 0x6e, 0x6a, 0x69, 0x6e, 0x71, 0x6f, 0x6f, 0x78, 0x72, 0x76, 0x77, 0x70, + 0x6c, 0x70, 0x6f, 0x73, 0x76, 0x70, 0x6b, 0x75, 0x63, 0x6f, 0x74, 0x71, + 0x6f, 0x75, 0x82, 0x6c, 0x77, 0x68, 0x68, 0x59, 0x6e, 0x6f, 0x68, 0x6e, + 0x80, 0x73, 0x73, 0x6c, 0x6f, 0x74, 0x6b, 0x70, 0x70, 0x6e, 0x70, 0x65, + 0x6d, 0x6b, 0x73, 0x6e, 0x6d, 0x73, 0x70, 0x77, 0x6f, 0x6d, 0x69, 0x74, + 0x60, 0x6c, 0x6d, 0x70, 0x7b, 0x6a, 0x71, 0x71, 0x68, 0x6a, 0x74, 0x6c, + 0x70, 0x6f, 0x71, 0x6e, 0x6e, 0x6b, 0x72, 0x68, 0x6f, 0x6c, 0x60, 0x70, + 0x71, 0x6f, 0x70, 0x70, 0x6d, 0x73, 0x72, 0x70, 0x6e, 0x77, 0x6e, 0x6f, + 0x67, 0x69, 0x6f, 0x6d, 0x75, 0x70, 0x6e, 0x6f, 0x64, 0x63, 0x6c, 0x6e, + 0x73, 0x69, 0x70, 0x6e, 0x6f, 0x6f, 0x6e, 0x6f, 0x6d, 0x70, 0x6f, 0x73, + 0x70, 0x70, 0x6a, 0x6e, 0x72, 0x6f, 0x6f, 0x6f, 0x6a, 0x6c, 0x68, 0x70, + 0x71, 0x77, 0x6e, 0x6e, 0x71, 0x6a, 0x6e, 0x78, 0x6d, 0x6e, 0x78, 0x6e, + 0x6b, 0x6c, 0x78, 0x6f, 0x71, 0x72, 0x67, 0x71, 0x74, 0x6f, 0x66, 0x6e, + 0x72, 0x6d, 0x77, 0x71, 0x6e, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x6e, 0x5f, + 0x73, 0x6f, 0x77, 0x6e, 0x6c, 0x71, 0x6f, 0x6f, 0x6e, 0x6b, 0x71, 0x70, + 0x70, 0x6f, 0x69, 0x70, 0x65, 0x62, 0x6d, 0x73, 0x6d, 0x6d, 0x76, 0x64, + 0x78, 0x70, 0x6c, 0x70, 0x70, 0x6c, 0x6f, 0x6a, 0x6f, 0x5d, 0x6b, 0x70, + 0x70, 0x6e, 0x70, 0x67, 0x72, 0x6e, 0x62, 0x70, 0x70, 0x6f, 0x6f, 0x6f, + 0x75, 0x74, 0x72, 0x7a, 0x70, 0x6e, 0x78, 0x6e, 0x76, 0x71, 0x79, 0x71, + 0x65, 0x70, 0x65, 0x68, 0x73, 0x6e, 0x76, 0x6e, 0x73, 0x6a, 0x71, 0x6d, + 0x6e, 0x65, 0x6b, 0x6e, 0x72, 0x70, 0x6f, 0x68, 0x72, 0x6d, 0x6d, 0x6f, + 0x6e, 0x6d, 0x70, 0x70, 0x65, 0x72, 0x6f, 0x61, 0x69, 0x70, 0x65, 0x70, + 0x73, 0x6e, 0x5c, 0x6d, 0x67, 0x75, 0x6a, 0x5b, 0x6b, 0x6f, 0x72, 0x6e, + 0x70, 0x73, 0x6b, 0x69, 0x6f, 0x6c, 0x74, 0x6f, 0x6d, 0x6f, 0x6e, 0x62, + 0x6a, 0x63, 0x72, 0x70, 0x6b, 0x74, 0x6f, 0x6f, 0x6a, 0x6b, 0x6c, 0x79, + 0x6a, 0x6a, 0x66, 0x70, 0x6e, 0x6f, 0x4f, 0x6a, 0x63, 0x74, 0x6a, 0x57, + 0x79, 0x70, 0x74, 0x70, 0x70, 0x69, 0x72, 0x6f, 0x6f, 0x6b, 0x6d, 0x6d, + 0x6b, 0x6f, 0x70, 0x76, 0x75, 0x76, 0x5f, 0x6e, 0x6d, 0x77, 0x6e, 0x6e, + 0x6b, 0x67, 0x70, 0x75, 0x6a, 0x6d, 0x69, 0x6e, 0x6c, 0x70, 0x5e, 0x70, + 0x5e, 0x67, 0x6d, 0x79, 0x6b, 0x6f, 0x73, 0x6f, 0x6c, 0x6f, 0x6d, 0x70, + 0x6e, 0x63, 0x59, 0x6e, 0x6f, 0x6f, 0x6e, 0x6b, 0x5c, 0x73, 0x5d, 0x70, + 0x6c, 0x64, 0x6f, 0x6b, 0x6a, 0x70, 0x70, 0x68, 0x66, 0x62, 0x6d, 0x6e, + 0x71, 0x5e, 0x6e, 0x68, 0x7a, 0x64, 0x6a, 0x6a, 0x71, 0x6f, 0x6e, 0x6e, + 0x74, 0x6d, 0x74, 0x74, 0x6e, 0x72, 0x76, 0x6f, 0x72, 0x70, 0x6f, 0x72, + 0x65, 0x70, 0x6d, 0x6f, 0x71, 0x75, 0x70, 0x74, 0x67, 0x6c, 0x72, 0x75, + 0x5f, 0x70, 0x6b, 0x70, 0x74, 0x6f, 0x81, 0x73, 0x75, 0x74, 0x6b, 0x60, + 0x6d, 0x6f, 0x6f, 0x70, 0x76, 0x74, 0x72, 0x73, 0x71, 0x73, 0x75, 0x70, + 0x6e, 0x6e, 0x6f, 0x6e, 0x6e, 0x6f, 0x68, 0x6e, 0x69, 0x6b, 0x6e, 0x70, + 0x70, 0x70, 0x6f, 0x73, 0x67, 0x6d, 0x6d, 0x6e, 0x72, 0x6e, 0x71, 0x70, + 0x6f, 0x6c, 0x6f, 0x64, 0x6d, 0x6e, 0x6e, 0x6e, 0x6d, 0x6c, 0x71, 0x74, + 0x70, 0x69, 0x69, 0x6f, 0x6b, 0x70, 0x70, 0x7a, 0x70, 0x6f, 0x77, 0x6e, + 0x6f, 0x66, 0x6e, 0x73, 0x73, 0x6d, 0x70, 0x71, 0x69, 0x70, 0x6c, 0x6f, + 0x6c, 0x71, 0x76, 0x72, 0x6a, 0x72, 0x72, 0x61, 0x6a, 0x6d, 0x80, 0x70, + 0x66, 0x74, 0x6e, 0x6f, 0x70, 0x6f, 0x6a, 0x6e, 0x72, 0x6f, 0x70, 0x65, + 0x6a, 0x82, 0x6a, 0x70, 0x6c, 0x5d, 0x70, 0x72, 0x63, 0x6d, 0x74, 0x72, + 0x69, 0x6e, 0x6c, 0x6f, 0x6b, 0x6e, 0x64, 0x6c, 0x75, 0x70, 0x6b, 0x5e, + 0x6b, 0x70, 0x72, 0x6f, 0x79, 0x72, 0x69, 0x6d, 0x6e, 0x72, 0x6a, 0x6f, + 0x7b, 0x70, 0x70, 0x63, 0x6e, 0x75, 0x80, 0x70, 0x6b, 0x74, 0x6e, 0x77, + 0x71, 0x6d, 0x6a, 0x6b, 0x61, 0x6e, 0x6a, 0x70, 0x72, 0x6e, 0x6f, 0x6b, + 0x72, 0x6f, 0x6c, 0x67, 0x6c, 0x70, 0x76, 0x70, 0x70, 0x6b, 0x6c, 0x70, + 0x6e, 0x6f, 0x65, 0x70, 0x74, 0x6e, 0x70, 0x6f, 0x6a, 0x75, 0x6d, 0x6e, + 0x79, 0x66, 0x70, 0x73, 0x68, 0x6e, 0x69, 0x71, 0x66, 0x66, 0x68, 0x70, + 0x70, 0x6b, 0x76, 0x6c, 0x5e, 0x65, 0x6c, 0x7b, 0x72, 0x70, 0x73, 0x70, + 0x6e, 0x6d, 0x6e, 0x68, 0x6f, 0x70, 0x5c, 0x70, 0x6a, 0x6f, 0x70, 0x55, + 0x69, 0x7b, 0x6f, 0x6f, 0x69, 0x78, 0x70, 0x6c, 0x6a, 0x6b, 0x6d, 0x67, + 0x4e, 0x67, 0x73, 0x6f, 0x6d, 0x67, 0x6c, 0x6a, 0x66, 0x7b, 0x74, 0x64, + 0x66, 0x6f, 0x71, 0x6e, 0x74, 0x72, 0x68, 0x77, 0x70, 0x66, 0x6c, 0x6e, + 0x6f, 0x6c, 0x70, 0x6a, 0x62, 0x66, 0x77, 0x70, 0x6e, 0x73, 0x70, 0x74, + 0x72, 0x71, 0x73, 0x77, 0x6f, 0x6e, 0x78, 0x6e, 0x73, 0x70, 0x61, 0x68, + 0x74, 0x6f, 0x6b, 0x5c, 0x72, 0x70, 0x74, 0x6f, 0x83, 0x6e, 0x74, 0x74, + 0x6f, 0x79, 0x69, 0x6e, 0x6b, 0x6f, 0x6e, 0x60, 0x68, 0x79, 0x71, 0x70, + 0x6a, 0x78, 0x6e, 0x7a, 0x70, 0x70, 0x6c, 0x76, 0x50, 0x6f, 0x62, 0x6f, + 0x70, 0x6f, 0x7a, 0x73, 0x68, 0x70, 0x6b, 0x68, 0x6f, 0x6e, 0x73, 0x6e, + 0x6f, 0x6e, 0x6d, 0x6b, 0x70, 0x69, 0x65, 0x6f, 0x70, 0x6f, 0x6f, 0x65, + 0x6f, 0x74, 0x69, 0x6f, 0x6c, 0x70, 0x70, 0x6d, 0x6a, 0x70, 0x68, 0x6e, + 0x62, 0x6e, 0x71, 0x70, 0x73, 0x6b, 0x6e, 0x6b, 0x6b, 0x70, 0x6c, 0x6e, + 0x6f, 0x6e, 0x69, 0x6f, 0x76, 0x6b, 0x6e, 0x63, 0x6f, 0x69, 0x70, 0x70, + 0x6a, 0x6e, 0x6f, 0x74, 0x7a, 0x6e, 0x6a, 0x6f, 0x6b, 0x7e, 0x6e, 0x6e, + 0x6e, 0x6e, 0x67, 0x70, 0x75, 0x6e, 0x6c, 0x6e, 0x79, 0x74, 0x60, 0x6e, + 0x69, 0x6d, 0x75, 0x71, 0x6d, 0x6f, 0x6c, 0x6e, 0x68, 0x70, 0x6d, 0x6b, + 0x70, 0x70, 0x65, 0x6f, 0x6e, 0x6f, 0x70, 0x64, 0x70, 0x75, 0x70, 0x70, + 0x6c, 0x6b, 0x6f, 0x69, 0x76, 0x6e, 0x74, 0x6b, 0x67, 0x69, 0x71, 0x6f, + 0x6e, 0x65, 0x69, 0x6b, 0x75, 0x70, 0x70, 0x6e, 0x70, 0x6d, 0x78, 0x6e, + 0x6e, 0x73, 0x6c, 0x6f, 0x70, 0x6c, 0x73, 0x6f, 0x70, 0x6f, 0x70, 0x63, + 0x64, 0x83, 0x79, 0x70, 0x75, 0x71, 0x6e, 0x6c, 0x6f, 0x6f, 0x6f, 0x66, + 0x5d, 0x68, 0x70, 0x6e, 0x70, 0x71, 0x75, 0x6e, 0x6f, 0x88, 0x62, 0x86, + 0x72, 0x6f, 0x6e, 0x6f, 0x75, 0x78, 0x70, 0x6a, 0x6f, 0x8b, 0x6f, 0x6f, + 0x6d, 0x6e, 0x6f, 0x78, 0x6b, 0x70, 0x73, 0x6e, 0x77, 0x74, 0x70, 0x6b, + 0x6e, 0x7a, 0x7a, 0x72, 0x5a, 0x6d, 0x74, 0x70, 0x71, 0x6f, 0x77, 0x6e, + 0x77, 0x44, 0x73, 0x5d, 0x6e, 0x6f, 0x7d, 0x6e, 0x6c, 0x78, 0x70, 0x77, + 0x6f, 0x82, 0x6e, 0x6f, 0x72, 0x6e, 0x6f, 0x64, 0x63, 0x6f, 0x65, 0x6f, + 0x70, 0x6b, 0x6e, 0x75, 0x70, 0x6d, 0x75, 0x67, 0x5a, 0x6c, 0x81, 0x6e, + 0x70, 0x6e, 0x55, 0x72, 0x73, 0x71, 0x6f, 0x68, 0x6e, 0x6f, 0x7a, 0x6f, + 0x6e, 0x6e, 0x6b, 0x6b, 0x70, 0x70, 0x70, 0x6f, 0x76, 0x70, 0x6f, 0x73, + 0x63, 0x83, 0x7d, 0x6e, 0x70, 0x6e, 0x6d, 0x6b, 0x68, 0x70, 0x69, 0x78, + 0x6b, 0x71, 0x69, 0x6f, 0x6a, 0x6e, 0x73, 0x6b, 0x68, 0x62, 0x66, 0x71, + 0x6d, 0x6e, 0x67, 0x6f, 0x70, 0x73, 0x71, 0x69, 0x70, 0x58, 0x66, 0x6f, + 0x71, 0x6f, 0x70, 0x70, 0x73, 0x72, 0x84, 0x70, 0x6f, 0x6b, 0x6f, 0x71, + 0x6e, 0x70, 0x72, 0x79, 0x7c, 0x6f, 0x6e, 0x70, 0x61, 0x6f, 0x62, 0x73, + 0x69, 0x7f, 0x61, 0x64, 0x6c, 0x6e, 0x77, 0x70, 0x64, 0x6b, 0x74, 0x71, + 0x6f, 0x63, 0x70, 0x6e, 0x70, 0x6e, 0x6f, 0x6d, 0x75, 0x71, 0x79, 0x6d, + 0x72, 0x6b, 0x6f, 0x72, 0x64, 0x70, 0x75, 0x66, 0x62, 0x6f, 0x68, 0x6e, + 0x72, 0x66, 0x67, 0x6d, 0x73, 0x63, 0x6f, 0x6c, 0x6d, 0x6e, 0x74, 0x6f, + 0x70, 0x70, 0x72, 0x72, 0x6e, 0x6a, 0x6a, 0x6e, 0x6b, 0x6f, 0x70, 0x74, + 0x74, 0x6b, 0x74, 0x71, 0x69, 0x70, 0x6f, 0x74, 0x71, 0x75, 0x71, 0x68, + 0x74, 0x6c, 0x69, 0x70, 0x6f, 0x73, 0x7a, 0x71, 0x5f, 0x6e, 0x6f, 0x79, + 0x6e, 0x6f, 0x71, 0x6e, 0x76, 0x65, 0x75, 0x6e, 0x70, 0x6c, 0x65, 0x70, + 0x6c, 0x6e, 0x6e, 0x70, 0x6c, 0x74, 0x76, 0x70, 0x6f, 0x6f, 0x6e, 0x71, + 0x6d, 0x6a, 0x75, 0x6c, 0x5c, 0x6d, 0x80, 0x70, 0x6a, 0x6c, 0x5f, 0x74, + 0x5c, 0x6b, 0x71, 0x82, 0x6c, 0x6f, 0x6b, 0x6f, 0x6b, 0x76, 0x6e, 0x6a, + 0x70, 0x6d, 0x5c, 0x70, 0x6f, 0x6e, 0x6e, 0x82, 0x7b, 0x66, 0x7c, 0x70, + 0x68, 0x5e, 0x70, 0x6f, 0x6a, 0x70, 0x73, 0x6a, 0x73, 0x70, 0x76, 0x6f, + 0x6d, 0x64, 0x62, 0x67, 0x6e, 0x6a, 0x73, 0x63, 0x6e, 0x6f, 0x6c, 0x6f, + 0x6e, 0x6e, 0x70, 0x70, 0x6f, 0x6e, 0x65, 0x6f, 0x70, 0x6f, 0x6e, 0x74, + 0x6f, 0x68, 0x6f, 0x6e, 0x6e, 0x70, 0x6e, 0x71, 0x73, 0x6d, 0x70, 0x6d, + 0x77, 0x6d, 0x71, 0x70, 0x6e, 0x6e, 0x5b, 0x6f, 0x6f, 0x73, 0x66, 0x68, + 0x6e, 0x6e, 0x70, 0x6e, 0x71, 0x78, 0x72, 0x6e, 0x6e, 0x77, 0x77, 0x6e, + 0x72, 0x6f, 0x6f, 0x6e, 0x70, 0x73, 0x64, 0x70, 0x6d, 0x72, 0x70, 0x74, + 0x6a, 0x6f, 0x70, 0x6d, 0x66, 0x6e, 0x67, 0x6f, 0x70, 0x6b, 0x71, 0x6b, + 0x6d, 0x6e, 0x6e, 0x6a, 0x6d, 0x6e, 0x70, 0x6f, 0x77, 0x70, 0x6f, 0x72, + 0x6e, 0x6e, 0x6a, 0x6f, 0x74, 0x6e, 0x6f, 0x6d, 0x69, 0x7a, 0x73, 0x6e, + 0x67, 0x71, 0x6e, 0x75, 0x6f, 0x6d, 0x6b, 0x74, 0x57, 0x6f, 0x72, 0x6e, + 0x71, 0x69, 0x74, 0x6d, 0x76, 0x72, 0x70, 0x6b, 0x71, 0x71, 0x6a, 0x70, + 0x73, 0x6f, 0x71, 0x71, 0x6f, 0x6a, 0x78, 0x70, 0x70, 0x70, 0x6f, 0x78, + 0x6f, 0x7d, 0x71, 0x6e, 0x6f, 0x73, 0x6e, 0x71, 0x6d, 0x70, 0x70, 0x7c, + 0x6a, 0x77, 0x72, 0x6e, 0x70, 0x6b, 0x75, 0x71, 0x72, 0x75, 0x6e, 0x61, + 0x6f, 0x6e, 0x70, 0x6f, 0x75, 0x74, 0x74, 0x74, 0x70, 0x76, 0x66, 0x6e, + 0x6e, 0x6f, 0x6f, 0x62, 0x69, 0x66, 0x7a, 0x70, 0x6f, 0x71, 0x70, 0x70, + 0x66, 0x71, 0x78, 0x6b, 0x5a, 0x6f, 0x69, 0x6e, 0x6f, 0x6f, 0x7f, 0x72, + 0x71, 0x6c, 0x6f, 0x71, 0x6e, 0x6f, 0x73, 0x70, 0x70, 0x71, 0x71, 0x76, + 0x70, 0x6c, 0x69, 0x70, 0x6f, 0x6e, 0x70, 0x69, 0x69, 0x87, 0x77, 0x6e, + 0x6e, 0x6d, 0x6e, 0x72, 0x70, 0x6d, 0x71, 0x71, 0x65, 0x6d, 0x6b, 0x70, + 0x6d, 0x6f, 0x6a, 0x72, 0x70, 0x6b, 0x72, 0x6c, 0x6f, 0x70, 0x6c, 0x6f, + 0x77, 0x6d, 0x73, 0x78, 0x6e, 0x6d, 0x66, 0x6f, 0x6b, 0x6f, 0x70, 0x66, + 0x6d, 0x79, 0x7d, 0x6f, 0x67, 0x6b, 0x6e, 0x76, 0x6a, 0x73, 0x6e, 0x70, + 0x61, 0x71, 0x6e, 0x6f, 0x6f, 0x6e, 0x72, 0x77, 0x79, 0x7a, 0x75, 0x6e, + 0x6e, 0x70, 0x6f, 0x70, 0x6a, 0x6e, 0x6f, 0x70, 0x6f, 0x66, 0x72, 0x6d, + 0x73, 0x6e, 0x70, 0x73, 0x71, 0x67, 0x6f, 0x70, 0x74, 0x6a, 0x6f, 0x6d, + 0x70, 0x6f, 0x71, 0x6c, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x6f, 0x58, 0x70, + 0x67, 0x66, 0x68, 0x6f, 0x7d, 0x6e, 0x65, 0x70, 0x71, 0x63, 0x7b, 0x76, + 0x70, 0x64, 0x5f, 0x6f, 0x6f, 0x6f, 0x70, 0x6e, 0x7d, 0x6f, 0x63, 0x6f, + 0x71, 0x74, 0x70, 0x73, 0x64, 0x63, 0x74, 0x54, 0x64, 0x6e, 0x7e, 0x70, + 0x64, 0x64, 0x6f, 0x76, 0x78, 0x65, 0x5b, 0x62, 0x6e, 0x6f, 0x6b, 0x6f, + 0x7d, 0x6b, 0x76, 0x6c, 0x6f, 0x7b, 0x68, 0x6e, 0x6b, 0x6e, 0x6f, 0x6b, + 0x77, 0x6a, 0x74, 0x71, 0x6b, 0x7c, 0x6e, 0x77, 0x70, 0x6d, 0x67, 0x74, + 0x5f, 0x70, 0x61, 0x6f, 0x76, 0x6e, 0x7e, 0x79, 0x75, 0x72, 0x6b, 0x6d, + 0x6d, 0x70, 0x73, 0x6e, 0x72, 0x6c, 0x73, 0x79, 0x70, 0x6d, 0x6b, 0x70, + 0x6c, 0x6f, 0x70, 0x72, 0x6b, 0x74, 0x69, 0x6f, 0x6c, 0x64, 0x70, 0x77, + 0x65, 0x74, 0x70, 0x69, 0x55, 0x6c, 0x5c, 0x70, 0x7c, 0x6f, 0x7f, 0x70, + 0x5e, 0x71, 0x57, 0x94, 0x68, 0x6e, 0x7d, 0x6e, 0x82, 0x6a, 0x6f, 0x78, + 0x70, 0x68, 0x5e, 0x70, 0x7b, 0x70, 0x70, 0x5f, 0x5c, 0x70, 0x6b, 0x70, + 0x65, 0x68, 0x70, 0x78, 0x58, 0x79, 0x77, 0x38, 0x59, 0x6b, 0x7b, 0x6f, + 0x85, 0x6d, 0x68, 0x70, 0x71, 0x77, 0x6e, 0x5c, 0x6f, 0x6f, 0x62, 0x70, + 0x7b, 0x77, 0x74, 0x6e, 0x70, 0x7b, 0x6c, 0x6f, 0x6e, 0x6e, 0x6f, 0x62, + 0x65, 0x75, 0x70, 0x6f, 0x6d, 0x78, 0x6e, 0x75, 0x6f, 0x6e, 0x6d, 0x72, + 0x54, 0x6c, 0x5d, 0x6e, 0x70, 0x72, 0x74, 0x6c, 0x6b, 0x70, 0x67, 0x69, + 0x73, 0x6f, 0x75, 0x6f, 0x68, 0x73, 0x72, 0x70, 0x6f, 0x6e, 0x6c, 0x70, + 0x6e, 0x6e, 0x6f, 0x71, 0x70, 0x7d, 0x6d, 0x6f, 0x6e, 0x74, 0x70, 0x6d, + 0x63, 0x6e, 0x70, 0x67, 0x6d, 0x6c, 0x6c, 0x6e, 0x63, 0x6e, 0x6b, 0x75, + 0x6e, 0x6d, 0x74, 0x62, 0x6d, 0x6e, 0x7b, 0x70, 0x6e, 0x73, 0x70, 0x70, + 0x70, 0x69, 0x7d, 0x70, 0x70, 0x6f, 0x70, 0x79, 0x6f, 0x6c, 0x6a, 0x6e, + 0x6b, 0x63, 0x70, 0x78, 0x71, 0x70, 0x6d, 0x6d, 0x75, 0x6d, 0x6b, 0x70, + 0x70, 0x6e, 0x6f, 0x71, 0x63, 0x7b, 0x73, 0x68, 0x6b, 0x6e, 0x72, 0x70, + 0x68, 0x71, 0x76, 0x6a, 0x6f, 0x75, 0x71, 0x6f, 0x63, 0x70, 0x6f, 0x63, + 0x72, 0x6e, 0x5e, 0x6e, 0x73, 0x6f, 0x6f, 0x72, 0x72, 0x74, 0x72, 0x6c, + 0x5f, 0x6f, 0x6c, 0x70, 0x60, 0x6f, 0x77, 0x6b, 0x71, 0x71, 0x6c, 0x5c, + 0x6b, 0x6e, 0x71, 0x70, 0x7d, 0x78, 0x6f, 0x78, 0x70, 0x72, 0x70, 0x6f, + 0x70, 0x6e, 0x70, 0x75, 0x78, 0x64, 0x63, 0x70, 0x6e, 0x6f, 0x6e, 0x75, + 0x60, 0x68, 0x69, 0x66, 0x6d, 0x6d, 0x61, 0x6f, 0x76, 0x6e, 0x74, 0x75, + 0x71, 0x72, 0x71, 0x65, 0x74, 0x70, 0x76, 0x6d, 0x6d, 0x71, 0x6f, 0x70, + 0x6f, 0x69, 0x69, 0x6e, 0x71, 0x6f, 0x70, 0x7a, 0x6d, 0x6f, 0x71, 0x70, + 0x6f, 0x75, 0x70, 0x6e, 0x6e, 0x6d, 0x6c, 0x73, 0x70, 0x72, 0x71, 0x70, + 0x6e, 0x6b, 0x79, 0x70, 0x6d, 0x77, 0x70, 0x57, 0x6f, 0x6e, 0x6d, 0x70, + 0x6a, 0x70, 0x6d, 0x6f, 0x6e, 0x5c, 0x6a, 0x70, 0x75, 0x6e, 0x70, 0x79, + 0x6b, 0x79, 0x6e, 0x6e, 0x6d, 0x7b, 0x6e, 0x6a, 0x6b, 0x6e, 0x71, 0x72, + 0x74, 0x77, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x72, 0x70, 0x75, 0x62, 0x61, + 0x6d, 0x6f, 0x86, 0x70, 0x75, 0x75, 0x6f, 0x6f, 0x70, 0x6f, 0x63, 0x6f, + 0x6f, 0x6e, 0x6f, 0x6c, 0x5e, 0x67, 0x61, 0x70, 0x6c, 0x6f, 0x6f, 0x74, + 0x6a, 0x6c, 0x74, 0x72, 0x64, 0x6c, 0x6b, 0x6f, 0x6d, 0x6d, 0x72, 0x6e, + 0x6f, 0x6c, 0x74, 0x66, 0x72, 0x6f, 0x73, 0x6f, 0x72, 0x77, 0x70, 0x6f, + 0x6e, 0x71, 0x6e, 0x6e, 0x72, 0x6f, 0x6f, 0x6f, 0x6a, 0x71, 0x72, 0x71, + 0x6e, 0x71, 0x6e, 0x6d, 0x6d, 0x6f, 0x75, 0x79, 0x6a, 0x6f, 0x79, 0x6f, + 0x6d, 0x6e, 0x6d, 0x6d, 0x63, 0x6d, 0x69, 0x67, 0x6b, 0x70, 0x70, 0x6e, + 0x6b, 0x72, 0x6b, 0x72, 0x70, 0x74, 0x64, 0x70, 0x6c, 0x6f, 0x6e, 0x64, + 0x68, 0x7b, 0x6e, 0x70, 0x6a, 0x6c, 0x6e, 0x6f, 0x6e, 0x71, 0x6a, 0x6a, + 0x6a, 0x6c, 0x6f, 0x6e, 0x6d, 0x6b, 0x79, 0x6e, 0x6b, 0x6f, 0x77, 0x74, + 0x69, 0x70, 0x77, 0x6e, 0x78, 0x69, 0x78, 0x76, 0x70, 0x66, 0x69, 0x70, + 0x7c, 0x6e, 0x6e, 0x6a, 0x6c, 0x71, 0x66, 0x6f, 0x6e, 0x78, 0x70, 0x78, + 0x67, 0x73, 0x6d, 0x64, 0x66, 0x6e, 0x70, 0x6e, 0x6d, 0x6d, 0x71, 0x75, + 0x71, 0x75, 0x70, 0x6f, 0x6f, 0x6e, 0x74, 0x6e, 0x6d, 0x70, 0x6f, 0x69, + 0x70, 0x68, 0x70, 0x70, 0x77, 0x6f, 0x70, 0x74, 0x64, 0x67, 0x76, 0x71, + 0x75, 0x68, 0x6e, 0x6d, 0x66, 0x71, 0x6d, 0x6f, 0x65, 0x6d, 0x7a, 0x6e, + 0x72, 0x67, 0x74, 0x6d, 0x6d, 0x63, 0x6e, 0x5e, 0x69, 0x70, 0x7f, 0x6f, + 0x67, 0x78, 0x75, 0x75, 0x70, 0x70, 0x6e, 0x6f, 0x6f, 0x71, 0x70, 0x62, + 0x6f, 0x6d, 0x64, 0x6e, 0x71, 0x70, 0x70, 0x79, 0x5e, 0x6d, 0x76, 0x6d, + 0x53, 0x70, 0x72, 0x6e, 0x7a, 0x6d, 0x7a, 0x71, 0x65, 0x73, 0x75, 0x69, + 0x73, 0x6e, 0x70, 0x6f, 0x6d, 0x6f, 0x6e, 0x65, 0x6e, 0x67, 0x6d, 0x6f, + 0x70, 0x70, 0x6f, 0x6f, 0x71, 0x66, 0x76, 0x70, 0x6d, 0x76, 0x70, 0x6b, + 0x76, 0x68, 0x72, 0x74, 0x65, 0x6f, 0x72, 0x70, 0x6e, 0x70, 0x65, 0x71, + 0x6e, 0x6f, 0x72, 0x6f, 0x70, 0x6d, 0x70, 0x70, 0x6b, 0x6e, 0x71, 0x6e, + 0x6e, 0x6b, 0x65, 0x70, 0x6b, 0x6f, 0x70, 0x66, 0x7b, 0x79, 0x73, 0x70, + 0x6f, 0x73, 0x6e, 0x6e, 0x74, 0x6f, 0x70, 0x6f, 0x6c, 0x74, 0x68, 0x6e, + 0x6b, 0x7e, 0x69, 0x70, 0x6e, 0x69, 0x65, 0x66, 0x70, 0x6e, 0x7b, 0x6e, + 0x6d, 0x73, 0x78, 0x6b, 0x6e, 0x59, 0x6f, 0x6e, 0x75, 0x71, 0x70, 0x67, + 0x73, 0x70, 0x5e, 0x70, 0x76, 0x6c, 0x6f, 0x76, 0x63, 0x6c, 0x72, 0x62, + 0x5d, 0x70, 0x72, 0x70, 0x71, 0x70, 0x74, 0x74, 0x6c, 0x6a, 0x64, 0x61, + 0x6f, 0x6e, 0x76, 0x6e, 0x74, 0x79, 0x77, 0x78, 0x6f, 0x6d, 0x69, 0x71, + 0x6e, 0x6f, 0x70, 0x65, 0x6f, 0x76, 0x77, 0x6e, 0x70, 0x67, 0x70, 0x79, + 0x6b, 0x77, 0x71, 0x6c, 0x5e, 0x6d, 0x77, 0x70, 0x79, 0x6d, 0x74, 0x74, + 0x75, 0x6d, 0x6c, 0x6a, 0x71, 0x6f, 0x63, 0x70, 0x79, 0x6e, 0x75, 0x70, + 0x70, 0x74, 0x70, 0x6e, 0x69, 0x6f, 0x6f, 0x64, 0x72, 0x72, 0x76, 0x6f, + 0x6f, 0x76, 0x6f, 0x73, 0x6f, 0x6a, 0x70, 0x74, 0x57, 0x6f, 0x68, 0x6e, + 0x71, 0x71, 0x7a, 0x74, 0x75, 0x74, 0x70, 0x6c, 0x6d, 0x6f, 0x74, 0x6f, + 0x6e, 0x72, 0x6e, 0x6e, 0x6f, 0x6d, 0x62, 0x6e, 0x70, 0x6f, 0x6e, 0x6a, + 0x6e, 0x66, 0x70, 0x6e, 0x6e, 0x67, 0x6f, 0x72, 0x6a, 0x6f, 0x6e, 0x79, + 0x6b, 0x72, 0x6e, 0x6e, 0x72, 0x6b, 0x6d, 0x6f, 0x6e, 0x69, 0x67, 0x72, + 0x6a, 0x70, 0x70, 0x70, 0x7b, 0x72, 0x6c, 0x76, 0x6e, 0x74, 0x6a, 0x6f, + 0x6b, 0x6f, 0x70, 0x63, 0x6a, 0x81, 0x71, 0x70, 0x6f, 0x73, 0x6f, 0x79, + 0x6c, 0x6d, 0x68, 0x71, 0x5b, 0x70, 0x6b, 0x70, 0x75, 0x6b, 0x77, 0x73, + 0x72, 0x6e, 0x75, 0x58, 0x6f, 0x6e, 0x71, 0x70, 0x69, 0x77, 0x71, 0x71, + 0x70, 0x68, 0x6c, 0x70, 0x6a, 0x6f, 0x70, 0x65, 0x6d, 0x74, 0x65, 0x70, + 0x6a, 0x67, 0x70, 0x6f, 0x6a, 0x71, 0x74, 0x77, 0x6d, 0x6a, 0x6e, 0x6e, + 0x6b, 0x6e, 0x7c, 0x77, 0x75, 0x66, 0x70, 0x72, 0x6f, 0x6e, 0x73, 0x70, + 0x73, 0x6d, 0x6f, 0x73, 0x6e, 0x72, 0x60, 0x6e, 0x6d, 0x70, 0x6f, 0x5a, + 0x71, 0x75, 0x6e, 0x6d, 0x6e, 0x73, 0x70, 0x71, 0x6f, 0x6f, 0x70, 0x70, + 0x53, 0x6b, 0x6c, 0x6f, 0x72, 0x65, 0x73, 0x70, 0x68, 0x5d, 0x72, 0x54, + 0x6d, 0x6e, 0x62, 0x6f, 0x6f, 0x69, 0x70, 0x6f, 0x6f, 0x70, 0x5f, 0x6e, + 0x69, 0x6f, 0x70, 0x5e, 0x72, 0x6f, 0x76, 0x6d, 0x6d, 0x6e, 0x6e, 0x70, + 0x7c, 0x6d, 0x6d, 0x65, 0x69, 0x69, 0x63, 0x70, 0x6f, 0x79, 0x70, 0x6e, + 0x6f, 0x6e, 0x6e, 0x6d, 0x6d, 0x6e, 0x71, 0x71, 0x6e, 0x73, 0x6c, 0x6c, + 0x6f, 0x6d, 0x65, 0x6e, 0x71, 0x6f, 0x70, 0x6c, 0x70, 0x79, 0x72, 0x70, + 0x6d, 0x6e, 0x6e, 0x6f, 0x6c, 0x70, 0x6d, 0x72, 0x72, 0x6d, 0x6f, 0x6e, + 0x70, 0x6f, 0x68, 0x6c, 0x64, 0x65, 0x6d, 0x75, 0x6d, 0x6e, 0x71, 0x70, + 0x70, 0x6e, 0x70, 0x6e, 0x6e, 0x69, 0x64, 0x6e, 0x6b, 0x6f, 0x6e, 0x5d, + 0x70, 0x73, 0x6f, 0x6e, 0x6c, 0x68, 0x6e, 0x71, 0x71, 0x6c, 0x71, 0x6d, + 0x61, 0x6b, 0x6e, 0x6e, 0x6f, 0x6d, 0x6c, 0x6f, 0x72, 0x73, 0x6f, 0x65, + 0x6f, 0x6e, 0x70, 0x6f, 0x74, 0x71, 0x70, 0x71, 0x6e, 0x6f, 0x78, 0x70, + 0x6c, 0x6f, 0x6e, 0x6e, 0x69, 0x63, 0x75, 0x6f, 0x6d, 0x74, 0x6f, 0x72, + 0x74, 0x6d, 0x70, 0x74, 0x5f, 0x6e, 0x61, 0x6f, 0x6c, 0x6e, 0x7b, 0x71, + 0x77, 0x6f, 0x73, 0x70, 0x72, 0x6f, 0x71, 0x6d, 0x74, 0x6f, 0x71, 0x6d, + 0x6f, 0x6e, 0x60, 0x6f, 0x6e, 0x6f, 0x6e, 0x70, 0x6c, 0x6c, 0x72, 0x6f, + 0x69, 0x74, 0x6d, 0x6e, 0x6a, 0x70, 0x70, 0x76, 0x65, 0x6f, 0x78, 0x70, + 0x72, 0x66, 0x75, 0x71, 0x71, 0x6d, 0x74, 0x60, 0x6e, 0x70, 0x76, 0x6e, + 0x6f, 0x6f, 0x6f, 0x6d, 0x70, 0x6a, 0x64, 0x6e, 0x71, 0x6f, 0x6e, 0x70, + 0x6e, 0x6f, 0x7c, 0x70, 0x6a, 0x71, 0x6e, 0x71, 0x6c, 0x71, 0x6f, 0x70, + 0x6d, 0x6c, 0x6c, 0x6e, 0x72, 0x6b, 0x63, 0x6e, 0x6a, 0x74, 0x6b, 0x6b, + 0x70, 0x6e, 0x76, 0x6f, 0x71, 0x76, 0x6d, 0x72, 0x6e, 0x6c, 0x70, 0x70, + 0x71, 0x6f, 0x70, 0x6a, 0x75, 0x71, 0x69, 0x6e, 0x71, 0x78, 0x6f, 0x73, + 0x60, 0x6f, 0x73, 0x6c, 0x6c, 0x6d, 0x6b, 0x70, 0x71, 0x6e, 0x6a, 0x71, + 0x7a, 0x6b, 0x71, 0x70, 0x6f, 0x6e, 0x64, 0x6e, 0x6a, 0x7e, 0x73, 0x73, + 0x6f, 0x67, 0x74, 0x6f, 0x75, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6c, 0x6e, + 0x7a, 0x71, 0x6f, 0x70, 0x73, 0x75, 0x74, 0x6b, 0x71, 0x6d, 0x5e, 0x70, + 0x75, 0x6f, 0x71, 0x75, 0x71, 0x75, 0x7d, 0x6c, 0x72, 0x6e, 0x67, 0x70, + 0x67, 0x6b, 0x6e, 0x77, 0x6e, 0x6b, 0x65, 0x6e, 0x6f, 0x6f, 0x70, 0x81, + 0x7c, 0x6d, 0x73, 0x70, 0x72, 0x76, 0x6e, 0x6b, 0x64, 0x70, 0x73, 0x6d, + 0x65, 0x6f, 0x70, 0x6e, 0x7c, 0x70, 0x76, 0x71, 0x6f, 0x71, 0x73, 0x6b, + 0x6d, 0x6f, 0x71, 0x6f, 0x6f, 0x6c, 0x71, 0x6b, 0x6e, 0x65, 0x77, 0x6e, + 0x73, 0x70, 0x6f, 0x67, 0x75, 0x84, 0x78, 0x70, 0x6a, 0x74, 0x6f, 0x72, + 0x73, 0x71, 0x6c, 0x6d, 0x6b, 0x70, 0x66, 0x6e, 0x6b, 0x73, 0x6d, 0x71, + 0x6b, 0x70, 0x72, 0x62, 0x6d, 0x6e, 0x6d, 0x6e, 0x6c, 0x68, 0x6c, 0x73, + 0x6f, 0x6b, 0x73, 0x70, 0x6e, 0x70, 0x6e, 0x68, 0x6a, 0x6e, 0x73, 0x70, + 0x6d, 0x72, 0x6f, 0x6e, 0x74, 0x6e, 0x70, 0x6f, 0x75, 0x6b, 0x6c, 0x6f, + 0x70, 0x6f, 0x64, 0x70, 0x71, 0x67, 0x6d, 0x70, 0x71, 0x70, 0x72, 0x70, + 0x73, 0x6e, 0x71, 0x73, 0x6f, 0x71, 0x66, 0x70, 0x6d, 0x6f, 0x6f, 0x55, + 0x6d, 0x75, 0x72, 0x6e, 0x6d, 0x74, 0x6e, 0x71, 0x6f, 0x6e, 0x70, 0x71, + 0x58, 0x6d, 0x6d, 0x6f, 0x6f, 0x63, 0x6d, 0x72, 0x64, 0x77, 0x70, 0x6b, + 0x70, 0x70, 0x70, 0x6e, 0x70, 0x7b, 0x73, 0x7c, 0x70, 0x72, 0x69, 0x6f, + 0x6b, 0x6f, 0x6e, 0x63, 0x6a, 0x73, 0x71, 0x71, 0x6f, 0x6e, 0x6e, 0x72, + 0x6e, 0x6f, 0x75, 0x67, 0x4a, 0x6e, 0x60, 0x70, 0x6a, 0x77, 0x82, 0x75, + 0x67, 0x70, 0x5e, 0x6c, 0x7a, 0x6f, 0x72, 0x6e, 0x6e, 0x7b, 0x6f, 0x76, + 0x6f, 0x76, 0x66, 0x6e, 0x6a, 0x6f, 0x71, 0x67, 0x70, 0x80, 0x68, 0x6e, + 0x6f, 0x67, 0x6f, 0x67, 0x66, 0x77, 0x75, 0x6b, 0x72, 0x6f, 0x7a, 0x6f, + 0x76, 0x6d, 0x7e, 0x6d, 0x6f, 0x7b, 0x6c, 0x72, 0x67, 0x6e, 0x69, 0x70, + 0x73, 0x7d, 0x74, 0x70, 0x70, 0x7b, 0x79, 0x70, 0x77, 0x6f, 0x6f, 0x6e, + 0x6c, 0x67, 0x6f, 0x6f, 0x6a, 0x6e, 0x6e, 0x7a, 0x6b, 0x6c, 0x77, 0x70, + 0x6d, 0x6f, 0x6c, 0x6e, 0x69, 0x6f, 0x7d, 0x69, 0x6d, 0x6b, 0x69, 0x70, + 0x6c, 0x6e, 0x76, 0x70, 0x75, 0x70, 0x70, 0x72, 0x70, 0x71, 0x61, 0x6e, + 0x6a, 0x6f, 0x6f, 0x6e, 0x65, 0x5f, 0x76, 0x6e, 0x6f, 0x6b, 0x6e, 0x74, + 0x6b, 0x6f, 0x70, 0x74, 0x5d, 0x6f, 0x6c, 0x6e, 0x71, 0x64, 0x76, 0x71, + 0x61, 0x6f, 0x71, 0x57, 0x73, 0x6e, 0x71, 0x6f, 0x69, 0x6d, 0x72, 0x6f, + 0x6d, 0x68, 0x6c, 0x6f, 0x6f, 0x6f, 0x70, 0x67, 0x6b, 0x72, 0x73, 0x70, + 0x71, 0x71, 0x70, 0x6c, 0x6d, 0x69, 0x71, 0x66, 0x6a, 0x6c, 0x66, 0x70, + 0x69, 0x70, 0x42, 0x74, 0x77, 0x70, 0x6f, 0x69, 0x6a, 0x70, 0x74, 0x70, + 0x6f, 0x71, 0x70, 0x70, 0x6e, 0x70, 0x6d, 0x70, 0x74, 0x6f, 0x6e, 0x6e, + 0x71, 0x69, 0x6c, 0x70, 0x6a, 0x6f, 0x70, 0x76, 0x6b, 0x73, 0x6c, 0x71, + 0x70, 0x6f, 0x74, 0x70, 0x75, 0x6f, 0x71, 0x6d, 0x72, 0x72, 0x6d, 0x5a, + 0x71, 0x6f, 0x72, 0x70, 0x6c, 0x74, 0x71, 0x74, 0x70, 0x71, 0x73, 0x70, + 0x6d, 0x6f, 0x6f, 0x72, 0x6e, 0x72, 0x72, 0x70, 0x6f, 0x6c, 0x70, 0x6b, + 0x70, 0x72, 0x75, 0x67, 0x71, 0x6d, 0x66, 0x6e, 0x6f, 0x70, 0x71, 0x74, + 0x6c, 0x72, 0x64, 0x66, 0x74, 0x6d, 0x6b, 0x6f, 0x72, 0x74, 0x6f, 0x72, + 0x6f, 0x71, 0x6a, 0x70, 0x69, 0x6f, 0x6e, 0x67, 0x75, 0x76, 0x69, 0x6e, + 0x6a, 0x72, 0x6e, 0x6e, 0x6c, 0x73, 0x6e, 0x71, 0x5c, 0x6d, 0x6e, 0x6f, + 0x73, 0x6f, 0x6e, 0x72, 0x6f, 0x6e, 0x61, 0x58, 0x68, 0x6e, 0x74, 0x6e, + 0x6f, 0x70, 0x6b, 0x76, 0x6f, 0x70, 0x66, 0x6e, 0x6d, 0x70, 0x70, 0x6c, + 0x64, 0x69, 0x63, 0x6f, 0x72, 0x6d, 0x70, 0x74, 0x6d, 0x76, 0x6e, 0x76, + 0x66, 0x69, 0x69, 0x6e, 0x74, 0x6e, 0x75, 0x72, 0x61, 0x70, 0x63, 0x82, + 0x6f, 0x70, 0x64, 0x6e, 0x73, 0x6c, 0x76, 0x64, 0x6e, 0x71, 0x65, 0x70, + 0x6a, 0x6f, 0x70, 0x71, 0x81, 0x73, 0x8d, 0x6f, 0x6d, 0x6b, 0x6e, 0x6f, + 0x7c, 0x61, 0x72, 0x6d, 0x56, 0x6b, 0x6c, 0x70, 0x61, 0x6d, 0x86, 0x6b, + 0x74, 0x6c, 0x6e, 0x6f, 0x71, 0x6e, 0x6c, 0x6f, 0x7a, 0x72, 0x75, 0x70, + 0x6f, 0x6e, 0x61, 0x6e, 0x6a, 0x6f, 0x70, 0x70, 0x72, 0x68, 0x76, 0x70, + 0x6c, 0x71, 0x6e, 0x75, 0x76, 0x6f, 0x71, 0x71, 0x66, 0x6f, 0x6d, 0x6e, + 0x6d, 0x70, 0x82, 0x74, 0x6a, 0x6f, 0x65, 0x61, 0x6d, 0x71, 0x7b, 0x6f, + 0x71, 0x75, 0x71, 0x73, 0x70, 0x74, 0x6c, 0x6e, 0x6e, 0x6f, 0x70, 0x6a, + 0x67, 0x6a, 0x65, 0x6e, 0x6d, 0x69, 0x6f, 0x76, 0x68, 0x74, 0x6e, 0x74, + 0x4f, 0x6e, 0x63, 0x6e, 0x73, 0x70, 0x5d, 0x70, 0x75, 0x6e, 0x74, 0x6a, + 0x72, 0x6e, 0x74, 0x70, 0x76, 0x73, 0x70, 0x67, 0x6e, 0x64, 0x6c, 0x6e, + 0x6e, 0x6f, 0x6e, 0x71, 0x6f, 0x69, 0x6d, 0x70, 0x6d, 0x6c, 0x6e, 0x6d, + 0x72, 0x72, 0x6a, 0x67, 0x72, 0x72, 0x71, 0x6e, 0x72, 0x70, 0x7c, 0x6f, + 0x74, 0x76, 0x71, 0x67, 0x6f, 0x6e, 0x76, 0x70, 0x6c, 0x70, 0x70, 0x71, + 0x70, 0x6f, 0x6b, 0x70, 0x6f, 0x6f, 0x6e, 0x6f, 0x6e, 0x76, 0x65, 0x70, + 0x6f, 0x74, 0x6f, 0x71, 0x74, 0x6a, 0x71, 0x6a, 0x58, 0x6d, 0x76, 0x6f, + 0x6a, 0x70, 0x7b, 0x6f, 0x60, 0x66, 0x6f, 0x6e, 0x72, 0x6f, 0x71, 0x6e, + 0x78, 0x82, 0x6e, 0x72, 0x6f, 0x7f, 0x6e, 0x6e, 0x72, 0x6d, 0x6e, 0x71, + 0x79, 0x6d, 0x74, 0x6f, 0x6e, 0x73, 0x71, 0x72, 0x73, 0x70, 0x71, 0x76, + 0x78, 0x6e, 0x71, 0x70, 0x70, 0x6e, 0x74, 0x77, 0x69, 0x5d, 0x6e, 0x5a, + 0x6d, 0x6f, 0x68, 0x70, 0x76, 0x6a, 0x73, 0x6f, 0x6f, 0x5f, 0x63, 0x70, + 0x6d, 0x6f, 0x6e, 0x6a, 0x66, 0x89, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x6f, + 0x66, 0x6f, 0x75, 0x6f, 0x71, 0x6e, 0x67, 0x70, 0x70, 0x70, 0x5a, 0x71, + 0x70, 0x6c, 0x71, 0x6c, 0x6e, 0x6f, 0x70, 0x6f, 0x6f, 0x6c, 0x6f, 0x73, + 0x70, 0x6d, 0x70, 0x6f, 0x74, 0x70, 0x6e, 0x66, 0x70, 0x7a, 0x74, 0x70, + 0x71, 0x73, 0x6e, 0x70, 0x6c, 0x72, 0x76, 0x67, 0x60, 0x6e, 0x75, 0x6e, + 0x6f, 0x6b, 0x66, 0x73, 0x76, 0x76, 0x7a, 0x77, 0x6e, 0x6f, 0x70, 0x6e, + 0x74, 0x71, 0x75, 0x78, 0x70, 0x78, 0x6e, 0x70, 0x6c, 0x6e, 0x6f, 0x5f, + 0x6b, 0x69, 0x73, 0x6e, 0x6d, 0x6f, 0x6e, 0x72, 0x70, 0x63, 0x70, 0x66, + 0x5f, 0x6e, 0x6d, 0x6e, 0x70, 0x6d, 0x81, 0x76, 0x7c, 0x5e, 0x84, 0x75, + 0x6e, 0x70, 0x59, 0x70, 0x75, 0x6b, 0x6a, 0x4a, 0x6f, 0x71, 0x5d, 0x6f, + 0x76, 0x6e, 0x6f, 0x6a, 0x81, 0x75, 0x79, 0x70, 0x73, 0x7f, 0x6e, 0x65, + 0x82, 0x68, 0x6a, 0x79, 0x6c, 0x6d, 0x59, 0x70, 0x76, 0x6f, 0x66, 0x60, + 0x76, 0x6f, 0x71, 0x72, 0x70, 0x70, 0x73, 0x6f, 0x75, 0x6d, 0x71, 0x73, + 0x70, 0x72, 0x67, 0x6f, 0x6f, 0x6f, 0x6f, 0x5a, 0x71, 0x78, 0x71, 0x6e, + 0x70, 0x71, 0x70, 0x73, 0x72, 0x6e, 0x73, 0x6d, 0x5e, 0x6c, 0x66, 0x70, + 0x70, 0x6d, 0x67, 0x73, 0x71, 0x6f, 0x4a, 0x71, 0x6f, 0x6f, 0x70, 0x70, + 0x6e, 0x6f, 0xad, 0x49, 0x6f, 0x68, 0x7e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, + 0x5d, 0x76, 0x6e, 0x70, 0x6f, 0x61, 0x70, 0x6e, 0x6f, 0x70, 0x6e, 0x74, + 0x73, 0x70, 0x78, 0x6e, 0x6b, 0x78, 0x6a, 0x72, 0x67, 0x6c, 0x6a, 0x76, + 0x77, 0x6f, 0x74, 0x70, 0x68, 0x72, 0x77, 0x69, 0x70, 0x6c, 0x69, 0x70, + 0x6e, 0x6f, 0x6e, 0x60, 0x79, 0x7d, 0x6b, 0x70, 0x73, 0x6e, 0x6e, 0x68, + 0x61, 0x70, 0x76, 0x62, 0x6a, 0x65, 0x79, 0x6e, 0x6a, 0x6f, 0x69, 0x71, + 0x6d, 0x85, 0x67, 0x53, 0x69, 0x70, 0x75, 0x70, 0x74, 0x81, 0x6a, 0x77, + 0x6e, 0x89, 0x67, 0x6f, 0x77, 0x6f, 0x6e, 0x78, 0x5f, 0x74, 0x5c, 0x6e, + 0x6d, 0x79, 0x70, 0x73, 0x5e, 0x74, 0x6d, 0x73, 0x50, 0x6d, 0x6a, 0x70, + 0x74, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x69, 0x68, 0x6b, 0x71, 0x70, 0x6f, + 0x76, 0x6e, 0x6b, 0x71, 0x6f, 0x6c, 0x66, 0x6e, 0x70, 0x6f, 0x6e, 0x6d, + 0x6e, 0x7c, 0x6a, 0x6e, 0x6a, 0x6a, 0x6e, 0x70, 0x6f, 0x70, 0x69, 0x73, + 0x67, 0x6d, 0x73, 0x6f, 0x77, 0x6c, 0x6d, 0x69, 0x6c, 0x6e, 0x6c, 0x4d, + 0x6e, 0x6e, 0x75, 0x6e, 0x71, 0x65, 0x72, 0x78, 0x6e, 0x71, 0x6d, 0x6d, + 0x6a, 0x6f, 0x70, 0x6e, 0x64, 0x68, 0x75, 0x6f, 0x6e, 0x72, 0x6f, 0x6f, + 0x6b, 0x6b, 0x77, 0x6c, 0x5e, 0x6b, 0x6c, 0x6f, 0x68, 0x73, 0x7c, 0x76, + 0x7a, 0x70, 0x68, 0x5f, 0x6c, 0x6e, 0x7b, 0x6d, 0x6e, 0x71, 0x70, 0x73, + 0x6f, 0x6f, 0x64, 0x6f, 0x6d, 0x70, 0x70, 0x70, 0x67, 0x65, 0x76, 0x6f, + 0x71, 0x70, 0x6e, 0x75, 0x6c, 0x73, 0x74, 0x71, 0x62, 0x73, 0x5b, 0x70, + 0x77, 0x75, 0x6d, 0x70, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x6f, 0x78, 0x6f, + 0x7d, 0x80, 0x77, 0x64, 0x6e, 0x7c, 0x63, 0x70, 0x6c, 0x70, 0x6e, 0x6c, + 0x78, 0x6a, 0x76, 0x6e, 0x68, 0x73, 0x6e, 0x6f, 0x6e, 0x68, 0x79, 0x6d, + 0x73, 0x6e, 0x66, 0x70, 0x70, 0x6d, 0x78, 0x73, 0x63, 0x66, 0x70, 0x64, + 0x71, 0x70, 0x78, 0x70, 0x70, 0x67, 0x70, 0x6d, 0x6e, 0x62, 0x68, 0x6f, + 0x78, 0x70, 0x6f, 0x76, 0x6e, 0x76, 0x70, 0x6e, 0x6c, 0x72, 0x70, 0x72, + 0x67, 0x72, 0x70, 0x64, 0x68, 0x6f, 0x6f, 0x6e, 0x76, 0x6d, 0x6c, 0x70, + 0x68, 0x70, 0x6e, 0x60, 0x6d, 0x6f, 0x74, 0x70, 0x6d, 0x6d, 0x6d, 0x73, + 0x6d, 0x62, 0x64, 0x6e, 0x70, 0x6e, 0x70, 0x6b, 0x6d, 0x73, 0x75, 0x6e, + 0x73, 0x6e, 0x6f, 0x71, 0x6a, 0x6d, 0x6f, 0x5f, 0x66, 0x6b, 0x67, 0x6e, + 0x6e, 0x6d, 0x6f, 0x6e, 0x72, 0x5c, 0x6d, 0x5d, 0x68, 0x6f, 0x7d, 0x6e, + 0x77, 0x77, 0x6e, 0x70, 0x6f, 0x70, 0x7e, 0x6f, 0x6e, 0x6f, 0x70, 0x68, + 0x68, 0x6c, 0x69, 0x6e, 0x6f, 0x73, 0x70, 0x7a, 0x67, 0x79, 0x6d, 0x72, + 0x52, 0x6e, 0x61, 0x6e, 0x74, 0x6e, 0x82, 0x70, 0x6c, 0x74, 0x6f, 0x62, + 0x6b, 0x6f, 0x74, 0x70, 0x6c, 0x6e, 0x6b, 0x71, 0x70, 0x6c, 0x65, 0x6f, + 0x6f, 0x6e, 0x70, 0x72, 0x6a, 0x68, 0x77, 0x6e, 0x6e, 0x6f, 0x6e, 0x72, + 0x71, 0x70, 0x6d, 0x65, 0x77, 0x6e, 0x6e, 0x6f, 0x6d, 0x74, 0x6d, 0x6e, + 0x76, 0x73, 0x65, 0x71, 0x6e, 0x6f, 0x76, 0x6e, 0x78, 0x6f, 0x70, 0x74, + 0x6f, 0x72, 0x65, 0x6e, 0x6a, 0x6f, 0x70, 0x6a, 0x63, 0x66, 0x73, 0x6f, + 0x6d, 0x73, 0x70, 0x74, 0x6e, 0x76, 0x73, 0x6d, 0x61, 0x6e, 0x6d, 0x6f, + 0x78, 0x71, 0x6f, 0x70, 0x77, 0x70, 0x75, 0x6f, 0x6f, 0x6f, 0x6d, 0x70, + 0x72, 0x6e, 0x73, 0x6f, 0x6f, 0x69, 0x70, 0x6e, 0x75, 0x70, 0x70, 0x6f, + 0x6e, 0x69, 0x6d, 0x70, 0x6d, 0x6c, 0x6f, 0x71, 0x72, 0x6c, 0x71, 0x7f, + 0x66, 0x74, 0x75, 0x6f, 0x6d, 0x73, 0x68, 0x70, 0x78, 0x77, 0x69, 0x5f, + 0x73, 0x70, 0x6f, 0x6f, 0x77, 0x74, 0x71, 0x78, 0x70, 0x72, 0x68, 0x70, + 0x71, 0x6f, 0x70, 0x70, 0x6b, 0x6f, 0x63, 0x6e, 0x69, 0x77, 0x6e, 0x72, + 0x6f, 0x71, 0x6a, 0x6f, 0x65, 0x6d, 0x69, 0x6f, 0x71, 0x70, 0x7a, 0x74, + 0x69, 0x76, 0x6e, 0x65, 0x73, 0x70, 0x6e, 0x6f, 0x77, 0x73, 0x79, 0x79, + 0x70, 0x73, 0x66, 0x6e, 0x68, 0x70, 0x6f, 0x67, 0x6e, 0x77, 0x66, 0x70, + 0x6a, 0x75, 0x6e, 0x6d, 0x64, 0x68, 0x6f, 0x6d, 0x5e, 0x70, 0x74, 0x70, + 0x6c, 0x6e, 0x7b, 0x70, 0x70, 0x6f, 0x71, 0x71, 0x72, 0x70, 0x70, 0x70, + 0x6f, 0x6e, 0x73, 0x70, 0x6f, 0x6f, 0x6d, 0x70, 0x6f, 0x6f, 0x6f, 0x63, + 0x6c, 0x7e, 0x66, 0x6f, 0x6a, 0x69, 0x6f, 0x6d, 0x73, 0x6d, 0x77, 0x6e, + 0x6f, 0x6d, 0x71, 0x6f, 0x6f, 0x6f, 0x6d, 0x6d, 0x6f, 0x72, 0x71, 0x5a, + 0x70, 0x6f, 0x70, 0x70, 0x77, 0x65, 0x6a, 0x77, 0x70, 0x68, 0x64, 0x6e, + 0x70, 0x6f, 0x70, 0x6d, 0x6e, 0x75, 0x77, 0x6e, 0x69, 0x80, 0x70, 0x74, + 0x76, 0x6f, 0x67, 0x69, 0x54, 0x6f, 0x58, 0x70, 0x6e, 0x66, 0x61, 0x75, + 0x71, 0x69, 0x69, 0x65, 0x6f, 0x6e, 0x74, 0x6f, 0x6e, 0x6c, 0x73, 0x69, + 0x6e, 0x6a, 0x61, 0x6f, 0x74, 0x6f, 0x6f, 0x78, 0x70, 0x75, 0x74, 0x6e, + 0x69, 0x75, 0x70, 0x6f, 0x64, 0x6c, 0x6d, 0x7d, 0x71, 0x6e, 0x6e, 0x6e, + 0x6e, 0x65, 0x71, 0x70, 0x78, 0x76, 0x71, 0x6d, 0x6f, 0x6e, 0x6e, 0x6e, + 0x6e, 0x73, 0x6d, 0x6f, 0x70, 0x6f, 0x6c, 0x6f, 0x72, 0x6f, 0x70, 0x74, + 0x6f, 0x72, 0x63, 0x6e, 0x71, 0x73, 0x6e, 0x6d, 0x74, 0x6f, 0x70, 0x78, + 0x68, 0x6e, 0x7e, 0x6f, 0x71, 0x70, 0x71, 0x71, 0x70, 0x72, 0x5f, 0x62, + 0x75, 0x70, 0x78, 0x6f, 0x75, 0x71, 0x74, 0x76, 0x6f, 0x70, 0x6e, 0x70, + 0x6b, 0x70, 0x6f, 0x6e, 0x5f, 0x7d, 0x77, 0x6e, 0x77, 0x70, 0x6f, 0x73, + 0x5f, 0x6e, 0x72, 0x6a, 0x53, 0x70, 0x70, 0x6e, 0x77, 0x6d, 0x7b, 0x78, + 0x6a, 0x75, 0x6f, 0x54, 0x6a, 0x70, 0x7d, 0x6f, 0x6f, 0x71, 0x71, 0x7d, + 0x6e, 0x73, 0x6d, 0x6f, 0x73, 0x6e, 0x6f, 0x6a, 0x5e, 0x68, 0x75, 0x6f, + 0x67, 0x69, 0x6e, 0x73, 0x62, 0x73, 0x6f, 0x6a, 0x47, 0x68, 0x6d, 0x6e, + 0x70, 0x6f, 0x6b, 0x76, 0x7f, 0x6a, 0x71, 0x73, 0x6e, 0x70, 0x6a, 0x70, + 0x72, 0x6f, 0x6f, 0x71, 0x6f, 0x69, 0x6b, 0x6f, 0x74, 0x70, 0x6f, 0x74, + 0x6e, 0x76, 0x72, 0x6f, 0x6e, 0x6f, 0x6f, 0x70, 0x71, 0x70, 0x6f, 0x90, + 0x6d, 0x6e, 0x6c, 0x6e, 0x6f, 0x6b, 0x73, 0x6d, 0x70, 0x6b, 0x6c, 0x6e, + 0x6d, 0x6e, 0x72, 0x6f, 0x72, 0x6d, 0x70, 0x70, 0x70, 0x71, 0x68, 0x70, + 0x70, 0x6f, 0x6e, 0x69, 0x72, 0x76, 0x66, 0x70, 0x70, 0x70, 0x6e, 0x73, + 0x70, 0x70, 0x6d, 0x6f, 0x5a, 0x6c, 0x76, 0x70, 0x71, 0x69, 0x6f, 0x6e, + 0x75, 0x5d, 0x76, 0x69, 0x6d, 0x70, 0x74, 0x6f, 0x76, 0x6a, 0x6e, 0x75, + 0x6d, 0x70, 0x6c, 0x6f, 0x72, 0x6e, 0x6e, 0x6d, 0x66, 0x72, 0x6a, 0x6f, + 0x6c, 0x72, 0x70, 0x72, 0x71, 0x71, 0x6f, 0x6f, 0x70, 0x6f, 0x77, 0x6f, + 0x73, 0x6e, 0x68, 0x71, 0x6e, 0x71, 0x69, 0x6c, 0x6d, 0x6e, 0x71, 0x6f, + 0x75, 0x73, 0x6e, 0x73, 0x6e, 0x71, 0x6a, 0x6e, 0x6e, 0x6f, 0x6f, 0x6b, + 0x6c, 0x65, 0x6c, 0x6f, 0x6f, 0x76, 0x6d, 0x73, 0x72, 0x6a, 0x6f, 0x67, + 0x5d, 0x6d, 0x5c, 0x70, 0x6d, 0x72, 0x73, 0x71, 0x68, 0x79, 0x64, 0x5a, + 0x67, 0x6f, 0x6b, 0x70, 0x6a, 0x74, 0x6e, 0x72, 0x6e, 0x6e, 0x64, 0x6e, + 0x6d, 0x6f, 0x6f, 0x6a, 0x6d, 0x64, 0x59, 0x6f, 0x72, 0x65, 0x6e, 0x72, + 0x73, 0x6f, 0x6f, 0x72, 0x5b, 0x6c, 0x71, 0x6e, 0x75, 0x6e, 0x7b, 0x6c, + 0x76, 0x78, 0x74, 0x6f, 0x71, 0x6f, 0x70, 0x6f, 0x76, 0x6c, 0x70, 0x71, + 0x6e, 0x70, 0x71, 0x6e, 0x6f, 0x6f, 0x70, 0x74, 0x72, 0x70, 0x6d, 0x6f, + 0x6f, 0x72, 0x70, 0x70, 0x69, 0x6e, 0x68, 0x77, 0x75, 0x6d, 0x67, 0x70, + 0x6e, 0x72, 0x5e, 0x75, 0x6c, 0x70, 0x6a, 0x68, 0x66, 0x70, 0x74, 0x6f, + 0x6d, 0x6d, 0x78, 0x79, 0x6f, 0x79, 0x6e, 0x70, 0x70, 0x6f, 0x6e, 0x70, + 0x71, 0x6f, 0x6f, 0x6e, 0x71, 0x74, 0x6e, 0x73, 0x6f, 0x62, 0x6e, 0x6d, + 0x72, 0x6e, 0x6e, 0x6e, 0x76, 0x6e, 0x71, 0x71, 0x71, 0x74, 0x6e, 0x5c, + 0x6d, 0x6d, 0x71, 0x70, 0x6a, 0x65, 0x73, 0x6d, 0x70, 0x63, 0x6c, 0x70, + 0x74, 0x6f, 0x6f, 0x71, 0x69, 0x78, 0x76, 0x6f, 0x6f, 0x72, 0x6e, 0x70, + 0x6a, 0x72, 0x76, 0x7c, 0x6e, 0x6e, 0x6f, 0x6f, 0x6c, 0x68, 0x6e, 0x74, + 0x6d, 0x7c, 0x6a, 0x53, 0x76, 0x70, 0x6c, 0x6e, 0x73, 0x6c, 0x76, 0x68, + 0x6f, 0x69, 0x5f, 0x6e, 0x6e, 0x6f, 0x70, 0x6f, 0x79, 0x71, 0x7c, 0x6f, + 0x6e, 0x66, 0x6f, 0x6a, 0x64, 0x65, 0x6c, 0x87, 0x51, 0x6f, 0x5d, 0x70, + 0x63, 0x65, 0x62, 0x73, 0x79, 0x69, 0x72, 0x62, 0x6c, 0x6e, 0x7a, 0x70, + 0x78, 0x74, 0x6c, 0x75, 0x70, 0x71, 0x6d, 0x6f, 0x6e, 0x6e, 0x70, 0x67, + 0x6d, 0x6c, 0x8b, 0x6e, 0x6e, 0x79, 0x70, 0x76, 0x69, 0x69, 0x6f, 0x7a, + 0x54, 0x6e, 0x6c, 0x6f, 0x6f, 0x6f, 0x7a, 0x6e, 0x6e, 0x71, 0x6f, 0x7b, + 0x70, 0x6f, 0x68, 0x6f, 0x7f, 0x7d, 0x77, 0x68, 0x6f, 0x84, 0x6c, 0x6f, + 0x70, 0x6e, 0x70, 0x61, 0x76, 0x72, 0x75, 0x71, 0x6a, 0x76, 0x6f, 0x74, + 0x79, 0x6e, 0x73, 0x6e, 0x63, 0x71, 0x5c, 0x70, 0x76, 0x6d, 0x78, 0x71, + 0x6e, 0x73, 0x6a, 0x59, 0x6e, 0x70, 0x70, 0x6f, 0x75, 0x6f, 0x70, 0x72, + 0x70, 0x70, 0x5d, 0x70, 0x6f, 0x70, 0x6e, 0x71, 0x67, 0x6a, 0x74, 0x6e, + 0x6c, 0x71, 0x70, 0x71, 0x71, 0x6e, 0x6d, 0x70, 0x69, 0x6a, 0x75, 0x70, + 0x71, 0x69, 0x6d, 0x70, 0x76, 0x6a, 0x6a, 0x6f, 0x72, 0x70, 0x74, 0x71, + 0x77, 0x6d, 0x71, 0x79, 0x6f, 0x70, 0x64, 0x6e, 0x6c, 0x6f, 0x6e, 0x63, + 0x67, 0x75, 0x6f, 0x6e, 0x67, 0x71, 0x6f, 0x76, 0x70, 0x6e, 0x72, 0x73, + 0x4e, 0x71, 0x74, 0x6f, 0x6e, 0x68, 0x6b, 0x78, 0x74, 0x5e, 0x74, 0x67, + 0x6e, 0x6e, 0x70, 0x6f, 0x72, 0x77, 0x6e, 0x75, 0x6e, 0x6f, 0x6e, 0x6e, + 0x6c, 0x6f, 0x6e, 0x6b, 0x69, 0x84, 0x6a, 0x6e, 0x6a, 0x76, 0x6d, 0x73, + 0x75, 0x72, 0x6d, 0x6b, 0x6a, 0x6e, 0x6d, 0x6e, 0x72, 0x70, 0x74, 0x74, + 0x70, 0x5f, 0x64, 0x60, 0x6f, 0x70, 0x75, 0x6e, 0x6c, 0x72, 0x71, 0x72, + 0x6e, 0x67, 0x6d, 0x6f, 0x65, 0x6f, 0x6e, 0x6d, 0x6a, 0x70, 0x7a, 0x6e, + 0x76, 0x73, 0x6e, 0x72, 0x67, 0x6b, 0x74, 0x67, 0x50, 0x71, 0x7b, 0x70, + 0x7e, 0x70, 0x81, 0x71, 0x81, 0x6d, 0x79, 0x65, 0x6e, 0x6e, 0x71, 0x70, + 0x76, 0x70, 0x6f, 0x70, 0x6e, 0x6c, 0x68, 0x70, 0x76, 0x70, 0x6e, 0x68, + 0x64, 0x80, 0x82, 0x6e, 0x73, 0x70, 0x6e, 0x73, 0x77, 0x70, 0x6f, 0x77, + 0x70, 0x6f, 0x73, 0x6e, 0x6d, 0x72, 0x51, 0x70, 0x6e, 0x63, 0x71, 0x62, + 0x6e, 0x6e, 0x75, 0x6e, 0x77, 0x6b, 0x73, 0x6b, 0x70, 0x6e, 0x6d, 0x6e, + 0x72, 0x6f, 0x6f, 0x69, 0x6d, 0x6c, 0x66, 0x6f, 0x6b, 0x77, 0x6f, 0x71, + 0x6c, 0x6f, 0x6b, 0x6f, 0x64, 0x6e, 0x64, 0x70, 0x6e, 0x6e, 0x74, 0x6e, + 0x7c, 0x6d, 0x78, 0x57, 0x6e, 0x6f, 0x79, 0x70, 0x73, 0x63, 0x72, 0x70, + 0x6f, 0x6a, 0x6b, 0x70, 0x6c, 0x6f, 0x71, 0x73, 0x6c, 0x5f, 0x7c, 0x70, + 0x75, 0x61, 0x6d, 0x75, 0x71, 0x68, 0x73, 0x6a, 0x6d, 0x67, 0x5d, 0x6e, + 0x6a, 0x75, 0x62, 0x6f, 0x75, 0x71, 0x67, 0x68, 0x71, 0x6e, 0x6f, 0x6e, + 0x70, 0x70, 0x72, 0x6f, 0x6e, 0x71, 0x69, 0x70, 0x6d, 0x6f, 0x70, 0x76, + 0x6a, 0x7a, 0x5f, 0x70, 0x6e, 0x78, 0x6e, 0x6f, 0x6c, 0x70, 0x6c, 0x7c, + 0x69, 0x70, 0x6e, 0x6e, 0x71, 0x73, 0x74, 0x71, 0x72, 0x68, 0x6c, 0x58, + 0x7a, 0x6f, 0x63, 0x70, 0x6a, 0x6e, 0x74, 0x6f, 0x6f, 0x5a, 0x61, 0x70, + 0x69, 0x6f, 0x6e, 0x6b, 0x79, 0x6c, 0x65, 0x6e, 0x6e, 0x70, 0x6e, 0x61, + 0x76, 0x77, 0x6a, 0x5c, 0x74, 0x6c, 0x67, 0x6e, 0x75, 0x5e, 0x5b, 0x74, + 0x6f, 0x6b, 0x71, 0x6c, 0x71, 0x70, 0x6f, 0x6e, 0x6f, 0x70, 0x73, 0x73, + 0x6f, 0x71, 0x74, 0x70, 0x70, 0x71, 0x6d, 0x6c, 0x6c, 0x7c, 0x72, 0x6f, + 0x73, 0x6d, 0x70, 0x6f, 0x66, 0x6c, 0x71, 0x6f, 0x5b, 0x71, 0x6d, 0x6e, + 0x6e, 0x70, 0x75, 0x6e, 0x76, 0x72, 0x69, 0x6e, 0x6e, 0x70, 0x71, 0x6f, + 0x70, 0x75, 0x6f, 0x70, 0x6f, 0x6b, 0x64, 0x6f, 0x72, 0x6f, 0x6e, 0x72, + 0x6f, 0x76, 0x68, 0x6f, 0x71, 0x6c, 0x6e, 0x72, 0x6f, 0x74, 0x6c, 0x75, + 0x66, 0x6d, 0x77, 0x6f, 0x73, 0x6c, 0x7b, 0x71, 0x71, 0x71, 0x6f, 0x73, + 0x71, 0x6e, 0x6e, 0x70, 0x75, 0x6f, 0x71, 0x6f, 0x6e, 0x69, 0x65, 0x6f, + 0x6f, 0x70, 0x6e, 0x64, 0x68, 0x6f, 0x75, 0x6e, 0x6c, 0x67, 0x70, 0x6e, + 0x71, 0x6f, 0x7b, 0x71, 0x74, 0x6d, 0x75, 0x6f, 0x6e, 0x6f, 0x70, 0x69, + 0x79, 0x5d, 0x77, 0x62, 0x6f, 0x6e, 0x73, 0x6e, 0x75, 0x5d, 0x72, 0x72, + 0x6e, 0x6a, 0x68, 0x6f, 0x70, 0x6e, 0x70, 0x56, 0x6d, 0x6c, 0x75, 0x70, + 0x72, 0x66, 0x6f, 0x71, 0x75, 0x67, 0x70, 0x6e, 0x73, 0x6d, 0x7a, 0x70, + 0x62, 0x6c, 0x50, 0x6e, 0x64, 0x73, 0x72, 0x5a, 0x71, 0x6f, 0x6d, 0x6e, + 0x6e, 0x6d, 0x6f, 0x6e, 0x70, 0x67, 0x6a, 0x6f, 0x6b, 0x70, 0x70, 0x6d, + 0x71, 0x6e, 0x72, 0x6e, 0x6a, 0x78, 0x6e, 0x70, 0x77, 0x6d, 0x72, 0x68, + 0x6b, 0x70, 0x69, 0x6e, 0x6d, 0x6e, 0x6c, 0x6f, 0x68, 0x7a, 0x69, 0x44, + 0x6e, 0x6e, 0x76, 0x6e, 0x6a, 0x6e, 0x6c, 0x67, 0x6e, 0x6b, 0x76, 0x6f, + 0x6d, 0x6f, 0x6f, 0x6c, 0x6d, 0x4f, 0x72, 0x6e, 0x6d, 0x73, 0x6f, 0x6c, + 0x5f, 0x6d, 0x6e, 0x6d, 0x7c, 0x60, 0x58, 0x6f, 0x6d, 0x72, 0x5b, 0x6c, + 0x67, 0x7b, 0x68, 0x64, 0x70, 0x6f, 0x6e, 0x6f, 0x71, 0x74, 0x75, 0x75, + 0x6f, 0x5b, 0x6c, 0x70, 0x79, 0x6f, 0x6f, 0x6b, 0x72, 0x63, 0x7a, 0x70, + 0x6f, 0x75, 0x70, 0x74, 0x6f, 0x66, 0x6b, 0x5d, 0x71, 0x70, 0x6d, 0x6e, + 0x63, 0x6e, 0x6b, 0x7d, 0x68, 0x6d, 0x6a, 0x6f, 0x6d, 0x70, 0x77, 0x70, + 0x6d, 0x73, 0x6e, 0x73, 0x6f, 0x6f, 0x66, 0x70, 0x6f, 0x6f, 0x6f, 0x62, + 0x71, 0x7e, 0x6e, 0x6e, 0x70, 0x6d, 0x70, 0x71, 0x69, 0x6c, 0x71, 0x67, + 0x62, 0x6e, 0x65, 0x6e, 0x6e, 0x6e, 0x70, 0x70, 0x69, 0x6c, 0x71, 0x6f, + 0x6e, 0x6e, 0x70, 0x70, 0x70, 0x6d, 0x6f, 0x6f, 0x70, 0x68, 0x65, 0x70, + 0x71, 0x6e, 0x6e, 0x75, 0x69, 0x72, 0x72, 0x70, 0x70, 0x76, 0x6e, 0x70, + 0x74, 0x6f, 0x6e, 0x6d, 0x6e, 0x6e, 0x6a, 0x6f, 0x6e, 0x6f, 0x64, 0x72, + 0x67, 0x5f, 0x69, 0x78, 0x73, 0x6e, 0x70, 0x70, 0x72, 0x71, 0x74, 0x73, + 0x6f, 0x6a, 0x67, 0x6f, 0x6a, 0x6e, 0x6f, 0x62, 0x68, 0x6c, 0x5c, 0x70, + 0x6e, 0x72, 0x6f, 0x6a, 0x6a, 0x70, 0x68, 0x67, 0x56, 0x67, 0x67, 0x70, + 0x6f, 0x68, 0x7c, 0x70, 0x7a, 0x6f, 0x72, 0x5e, 0x70, 0x6f, 0x75, 0x6e, + 0x6c, 0x75, 0x6d, 0x75, 0x70, 0x73, 0x6d, 0x71, 0x6a, 0x6e, 0x70, 0x73, + 0x69, 0x68, 0x70, 0x71, 0x74, 0x72, 0x6f, 0x6d, 0x6c, 0x6b, 0x72, 0x70, + 0x69, 0x6d, 0x6e, 0x6f, 0x76, 0x6f, 0x79, 0x75, 0x72, 0x62, 0x71, 0x63, + 0x67, 0x6f, 0x65, 0x6e, 0x70, 0x6c, 0x70, 0x66, 0x6f, 0x72, 0x6e, 0x6e, + 0x71, 0x6e, 0x6e, 0x6d, 0x67, 0x6a, 0x74, 0x70, 0x6d, 0x76, 0x6e, 0x6e, + 0x73, 0x73, 0x6d, 0x72, 0x75, 0x6e, 0x77, 0x70, 0x74, 0x6f, 0x71, 0x6a, + 0x6f, 0x76, 0x6f, 0x67, 0x6c, 0x6e, 0x74, 0x6f, 0x7a, 0x69, 0x79, 0x71, + 0x6f, 0x6f, 0x6f, 0x6e, 0x6f, 0x71, 0x6f, 0x70, 0x6f, 0x6d, 0x66, 0x70, + 0x64, 0x72, 0x6f, 0x74, 0x6b, 0x6d, 0x6c, 0x70, 0x72, 0x6f, 0x6e, 0x6f, + 0x6e, 0x70, 0x80, 0x6e, 0x72, 0x6a, 0x6c, 0x63, 0x70, 0x70, 0x6b, 0x6e, + 0x6d, 0x75, 0x72, 0x75, 0x6e, 0x71, 0x68, 0x70, 0x71, 0x6e, 0x6e, 0x68, + 0x6a, 0x6b, 0x68, 0x6e, 0x73, 0x6a, 0x6e, 0x70, 0x62, 0x72, 0x6e, 0x6f, + 0x6e, 0x6f, 0x6f, 0x6f, 0x72, 0x6d, 0x6d, 0x76, 0x68, 0x6b, 0x60, 0x6e, + 0x6c, 0x71, 0x6b, 0x6e, 0x76, 0x73, 0x74, 0x75, 0x70, 0x70, 0x6a, 0x6f, + 0x6b, 0x6f, 0x6e, 0x65, 0x6f, 0x6e, 0x67, 0x70, 0x71, 0x6b, 0x6f, 0x71, + 0x6b, 0x6d, 0x6b, 0x72, 0x5d, 0x70, 0x71, 0x6f, 0x6e, 0x6e, 0x7e, 0x72, + 0x70, 0x5e, 0x77, 0x70, 0x71, 0x6e, 0x79, 0x6e, 0x7b, 0x6b, 0x6e, 0x6c, + 0x70, 0x78, 0x68, 0x6e, 0x6f, 0x6e, 0x6d, 0x70, 0x70, 0x85, 0x61, 0x6f, + 0x76, 0x79, 0x6f, 0x71, 0x75, 0x6a, 0x68, 0x62, 0x6a, 0x6b, 0x5e, 0x6e, + 0x67, 0x70, 0x5a, 0x6f, 0x6a, 0x59, 0x6f, 0x64, 0x6e, 0x70, 0x6a, 0x6e, + 0x6e, 0x6c, 0x6e, 0x74, 0x6f, 0x6c, 0x5e, 0x6e, 0x69, 0x6f, 0x6f, 0x73, + 0x6f, 0x6d, 0x72, 0x70, 0x6e, 0x71, 0x6e, 0x71, 0x75, 0x6d, 0x6d, 0x67, + 0x58, 0x68, 0x69, 0x70, 0x6f, 0x6a, 0x7e, 0x6f, 0x64, 0x6f, 0x70, 0x6a, + 0x71, 0x6e, 0x74, 0x6e, 0x6d, 0x72, 0x74, 0x6e, 0x6f, 0x69, 0x6c, 0x6f, + 0x72, 0x6f, 0x6e, 0x61, 0x6c, 0x73, 0x59, 0x6e, 0x6c, 0x6b, 0x6e, 0x72, + 0x74, 0x6a, 0x73, 0x52, 0x64, 0x70, 0x74, 0x6e, 0x6d, 0x6e, 0x80, 0x72, + 0x76, 0x6d, 0x6d, 0x67, 0x6d, 0x6e, 0x72, 0x70, 0x6f, 0x70, 0x70, 0x75, + 0x70, 0x5f, 0x6f, 0x6f, 0x75, 0x6f, 0x6f, 0x5f, 0x73, 0x71, 0x65, 0x6e, + 0x6f, 0x68, 0x70, 0x75, 0x5d, 0x77, 0x71, 0x70, 0x6e, 0x6c, 0x6c, 0x6e, + 0x73, 0x6e, 0x79, 0x74, 0x73, 0x70, 0x6a, 0x5c, 0x71, 0x6e, 0x77, 0x70, + 0x67, 0x74, 0x6e, 0x71, 0x6f, 0x71, 0x66, 0x70, 0x71, 0x6f, 0x6f, 0x6a, + 0x6f, 0x73, 0x70, 0x6e, 0x6c, 0x6e, 0x6e, 0x6a, 0x6c, 0x70, 0x71, 0x6e, + 0x62, 0x6c, 0x69, 0x6f, 0x73, 0x6f, 0x75, 0x72, 0x6f, 0x6f, 0x6c, 0x65, + 0x70, 0x70, 0x65, 0x70, 0x79, 0x74, 0x7c, 0x67, 0x6e, 0x75, 0x70, 0x6e, + 0x78, 0x6f, 0x6f, 0x75, 0x72, 0x6b, 0x79, 0x6f, 0x6f, 0x7f, 0x6e, 0x72, + 0x6b, 0x71, 0x70, 0x6c, 0x58, 0x6d, 0x75, 0x70, 0x71, 0x70, 0x81, 0x70, + 0x6f, 0x7f, 0x69, 0x68, 0x6a, 0x6e, 0x6b, 0x6e, 0x64, 0x6c, 0x6f, 0x71, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6f, 0x6e, 0x6f, 0x67, 0x6a, 0x6e, 0x64, 0x70, + 0x70, 0x65, 0x6f, 0x6c, 0x6c, 0x70, 0x73, 0x70, 0x67, 0x6d, 0x72, 0x70, + 0x6f, 0x6e, 0x6f, 0x74, 0x6a, 0x69, 0x6d, 0x6a, 0x6d, 0x70, 0x73, 0x70, + 0x70, 0x6c, 0x6f, 0x74, 0x6f, 0x74, 0x64, 0x6f, 0x6a, 0x70, 0x6e, 0x5b, + 0x6b, 0x79, 0x6c, 0x6f, 0x6f, 0x6d, 0x6f, 0x73, 0x6b, 0x6f, 0x6c, 0x6a, + 0x5e, 0x6c, 0x63, 0x6f, 0x6f, 0x70, 0x70, 0x73, 0x72, 0x6c, 0x70, 0x6e, + 0x6d, 0x70, 0x67, 0x6e, 0x79, 0x78, 0x74, 0x6f, 0x6f, 0x70, 0x72, 0x6e, + 0x6c, 0x70, 0x70, 0x66, 0x73, 0x6a, 0x74, 0x6f, 0x71, 0x6d, 0x6e, 0x72, + 0x7a, 0x6e, 0x74, 0x73, 0x62, 0x70, 0x61, 0x6f, 0x72, 0x6e, 0x7c, 0x6d, + 0x79, 0x70, 0x6b, 0x64, 0x75, 0x6f, 0x68, 0x6e, 0x6b, 0x72, 0x74, 0x70, + 0x6e, 0x7d, 0x66, 0x70, 0x70, 0x6f, 0x70, 0x69, 0x71, 0x6f, 0x65, 0x6e, + 0x70, 0x78, 0x6e, 0x67, 0x74, 0x6c, 0x73, 0x73, 0x5f, 0x6e, 0x78, 0x6f, + 0x74, 0x6f, 0x7c, 0x70, 0x62, 0x6f, 0x71, 0x64, 0x71, 0x6f, 0x74, 0x71, + 0x75, 0x71, 0x70, 0x6f, 0x70, 0x62, 0x74, 0x6e, 0x6d, 0x6d, 0x70, 0x6c, + 0x6f, 0x66, 0x70, 0x6f, 0x69, 0x6d, 0x70, 0x71, 0x6b, 0x70, 0x6a, 0x61, + 0x71, 0x6f, 0x76, 0x70, 0x6f, 0x70, 0x67, 0x70, 0x6b, 0x67, 0x6e, 0x5e, + 0x6a, 0x6f, 0x75, 0x6f, 0x65, 0x70, 0x6a, 0x6d, 0x70, 0x6c, 0x6e, 0x6f, + 0x6f, 0x6f, 0x70, 0x6c, 0x65, 0x6e, 0x74, 0x6f, 0x73, 0x68, 0x70, 0x6e, + 0x6f, 0x70, 0x70, 0x6c, 0x74, 0x6d, 0x6f, 0x6e, 0x6f, 0x6f, 0x66, 0x6e, + 0x68, 0x7e, 0x70, 0x56, 0x68, 0x70, 0x7c, 0x70, 0x5a, 0x7b, 0x68, 0x6b, + 0x6e, 0x8d, 0x72, 0x6e, 0x6f, 0x6e, 0x6f, 0x67, 0x72, 0x73, 0x67, 0x6f, + 0x6e, 0x70, 0x70, 0x78, 0x68, 0x6d, 0x6f, 0x6c, 0x5d, 0x6d, 0x6f, 0x70, + 0x6e, 0x73, 0x5b, 0x6d, 0x6e, 0x71, 0x6e, 0x68, 0x6b, 0x6e, 0x6d, 0x6e, + 0x72, 0x74, 0x70, 0x74, 0x6e, 0x77, 0x6a, 0x6f, 0x6f, 0x70, 0x6e, 0x80, + 0x73, 0x69, 0x72, 0x6f, 0x72, 0x6c, 0x6f, 0x79, 0x73, 0x73, 0x6e, 0x6a, + 0x6a, 0x6e, 0x76, 0x6e, 0x73, 0x6a, 0x75, 0x6e, 0x72, 0x85, 0x64, 0x68, + 0x6d, 0x6e, 0x77, 0x6e, 0x79, 0x73, 0x73, 0x7a, 0x6f, 0x55, 0x74, 0x6f, + 0x76, 0x71, 0x6e, 0x6e, 0x6b, 0x68, 0x7f, 0x6f, 0x66, 0x79, 0x70, 0x76, + 0x68, 0x72, 0x6f, 0x73, 0x6c, 0x6f, 0x66, 0x6f, 0x6e, 0x6f, 0x7f, 0x75, + 0x65, 0x62, 0x6d, 0x6c, 0x75, 0x6f, 0x67, 0x6f, 0x82, 0x7a, 0x7a, 0x6b, + 0x70, 0x6c, 0x77, 0x6e, 0x67, 0x6e, 0x70, 0x7f, 0x74, 0x66, 0x6f, 0x6e, + 0x73, 0x69, 0x6e, 0x67, 0x74, 0x74, 0x71, 0x76, 0x6f, 0x6e, 0x50, 0x70, + 0x78, 0x6e, 0x79, 0x72, 0x6a, 0x6c, 0x72, 0x6a, 0x6d, 0x6f, 0x67, 0x70, + 0x64, 0x70, 0x6d, 0x6d, 0x70, 0x70, 0x5d, 0x6f, 0x6b, 0x6f, 0x70, 0x64, + 0x71, 0x68, 0x6d, 0x6f, 0x73, 0x6a, 0x6f, 0x6a, 0x77, 0x6f, 0x6d, 0x6b, + 0x6d, 0x61, 0x6c, 0x6f, 0x6d, 0x5f, 0x6e, 0x6c, 0x6a, 0x65, 0x6e, 0x63, + 0x6e, 0x70, 0x6c, 0x6e, 0x6a, 0x72, 0x6f, 0x72, 0x6e, 0x70, 0x77, 0x6f, + 0x6f, 0x6f, 0x70, 0x68, 0x69, 0x6a, 0x5f, 0x6f, 0x6e, 0x73, 0x70, 0x69, + 0x74, 0x72, 0x74, 0x71, 0x70, 0x71, 0x65, 0x70, 0x73, 0x75, 0x69, 0x6e, + 0x70, 0x6e, 0x74, 0x6d, 0x72, 0x6e, 0x76, 0x6f, 0x77, 0x6d, 0x71, 0x73, + 0x6e, 0x6f, 0x72, 0x6f, 0x71, 0x6f, 0x6f, 0x6e, 0x71, 0x79, 0x67, 0x6f, + 0x67, 0x75, 0x6e, 0x73, 0x6c, 0x6d, 0x6f, 0x75, 0x66, 0x6e, 0x72, 0x70, + 0x6e, 0x6c, 0x6a, 0x73, 0x6c, 0x6e, 0x71, 0x6b, 0x6d, 0x6f, 0x74, 0x6f, + 0x75, 0x6d, 0x70, 0x77, 0x6f, 0x64, 0x6b, 0x6e, 0x64, 0x6f, 0x6f, 0x63, + 0x68, 0x6e, 0x5e, 0x6f, 0x6d, 0x6c, 0x6f, 0x75, 0x72, 0x68, 0x78, 0x6f, + 0x62, 0x6f, 0x73, 0x6e, 0x70, 0x6e, 0x5d, 0x6d, 0x71, 0x6b, 0x73, 0x66, + 0x71, 0x6e, 0x6e, 0x6e, 0x72, 0x68, 0x6f, 0x6d, 0x70, 0x72, 0x64, 0x6e, + 0x6d, 0x6f, 0x6e, 0x6c, 0x6c, 0x7f, 0x6b, 0x6f, 0x6c, 0x75, 0x6f, 0x6b, + 0x6c, 0x70, 0x6d, 0x72, 0x69, 0x6d, 0x68, 0x70, 0x72, 0x6d, 0x6c, 0x73, + 0x69, 0x6c, 0x6b, 0x63, 0x74, 0x6e, 0x6b, 0x6e, 0x6a, 0x76, 0x72, 0x78, + 0x6f, 0x7b, 0x6b, 0x70, 0x6c, 0x6f, 0x6f, 0x6e, 0x68, 0x6a, 0x60, 0x70, + 0x6c, 0x82, 0x70, 0x6d, 0x74, 0x6f, 0x70, 0x6e, 0x62, 0x6c, 0x77, 0x6f, + 0x73, 0x63, 0x72, 0x76, 0x78, 0x79, 0x6d, 0x76, 0x6e, 0x6f, 0x65, 0x70, + 0x6f, 0x6d, 0x71, 0x6b, 0x6e, 0x70, 0x73, 0x70, 0x6e, 0x6f, 0x6e, 0x58, + 0x7b, 0x76, 0x77, 0x6e, 0x71, 0x6f, 0x6f, 0x71, 0x71, 0x6e, 0x6a, 0x74, + 0x73, 0x75, 0x72, 0x70, 0x6e, 0x67, 0x6d, 0x6d, 0x73, 0x73, 0x72, 0x6c, + 0x6e, 0x70, 0x74, 0x6f, 0x73, 0x69, 0x6e, 0x6f, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6c, 0x6f, 0x6e, 0x69, 0x6a, 0x63, 0x72, 0x6f, 0x72, 0x74, 0x6e, 0x76, + 0x7c, 0x70, 0x72, 0x74, 0x6d, 0x70, 0x6e, 0x6f, 0x6d, 0x70, 0x75, 0x6f, + 0x6e, 0x6a, 0x6f, 0x65, 0x6b, 0x6f, 0x7a, 0x6e, 0x72, 0x6b, 0x6f, 0x75, + 0x6f, 0x6f, 0x6e, 0x70, 0x70, 0x70, 0x6e, 0x79, 0x6c, 0x6c, 0x6d, 0x6f, + 0x6b, 0x73, 0x70, 0x72, 0x6b, 0x6c, 0x72, 0x7d, 0x5a, 0x6e, 0x6f, 0x70, + 0x69, 0x6f, 0x78, 0x70, 0x82, 0x8b, 0x73, 0x63, 0x73, 0x70, 0x6c, 0x6e, + 0x6a, 0x69, 0x6c, 0x6e, 0x70, 0x73, 0x6f, 0x6f, 0x73, 0x6f, 0x6f, 0x6d, + 0x73, 0x77, 0x78, 0x6e, 0x6f, 0x76, 0x6e, 0x6c, 0x73, 0x6a, 0x69, 0x6e, + 0x73, 0x6e, 0x71, 0x6e, 0x67, 0x6e, 0x79, 0x70, 0x73, 0x51, 0x65, 0x6b, + 0x6d, 0x6f, 0x77, 0x6f, 0x78, 0x70, 0x70, 0x77, 0x6e, 0x71, 0x5e, 0x70, + 0x70, 0x6f, 0x70, 0x6b, 0x62, 0x78, 0x76, 0x70, 0x6e, 0x6e, 0x6f, 0x77, + 0x6c, 0x6e, 0x6f, 0x7d, 0x54, 0x72, 0x61, 0x6f, 0x6f, 0x68, 0x7c, 0x71, + 0x75, 0x6d, 0x6f, 0x63, 0x75, 0x6f, 0x6d, 0x6e, 0x73, 0x74, 0x70, 0x70, + 0x6e, 0x71, 0x6c, 0x6f, 0x71, 0x6f, 0x6f, 0x72, 0x6e, 0x73, 0x6f, 0x6e, + 0x6a, 0x6f, 0x70, 0x6d, 0x74, 0x71, 0x72, 0x6c, 0x73, 0x6f, 0x6e, 0x70, + 0x77, 0x6e, 0x80, 0x6e, 0x6f, 0x78, 0x64, 0x68, 0x71, 0x6e, 0x64, 0x6e, + 0x74, 0x70, 0x70, 0x78, 0x6f, 0x72, 0x6e, 0x6e, 0x71, 0x6e, 0x6f, 0x6d, + 0x6c, 0x7d, 0x6b, 0x6e, 0x67, 0x66, 0x6e, 0x75, 0x62, 0x69, 0x73, 0x6f, + 0x65, 0x6e, 0x70, 0x6e, 0x76, 0x6f, 0x68, 0x6e, 0x70, 0x71, 0x71, 0x6b, + 0x6e, 0x6f, 0x73, 0x70, 0x6f, 0x6b, 0x70, 0x6f, 0x70, 0x69, 0x5f, 0x70, + 0x6e, 0x6f, 0x6e, 0x71, 0x6b, 0x7a, 0x70, 0x6f, 0x6c, 0x6f, 0x6f, 0x72, + 0x70, 0x6e, 0x72, 0x77, 0x67, 0x6b, 0x6f, 0x70, 0x6f, 0x75, 0x5f, 0x70, + 0x74, 0x63, 0x6e, 0x6a, 0x6d, 0x70, 0x6e, 0x6f, 0x71, 0x73, 0x72, 0x72, + 0x6f, 0x73, 0x6a, 0x6e, 0x6a, 0x70, 0x6f, 0x60, 0x71, 0x7b, 0x68, 0x6e, + 0x6f, 0x76, 0x6f, 0x71, 0x74, 0x71, 0x76, 0x6f, 0x59, 0x6d, 0x6b, 0x6e, + 0x71, 0x6c, 0x70, 0x70, 0x73, 0x57, 0x75, 0x62, 0x6e, 0x6e, 0x68, 0x6e, + 0x6f, 0x69, 0x71, 0x71, 0x6e, 0x69, 0x74, 0x6e, 0x6e, 0x6e, 0x6f, 0x71, + 0x7a, 0x69, 0x7d, 0x70, 0x6f, 0x70, 0x6f, 0x73, 0x7f, 0x6a, 0x6d, 0x6f, + 0x6d, 0x68, 0x6f, 0x6e, 0x69, 0x6d, 0x66, 0x70, 0x71, 0x60, 0x6c, 0x66, + 0x73, 0x6f, 0x6c, 0x6e, 0x7e, 0x77, 0x73, 0x77, 0x70, 0x6e, 0x71, 0x70, + 0x66, 0x6f, 0x70, 0x6f, 0x78, 0x79, 0x6a, 0x6f, 0x6d, 0x75, 0x70, 0x77, + 0x73, 0x6f, 0x6a, 0x6d, 0x5f, 0x6e, 0x63, 0x70, 0x6f, 0x6f, 0x7e, 0x77, + 0x6e, 0x71, 0x69, 0x6d, 0x6c, 0x6f, 0x6b, 0x6e, 0x72, 0x6a, 0x6c, 0x70, + 0x6f, 0x70, 0x68, 0x6f, 0x6a, 0x71, 0x6e, 0x77, 0x6e, 0x6e, 0x73, 0x6f, + 0x6e, 0x7a, 0x6e, 0x6d, 0x6b, 0x71, 0x6f, 0x73, 0x7c, 0x71, 0x6e, 0x70, + 0x6e, 0x6f, 0x63, 0x6d, 0x6d, 0x76, 0x6f, 0x69, 0x73, 0x70, 0x73, 0x6e, + 0x69, 0x6c, 0x6a, 0x72, 0x70, 0x68, 0x6c, 0x6f, 0x71, 0x6d, 0x6e, 0x74, + 0x72, 0x72, 0x72, 0x6e, 0x6b, 0x6b, 0x6f, 0x6d, 0x6f, 0x7b, 0x65, 0x6c, + 0x71, 0x70, 0x71, 0x6f, 0x72, 0x6e, 0x6b, 0x7d, 0x5a, 0x5e, 0x74, 0x6e, + 0x6c, 0x70, 0x72, 0x6e, 0x7a, 0x62, 0x70, 0x6c, 0x6f, 0x80, 0x5a, 0x6e, + 0x71, 0x6f, 0x6e, 0x93, 0x56, 0x73, 0x7f, 0x6f, 0x72, 0x64, 0x6f, 0x75, + 0x73, 0x68, 0x6d, 0x68, 0x59, 0x6d, 0x63, 0x70, 0x6c, 0x69, 0x69, 0x6b, + 0x78, 0x71, 0x6f, 0x55, 0x6e, 0x6e, 0x71, 0x6f, 0x6a, 0x70, 0x6b, 0x76, + 0x6f, 0x6e, 0x6e, 0x6f, 0x71, 0x6f, 0x6f, 0x78, 0x6a, 0x65, 0x72, 0x6f, + 0x70, 0x73, 0x6f, 0x6d, 0x6d, 0x6f, 0x72, 0x78, 0x67, 0x6a, 0x73, 0x70, + 0x70, 0x70, 0x72, 0x70, 0x74, 0x77, 0x6f, 0x64, 0x6f, 0x6e, 0x64, 0x70, + 0x62, 0x6a, 0x75, 0x70, 0x6e, 0x70, 0x5b, 0x6e, 0x6f, 0x6e, 0x6f, 0x78, + 0x7a, 0x63, 0x6a, 0x6f, 0x73, 0x64, 0x6e, 0x6e, 0x6d, 0x76, 0x68, 0x7d, + 0x72, 0x6c, 0x70, 0x6e, 0x6d, 0x6c, 0x6c, 0x74, 0x75, 0x67, 0x6d, 0x70, + 0x71, 0x6f, 0x6e, 0x6e, 0x73, 0x6d, 0x71, 0x75, 0x70, 0x72, 0x6b, 0x6e, + 0x6d, 0x6f, 0x6f, 0x58, 0x70, 0x76, 0x71, 0x70, 0x6d, 0x74, 0x70, 0x71, + 0x70, 0x6e, 0x6e, 0x71, 0x4f, 0x6a, 0x6a, 0x6e, 0x6f, 0x64, 0x71, 0x73, + 0x77, 0x72, 0x6e, 0x71, 0x6e, 0x71, 0x78, 0x70, 0x75, 0x73, 0x70, 0x6e, + 0x70, 0x77, 0x7d, 0x6f, 0x6c, 0x6e, 0x6f, 0x6a, 0x6c, 0x7c, 0x69, 0x70, + 0x71, 0x71, 0x70, 0x74, 0x6b, 0x6b, 0x70, 0x74, 0x57, 0x70, 0x75, 0x6e, + 0x6d, 0x6e, 0x87, 0x72, 0x78, 0x71, 0x6f, 0x6b, 0x6e, 0x70, 0x72, 0x6f, + 0x6a, 0x6e, 0x6c, 0x6f, 0x70, 0x6a, 0x71, 0x70, 0x73, 0x70, 0x6f, 0x72, + 0x70, 0x73, 0x73, 0x70, 0x75, 0x71, 0x70, 0x71, 0x72, 0x72, 0x6c, 0x7c, + 0x6d, 0x6f, 0x73, 0x6f, 0x6f, 0x65, 0x70, 0x6e, 0x70, 0x6e, 0x70, 0x61, + 0x71, 0x6e, 0x71, 0x6f, 0x6f, 0x74, 0x73, 0x73, 0x6e, 0x71, 0x6b, 0x6f, + 0x66, 0x6f, 0x6d, 0x69, 0x6a, 0x6b, 0x6d, 0x70, 0x73, 0x69, 0x6e, 0x74, + 0x6c, 0x75, 0x6c, 0x6d, 0x68, 0x70, 0x75, 0x6f, 0x72, 0x70, 0x76, 0x72, + 0x81, 0x5a, 0x72, 0x76, 0x6c, 0x6e, 0x68, 0x6f, 0x72, 0x72, 0x70, 0x64, + 0x6e, 0x71, 0x70, 0x70, 0x70, 0x6e, 0x6f, 0x62, 0x77, 0x6c, 0x70, 0x70, + 0x70, 0x68, 0x70, 0x6f, 0x79, 0x6a, 0x6a, 0x80, 0x6f, 0x6f, 0x62, 0x70, + 0x6c, 0x6e, 0x5d, 0x68, 0x71, 0x6d, 0x6b, 0x5e, 0x75, 0x70, 0x69, 0x70, + 0x77, 0x77, 0x73, 0x76, 0x70, 0x7e, 0x6c, 0x70, 0x6b, 0x6e, 0x6f, 0x6b, + 0x71, 0x72, 0x5e, 0x6f, 0x6c, 0x71, 0x6f, 0x6f, 0x6d, 0x6c, 0x73, 0x70, + 0x65, 0x6d, 0x6f, 0x6e, 0x6e, 0x70, 0x80, 0x73, 0x68, 0x70, 0x74, 0x69, + 0x6d, 0x6e, 0x72, 0x6e, 0x6c, 0x65, 0x71, 0x6f, 0x6e, 0x64, 0x70, 0x6f, + 0x6c, 0x70, 0x6e, 0x6b, 0x6d, 0x6b, 0x71, 0x6f, 0x6d, 0x75, 0x6f, 0x6c, + 0x6e, 0x6f, 0x76, 0x6c, 0x73, 0x6e, 0x76, 0x6f, 0x6d, 0x6e, 0x66, 0x76, + 0x75, 0x71, 0x6b, 0x6c, 0x6d, 0x6e, 0x6b, 0x70, 0x77, 0x70, 0x70, 0x74, + 0x70, 0x6f, 0x6b, 0x70, 0x6e, 0x6e, 0x6f, 0x6a, 0x6f, 0x6f, 0x78, 0x70, + 0x6e, 0x71, 0x6f, 0x71, 0x6d, 0x6b, 0x6e, 0x74, 0x5e, 0x6e, 0x5d, 0x6e, + 0x74, 0x6b, 0x6f, 0x6b, 0x5a, 0x6b, 0x6d, 0x69, 0x6d, 0x6f, 0x74, 0x6f, + 0x71, 0x6f, 0x6e, 0x70, 0x70, 0x66, 0x76, 0x6f, 0x6b, 0x6f, 0x6d, 0x61, + 0x66, 0x73, 0x65, 0x6f, 0x6b, 0x74, 0x6f, 0x72, 0x6a, 0x6b, 0x6d, 0x64, + 0x5a, 0x68, 0x63, 0x70, 0x6e, 0x71, 0x4f, 0x6e, 0x79, 0x80, 0x74, 0x6d, + 0x6c, 0x6f, 0x72, 0x6f, 0x6a, 0x6c, 0x74, 0x73, 0x6e, 0x6b, 0x5b, 0x6f, + 0x71, 0x6f, 0x70, 0x6a, 0x6f, 0x64, 0x76, 0x70, 0x6d, 0x66, 0x6f, 0x6d, + 0x71, 0x6e, 0x7a, 0x75, 0x61, 0x79, 0x77, 0x70, 0x6f, 0x61, 0x65, 0x71, + 0x72, 0x71, 0x6f, 0x61, 0x6e, 0x70, 0x72, 0x70, 0x73, 0x67, 0x72, 0x72, + 0x6f, 0x6e, 0x67, 0x6f, 0x70, 0x6f, 0x6f, 0x68, 0x6b, 0x7a, 0x6b, 0x6e, + 0x6d, 0x6f, 0x70, 0x75, 0x69, 0x6d, 0x6f, 0x6f, 0x66, 0x70, 0x6e, 0x6e, + 0x6d, 0x71, 0x60, 0x71, 0x6f, 0x74, 0x72, 0x63, 0x73, 0x70, 0x79, 0x6e, + 0x70, 0x73, 0x72, 0x73, 0x70, 0x67, 0x6b, 0x6e, 0x70, 0x6f, 0x70, 0x83, + 0x5f, 0x68, 0x74, 0x70, 0x71, 0x69, 0x6f, 0x6a, 0x66, 0x6e, 0x78, 0x6c, + 0x5b, 0x6b, 0x6b, 0x70, 0x70, 0x70, 0x74, 0x74, 0x76, 0x72, 0x72, 0x71, + 0x6d, 0x6f, 0x71, 0x70, 0x67, 0x6e, 0x6f, 0x75, 0x6f, 0x6c, 0x80, 0x6e, + 0x70, 0x6f, 0x6f, 0x6c, 0x6c, 0x81, 0x6b, 0x6e, 0x70, 0x6e, 0x70, 0x6f, + 0x69, 0x6f, 0x73, 0x7b, 0x71, 0x69, 0x6a, 0x70, 0x71, 0x72, 0x5e, 0x70, + 0x6e, 0x70, 0x6d, 0x6a, 0x6a, 0x6f, 0x6d, 0x6e, 0x6e, 0x67, 0x78, 0x6b, + 0x6e, 0x66, 0x74, 0x70, 0x76, 0x6d, 0x6f, 0x6a, 0x71, 0x62, 0x68, 0x6f, + 0x67, 0x75, 0x6e, 0x71, 0x6d, 0x63, 0x7e, 0x7f, 0x6b, 0x6e, 0x6a, 0x70, + 0x68, 0x6e, 0x70, 0x79, 0x72, 0x76, 0x6d, 0x56, 0x6b, 0x6f, 0x81, 0x6e, + 0x5e, 0x79, 0x68, 0x59, 0x70, 0x74, 0x64, 0x6e, 0x6f, 0x6f, 0x6e, 0x72, + 0x7e, 0x6f, 0x77, 0x70, 0x77, 0x70, 0x6e, 0x67, 0x65, 0x70, 0x72, 0x72, + 0x61, 0x6d, 0x75, 0x6f, 0x73, 0x67, 0x80, 0x66, 0x69, 0x5d, 0x6a, 0x54, + 0x6c, 0x70, 0x70, 0x6f, 0x6f, 0x70, 0x70, 0x73, 0x6f, 0x6e, 0x65, 0x6f, + 0x6a, 0x6f, 0x6e, 0x65, 0x6b, 0x71, 0x6e, 0x6f, 0x6d, 0x6e, 0x70, 0x73, + 0x6c, 0x6d, 0x6f, 0x68, 0x65, 0x69, 0x64, 0x6e, 0x6d, 0x6b, 0x66, 0x70, + 0x65, 0x6f, 0x6f, 0x67, 0x6f, 0x70, 0x71, 0x70, 0x72, 0x6e, 0x78, 0x72, + 0x6e, 0x73, 0x6d, 0x6e, 0x77, 0x6f, 0x70, 0x64, 0x72, 0x6d, 0x61, 0x6f, + 0x68, 0x6a, 0x6f, 0x70, 0x69, 0x6f, 0x76, 0x70, 0x74, 0x6e, 0x70, 0x6e, + 0x6e, 0x6e, 0x7e, 0x6e, 0x6a, 0x6f, 0x69, 0x71, 0x6a, 0x70, 0x6f, 0x70, + 0x76, 0x70, 0x6e, 0x72, 0x70, 0x6a, 0x66, 0x70, 0x74, 0x70, 0x70, 0x79, + 0x70, 0x74, 0x66, 0x6e, 0x65, 0x5f, 0x6f, 0x71, 0x6b, 0x71, 0x71, 0x64, + 0x6b, 0x6b, 0x6a, 0x6f, 0x72, 0x70, 0x7d, 0x6c, 0x76, 0x69, 0x74, 0x6e, + 0x68, 0x6e, 0x70, 0x70, 0x53, 0x70, 0x68, 0x6f, 0x70, 0x77, 0x6d, 0x70, + 0x77, 0x6e, 0x70, 0x6f, 0x6e, 0x7f, 0x71, 0x6e, 0x79, 0x68, 0x6f, 0x6a, + 0x65, 0x73, 0x71, 0x71, 0x6b, 0x6f, 0x6f, 0x6e, 0x72, 0x70, 0x67, 0x69, + 0x74, 0x77, 0x72, 0x64, 0x70, 0x6f, 0x6a, 0x6e, 0x69, 0x76, 0x6d, 0x6b, + 0x70, 0x6f, 0x71, 0x70, 0x6d, 0x70, 0x70, 0x6a, 0x6d, 0x68, 0x7b, 0x6e, + 0x6a, 0x76, 0x6e, 0x69, 0x70, 0x6f, 0x71, 0x7b, 0x6d, 0x6c, 0x6b, 0x6f, + 0x6f, 0x70, 0x72, 0x69, 0x6f, 0x71, 0x6c, 0x65, 0x70, 0x70, 0x73, 0x70, + 0x77, 0x6a, 0x72, 0x6e, 0x6f, 0x70, 0x65, 0x70, 0x65, 0x6e, 0x6e, 0x6b, + 0x6a, 0x64, 0x79, 0x6f, 0x6e, 0x6f, 0x70, 0x73, 0x73, 0x64, 0x6f, 0x6e, + 0x5c, 0x6f, 0x6c, 0x6e, 0x70, 0x70, 0x77, 0x6e, 0x6b, 0x65, 0x6e, 0x73, + 0x72, 0x70, 0x6d, 0x6e, 0x64, 0x69, 0x6e, 0x6d, 0x6f, 0x68, 0x62, 0x6f, + 0x6d, 0x70, 0x6f, 0x6e, 0x6c, 0x69, 0x59, 0x70, 0x71, 0x74, 0x6f, 0x62, + 0x74, 0x70, 0x61, 0x68, 0x6d, 0x6d, 0x76, 0x6f, 0x6e, 0x5b, 0x7a, 0x68, + 0x72, 0x6a, 0x62, 0x68, 0x6d, 0x6e, 0x80, 0x6e, 0x73, 0x70, 0x73, 0x73, + 0x6f, 0x76, 0x70, 0x6f, 0x75, 0x6f, 0x6e, 0x69, 0x68, 0x73, 0x71, 0x70, + 0x6d, 0x77, 0x6e, 0x73, 0x66, 0x72, 0x78, 0x71, 0x52, 0x6e, 0x6c, 0x70, + 0x71, 0x6a, 0x68, 0x74, 0x68, 0x71, 0x75, 0x65, 0x6a, 0x6f, 0x7a, 0x6f, + 0x74, 0x6f, 0x72, 0x7e, 0x6f, 0x73, 0x6c, 0x6f, 0x6e, 0x6e, 0x6e, 0x68, + 0x66, 0x6e, 0x77, 0x6f, 0x71, 0x6a, 0x6f, 0x76, 0x6e, 0x6d, 0x73, 0x6e, + 0x5d, 0x6e, 0x72, 0x6e, 0x71, 0x6e, 0x60, 0x6c, 0x6e, 0x68, 0x6a, 0x6a, + 0x73, 0x6e, 0x78, 0x6e, 0x74, 0x71, 0x73, 0x73, 0x70, 0x73, 0x6a, 0x6f, + 0x6f, 0x6f, 0x6e, 0x64, 0x6a, 0x6a, 0x6d, 0x6e, 0x6c, 0x75, 0x70, 0x70, + 0x6a, 0x70, 0x76, 0x6e, 0x63, 0x6d, 0x67, 0x70, 0x70, 0x70, 0x65, 0x74, + 0x70, 0x66, 0x63, 0x66, 0x6c, 0x6e, 0x7d, 0x6e, 0x79, 0x75, 0x6f, 0x78, + 0x71, 0x73, 0x62, 0x6e, 0x6b, 0x6e, 0x70, 0x71, 0x5c, 0x6c, 0x75, 0x70, + 0x6d, 0x6c, 0x6d, 0x78, 0x67, 0x6f, 0x6e, 0x6e, 0x49, 0x6c, 0x68, 0x71, + 0x71, 0x6e, 0x72, 0x72, 0x63, 0x6d, 0x6a, 0x7b, 0x74, 0x6f, 0x6d, 0x70, + 0x7c, 0x74, 0x73, 0x6e, 0x70, 0x73, 0x6d, 0x6f, 0x74, 0x6d, 0x6f, 0x75, + 0x72, 0x6c, 0x6e, 0x70, 0x6f, 0x74, 0x6f, 0x6a, 0x6b, 0x6d, 0x73, 0x76, + 0x77, 0x6e, 0x70, 0x6f, 0x73, 0x6e, 0x5f, 0x6d, 0x6f, 0x69, 0x72, 0x5e, + 0x73, 0x6e, 0x67, 0x70, 0x71, 0x67, 0x73, 0x6f, 0x6f, 0x6c, 0x6c, 0x6e, + 0x69, 0x6e, 0x6f, 0x75, 0x73, 0x71, 0x77, 0x6f, 0x78, 0x84, 0x6f, 0x6d, + 0x71, 0x6d, 0x74, 0x78, 0x59, 0x6e, 0x76, 0x6f, 0x71, 0x79, 0x6e, 0x71, + 0x76, 0x6e, 0x6b, 0x68, 0x70, 0x70, 0x77, 0x6f, 0x6e, 0x73, 0x71, 0x6e, + 0x70, 0x6e, 0x67, 0x6e, 0x6b, 0x6f, 0x6e, 0x6c, 0x6e, 0x6a, 0x6e, 0x71, + 0x6a, 0x75, 0x6e, 0x6e, 0x78, 0x6d, 0x75, 0x6e, 0x66, 0x6f, 0x73, 0x6e, + 0x70, 0x6e, 0x79, 0x72, 0x6c, 0x69, 0x76, 0x6b, 0x6e, 0x6f, 0x81, 0x70, + 0x7e, 0x74, 0x74, 0x72, 0x70, 0x6f, 0x6e, 0x70, 0x6e, 0x6f, 0x6e, 0x70, + 0x6b, 0x72, 0x66, 0x6e, 0x6a, 0x70, 0x70, 0x77, 0x71, 0x5d, 0x79, 0x67, + 0x5e, 0x6f, 0x6f, 0x6f, 0x69, 0x6f, 0x83, 0x72, 0x61, 0x74, 0x71, 0x70, + 0x72, 0x6f, 0x6b, 0x6f, 0x72, 0x80, 0x72, 0x6f, 0x6e, 0x79, 0x67, 0x70, + 0x6b, 0x6f, 0x6f, 0x78, 0x76, 0x74, 0x5f, 0x6e, 0x69, 0x73, 0x6f, 0x6f, + 0x6e, 0x6f, 0x6c, 0x6d, 0x76, 0x6d, 0x72, 0x6e, 0x6e, 0x6e, 0x80, 0x72, + 0x6a, 0x7d, 0x70, 0x66, 0x6b, 0x70, 0x68, 0x6f, 0x66, 0x7b, 0x6f, 0x71, + 0x6e, 0x69, 0x6d, 0x6f, 0x66, 0x6f, 0x71, 0x68, 0x6e, 0x6f, 0x79, 0x70, + 0x69, 0x76, 0x6f, 0x6b, 0x77, 0x65, 0x6b, 0x7b, 0x75, 0x73, 0x68, 0x6f, + 0x68, 0x70, 0x79, 0x6d, 0x73, 0x76, 0x6f, 0x6b, 0x6c, 0x6f, 0x6e, 0x6f, + 0x74, 0x71, 0x6b, 0x6b, 0x6e, 0x6b, 0x65, 0x6e, 0x72, 0x6e, 0x70, 0x6e, + 0x6e, 0x6c, 0x76, 0x70, 0x6b, 0x76, 0x6e, 0x6c, 0x6a, 0x70, 0x6c, 0x7e, + 0x74, 0x6e, 0x6c, 0x6f, 0x6e, 0x6c, 0x6f, 0x6c, 0x76, 0x70, 0x72, 0x6c, + 0x6d, 0x70, 0x72, 0x70, 0x70, 0x71, 0x6d, 0x72, 0x6f, 0x6d, 0x6b, 0x6e, + 0x73, 0x6f, 0x6e, 0x6a, 0x6c, 0x77, 0x5c, 0x6f, 0x70, 0x70, 0x6f, 0x71, + 0x72, 0x74, 0x6e, 0x70, 0x6a, 0x6f, 0x6e, 0x70, 0x72, 0x6c, 0x76, 0x6f, + 0x6e, 0x5c, 0x68, 0x5c, 0x74, 0x6f, 0x72, 0x6f, 0x76, 0x7a, 0x77, 0x6a, + 0x70, 0x73, 0x76, 0x6f, 0x6e, 0x6e, 0x6f, 0x70, 0x69, 0x67, 0x6f, 0x6e, + 0x6e, 0x70, 0x70, 0x75, 0x72, 0x70, 0x65, 0x70, 0x67, 0x71, 0x6e, 0x6f, + 0x75, 0x6f, 0x7e, 0x71, 0x72, 0x66, 0x6f, 0x71, 0x70, 0x6e, 0x6f, 0x6f, + 0x74, 0x6e, 0x73, 0x73, 0x6f, 0x71, 0x6d, 0x6f, 0x6b, 0x6f, 0x6e, 0x61, + 0x6d, 0x76, 0x71, 0x70, 0x6d, 0x70, 0x6f, 0x71, 0x6f, 0x6d, 0x71, 0x71, + 0x52, 0x71, 0x6e, 0x6f, 0x6e, 0x65, 0x6c, 0x73, 0x70, 0x6f, 0x66, 0x69, + 0x6c, 0x70, 0x6a, 0x6e, 0x73, 0x65, 0x6c, 0x70, 0x6f, 0x71, 0x59, 0x6f, + 0x67, 0x6f, 0x6e, 0x76, 0x70, 0x77, 0x87, 0x70, 0x6f, 0x77, 0x6f, 0x6c, + 0x78, 0x70, 0x73, 0x6c, 0x50, 0x6f, 0x6f, 0x6e, 0x73, 0x61, 0x79, 0x6f, + 0x7b, 0x51, 0x66, 0x66, 0x71, 0x6f, 0x70, 0x6e, 0x78, 0x6a, 0x72, 0x71, + 0x70, 0x70, 0x6f, 0x6f, 0x70, 0x6e, 0x6e, 0x63, 0x68, 0x69, 0x6e, 0x6f, + 0x6b, 0x72, 0x6f, 0x72, 0x6b, 0x6d, 0x72, 0x7d, 0x66, 0x6e, 0x64, 0x6f, + 0x74, 0x6d, 0x6f, 0x6e, 0x72, 0x6a, 0x6e, 0x69, 0x6f, 0x70, 0x72, 0x70, + 0x71, 0x73, 0x71, 0x72, 0x70, 0x72, 0x66, 0x6e, 0x6f, 0x6f, 0x6f, 0x6f, + 0x6e, 0x79, 0x67, 0x6f, 0x70, 0x70, 0x70, 0x73, 0x6e, 0x70, 0x6f, 0x74, + 0x63, 0x6b, 0x6e, 0x70, 0x73, 0x67, 0x72, 0x71, 0x7a, 0x7a, 0x67, 0x63, + 0x74, 0x6e, 0x75, 0x6f, 0x7b, 0x6f, 0x6e, 0x74, 0x70, 0x75, 0x7d, 0x70, + 0x6a, 0x6e, 0x6f, 0x6e, 0x6b, 0x6d, 0x6a, 0x70, 0x6f, 0x7a, 0x70, 0x74, + 0x6c, 0x6b, 0x6a, 0x78, 0x50, 0x6d, 0x5d, 0x6f, 0x6d, 0x6f, 0x7e, 0x72, + 0x66, 0x6d, 0x67, 0x66, 0x6d, 0x6f, 0x82, 0x6e, 0x74, 0x74, 0x72, 0x6e, + 0x6f, 0x6b, 0x6c, 0x6e, 0x6d, 0x6f, 0x6f, 0x5f, 0x66, 0x64, 0x68, 0x71, + 0x68, 0x6f, 0x6e, 0x77, 0x69, 0x69, 0x73, 0x74, 0x4c, 0x6e, 0x63, 0x70, + 0x6c, 0x73, 0x60, 0x70, 0x70, 0x75, 0x73, 0x76, 0x6d, 0x70, 0x76, 0x70, + 0x70, 0x6d, 0x6e, 0x71, 0x6f, 0x5e, 0x6b, 0x70, 0x6f, 0x70, 0x6e, 0x5c, + 0x6b, 0x6b, 0x70, 0x70, 0x6b, 0x73, 0x70, 0x6d, 0x70, 0x6a, 0x78, 0x67, + 0x6c, 0x71, 0x81, 0x6e, 0x6d, 0x6e, 0x8e, 0x6f, 0x75, 0x79, 0x6e, 0x66, + 0x74, 0x6e, 0x6d, 0x6f, 0x73, 0x74, 0x75, 0x74, 0x6e, 0x65, 0x6a, 0x6f, + 0x6b, 0x6f, 0x6f, 0x71, 0x66, 0x79, 0x79, 0x6f, 0x72, 0x70, 0x70, 0x72, + 0x72, 0x6c, 0x6d, 0x64, 0x6b, 0x6f, 0x6e, 0x6f, 0x71, 0x6c, 0x7a, 0x72, + 0x79, 0x6e, 0x6e, 0x6b, 0x6d, 0x6f, 0x71, 0x6e, 0x6d, 0x73, 0x6d, 0x76, + 0x70, 0x6f, 0x65, 0x6e, 0x72, 0x6f, 0x70, 0x77, 0x70, 0x7c, 0x6e, 0x6f, + 0x6e, 0x71, 0x6f, 0x6f, 0x6c, 0x72, 0x72, 0x75, 0x73, 0x70, 0x73, 0x6e, + 0x6e, 0x70, 0x6e, 0x6f, 0x69, 0x7f, 0x6d, 0x6b, 0x68, 0x6e, 0x6d, 0x6e, + 0x6e, 0x6e, 0x72, 0x75, 0x6f, 0x5a, 0x73, 0x6e, 0x6e, 0x70, 0x6e, 0x72, + 0x71, 0x6c, 0x77, 0x70, 0x71, 0x63, 0x6e, 0x70, 0x6e, 0x70, 0x72, 0x5f, + 0x72, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x72, 0x6d, 0x67, 0x61, 0x77, 0x68, + 0x77, 0x6e, 0x69, 0x6f, 0x74, 0x75, 0x71, 0x71, 0x6f, 0x7a, 0x6e, 0x70, + 0x60, 0x6f, 0x6e, 0x6d, 0x71, 0x74, 0x7e, 0x6f, 0x72, 0x6d, 0x6e, 0x6b, + 0x79, 0x71, 0x76, 0x74, 0x7b, 0x6e, 0x71, 0x6d, 0x72, 0x6e, 0x62, 0x6f, + 0x6f, 0x5f, 0x6c, 0x6f, 0x75, 0x6e, 0x7a, 0x6f, 0x81, 0x76, 0x73, 0x75, + 0x6e, 0x7d, 0x64, 0x6f, 0x67, 0x6f, 0x70, 0x6a, 0x58, 0x65, 0x70, 0x6e, + 0x6b, 0x79, 0x6e, 0x75, 0x6a, 0x6e, 0x73, 0x73, 0x50, 0x70, 0x72, 0x6f, + 0x6b, 0x6e, 0x73, 0x79, 0x87, 0x66, 0x61, 0x59, 0x6d, 0x70, 0x8d, 0x70, + 0x63, 0x64, 0x6a, 0x73, 0x70, 0x74, 0x72, 0x70, 0x74, 0x6e, 0x70, 0x53, + 0x55, 0x86, 0x7f, 0x6f, 0x7e, 0x69, 0x70, 0x72, 0x56, 0x64, 0x75, 0x7c, + 0x5b, 0x70, 0x5a, 0x70, 0x6a, 0x6f, 0x6e, 0x71, 0x71, 0x6f, 0x70, 0x69, + 0x6f, 0x6e, 0x71, 0x6f, 0x6e, 0x65, 0x72, 0x70, 0x6e, 0x6f, 0x6a, 0x70, + 0x6c, 0x70, 0x6e, 0x69, 0x6a, 0x79, 0x6a, 0x6d, 0x70, 0x6a, 0x70, 0x72, + 0x6c, 0x6e, 0x71, 0x75, 0x58, 0x6c, 0x72, 0x6f, 0x6e, 0x70, 0x71, 0x70, + 0x6a, 0x65, 0x6f, 0x69, 0x6d, 0x6f, 0x74, 0x6f, 0x6b, 0x70, 0x6d, 0x75, + 0x70, 0x63, 0x71, 0x6f, 0x70, 0x6e, 0x70, 0x6a, 0x6d, 0x64, 0x7a, 0x6e, + 0x70, 0x6a, 0x70, 0x6f, 0x6c, 0x70, 0x76, 0x61, 0x6c, 0x6a, 0x6d, 0x6f, + 0x6e, 0x75, 0x6f, 0x70, 0x5e, 0x6c, 0x75, 0x67, 0x79, 0x6e, 0x70, 0x70, + 0x72, 0x88, 0x70, 0x79, 0x6e, 0x77, 0x70, 0x6e, 0x69, 0x6f, 0x6e, 0x72, + 0x6e, 0x6f, 0x65, 0x6e, 0x66, 0x72, 0x6e, 0x6b, 0x73, 0x70, 0x74, 0x70, + 0x5c, 0x6d, 0x78, 0x70, 0x76, 0x6f, 0x7d, 0x73, 0x76, 0x69, 0x66, 0x63, + 0x73, 0x6f, 0x6a, 0x6e, 0x7c, 0x73, 0x76, 0x77, 0x6f, 0x72, 0x64, 0x6e, + 0x6c, 0x6e, 0x6e, 0x61, 0x6c, 0x63, 0x77, 0x70, 0x6e, 0x73, 0x6f, 0x75, + 0x6c, 0x69, 0x71, 0x76, 0x4a, 0x72, 0x61, 0x6f, 0x6d, 0x6d, 0x76, 0x74, + 0x71, 0x79, 0x76, 0x66, 0x71, 0x70, 0x6f, 0x6e, 0x71, 0x6e, 0x73, 0x79, + 0x70, 0x6e, 0x76, 0x6e, 0x6c, 0x6f, 0x6f, 0x6a, 0x5f, 0x77, 0x6d, 0x6e, + 0x70, 0x69, 0x6e, 0x73, 0x77, 0x6b, 0x72, 0x68, 0x5e, 0x6e, 0x7b, 0x6e, + 0x6e, 0x6d, 0x89, 0x71, 0x67, 0x75, 0x70, 0x7d, 0x6a, 0x70, 0x65, 0x6f, + 0x6d, 0x6c, 0x6e, 0x6e, 0x70, 0x70, 0x69, 0x6f, 0x76, 0x6f, 0x6e, 0x60, + 0x74, 0x79, 0x66, 0x70, 0x71, 0x67, 0x70, 0x72, 0x71, 0x73, 0x6e, 0x73, + 0x55, 0x6d, 0x81, 0x70, 0x73, 0x71, 0x54, 0x68, 0x66, 0x7a, 0x64, 0x64, + 0x6f, 0x6f, 0x81, 0x70, 0x74, 0x72, 0x71, 0x73, 0x70, 0x6c, 0x69, 0x70, + 0x6f, 0x6c, 0x6e, 0x62, 0x64, 0x65, 0x63, 0x70, 0x69, 0x70, 0x6e, 0x76, + 0x62, 0x6b, 0x73, 0x77, 0x5e, 0x6d, 0x60, 0x70, 0x6f, 0x6e, 0x56, 0x72, + 0x6d, 0x74, 0x7a, 0x87, 0x65, 0x6f, 0x6e, 0x6f, 0x7e, 0x64, 0x6b, 0x58, + 0x6e, 0x5d, 0x67, 0x70, 0x6a, 0x70, 0x6f, 0x67, 0x69, 0x74, 0x6d, 0x70, + 0x69, 0x7c, 0x70, 0x70, 0x7b, 0x75, 0x75, 0x82, 0x62, 0x6f, 0x6f, 0x70, + 0x85, 0x5c, 0x73, 0x62, 0x67, 0x5e, 0x59, 0x67, 0x71, 0x6e, 0x6f, 0x70, + 0x6d, 0x6a, 0x7c, 0x70, 0x6e, 0x6b, 0x70, 0x6f, 0x76, 0x6d, 0x6e, 0x76, + 0x6d, 0x70, 0x75, 0x6f, 0x69, 0x6d, 0x6e, 0x76, 0x71, 0x6c, 0x73, 0x6a, + 0x73, 0x70, 0x7d, 0x6e, 0x78, 0x70, 0x6d, 0x72, 0x6e, 0x70, 0x69, 0x65, + 0x71, 0x6d, 0x70, 0x6f, 0x6b, 0x64, 0x6f, 0x65, 0x70, 0x6f, 0x69, 0x6e, + 0x75, 0x6f, 0x70, 0x72, 0x72, 0x6f, 0x79, 0x6f, 0x6b, 0x84, 0x6e, 0x6c, + 0x6c, 0x73, 0x6b, 0x7d, 0x6f, 0x6e, 0x62, 0x6f, 0x6a, 0x6f, 0x73, 0x6b, + 0x67, 0x62, 0x6d, 0x65, 0x73, 0x70, 0x67, 0x6f, 0x76, 0x69, 0x6e, 0x6e, + 0x6f, 0x66, 0x87, 0x6f, 0x62, 0x6d, 0x70, 0x6c, 0x70, 0x6e, 0x77, 0x6e, + 0x6f, 0x7c, 0x6f, 0x6e, 0x74, 0x7e, 0x74, 0x79, 0x7e, 0x6f, 0x73, 0x6f, + 0x6c, 0x6e, 0x61, 0x73, 0x6f, 0x6f, 0x6f, 0x67, 0x6e, 0x6e, 0x77, 0x6f, + 0x6f, 0x70, 0x70, 0x6f, 0x6f, 0x65, 0x64, 0x70, 0x6a, 0x6f, 0x6f, 0x76, + 0x66, 0x7a, 0x73, 0x70, 0x6b, 0x71, 0x6f, 0x6e, 0x6a, 0x74, 0x75, 0x6b, + 0x61, 0x6f, 0x68, 0x6e, 0x74, 0x6e, 0x6e, 0x73, 0x73, 0x7a, 0x71, 0x68, + 0x67, 0x6e, 0x7d, 0x70, 0x70, 0x6b, 0x6b, 0x6a, 0x6f, 0x73, 0x6a, 0x70, + 0x73, 0x6d, 0x6f, 0x73, 0x68, 0x72, 0x7d, 0x70, 0x78, 0x67, 0x70, 0x71, + 0x68, 0x73, 0x6c, 0x71, 0x6e, 0x6f, 0x78, 0x70, 0x76, 0x72, 0x70, 0x66, + 0x70, 0x6e, 0x76, 0x69, 0x6d, 0x6f, 0x6e, 0x6f, 0x60, 0x6d, 0x6c, 0x68, + 0x70, 0x6e, 0x6b, 0x70, 0x73, 0x70, 0x6e, 0x76, 0x73, 0x83, 0x74, 0x6e, + 0x74, 0x6e, 0x6f, 0x65, 0x6d, 0x69, 0x71, 0x7d, 0x6c, 0x70, 0x72, 0x6e, + 0x6e, 0x6f, 0x70, 0x67, 0x6a, 0x6e, 0x6d, 0x69, 0x6c, 0x70, 0x72, 0x6e, + 0x6d, 0x72, 0x6b, 0x71, 0x70, 0x6b, 0x77, 0x70, 0x6f, 0x6f, 0x70, 0x6f, + 0x6d, 0x77, 0x6c, 0x6e, 0x71, 0x6a, 0x70, 0x6e, 0x6e, 0x70, 0x6e, 0x69, + 0x6f, 0x68, 0x70, 0x6e, 0x70, 0x71, 0x69, 0x6d, 0x66, 0x76, 0x73, 0x69, + 0x6d, 0x6f, 0x6f, 0x6f, 0x74, 0x6c, 0x75, 0x75, 0x70, 0x62, 0x70, 0x6f, + 0x6f, 0x6e, 0x70, 0x6a, 0x71, 0x71, 0x68, 0x6f, 0x68, 0x72, 0x6f, 0x77, + 0x73, 0x70, 0x6c, 0x6d, 0x76, 0x6e, 0x68, 0x6f, 0x70, 0x6f, 0x6b, 0x73, + 0x77, 0x75, 0x6e, 0x60, 0x6d, 0x70, 0x71, 0x6f, 0x6c, 0x72, 0x6c, 0x75, + 0x70, 0x69, 0x78, 0x71, 0x70, 0x6f, 0x6e, 0x72, 0x6c, 0x7f, 0x76, 0x6e, + 0x6f, 0x71, 0x70, 0x6f, 0x69, 0x6e, 0x6d, 0x83, 0x67, 0x6a, 0x71, 0x6e, + 0x71, 0x75, 0x73, 0x6e, 0x7a, 0x6b, 0x6d, 0x62, 0x74, 0x6e, 0x6a, 0x6f, + 0x6f, 0x70, 0x72, 0x70, 0x6f, 0x74, 0x61, 0x6e, 0x69, 0x6f, 0x70, 0x6c, + 0x73, 0x6d, 0x63, 0x70, 0x6d, 0x75, 0x70, 0x6f, 0x6e, 0x6d, 0x6b, 0x74, + 0x6a, 0x70, 0x7f, 0x70, 0x71, 0x68, 0x7e, 0x74, 0x73, 0x69, 0x73, 0x69, + 0x6e, 0x6f, 0x76, 0x6f, 0x68, 0x6a, 0x72, 0x72, 0x6f, 0x71, 0x6b, 0x6e, + 0x6e, 0x70, 0x6f, 0x5d, 0x6f, 0x73, 0x71, 0x70, 0x6b, 0x73, 0x71, 0x6e, + 0x6a, 0x72, 0x75, 0x74, 0x5f, 0x6e, 0x69, 0x6e, 0x6d, 0x6d, 0x66, 0x74, + 0x70, 0x66, 0x6c, 0x6d, 0x71, 0x70, 0x74, 0x6e, 0x78, 0x70, 0x72, 0x77, + 0x70, 0x6f, 0x69, 0x6f, 0x6c, 0x6f, 0x6e, 0x6a, 0x62, 0x72, 0x71, 0x6f, + 0x6b, 0x6f, 0x6f, 0x72, 0x66, 0x73, 0x71, 0x72, 0x4d, 0x73, 0x6f, 0x70, + 0x70, 0x6b, 0x72, 0x75, 0x72, 0x72, 0x64, 0x61, 0x6e, 0x6e, 0x7a, 0x70, + 0x77, 0x75, 0x6f, 0x79, 0x6f, 0x6e, 0x74, 0x6f, 0x70, 0x6f, 0x6e, 0x70, + 0x62, 0x6d, 0x71, 0x70, 0x6d, 0x6f, 0x6e, 0x76, 0x69, 0x70, 0x71, 0x6f, + 0x5f, 0x6d, 0x62, 0x70, 0x75, 0x6a, 0x74, 0x71, 0x6a, 0x64, 0x68, 0x6f, + 0x6c, 0x6f, 0x73, 0x70, 0x74, 0x73, 0x72, 0x79, 0x70, 0x75, 0x63, 0x6f, + 0x68, 0x6f, 0x6e, 0x66, 0x6f, 0x6f, 0x6e, 0x71, 0x6b, 0x74, 0x6f, 0x78, + 0x6f, 0x6e, 0x70, 0x70, 0x52, 0x72, 0x61, 0x6f, 0x71, 0x6e, 0x7e, 0x6e, + 0x71, 0x71, 0x64, 0x6c, 0x6c, 0x70, 0x6e, 0x6f, 0x70, 0x68, 0x71, 0x73, + 0x6f, 0x7d, 0x69, 0x6f, 0x66, 0x6f, 0x6e, 0x6d, 0x6d, 0x70, 0x75, 0x6f, + 0x6e, 0x7d, 0x6f, 0x6f, 0x6a, 0x77, 0x75, 0x75, 0x53, 0x6f, 0x68, 0x71, + 0x72, 0x74, 0x76, 0x7b, 0x71, 0x69, 0x6d, 0x74, 0x6f, 0x70, 0x71, 0x70, + 0x75, 0x6e, 0x71, 0x74, 0x6e, 0x72, 0x53, 0x6f, 0x6d, 0x6f, 0x6f, 0x5f, + 0x6c, 0x74, 0x6f, 0x70, 0x6e, 0x6e, 0x70, 0x73, 0x6e, 0x6f, 0x71, 0x70, + 0x53, 0x69, 0x65, 0x6e, 0x70, 0x5a, 0x70, 0x70, 0x70, 0x5f, 0x6e, 0x62, + 0x70, 0x70, 0x75, 0x6e, 0x6a, 0x6e, 0x6b, 0x67, 0x6e, 0x70, 0x6d, 0x70, + 0x77, 0x70, 0x70, 0x7a, 0x6f, 0x84, 0x73, 0x70, 0x72, 0x73, 0x6f, 0x6d, + 0x68, 0x70, 0x72, 0x6c, 0x75, 0x6f, 0x71, 0x70, 0x71, 0x6e, 0x72, 0x70, + 0x73, 0x6c, 0x6e, 0x6f, 0x6f, 0x6e, 0x71, 0x6e, 0x73, 0x6e, 0x72, 0x74, + 0x70, 0x70, 0x5e, 0x70, 0x6d, 0x6f, 0x6e, 0x60, 0x71, 0x76, 0x72, 0x6f, + 0x6e, 0x6e, 0x6f, 0x73, 0x6e, 0x70, 0x71, 0x71, 0x57, 0x6b, 0x69, 0x6e, + 0x70, 0x64, 0x6f, 0x72, 0x72, 0x6d, 0x6e, 0x64, 0x6f, 0x70, 0x69, 0x70, + 0x75, 0x6e, 0x6e, 0x73, 0x6e, 0x6b, 0x6f, 0x6e, 0x6e, 0x6f, 0x70, 0x70, + 0x6e, 0x67, 0x6a, 0x6e, 0x6d, 0x76, 0x6f, 0x75, 0x76, 0x6b, 0x6e, 0x76, + 0x65, 0x70, 0x62, 0x6f, 0x6c, 0x6d, 0x7c, 0x72, 0x67, 0x70, 0x6f, 0x6b, + 0x6d, 0x6e, 0x71, 0x6e, 0x71, 0x6f, 0x6f, 0x6c, 0x6f, 0x6a, 0x5b, 0x6e, + 0x70, 0x6f, 0x6e, 0x7a, 0x6a, 0x67, 0x6f, 0x70, 0x6a, 0x6a, 0x6d, 0x70, + 0x6a, 0x6b, 0x71, 0x76, 0x73, 0x77, 0x68, 0x6f, 0x6d, 0x76, 0x6a, 0x6c, + 0x6d, 0x71, 0x6b, 0x6c, 0x70, 0x6e, 0x74, 0x70, 0x70, 0x6d, 0x76, 0x70, + 0x6f, 0x5d, 0x6d, 0x6e, 0x77, 0x6e, 0x6f, 0x64, 0x6a, 0x73, 0x6b, 0x70, + 0x73, 0x69, 0x6f, 0x78, 0x63, 0x70, 0x76, 0x70, 0x69, 0x6e, 0x72, 0x6e, + 0x6f, 0x6e, 0x68, 0x76, 0x6b, 0x78, 0x67, 0x7d, 0x6c, 0x6f, 0x6e, 0x6f, + 0x75, 0x6b, 0x73, 0x72, 0x6e, 0x7d, 0x6f, 0x6e, 0x6e, 0x6f, 0x6e, 0x61, + 0x71, 0x73, 0x79, 0x6f, 0x70, 0x72, 0x6f, 0x7a, 0x6f, 0x69, 0x79, 0x6d, + 0x67, 0x6e, 0x5e, 0x6f, 0x6f, 0x6f, 0x70, 0x72, 0x70, 0x75, 0x6e, 0x69, + 0x66, 0x6e, 0x7b, 0x6f, 0x68, 0x6a, 0x77, 0x73, 0x70, 0x85, 0x6c, 0x70, + 0x74, 0x6f, 0x70, 0x71, 0x5d, 0x68, 0x58, 0x70, 0x72, 0x50, 0x6f, 0x7b, + 0x5e, 0x7a, 0x72, 0x5a, 0x73, 0x70, 0x72, 0x70, 0x5e, 0x6e, 0x5c, 0x77, + 0x70, 0x71, 0x6d, 0x57, 0x68, 0x70, 0x76, 0x70, 0x73, 0x67, 0x6a, 0x7a, + 0x6f, 0x72, 0x6e, 0x70, 0x69, 0x6f, 0x6f, 0x69, 0x69, 0x7d, 0x76, 0x6f, + 0x6f, 0x66, 0x70, 0x78, 0x69, 0x68, 0x71, 0x7a, 0x5e, 0x6d, 0x6f, 0x70, + 0x6c, 0x71, 0x80, 0x6c, 0x72, 0x6b, 0x6e, 0x6e, 0x6f, 0x6e, 0x74, 0x6f, + 0x6d, 0x70, 0x6e, 0x6f, 0x6e, 0x6b, 0x67, 0x6f, 0x70, 0x6f, 0x70, 0x6a, + 0x6d, 0x76, 0x6f, 0x70, 0x6e, 0x70, 0x6e, 0x70, 0x71, 0x6e, 0x6f, 0x73, + 0x67, 0x6c, 0x74, 0x6f, 0x73, 0x6a, 0x73, 0x6e, 0x6b, 0x6b, 0x69, 0x70, + 0x6f, 0x70, 0x6c, 0x70, 0x74, 0x6f, 0x70, 0x6a, 0x70, 0x6e, 0x63, 0x70, + 0x6d, 0x6f, 0x70, 0x69, 0x67, 0x6b, 0x6e, 0x6f, 0x69, 0x6e, 0x6e, 0x70, + 0x6c, 0x72, 0x6c, 0x72, 0x76, 0x6d, 0x6c, 0x70, 0x6d, 0x6d, 0x6c, 0x73, + 0x5e, 0x65, 0x60, 0x64, 0x6e, 0x6e, 0x6d, 0x70, 0x63, 0x73, 0x71, 0x69, + 0x70, 0x6d, 0x80, 0x70, 0x64, 0x71, 0x6e, 0x67, 0x68, 0x59, 0x6f, 0x6e, + 0x77, 0x5c, 0x6f, 0x70, 0x5a, 0x61, 0x74, 0x75, 0x64, 0x6b, 0x75, 0x70, + 0x6c, 0x69, 0x6d, 0x6e, 0x69, 0x71, 0x73, 0x77, 0x6e, 0x70, 0x73, 0x6f, + 0x6d, 0x6a, 0x75, 0x6f, 0x6f, 0x61, 0x66, 0x6f, 0x71, 0x70, 0x70, 0x6a, + 0x67, 0x81, 0x67, 0x6f, 0x73, 0x6a, 0x70, 0x6f, 0x6d, 0x6f, 0x74, 0x65, + 0x69, 0x6e, 0x75, 0x6f, 0x6f, 0x6e, 0x53, 0x72, 0x66, 0x6e, 0x7a, 0x70, + 0x6c, 0x6e, 0x75, 0x6f, 0x7c, 0x6c, 0x73, 0x76, 0x6e, 0x5e, 0x69, 0x6f, + 0x78, 0x6f, 0x70, 0x62, 0x73, 0x6d, 0x70, 0x6e, 0x67, 0x69, 0x6e, 0x77, + 0x72, 0x6f, 0x71, 0x66, 0x65, 0x6f, 0x6b, 0x70, 0x6d, 0x70, 0x5e, 0x6c, + 0x6b, 0x75, 0x6b, 0x6e, 0x73, 0x6e, 0x6c, 0x6f, 0x6e, 0x78, 0x79, 0x75, + 0x6f, 0x6d, 0x6f, 0x70, 0x71, 0x6e, 0x70, 0x6a, 0x6c, 0x6c, 0x5b, 0x6f, + 0x74, 0x6e, 0x70, 0x77, 0x6b, 0x72, 0x72, 0x70, 0x5e, 0x70, 0x6d, 0x70, + 0x71, 0x6d, 0x78, 0x72, 0x6a, 0x81, 0x7d, 0x73, 0x72, 0x70, 0x71, 0x6f, + 0x71, 0x6a, 0x70, 0x72, 0x6e, 0x58, 0x6f, 0x70, 0x73, 0x6e, 0x70, 0x64, + 0x6d, 0x6f, 0x68, 0x6e, 0x5c, 0x6d, 0x70, 0x77, 0x6d, 0x6a, 0x79, 0x70, + 0x71, 0x6f, 0x71, 0x6e, 0x6c, 0x70, 0x7f, 0x79, 0x6b, 0x6e, 0x76, 0x6b, + 0x73, 0x6f, 0x74, 0x6e, 0x68, 0x6f, 0x6e, 0x6b, 0x6e, 0x63, 0x68, 0x6e, + 0x73, 0x6d, 0x70, 0x63, 0x6d, 0x6d, 0x74, 0x6e, 0x69, 0x73, 0x70, 0x6d, + 0x6d, 0x74, 0x73, 0x6e, 0x76, 0x6e, 0x6f, 0x6f, 0x6e, 0x6d, 0x68, 0x70, + 0x71, 0x6b, 0x60, 0x63, 0x6b, 0x6f, 0x6f, 0x6e, 0x7d, 0x76, 0x70, 0x71, + 0x70, 0x71, 0x6e, 0x6e, 0x70, 0x6f, 0x6f, 0x64, 0x69, 0x6e, 0x76, 0x6f, + 0x6c, 0x77, 0x6e, 0x76, 0x61, 0x78, 0x6f, 0x78, 0x4d, 0x70, 0x76, 0x6e, + 0x75, 0x6b, 0x7e, 0x73, 0x7d, 0x5f, 0x77, 0x7b, 0x6c, 0x70, 0x64, 0x6f, + 0x75, 0x71, 0x71, 0x60, 0x6f, 0x79, 0x59, 0x6f, 0x73, 0x6e, 0x6e, 0x62, + 0x73, 0x6b, 0x76, 0x70, 0x6e, 0x71, 0x70, 0x6f, 0x81, 0x6a, 0x68, 0x76, + 0x71, 0x6f, 0x66, 0x70, 0x6d, 0x6e, 0x60, 0x66, 0x70, 0x73, 0x75, 0x6b, + 0x6f, 0x6e, 0x6b, 0x70, 0x79, 0x63, 0x6f, 0x72, 0x6e, 0x79, 0x5d, 0x6f, + 0x68, 0x6f, 0x6f, 0x6e, 0x6c, 0x72, 0x70, 0x6f, 0x6a, 0x78, 0x6f, 0x71, + 0x76, 0x70, 0x6e, 0x79, 0x5a, 0x71, 0x72, 0x70, 0x6c, 0x69, 0x5d, 0x6c, + 0x6c, 0x72, 0x6c, 0x6e, 0x6a, 0x70, 0x75, 0x6f, 0x7b, 0x75, 0x76, 0x6c, + 0x70, 0x74, 0x76, 0x6e, 0x6c, 0x6e, 0x70, 0x63, 0x6b, 0x65, 0x7a, 0x6e, + 0x6d, 0x71, 0x70, 0x78, 0x6f, 0x79, 0x71, 0x71, 0x5c, 0x6f, 0x60, 0x70, + 0x72, 0x6c, 0x71, 0x6c, 0x70, 0x62, 0x75, 0x60, 0x71, 0x6f, 0x6f, 0x6d, + 0x75, 0x68, 0x6e, 0x70, 0x70, 0x67, 0x6b, 0x6e, 0x71, 0x6d, 0x70, 0x6f, + 0x72, 0x71, 0x68, 0x6f, 0x64, 0x79, 0x6f, 0x73, 0x75, 0x72, 0x6d, 0x6c, + 0x73, 0x70, 0x6e, 0x6e, 0x6f, 0x6e, 0x6e, 0x71, 0x66, 0x6d, 0x67, 0x6f, + 0x6c, 0x6e, 0x67, 0x6e, 0x70, 0x74, 0x73, 0x6e, 0x6e, 0x6a, 0x69, 0x6e, + 0x77, 0x71, 0x6e, 0x6e, 0x65, 0x63, 0x64, 0x6e, 0x6d, 0x6c, 0x6e, 0x71, + 0x7d, 0x74, 0x72, 0x65, 0x79, 0x6e, 0x66, 0x6f, 0x6b, 0x6b, 0x7e, 0x6a, + 0x75, 0x77, 0x70, 0x6a, 0x70, 0x70, 0x6f, 0x70, 0x71, 0x6c, 0x6f, 0x71, + 0x6e, 0x65, 0x6f, 0x6e, 0x74, 0x6f, 0x6e, 0x74, 0x6a, 0x74, 0x6e, 0x6e, + 0x6f, 0x69, 0x6f, 0x70, 0x71, 0x6f, 0x6c, 0x72, 0x74, 0x74, 0x73, 0x70, + 0x6f, 0x66, 0x78, 0x72, 0x72, 0x6b, 0x6c, 0x5c, 0x70, 0x6e, 0x72, 0x70, + 0x79, 0x6d, 0x6d, 0x74, 0x6e, 0x6f, 0x6b, 0x6f, 0x6d, 0x6f, 0x70, 0x5e, + 0x6a, 0x76, 0x6e, 0x70, 0x6e, 0x71, 0x70, 0x75, 0x6d, 0x71, 0x6a, 0x6e, + 0x56, 0x6e, 0x6e, 0x70, 0x71, 0x6c, 0x6f, 0x70, 0x68, 0x72, 0x66, 0x5f, + 0x6e, 0x6f, 0x7a, 0x6f, 0x75, 0x75, 0x6e, 0x71, 0x70, 0x74, 0x72, 0x70, + 0x6b, 0x6f, 0x6e, 0x6a, 0x6f, 0x6d, 0x63, 0x6e, 0x69, 0x74, 0x6e, 0x78, + 0x64, 0x6e, 0x67, 0x74, 0x6a, 0x6d, 0x5c, 0x6f, 0x73, 0x6f, 0x6b, 0x71, + 0x6c, 0x66, 0x66, 0x85, 0x71, 0x6f, 0x71, 0x70, 0x7a, 0x6f, 0x6e, 0x72, + 0x70, 0x71, 0x64, 0x6e, 0x6b, 0x6e, 0x70, 0x64, 0x64, 0x74, 0x68, 0x6f, + 0x6b, 0x7b, 0x70, 0x70, 0x76, 0x5c, 0x76, 0x68, 0x63, 0x70, 0x73, 0x6f, + 0x70, 0x6e, 0x8b, 0x6a, 0x6c, 0x70, 0x6d, 0x6b, 0x72, 0x6e, 0x73, 0x70, + 0x69, 0x71, 0x73, 0x74, 0x6f, 0x81, 0x6e, 0x70, 0x72, 0x6d, 0x6e, 0x66, + 0x6b, 0x6d, 0x72, 0x70, 0x71, 0x67, 0x6e, 0x75, 0x6e, 0x6d, 0x74, 0x6a, + 0x6c, 0x6e, 0x73, 0x6e, 0x79, 0x6f, 0x78, 0x73, 0x62, 0x6a, 0x6d, 0x63, + 0x6c, 0x70, 0x74, 0x70, 0x6e, 0x6f, 0x6e, 0x6a, 0x6e, 0x65, 0x6f, 0x70, + 0x73, 0x6f, 0x70, 0x67, 0x69, 0x78, 0x71, 0x70, 0x6c, 0x70, 0x6f, 0x6f, + 0x71, 0x6a, 0x6e, 0x6d, 0x70, 0x6f, 0x6a, 0x6e, 0x6b, 0x70, 0x60, 0x6c, + 0x5f, 0x6f, 0x7b, 0x6b, 0x76, 0x6f, 0x74, 0x70, 0x6f, 0x65, 0x6f, 0x6c, + 0x6e, 0x70, 0x70, 0x6e, 0x6f, 0x6c, 0x70, 0x6e, 0x76, 0x70, 0x70, 0x6e, + 0x70, 0x6f, 0x70, 0x6f, 0x75, 0x8c, 0x70, 0x75, 0x73, 0x6e, 0x84, 0x6e, + 0x6e, 0x6e, 0x6e, 0x6d, 0x70, 0x75, 0x70, 0x79, 0x71, 0x6f, 0x69, 0x70, + 0x73, 0x72, 0x70, 0x65, 0x70, 0x6a, 0x6a, 0x70, 0x6e, 0x6f, 0x6f, 0x69, + 0x6c, 0x73, 0x71, 0x70, 0x6b, 0x70, 0x70, 0x6e, 0x76, 0x6c, 0x6f, 0x78, + 0x70, 0x6a, 0x7d, 0x70, 0x70, 0x66, 0x6c, 0x73, 0x75, 0x7b, 0x6e, 0x62, + 0x6d, 0x71, 0x73, 0x6f, 0x6e, 0x70, 0x71, 0x71, 0x6e, 0x6b, 0x68, 0x6f, + 0x71, 0x6f, 0x6e, 0x6f, 0x71, 0x74, 0x71, 0x6f, 0x6b, 0x72, 0x6f, 0x6d, + 0x67, 0x6f, 0x72, 0x6f, 0x68, 0x6e, 0x74, 0x70, 0x6f, 0x65, 0x6d, 0x6d, + 0x70, 0x55, 0x76, 0x6a, 0x72, 0x6f, 0x75, 0x6e, 0x6f, 0x70, 0x70, 0x74, + 0x6e, 0x81, 0x66, 0x6f, 0x6e, 0x6f, 0x6e, 0x5a, 0x6e, 0x89, 0x63, 0x70, + 0x6e, 0x6e, 0x6e, 0x71, 0x76, 0x6f, 0x69, 0x60, 0x58, 0x70, 0x78, 0x6f, + 0x70, 0x7c, 0x6d, 0x72, 0x70, 0x6d, 0x6c, 0x6c, 0x6b, 0x71, 0x73, 0x6e, + 0x6c, 0x72, 0x6c, 0x6b, 0x70, 0x64, 0x73, 0x6e, 0x76, 0x6f, 0x6e, 0x62, + 0x6d, 0x75, 0x7a, 0x70, 0x6f, 0x68, 0x70, 0x6d, 0x6a, 0x6f, 0x6b, 0x73, + 0x76, 0x6b, 0x6f, 0x70, 0x6c, 0x71, 0x6b, 0x6a, 0x6e, 0x74, 0x70, 0x79, + 0x71, 0x70, 0x64, 0x70, 0x72, 0x6e, 0x78, 0x65, 0x71, 0x6e, 0x6a, 0x6e, + 0x6f, 0x6d, 0x6e, 0x5e, 0x75, 0x6d, 0x6c, 0x6e, 0x75, 0x62, 0x70, 0x74, + 0x6f, 0x6c, 0x6c, 0x7b, 0x5e, 0x6f, 0x77, 0x6f, 0x71, 0x6d, 0x6a, 0x6f, + 0x75, 0x72, 0x70, 0x6c, 0x6d, 0x6e, 0x70, 0x6f, 0x6f, 0x74, 0x6f, 0x73, + 0x70, 0x70, 0x70, 0x70, 0x79, 0x6e, 0x6e, 0x6f, 0x63, 0x84, 0x66, 0x6e, + 0x6b, 0x70, 0x6e, 0x6f, 0x6e, 0x73, 0x6d, 0x7c, 0x64, 0x6f, 0x6a, 0x6f, + 0x70, 0x6e, 0x77, 0x73, 0x60, 0x6f, 0x7c, 0x6b, 0x76, 0x70, 0x74, 0x6f, + 0x70, 0x66, 0x6e, 0x69, 0x6e, 0x6e, 0x6e, 0x6f, 0x6e, 0x6b, 0x6e, 0x6e, + 0x75, 0x70, 0x70, 0x6e, 0x6e, 0x6f, 0x71, 0x6f, 0x75, 0x8f, 0x6f, 0x73, + 0x73, 0x6f, 0x82, 0x70, 0x6e, 0x70, 0x6e, 0x6f, 0x6c, 0x73, 0x6e, 0x60, + 0x73, 0x6d, 0x67, 0x6e, 0x6c, 0x69, 0x75, 0x6b, 0x70, 0x69, 0x69, 0x6f, + 0x69, 0x6f, 0x6f, 0x6d, 0x6f, 0x71, 0x6a, 0x70, 0x70, 0x72, 0x6f, 0x6b, + 0x73, 0x6b, 0x6d, 0x6f, 0x75, 0x6d, 0x69, 0x6e, 0x71, 0x6f, 0x6a, 0x6f, + 0x6d, 0x4f, 0x64, 0x5f, 0x6d, 0x70, 0x75, 0x70, 0x74, 0x73, 0x70, 0x76, + 0x6f, 0x77, 0x69, 0x6e, 0x6e, 0x70, 0x6d, 0x57, 0x6c, 0x66, 0x5a, 0x6f, + 0x69, 0x6c, 0x70, 0x74, 0x6c, 0x76, 0x6f, 0x6f, 0x5e, 0x6d, 0x6e, 0x70, + 0x73, 0x68, 0x74, 0x75, 0x6e, 0x65, 0x62, 0x6e, 0x69, 0x6f, 0x64, 0x6e, + 0x7f, 0x6d, 0x6f, 0x77, 0x70, 0x72, 0x69, 0x6e, 0x6c, 0x6e, 0x70, 0x71, + 0x63, 0x63, 0x78, 0x6e, 0x6e, 0x7a, 0x70, 0x79, 0x6e, 0x72, 0x70, 0x6a, + 0x57, 0x6f, 0x62, 0x70, 0x73, 0x6d, 0x80, 0x70, 0x71, 0x6c, 0x74, 0x6c, + 0x73, 0x70, 0x6c, 0x6e, 0x6c, 0x75, 0x72, 0x70, 0x70, 0x6a, 0x6d, 0x70, + 0x6e, 0x6f, 0x70, 0x6c, 0x65, 0x70, 0x6e, 0x6f, 0x6c, 0x6a, 0x70, 0x6c, + 0x6b, 0x6d, 0x75, 0x74, 0x70, 0x6d, 0x69, 0x70, 0x68, 0x6f, 0x81, 0x71, + 0x6c, 0x6d, 0x66, 0x6e, 0x73, 0x6e, 0x71, 0x6f, 0x75, 0x6d, 0x74, 0x73, + 0x6e, 0x6e, 0x69, 0x6e, 0x69, 0x6f, 0x6f, 0x5f, 0x73, 0x7b, 0x79, 0x70, + 0x6a, 0x6c, 0x70, 0x71, 0x6e, 0x6b, 0x6e, 0x69, 0x58, 0x71, 0x79, 0x70, + 0x6a, 0x6d, 0x68, 0x70, 0x71, 0x79, 0x70, 0x64, 0x71, 0x6e, 0x6b, 0x6e, + 0x78, 0x72, 0x6d, 0x7a, 0x6d, 0x6d, 0x6b, 0x6e, 0x73, 0x6f, 0x6e, 0x6f, + 0x72, 0x71, 0x6f, 0x6f, 0x67, 0x6f, 0x70, 0x71, 0x69, 0x73, 0x68, 0x67, + 0x6d, 0x70, 0x72, 0x6f, 0x6c, 0x6d, 0x7e, 0x6e, 0x66, 0x76, 0x6d, 0x74, + 0x68, 0x6f, 0x71, 0x6e, 0x6d, 0x77, 0x6e, 0x65, 0x6f, 0x6e, 0x75, 0x6e, + 0x76, 0x6f, 0x6e, 0x64, 0x6f, 0x7b, 0x7e, 0x6e, 0x6c, 0x6b, 0x70, 0x6d, + 0x66, 0x6d, 0x6e, 0x71, 0x74, 0x73, 0x66, 0x6e, 0x6c, 0x6e, 0x53, 0x68, + 0x6f, 0x70, 0x65, 0x5a, 0x6b, 0x70, 0x7b, 0x70, 0x6f, 0x71, 0x6e, 0x78, + 0x6f, 0x71, 0x61, 0x6e, 0x69, 0x6e, 0x6f, 0x6e, 0x66, 0x77, 0x6d, 0x6f, + 0x71, 0x6e, 0x6f, 0x77, 0x68, 0x6c, 0x70, 0x6a, 0x53, 0x61, 0x60, 0x70, + 0x6f, 0x6e, 0x6e, 0x75, 0x6e, 0x6f, 0x6f, 0x71, 0x3e, 0x6f, 0x70, 0x6f, + 0x6f, 0x6f, 0xa9, 0x4d, 0x6f, 0x6d, 0x81, 0x6e, 0x6a, 0x70, 0x6f, 0x6e, + 0x63, 0x77, 0x68, 0x6f, 0x6e, 0x83, 0x6d, 0x70, 0x65, 0x70, 0x6d, 0x70, + 0x74, 0x70, 0x75, 0x6f, 0x6b, 0x75, 0x79, 0x70, 0x6f, 0x7b, 0x78, 0x6b, + 0x6b, 0x6f, 0x79, 0x70, 0x78, 0x6d, 0x71, 0x6f, 0x6e, 0x72, 0x70, 0x6f, + 0x70, 0x6f, 0x6e, 0x66, 0x6f, 0x70, 0x63, 0x6f, 0x73, 0x5e, 0x6f, 0x7a, + 0x6c, 0x72, 0x6c, 0x55, 0x67, 0x71, 0x63, 0x70, 0x6f, 0x6f, 0x73, 0x70, + 0x6d, 0x72, 0x6b, 0x5e, 0x6f, 0x6f, 0x74, 0x71, 0x73, 0x72, 0x6e, 0x74, + 0x6e, 0x66, 0x71, 0x6f, 0x70, 0x6f, 0x6f, 0x6f, 0x6e, 0x6a, 0x70, 0x6f, + 0x70, 0x6d, 0x6e, 0x71, 0x6b, 0x6f, 0x6c, 0x67, 0x62, 0x6c, 0x6d, 0x6e, + 0x6f, 0x6d, 0x73, 0x70, 0x64, 0x79, 0x77, 0x67, 0x72, 0x6f, 0x72, 0x6e, + 0x67, 0x6a, 0x6c, 0x6f, 0x6e, 0x55, 0x6f, 0x71, 0x6b, 0x72, 0x70, 0x67, + 0x79, 0x79, 0x69, 0x6e, 0x63, 0x69, 0x6f, 0x5a, 0x74, 0x7a, 0x68, 0x6a, + 0x61, 0x7a, 0x6b, 0x6e, 0x78, 0x6d, 0x6d, 0x76, 0x6b, 0x68, 0x66, 0x60, + 0x73, 0x6f, 0x67, 0x70, 0x74, 0x6f, 0x76, 0x75, 0x6e, 0x6f, 0x67, 0x6e, + 0x6b, 0x6f, 0x70, 0x5e, 0x70, 0x69, 0x61, 0x6f, 0x6c, 0x75, 0x6f, 0x76, + 0x6a, 0x73, 0x71, 0x63, 0x67, 0x6e, 0x6c, 0x6e, 0x73, 0x6a, 0x74, 0x73, + 0x70, 0x63, 0x68, 0x66, 0x6c, 0x6e, 0x6e, 0x6e, 0x76, 0x73, 0x6f, 0x7c, + 0x70, 0x72, 0x66, 0x71, 0x68, 0x6f, 0x70, 0x68, 0x72, 0x6a, 0x73, 0x6f, + 0x6c, 0x75, 0x6e, 0x79, 0x72, 0x73, 0x6c, 0x6e, 0x53, 0x70, 0x6b, 0x6f, + 0x73, 0x6a, 0x71, 0x73, 0x74, 0x74, 0x70, 0x59, 0x6d, 0x6f, 0x71, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6b, 0x6e, 0x67, 0x5d, 0x70, 0x6f, 0x6f, 0x70, 0x7e, + 0x71, 0x75, 0x70, 0x6e, 0x6c, 0x6f, 0x6e, 0x6f, 0x6c, 0x6d, 0x6f, 0x7e, + 0x72, 0x74, 0x6a, 0x6e, 0x6e, 0x73, 0x6a, 0x6b, 0x6e, 0x64, 0x6e, 0x6c, + 0x6d, 0x6e, 0x78, 0x6e, 0x6d, 0x73, 0x6f, 0x76, 0x70, 0x66, 0x69, 0x6e, + 0x72, 0x6f, 0x6e, 0x71, 0x69, 0x7a, 0x69, 0x6f, 0x6d, 0x68, 0x6f, 0x73, + 0x65, 0x73, 0x70, 0x66, 0x71, 0x66, 0x6c, 0x6f, 0x70, 0x6e, 0x70, 0x74, + 0x74, 0x71, 0x69, 0x68, 0x6e, 0x6e, 0x75, 0x70, 0x71, 0x73, 0x6f, 0x75, + 0x6f, 0x71, 0x63, 0x70, 0x6f, 0x6f, 0x6e, 0x5f, 0x65, 0x7d, 0x71, 0x70, + 0x6f, 0x71, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x70, 0x58, 0x6b, 0x6e, 0x6f, + 0x74, 0x6e, 0x72, 0x72, 0x73, 0x71, 0x75, 0x5b, 0x6f, 0x6e, 0x80, 0x6f, + 0x6e, 0x6d, 0x6e, 0x72, 0x70, 0x5f, 0x6a, 0x6f, 0x74, 0x6f, 0x6f, 0x72, + 0x65, 0x79, 0x74, 0x6e, 0x72, 0x6f, 0x6f, 0x72, 0x6a, 0x70, 0x72, 0x6c, + 0x6f, 0x6d, 0x62, 0x70, 0x6f, 0x6f, 0x61, 0x70, 0x7f, 0x6e, 0x71, 0x7a, + 0x6e, 0x6e, 0x6c, 0x6e, 0x80, 0x6b, 0x73, 0x73, 0x6e, 0x73, 0x63, 0x6f, + 0x6d, 0x6f, 0x6e, 0x6f, 0x76, 0x83, 0x76, 0x6e, 0x6e, 0x75, 0x70, 0x78, + 0x72, 0x6e, 0x6d, 0x70, 0x71, 0x6f, 0x71, 0x70, 0x72, 0x6d, 0x6f, 0x73, + 0x79, 0x82, 0x77, 0x68, 0x6b, 0x70, 0x67, 0x70, 0x69, 0x66, 0x6f, 0x6d, + 0x70, 0x76, 0x68, 0x70, 0x70, 0x70, 0x6e, 0x75, 0x75, 0x6f, 0x7f, 0x70, + 0x69, 0x72, 0x70, 0x6c, 0x6e, 0x6a, 0x74, 0x78, 0x73, 0x6e, 0x63, 0x6f, + 0x6a, 0x6a, 0x7e, 0x6c, 0x76, 0x73, 0x6c, 0x78, 0x74, 0x6f, 0x6b, 0x6f, + 0x77, 0x6d, 0x6f, 0x73, 0x70, 0x7c, 0x63, 0x70, 0x73, 0x6f, 0x71, 0x59, + 0x6e, 0x81, 0x75, 0x6f, 0x69, 0x7c, 0x6f, 0x71, 0x72, 0x67, 0x73, 0x71, + 0x60, 0x6f, 0x67, 0x71, 0x6d, 0x6e, 0x6c, 0x75, 0x72, 0x6a, 0x6c, 0x76, + 0x6f, 0x70, 0x79, 0x6e, 0x69, 0x70, 0x6d, 0x78, 0x6e, 0x80, 0x64, 0x6e, + 0x74, 0x6f, 0x70, 0x61, 0x81, 0x6f, 0x66, 0x6f, 0x6e, 0x76, 0x6e, 0x77, + 0x77, 0x6e, 0x6c, 0x64, 0x67, 0x6f, 0x6d, 0x70, 0x70, 0x6a, 0x5f, 0x72, + 0x6c, 0x6f, 0x66, 0x64, 0x6c, 0x70, 0x71, 0x6d, 0x7d, 0x72, 0x6f, 0x6b, + 0x70, 0x70, 0x61, 0x70, 0x6a, 0x6f, 0x6f, 0x75, 0x71, 0x66, 0x67, 0x70, + 0x6b, 0x6e, 0x6f, 0x75, 0x67, 0x71, 0x67, 0x6f, 0x6d, 0x6e, 0x62, 0x6f, + 0x79, 0x6c, 0x6f, 0x6b, 0x75, 0x4e, 0x6f, 0x70, 0x6d, 0x6f, 0x72, 0x6e, + 0x70, 0x6e, 0x6e, 0x6f, 0x70, 0x6f, 0x60, 0x6e, 0x76, 0x6f, 0x70, 0x6a, + 0x69, 0x7c, 0x6f, 0x70, 0x71, 0x64, 0x70, 0x6f, 0x69, 0x71, 0x6d, 0x7c, + 0x64, 0x6a, 0x73, 0x70, 0x73, 0x65, 0x72, 0x6c, 0x71, 0x6b, 0x79, 0x6b, + 0x6f, 0x70, 0x78, 0x70, 0x70, 0x6b, 0x6e, 0x6d, 0x70, 0x6d, 0x6a, 0x6d, + 0x6c, 0x6f, 0x6f, 0x79, 0x72, 0x6f, 0x6c, 0x70, 0x6b, 0x69, 0x6e, 0x71, + 0x6a, 0x70, 0x6d, 0x72, 0x7a, 0x6c, 0x66, 0x6e, 0x71, 0x6f, 0x6d, 0x6d, + 0x6e, 0x7c, 0x6f, 0x68, 0x6e, 0x6f, 0x6f, 0x6f, 0x75, 0x78, 0x70, 0x71, + 0x6e, 0x72, 0x74, 0x6e, 0x65, 0x6e, 0x6f, 0x6a, 0x6c, 0x66, 0x75, 0x6e, + 0x72, 0x71, 0x70, 0x74, 0x6e, 0x68, 0x72, 0x65, 0x5e, 0x6e, 0x66, 0x6e, + 0x6a, 0x74, 0x7b, 0x70, 0x71, 0x72, 0x6c, 0x6a, 0x6a, 0x6f, 0x6a, 0x6d, + 0x73, 0x76, 0x6a, 0x77, 0x6f, 0x74, 0x63, 0x6e, 0x71, 0x6f, 0x70, 0x7a, + 0x66, 0x6c, 0x72, 0x70, 0x6d, 0x70, 0x6f, 0x73, 0x6f, 0x72, 0x6d, 0x7d, + 0x60, 0x6e, 0x70, 0x6f, 0x75, 0x6f, 0x81, 0x6e, 0x78, 0x7e, 0x72, 0x68, + 0x70, 0x70, 0x6b, 0x6e, 0x75, 0x6f, 0x73, 0x6d, 0x70, 0x73, 0x67, 0x70, + 0x71, 0x6f, 0x6e, 0x61, 0x6d, 0x68, 0x77, 0x70, 0x70, 0x73, 0x70, 0x71, + 0x77, 0x6b, 0x75, 0x64, 0x63, 0x70, 0x66, 0x6e, 0x6b, 0x74, 0x75, 0x77, + 0x7a, 0x66, 0x6c, 0x5e, 0x6d, 0x6e, 0x70, 0x6f, 0x77, 0x71, 0x71, 0x75, + 0x70, 0x72, 0x76, 0x70, 0x6d, 0x6f, 0x70, 0x6e, 0x74, 0x6d, 0x76, 0x6f, + 0x71, 0x70, 0x6e, 0x75, 0x6f, 0x71, 0x6d, 0x70, 0x61, 0x6c, 0x6b, 0x6e, + 0x78, 0x66, 0x7e, 0x71, 0x68, 0x5d, 0x6f, 0x5d, 0x67, 0x6f, 0x78, 0x6e, + 0x6d, 0x63, 0x70, 0x75, 0x70, 0x6a, 0x61, 0x6f, 0x71, 0x6f, 0x70, 0x70, + 0x71, 0x70, 0x67, 0x6e, 0x70, 0x64, 0x70, 0x72, 0x6e, 0x71, 0x6f, 0x6a, + 0x67, 0x6a, 0x69, 0x70, 0x73, 0x69, 0x79, 0x67, 0x6c, 0x6e, 0x70, 0x6a, + 0x6f, 0x6f, 0x6c, 0x70, 0x76, 0x70, 0x72, 0x74, 0x6e, 0x6a, 0x5b, 0x6e, + 0x69, 0x6f, 0x6e, 0x72, 0x67, 0x71, 0x70, 0x6e, 0x6f, 0x6b, 0x70, 0x74, + 0x74, 0x6d, 0x6f, 0x6d, 0x5f, 0x6e, 0x66, 0x70, 0x6c, 0x61, 0x7c, 0x72, + 0x72, 0x69, 0x6d, 0x5a, 0x70, 0x71, 0x6f, 0x6e, 0x72, 0x6d, 0x72, 0x73, + 0x6f, 0x72, 0x61, 0x6e, 0x69, 0x6f, 0x6e, 0x5c, 0x70, 0x75, 0x70, 0x6f, + 0x6b, 0x6e, 0x6f, 0x73, 0x6f, 0x6c, 0x6f, 0x77, 0x4f, 0x6f, 0x66, 0x6f, + 0x6d, 0x70, 0x6e, 0x73, 0x67, 0x74, 0x74, 0x70, 0x6c, 0x6e, 0x6f, 0x6d, + 0x70, 0x6a, 0x78, 0x73, 0x6e, 0x72, 0x6e, 0x6f, 0x6b, 0x6e, 0x6e, 0x68, + 0x70, 0x6d, 0x6e, 0x70, 0x68, 0x78, 0x6e, 0x72, 0x6d, 0x76, 0x71, 0x76, + 0x72, 0x6f, 0x6f, 0x6e, 0x70, 0x6e, 0x7b, 0x6b, 0x62, 0x68, 0x6a, 0x6b, + 0x67, 0x70, 0x72, 0x6e, 0x73, 0x74, 0x6d, 0x76, 0x6f, 0x65, 0x70, 0x6f, + 0x69, 0x6f, 0x6e, 0x66, 0x64, 0x74, 0x65, 0x70, 0x6c, 0x6a, 0x70, 0x77, + 0x6f, 0x6c, 0x6e, 0x77, 0x5b, 0x6f, 0x65, 0x6f, 0x6c, 0x71, 0x54, 0x6c, + 0x6f, 0x6c, 0x6d, 0x60, 0x6f, 0x6f, 0x6f, 0x70, 0x67, 0x71, 0x71, 0x73, + 0x6f, 0x71, 0x6c, 0x70, 0x6a, 0x6f, 0x70, 0x6c, 0x74, 0x61, 0x67, 0x6e, + 0x69, 0x6e, 0x6f, 0x68, 0x72, 0x70, 0x6f, 0x6b, 0x6e, 0x6e, 0x62, 0x6f, + 0x74, 0x6e, 0x7a, 0x75, 0x68, 0x71, 0x61, 0x75, 0x77, 0x70, 0x68, 0x6e, + 0x79, 0x75, 0x79, 0x7d, 0x6d, 0x6e, 0x6e, 0x70, 0x6e, 0x71, 0x6f, 0x63, + 0x71, 0x73, 0x73, 0x6e, 0x6f, 0x6d, 0x70, 0x76, 0x60, 0x61, 0x79, 0x71, + 0x70, 0x6e, 0x73, 0x6f, 0x65, 0x6f, 0x75, 0x71, 0x6b, 0x6e, 0x71, 0x62, + 0x6c, 0x6e, 0x68, 0x6e, 0x78, 0x76, 0x72, 0x76, 0x70, 0x6e, 0x64, 0x6e, + 0x6b, 0x70, 0x6e, 0x74, 0x74, 0x6c, 0x7b, 0x6e, 0x63, 0x6e, 0x6f, 0x70, + 0x7a, 0x79, 0x75, 0x69, 0x74, 0x70, 0x68, 0x70, 0x6e, 0x6c, 0x6b, 0x70, + 0x68, 0x7a, 0x6e, 0x60, 0x6f, 0x70, 0x71, 0x6e, 0x70, 0x72, 0x74, 0x6a, + 0x6e, 0x70, 0x69, 0x70, 0x6c, 0x70, 0x6f, 0x6c, 0x6e, 0x69, 0x66, 0x70, + 0x68, 0x6b, 0x70, 0x71, 0x73, 0x73, 0x73, 0x67, 0x71, 0x70, 0x6c, 0x6f, + 0x6b, 0x6f, 0x70, 0x77, 0x6e, 0x67, 0x6d, 0x68, 0x72, 0x6f, 0x72, 0x70, + 0x70, 0x6e, 0x73, 0x72, 0x70, 0x6e, 0x65, 0x70, 0x6f, 0x6e, 0x6f, 0x6d, + 0x6a, 0x62, 0x72, 0x6f, 0x6a, 0x6e, 0x6f, 0x71, 0x6e, 0x6f, 0x6e, 0x6e, + 0x62, 0x6a, 0x6f, 0x6f, 0x72, 0x67, 0x78, 0x70, 0x52, 0x72, 0x6b, 0x5b, + 0x6e, 0x6f, 0x78, 0x6f, 0x6f, 0x73, 0x6d, 0x6d, 0x6e, 0x6a, 0x63, 0x70, + 0x6b, 0x6f, 0x6e, 0x94, 0x5f, 0x63, 0x75, 0x6e, 0x6c, 0x7c, 0x70, 0x6f, + 0x67, 0x6b, 0x73, 0x55, 0x68, 0x6c, 0x6a, 0x70, 0x6f, 0x70, 0x60, 0x71, + 0x6c, 0x71, 0x73, 0x57, 0x6e, 0x70, 0x68, 0x6f, 0x7a, 0x6c, 0x71, 0x70, + 0x70, 0x68, 0x76, 0x6e, 0x6b, 0x6f, 0x70, 0x5a, 0x74, 0x6c, 0x6b, 0x70, + 0x6f, 0x6a, 0x6e, 0x75, 0x7c, 0x6a, 0x6a, 0x66, 0x63, 0x73, 0x65, 0x70, + 0x6c, 0x69, 0x5e, 0x6c, 0x60, 0x6e, 0x67, 0x6a, 0x77, 0x6e, 0x61, 0x70, + 0x6e, 0x69, 0x80, 0x75, 0x6f, 0x6d, 0x72, 0x6e, 0x68, 0x6e, 0x6e, 0x5e, + 0x7f, 0x67, 0x7b, 0x70, 0x75, 0x7b, 0x6f, 0x72, 0x75, 0x6b, 0x6a, 0x66, + 0x62, 0x64, 0x68, 0x6f, 0x68, 0x71, 0x67, 0x79, 0x70, 0x6b, 0x72, 0x7b, + 0x6b, 0x6e, 0x69, 0x70, 0x74, 0x70, 0x6f, 0x6a, 0x6f, 0x6e, 0x58, 0x70, + 0x73, 0x6f, 0x6f, 0x6d, 0x6c, 0x6f, 0x6c, 0x6e, 0x6b, 0x6b, 0x70, 0x70, + 0x77, 0x6b, 0x6d, 0x7a, 0x7a, 0x70, 0x6b, 0x70, 0x6e, 0x5d, 0x71, 0x68, + 0x6d, 0x75, 0x6e, 0x59, 0x6e, 0x6f, 0x68, 0x6f, 0x6e, 0x6f, 0x6e, 0x67, + 0x6e, 0x71, 0x60, 0x70, 0x6a, 0x6f, 0x6f, 0x6c, 0x6e, 0x73, 0x70, 0x6f, + 0x6d, 0x6f, 0x70, 0x6b, 0x74, 0x6e, 0x66, 0x72, 0x65, 0x6b, 0x6c, 0x6e, + 0x74, 0x71, 0x73, 0x69, 0x66, 0x78, 0x6f, 0x7d, 0x7a, 0x6f, 0x66, 0x6e, + 0x7a, 0x71, 0x70, 0x77, 0x6e, 0x75, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x6f, + 0x6f, 0x6c, 0x6a, 0x6e, 0x6a, 0x6b, 0x6f, 0x6c, 0x71, 0x74, 0x70, 0x67, + 0x74, 0x6f, 0x69, 0x6e, 0x71, 0x6e, 0x81, 0x71, 0x6c, 0x66, 0x5f, 0x61, + 0x6a, 0x70, 0x76, 0x6e, 0x6a, 0x75, 0x72, 0x74, 0x6e, 0x71, 0x6e, 0x70, + 0x70, 0x6f, 0x70, 0x6f, 0x6b, 0x6d, 0x6d, 0x6e, 0x6f, 0x6d, 0x6e, 0x73, + 0x68, 0x78, 0x72, 0x6c, 0x55, 0x6e, 0x6a, 0x6e, 0x73, 0x6e, 0x77, 0x73, + 0x74, 0x79, 0x68, 0x6c, 0x6d, 0x70, 0x76, 0x70, 0x6a, 0x6e, 0x6f, 0x6c, + 0x70, 0x74, 0x65, 0x6f, 0x75, 0x70, 0x6e, 0x69, 0x6a, 0x6d, 0x6c, 0x70, + 0x6c, 0x70, 0x70, 0x6e, 0x63, 0x73, 0x70, 0x71, 0x6b, 0x73, 0x70, 0x6f, + 0x75, 0x68, 0x6f, 0x70, 0x7c, 0x74, 0x70, 0x60, 0x6e, 0x6e, 0x7a, 0x70, + 0x6e, 0x76, 0x72, 0x74, 0x6f, 0x6c, 0x65, 0x6e, 0x6e, 0x6e, 0x6e, 0x77, + 0x6f, 0x6a, 0x7a, 0x70, 0x74, 0x6d, 0x6f, 0x75, 0x6f, 0x6e, 0x75, 0x71, + 0x67, 0x6e, 0x76, 0x6f, 0x6c, 0x69, 0x7d, 0x74, 0x76, 0x6c, 0x73, 0x5f, + 0x6d, 0x6f, 0x76, 0x6f, 0x75, 0x6a, 0x73, 0x78, 0x6e, 0x72, 0x66, 0x6f, + 0x6c, 0x70, 0x6e, 0x68, 0x68, 0x75, 0x66, 0x6e, 0x6f, 0x62, 0x6f, 0x75, + 0x6d, 0x73, 0x79, 0x72, 0x58, 0x6e, 0x6b, 0x70, 0x74, 0x6a, 0x71, 0x73, + 0x71, 0x73, 0x5d, 0x71, 0x6e, 0x6f, 0x7a, 0x6f, 0x79, 0x70, 0x6f, 0x7a, + 0x70, 0x6c, 0x6e, 0x71, 0x70, 0x6f, 0x6e, 0x6d, 0x65, 0x77, 0x66, 0x6e, + 0x6e, 0x6d, 0x70, 0x75, 0x69, 0x76, 0x72, 0x64, 0x65, 0x6d, 0x73, 0x6e, + 0x75, 0x6b, 0x75, 0x76, 0xa5, 0x6e, 0x4d, 0x5f, 0x64, 0x6e, 0x58, 0x6f, + 0x67, 0x74, 0x60, 0x66, 0x6e, 0x6e, 0x6e, 0x70, 0x52, 0xa5, 0x6d, 0x6e, + 0x5d, 0x6e, 0x70, 0x70, 0x57, 0x65, 0x6e, 0x68, 0x6b, 0x68, 0x5c, 0x58, + 0x60, 0x70, 0x67, 0x6f, 0x62, 0x6e, 0x5e, 0x6b, 0xbc, 0xa5, 0x58, 0x79, + 0x6e, 0x6f, 0x61, 0x70, 0x86, 0x77, 0x6c, 0x6e, 0x70, 0x84, 0x5d, 0x6e, + 0x37, 0x7e, 0x6e, 0x7e, 0x4a, 0x71, 0x6c, 0x6f, 0x99, 0x5c, 0x70, 0x71, + 0x54, 0x6e, 0x58, 0x6f, 0x8b, 0x70, 0x81, 0x6e, 0x50, 0x6e, 0x44, 0x64, + 0x9b, 0x6d, 0x70, 0x6e, 0xbc, 0x6e, 0x6f, 0x6f, 0x5d, 0x77, 0x54, 0x87, + 0x71, 0x73, 0x71, 0x6e, 0x75, 0x4f, 0x70, 0x6b, 0x70, 0x6e, 0x6e, 0x6e, + 0x4f, 0x50, 0x70, 0x58, 0x80, 0x75, 0x57, 0x68, 0x6d, 0x72, 0x6e, 0x70, + 0x81, 0x6f, 0x67, 0x54, 0x67, 0x6b, 0x74, 0x6e, 0x77, 0x6f, 0x6b, 0x6f, + 0x5f, 0x77, 0x4c, 0x69, 0x70, 0x72, 0x72, 0x6e, 0x76, 0x40, 0x6e, 0x6b, + 0x87, 0x6f, 0x6b, 0x70, 0x56, 0x63, 0x6f, 0x57, 0x82, 0x79, 0x56, 0x68, + 0x6d, 0x73, 0x71, 0x6f, 0x88, 0x6d, 0x6b, 0x5b, 0x69, 0x6a, 0x72, 0x6e, + 0x76, 0x6f, 0x6d, 0x6e, 0x5f, 0x73, 0x4f, 0x65, 0x70, 0x5e, 0x72, 0x70, + 0x77, 0x3f, 0x70, 0x72, 0x77, 0x6d, 0x6a, 0x70, 0x56, 0x6d, 0x6e, 0x59, + 0x7a, 0x7c, 0x5d, 0x68, 0x72, 0x71, 0x73, 0x70, 0x8b, 0x6f, 0x72, 0x61, + 0x6c, 0x6b, 0x75, 0x70, 0x74, 0x6f, 0x6f, 0x6f, 0x5b, 0x71, 0x4b, 0x69, + 0x6f, 0x5e, 0x73, 0x6e, 0x78, 0x3f, 0x6f, 0x70, 0x72, 0x6e, 0x6b, 0x6e, + 0x55, 0x6a, 0x6e, 0x5b, 0x7b, 0x7a, 0x5e, 0x6d, 0x71, 0x70, 0x73, 0x6f, + 0x8c, 0x6d, 0x78, 0x5c, 0x6b, 0x6a, 0x6f, 0x73, 0x7c, 0x6e, 0x62, 0x6e, + 0x5d, 0x33, 0x51, 0x71, 0x6e, 0x64, 0x73, 0x6e, 0x74, 0x3e, 0x70, 0x72, + 0x81, 0x64, 0x6d, 0x70, 0x56, 0x77, 0x6f, 0x5a, 0x8a, 0x7c, 0x5d, 0x62, + 0x73, 0x77, 0x72, 0x71, 0x7b, 0x69, 0x7e, 0x56, 0x66, 0x6b, 0x6b, 0x72, + 0x7b, 0x6e, 0x63, 0x6d, 0x5d, 0x36, 0x52, 0x76, 0x6f, 0x62, 0x72, 0x70, + 0x74, 0x3e, 0x70, 0x6c, 0x7b, 0x66, 0x70, 0x6e, 0x61, 0x71, 0x6e, 0x53, + 0x8d, 0x7d, 0x60, 0x60, 0x77, 0x73, 0x76, 0x6e, 0x75, 0x65, 0x78, 0x76, + 0x66, 0x6c, 0x6b, 0x65, 0x79, 0x6e, 0x70, 0x6f, 0x5c, 0x32, 0x50, 0x70, + 0x6f, 0x6c, 0x74, 0x6f, 0x77, 0x3e, 0x70, 0x6d, 0x78, 0x65, 0x6f, 0x70, + 0x69, 0x6f, 0x6e, 0x5c, 0x7c, 0x7f, 0x5c, 0x64, 0x73, 0x70, 0x77, 0x6f, + 0x77, 0x64, 0x70, 0x5c, 0x6e, 0x72, 0x71, 0x66, 0x7a, 0x6d, 0x77, 0x70, + 0x54, 0x33, 0x50, 0x6b, 0x6f, 0x72, 0x64, 0x70, 0x77, 0x3e, 0x6e, 0x7b, + 0x74, 0x5f, 0x75, 0x70, 0x6f, 0x59, 0x70, 0x5a, 0x76, 0x7e, 0x5d, 0x6f, + 0x7c, 0x6a, 0x76, 0x70, 0x7c, 0x63, 0x7c, 0x59, 0x65, 0x84, 0x71, 0x6f, + 0x71, 0x70, 0x6f, 0x6f, 0x6e, 0x38, 0x75, 0x6d, 0x6f, 0x78, 0x70, 0x6f, + 0x7b, 0x3d, 0x6f, 0x76, 0x8f, 0x56, 0x7a, 0x6f, 0x68, 0x3e, 0x6f, 0x59, + 0x6d, 0x73, 0x4f, 0x66, 0x7f, 0x64, 0x7a, 0x70, 0x76, 0x5e, 0x78, 0x78, + 0x64, 0x79, 0x7f, 0x59, 0x65, 0x6e, 0x6e, 0x70, 0x6f, 0x4d, 0x62, 0x72, + 0x6e, 0x83, 0x67, 0x6f, 0x71, 0x47, 0x6e, 0x79, 0x6e, 0x71, 0x76, 0x6f, + 0x69, 0x65, 0x70, 0x51, 0x7b, 0x84, 0x69, 0x74, 0x7d, 0x6e, 0x67, 0x70, + 0x6e, 0x6f, 0x80, 0x6e, 0x87, 0x75, 0x5b, 0x76, 0x38, 0x6e, 0x64, 0x6e, + 0xa4, 0x7c, 0x3f, 0x37, 0x6f, 0x73, 0x5e, 0x6e, 0x56, 0x62, 0x70, 0x6e, + 0x72, 0x71, 0x4f, 0x6e, 0x98, 0x75, 0x70, 0x47, 0x51, 0x59, 0x87, 0x73, + 0x6f, 0x6a, 0x61, 0x6d, 0x55, 0x70, 0x6f, 0x56, 0x5c, 0x6a, 0x78, 0x53, + 0x6c, 0x6f, 0x78, 0x70, 0x71, 0x43, 0x6b, 0x61, 0x6d, 0x7a, 0x6b, 0x70, + 0x7c, 0x57, 0x6e, 0x7d, 0x76, 0x73, 0x61, 0x6f, 0x6f, 0x72, 0x6f, 0x63, + 0x76, 0x87, 0x75, 0x70, 0x72, 0x6e, 0x73, 0x6e, 0x75, 0x6f, 0x67, 0x6d, + 0x89, 0x72, 0x7d, 0x71, 0x5c, 0x6e, 0x44, 0x6f, 0x43, 0x7a, 0x57, 0x34, + 0x6e, 0x74, 0x61, 0x6f, 0x66, 0x5f, 0x6f, 0x6c, 0x57, 0x70, 0x77, 0x6e, + 0x5d, 0x82, 0x6e, 0xa8, 0x4c, 0x49, 0x9e, 0x74, 0x6f, 0x69, 0x62, 0x6d, + 0x6a, 0x6f, 0x6f, 0x55, 0x5d, 0x71, 0x76, 0x70, 0x25, 0x6d, 0x6c, 0x6f, + 0x56, 0x78, 0xa5, 0x65, 0x6d, 0x74, 0x65, 0x6e, 0x5a, 0x67, 0x70, 0x6d, + 0x49, 0x6f, 0x77, 0x6e, 0x5b, 0x86, 0x6f, 0x61, 0x5e, 0x3d, 0x5f, 0x76, + 0x6f, 0x5f, 0x63, 0x6e, 0x71, 0x70, 0x6f, 0x55, 0x70, 0x70, 0x92, 0x71, + 0x24, 0x6e, 0x94, 0x6f, 0x61, 0x78, 0x8e, 0x6d, 0x70, 0x74, 0x68, 0x6e, + 0x4d, 0x6f, 0x70, 0x6e, 0x87, 0x6f, 0x77, 0x70, 0x54, 0x8d, 0x6e, 0x68, + 0x59, 0x33, 0x62, 0x77, 0x6d, 0x65, 0x65, 0x6f, 0x7a, 0x71, 0x71, 0x54, + 0x66, 0x6f, 0x71, 0x6f, 0x22, 0x6f, 0x70, 0x70, 0x51, 0x78, 0x4c, 0x37, + 0x6f, 0x74, 0x69, 0x6e, 0x75, 0x77, 0x6e, 0x6d, 0x6f, 0x6f, 0x74, 0x6e, + 0x4c, 0x68, 0x6d, 0x52, 0x74, 0x24, 0x5d, 0x7b, 0x6d, 0x68, 0x65, 0x6e, + 0x7e, 0x72, 0x6f, 0xac, 0x6c, 0x6e, 0x5f, 0x6e, 0x8d, 0x6e, 0x70, 0x6e, + 0x4d, 0x78, 0x50, 0x9b, 0x6e, 0x73, 0x6d, 0x6e, 0x74, 0x7e, 0x70, 0x6b, + 0x6f, 0x6e, 0x72, 0x6d, 0x4d, 0x64, 0x6d, 0x56, 0x75, 0x25, 0x59, 0x79, + 0x6f, 0x6c, 0x67, 0x6d, 0x7c, 0x73, 0x6d, 0x6d, 0x61, 0x6d, 0x6b, 0x6d, + 0x8b, 0x6f, 0x70, 0x70, 0x57, 0x79, 0x4f, 0x91, 0x6e, 0x74, 0x70, 0x6e, + 0x73, 0x83, 0x70, 0x6b, 0x6f, 0x6d, 0x71, 0x6e, 0x4e, 0x61, 0x6f, 0x5b, + 0x70, 0x82, 0x57, 0x6f, 0x6c, 0x6e, 0x69, 0x6f, 0x38, 0x71, 0x6c, 0x57, + 0x61, 0x6b, 0x6f, 0x6c, 0x85, 0x6f, 0x70, 0x6e, 0x59, 0x79, 0x50, 0x86, + 0x6f, 0x74, 0x70, 0x70, 0x74, 0x7f, 0x6e, 0x6a, 0x7b, 0x6e, 0x70, 0x6f, + 0x4d, 0x57, 0x70, 0x5b, 0x71, 0x84, 0x56, 0x73, 0x6b, 0x6f, 0x6b, 0x6f, + 0x00, 0x6f, 0x6d, 0x57, 0x7a, 0x73, 0x72, 0x70, 0x70, 0x6a, 0x6e, 0x6b, + 0x71, 0x6e, 0x6e, 0x6b, 0x6b, 0x74, 0x6f, 0x69, 0x6a, 0x5a, 0x6d, 0x6c, + 0x70, 0x72, 0x70, 0x6e, 0x6a, 0x6e, 0x6d, 0x6f, 0x71, 0x6e, 0x6d, 0x72, + 0x70, 0x6e, 0x72, 0x69, 0x70, 0x72, 0x6d, 0x68, 0x7a, 0x75, 0x71, 0x75, + 0x71, 0x6e, 0x65, 0x6f, 0x6e, 0x67, 0x6e, 0x6f, 0x6f, 0x7c, 0x6d, 0x70, + 0x6a, 0x5c, 0x70, 0x6e, 0x73, 0x67, 0x71, 0x6e, 0x6b, 0x6c, 0x6e, 0x6c, + 0x7a, 0x6a, 0x6b, 0x74, 0x6d, 0x6e, 0x64, 0x6f, 0x6e, 0x6e, 0x6e, 0x66, + 0x79, 0x71, 0x71, 0x66, 0x71, 0x70, 0x6a, 0x6f, 0x70, 0x65, 0x6f, 0x6d, + 0x6f, 0x75, 0x63, 0x6f, 0x68, 0x5a, 0x70, 0x66, 0x6e, 0x67, 0x72, 0x6f, + 0x6c, 0x6c, 0x6e, 0x6f, 0x6f, 0x6f, 0x6d, 0x72, 0x6d, 0x68, 0x5f, 0x6f, + 0x6f, 0x6b, 0x69, 0x69, 0x7a, 0x73, 0x74, 0x6f, 0x71, 0x6f, 0x6e, 0x6e, + 0x70, 0x6c, 0x6d, 0x66, 0x6f, 0x74, 0x61, 0x70, 0x69, 0x59, 0x70, 0x6e, + 0x73, 0x62, 0x71, 0x6f, 0x6a, 0x71, 0x6e, 0x6e, 0x72, 0x6e, 0x6b, 0x6f, + 0x70, 0x6a, 0x5c, 0x6f, 0x70, 0x6f, 0x6e, 0x66, 0x7c, 0x74, 0x72, 0x6a, + 0x70, 0x6e, 0x69, 0x6e, 0x71, 0x6c, 0x70, 0x69, 0x6f, 0x75, 0x60, 0x71, + 0x68, 0x5a, 0x6f, 0x6d, 0x78, 0x68, 0x70, 0x70, 0x6a, 0x6e, 0x70, 0x71, + 0x75, 0x6e, 0x6c, 0x72, 0x6d, 0x69, 0x63, 0x70, 0x6f, 0x65, 0x6b, 0x68, + 0x7d, 0x72, 0x72, 0x6d, 0x72, 0x6e, 0x6b, 0x6f, 0x73, 0x69, 0x71, 0x69, + 0x6e, 0x75, 0x5e, 0x6f, 0x68, 0x5a, 0x6e, 0x6c, 0x73, 0x5e, 0x71, 0x6e, + 0x6a, 0x6d, 0x70, 0x6f, 0x74, 0x6e, 0x6c, 0x71, 0x6e, 0x69, 0x59, 0x70, + 0x72, 0x67, 0x6c, 0x67, 0x7c, 0x75, 0x71, 0x6b, 0x71, 0x6f, 0x6c, 0x6e, + 0x72, 0x66, 0x70, 0x6b, 0x70, 0x75, 0x5b, 0x6f, 0x68, 0x5b, 0x6e, 0x69, + 0x74, 0x5e, 0x72, 0x6f, 0x6a, 0x6e, 0x70, 0x71, 0x73, 0x6f, 0x6c, 0x71, + 0x6e, 0x60, 0x56, 0x6f, 0x70, 0x64, 0x6c, 0x69, 0x7d, 0x74, 0x72, 0x6b, + 0x71, 0x70, 0x6c, 0x70, 0x70, 0x67, 0x6f, 0x6a, 0x70, 0x76, 0x62, 0x6f, + 0x69, 0x5b, 0x6e, 0x69, 0x73, 0x68, 0x71, 0x70, 0x6a, 0x70, 0x70, 0x6f, + 0x72, 0x6f, 0x6c, 0x72, 0x6e, 0x67, 0x57, 0x6f, 0x71, 0x68, 0x6c, 0x68, + 0x7d, 0x73, 0x72, 0x6a, 0x72, 0x6e, 0x6a, 0x70, 0x71, 0x6a, 0x70, 0x6b, + 0x70, 0x76, 0x5b, 0x6f, 0x69, 0x5a, 0x6f, 0x69, 0x75, 0x65, 0x73, 0x6f, + 0x6a, 0x71, 0x6f, 0x6f, 0x73, 0x6f, 0x6d, 0x71, 0x6e, 0x66, 0x5d, 0x6e, + 0x70, 0x67, 0x6c, 0x69, 0x7d, 0x70, 0x71, 0x6b, 0x71, 0x6f, 0x6b, 0x6e, + 0x72, 0x69, 0x70, 0x6b, 0x6e, 0x75, 0x5c, 0x6f, 0x68, 0x5b, 0x70, 0x69, + 0x74, 0x66, 0x6f, 0x6e, 0x69, 0x6d, 0x70, 0x70, 0x71, 0x70, 0x6c, 0x74, + 0x6f, 0x65, 0x59, 0x70, 0x70, 0x68, 0x6d, 0x69, 0x7f, 0x71, 0x71, 0x69, + 0x72, 0x6e, 0x6c, 0x6f, 0x72, 0x68, 0x70, 0x6e, 0x70, 0x75, 0x5e, 0x6e, + 0x68, 0x5b, 0x70, 0x68, 0x72, 0x69, 0x71, 0x6f, 0x6b, 0x70, 0x6e, 0x70, + 0x71, 0x70, 0x6d, 0x74, 0x6e, 0x65, 0x5b, 0x6e, 0x70, 0x68, 0x6c, 0x6b, + 0x88, 0x51, 0x69, 0x69, 0x70, 0x6c, 0x76, 0x6c, 0x4f, 0x71, 0x5e, 0x70, + 0x6e, 0x44, 0x69, 0x6b, 0x8a, 0x77, 0x6b, 0x6e, 0x76, 0x6c, 0x6e, 0x6b, + 0x74, 0x70, 0x6c, 0x5d, 0x58, 0x7d, 0x6f, 0x86, 0x6f, 0x67, 0x68, 0x67, + 0x7c, 0x6b, 0x6c, 0x6b, 0x6a, 0x45, 0x68, 0x71, 0x6f, 0x6e, 0x58, 0x6f, + 0x6e, 0x94, 0x60, 0x80, 0x70, 0x7e, 0x56, 0x70, 0x6c, 0x78, 0x6f, 0x5f, + 0x93, 0x98, 0x4a, 0x70, 0x54, 0x6d, 0x70, 0x54, 0x4c, 0x7e, 0x8e, 0x6f, + 0x64, 0x5b, 0x49, 0x70, 0x78, 0x5b, 0x5a, 0x6e, 0x68, 0x74, 0x6f, 0x72, + 0x6e, 0x6f, 0x71, 0x6e, 0x6f, 0x6f, 0x6f, 0x6a, 0x71, 0x72, 0x6c, 0x70, + 0x71, 0x6f, 0x6e, 0x3f, 0x6f, 0x6c, 0x6f, 0x6e, 0x6f, 0x6c, 0x6e, 0x6f, + 0x6b, 0x6e, 0x6e, 0x6f, 0x6f, 0x74, 0x63, 0x6e, 0x70, 0x6c, 0x51, 0x6c, +}}; + +const union { + uint8_t bytes[4]; + float values[1]; +} dnn_hiddenlayer_0_weights__1__cf__1_quantized_min = {{ + 0x23, 0xb9, 0xca, 0xc0, +}}; + +const int32_t dnn_logits_weights__3__cf__3_shape[2] = {DNN_BIASES_SIZE, 1}; +const union { + uint8_t bytes[2 * 2 * DNN_BIASES_SIZE]; + float values[DNN_BIASES_SIZE]; +} dnn_logits_weights__3__cf__3 = {{ + 0xe0, 0xd2, 0x94, 0xbf, 0xd1, 0xea, 0x37, 0x3f, 0x3e, 0xab, 0x17, 0x3f, + 0xae, 0x2b, 0x52, 0xbf, 0x9e, 0xa1, 0x93, 0x3f, 0xde, 0xe8, 0xa5, 0xbd, + 0xf1, 0xa5, 0xed, 0x3e, 0xf8, 0x91, 0x8a, 0xbe, 0x17, 0xab, 0x9b, 0x3f, + 0x94, 0xda, 0x0b, 0xc0, 0xc5, 0x4c, 0xa3, 0x3f, 0xcd, 0x29, 0x2b, 0x3f, + 0x35, 0xbd, 0x27, 0xbe, 0xa3, 0x72, 0x8b, 0x3f, 0x50, 0x6b, 0x30, 0xc0, + 0x9a, 0x79, 0x86, 0xbe, 0xaa, 0x9a, 0xb8, 0x3f, 0x66, 0x71, 0x9d, 0xc1, + 0xd1, 0x42, 0x90, 0xbe, 0xa5, 0xe9, 0x40, 0xbf, 0x30, 0xb1, 0xa9, 0x3e, + 0xe3, 0x84, 0xa2, 0x3f, 0xa7, 0x1a, 0x08, 0x3f, 0x43, 0x60, 0x5d, 0xbe, + 0x19, 0x3e, 0x3f, 0x40, 0x3d, 0xf7, 0xfc, 0x3e, 0x23, 0x77, 0x4d, 0x3d, + 0x3d, 0x4b, 0xa3, 0x3f, 0xd3, 0x92, 0x1c, 0x3f, 0x26, 0xaa, 0xbb, 0x3f, + 0x74, 0xee, 0x82, 0x3f, 0x8e, 0x66, 0x15, 0x3f, 0xaf, 0x55, 0x3b, 0x3f, + 0x1a, 0x5f, 0x0f, 0xc0, 0xa5, 0xdd, 0x16, 0x40, 0x5a, 0xc3, 0x98, 0xbd, + 0x3d, 0x8d, 0x60, 0x3f, 0xf5, 0xc6, 0xdc, 0xbf, 0x89, 0x73, 0x1d, 0x3f, + 0xea, 0x56, 0xba, 0x3f, +}}; + +const union { + uint8_t bytes[4]; + float values[1]; +} dnn_hiddenlayer_0_weights__1__cf__1_quantized_max = {{ + 0xc9, 0x22, 0x04, 0x41, +}}; + +const int32_t dnn_hiddenlayer_0_biases__0__cf__0_shape[1] = {DNN_BIASES_SIZE}; +const union { + uint8_t bytes[2 * 2 * DNN_BIASES_SIZE]; + float values[DNN_BIASES_SIZE]; +} dnn_hiddenlayer_0_biases__0__cf__0 = {{ + 0x24, 0x9c, 0x84, 0x3f, 0xd6, 0x93, 0x17, 0x3f, 0xc6, 0x59, 0x0b, 0x3f, + 0x00, 0x54, 0x47, 0xbe, 0x60, 0x5a, 0x83, 0x3e, 0xae, 0xf0, 0x63, 0xbe, + 0x11, 0x90, 0x01, 0xbe, 0xf6, 0x9d, 0x66, 0xbe, 0x2d, 0x1f, 0xb6, 0x3d, + 0xb2, 0x09, 0x29, 0xbf, 0xfc, 0x6d, 0x21, 0xbe, 0xcd, 0xaa, 0xdb, 0xbe, + 0x2a, 0xc7, 0x2a, 0xbe, 0xad, 0x91, 0x73, 0x3f, 0xe6, 0xfc, 0x67, 0xbf, + 0x8f, 0x7e, 0x95, 0xbe, 0xd5, 0x75, 0x6d, 0xbf, 0xf7, 0x85, 0x04, 0xc0, + 0xfe, 0xd7, 0x23, 0xbe, 0x6f, 0x06, 0x45, 0xbf, 0x2e, 0xcb, 0xfd, 0x3e, + 0x44, 0x3f, 0x2f, 0xbf, 0xeb, 0xcc, 0x46, 0x3e, 0x07, 0xfa, 0x01, 0xbe, + 0x69, 0x90, 0xa2, 0xbf, 0xc9, 0x88, 0x9a, 0xbd, 0x74, 0x75, 0x66, 0xbe, + 0x36, 0x42, 0x27, 0xbd, 0xba, 0x9c, 0xf3, 0x3e, 0x60, 0xcc, 0x06, 0x3e, + 0x45, 0xc4, 0x09, 0xbe, 0xd5, 0x90, 0x03, 0x3f, 0xe9, 0x34, 0x2e, 0x3e, + 0xd8, 0xc5, 0x7b, 0xbf, 0x96, 0x35, 0x91, 0xbf, 0x85, 0xe2, 0xdc, 0xbe, + 0x7c, 0xb4, 0xc1, 0x3e, 0x95, 0x12, 0x33, 0xbf, 0x81, 0x39, 0x5c, 0x3d, + 0x0e, 0x92, 0x44, 0xbf, +}}; + +} // anonymous namespace + +// ----------------------------------------------------------------------------- +// INFERENCE +// ----------------------------------------------------------------------------- + +void Inference(const float* __restrict features /* shape: 1,FEATURES_SIZE */ + , + float* __restrict prediction /* shape: 1,1 */ + , + FixedAllocations* __restrict fixed) { + const int32_t features_shape[] = {1, FEATURES_SIZE}; + + // dnn/hiddenlayer_0/weights/_1__cf__1 + DequantizeMinFirst<uint8_t>( + 2, dnn_hiddenlayer_0_weights__1__cf__1_quantized_const_shape, + dnn_hiddenlayer_0_weights__1__cf__1_quantized_const.values, + dnn_hiddenlayer_0_weights__1__cf__1_quantized_min.values, + dnn_hiddenlayer_0_weights__1__cf__1_quantized_max.values, fixed->alloc0); + + fixed->alloc0_shape[0] = FEATURES_SIZE; + fixed->alloc0_shape[1] = DNN_BIASES_SIZE; + + // dnn/hiddenlayer_0/MatMul_merged_with_dnn/hiddenlayer_0/BiasAdd + FullyConnected<float>(features_shape, features, fixed->alloc0_shape, + fixed->alloc0, dnn_hiddenlayer_0_biases__0__cf__0_shape, + dnn_hiddenlayer_0_biases__0__cf__0.values, + fixed->alloc1); + fixed->alloc1_shape[0] = 1; + fixed->alloc1_shape[1] = DNN_BIASES_SIZE; + + // dnn/hiddenlayer_0/hiddenlayer_0/Relu + Relu<float>(2, // rank + fixed->alloc1_shape, fixed->alloc1, fixed->alloc0); + fixed->alloc0_shape[0] = 1; + fixed->alloc0_shape[1] = DNN_BIASES_SIZE; + + // dnn/logits/MatMul_merged_with_dnn/logits/BiasAdd + FullyConnected<float>( + fixed->alloc0_shape, fixed->alloc0, dnn_logits_weights__3__cf__3_shape, + dnn_logits_weights__3__cf__3.values, dnn_logits_biases__2__cf__2_shape, + dnn_logits_biases__2__cf__2.values, prediction); +} + +} // namespace tfnative_model +} // namespace tab_ranker
diff --git a/chrome/browser/resource_coordinator/tab_ranker/native_inference.h b/chrome/browser/resource_coordinator/tab_ranker/native_inference.h new file mode 100644 index 0000000..6270b4d --- /dev/null +++ b/chrome/browser/resource_coordinator/tab_ranker/native_inference.h
@@ -0,0 +1,39 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// This file was generated using tf.native from a neural network trained by +// TensorFlow, then cleaned up by hand. Please do not edit except to update +// the constants for a new model. See native_inference.md for details. + +#ifndef CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_RANKER_NATIVE_INFERENCE_H_ +#define CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_RANKER_NATIVE_INFERENCE_H_ + +#include <cstdint> + +namespace tab_ranker { +namespace tfnative_model { + +constexpr int DNN_WEIGHTS_SIZE = 29040; +constexpr int DNN_RANK = 2; +constexpr int FEATURES_SIZE = 726; +constexpr int DNN_BIASES_SIZE = 40; + +struct alignas(16) FixedAllocations { + float alloc0[DNN_WEIGHTS_SIZE]; + int32_t alloc0_shape[DNN_RANK]; + float alloc1[DNN_BIASES_SIZE]; + int32_t alloc1_shape[DNN_RANK]; +}; + +void Inference( + /* size: FEATURES_SIZE */ + const float* __restrict features, + /* size: 1 */ + float* __restrict prediction, + FixedAllocations* __restrict fixed); + +} // namespace tfnative_model +} // namespace tab_ranker + +#endif // CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_RANKER_NATIVE_INFERENCE_H_
diff --git a/chrome/browser/resource_coordinator/tab_ranker/native_inference.md b/chrome/browser/resource_coordinator/tab_ranker/native_inference.md new file mode 100644 index 0000000..38599c1b --- /dev/null +++ b/chrome/browser/resource_coordinator/tab_ranker/native_inference.md
@@ -0,0 +1,42 @@ +# native_inference code + +Given a trained TensorFlow model, tf.native generates C++ code to run the model +on an input example and return a value. This code is generated offline and +committed at `native_inference.h` and `native_inference.cc`. + +## Prettify native_inference code + +A lot of the generated code can be removed or simplified: + +* Unused functions and variables +* `#ifdef` wrappers that are never triggered, and macros that expand to no-ops +* Generated variable and namespace names +* `#define` constants instead of scoped `constexpr`s + +Approximately the following steps will clean up the generated code: + + 1. Delete code inside the `USE_EIGEN` and `OP_LIB_BENCHMARK` `#ifdef`s, and + delete those `#ifdef` wrappers (a utility like `unifdefall` may help). Also + delete usage of no-op macros such as `BENCHMARK_TIMER`. + 1. Delete unused functions and macros from native_inference.cc. + 1. Update the namespacing so all code is within the + `tab_ranker::native_inference` namespace. + 1. Update the `native_inference.h` location included in native_inference.cc + 1. Remove unused variables defined in native_inference.cc, e.g. + `dnn_input_from_feature_columns_input_from_feature_columns_concat0Shape`. + 1. Rename parameters to the `Inference` function. + 1. Replace constants in native_inference.h with `constexpr int`s for weight, + feature and bias sizes, and improve their names. + 1. Replace literal constants in native_inference.cc with the named constants + from native_inference.h. + 1. Replace `assert()` calls with `CHECK()`, and include `"base/logging.h"`. + 1. Remove unused includes, including `<cassert>`. + 1. Add Chromium header comments. + +## Updating the model + +When updating the model, it may be easier to keep the existing +native_inference.* files and simply replace the constants, including weights, +biases, and array sizes. Check if the generated native_inference.cc file +uses functions that may need to be added back to the prettified version or calls +these functions in a different order.
diff --git a/chrome/browser/resource_coordinator/tab_features.cc b/chrome/browser/resource_coordinator/tab_ranker/tab_features.cc similarity index 70% rename from chrome/browser/resource_coordinator/tab_features.cc rename to chrome/browser/resource_coordinator/tab_ranker/tab_features.cc index 3e0861f..7f1b5d4 100644 --- a/chrome/browser/resource_coordinator/tab_features.cc +++ b/chrome/browser/resource_coordinator/tab_ranker/tab_features.cc
@@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/resource_coordinator/tab_features.h" +#include "chrome/browser/resource_coordinator/tab_ranker/tab_features.h" -namespace resource_coordinator { +namespace tab_ranker { TabFeatures::TabFeatures() = default; @@ -12,4 +12,4 @@ TabFeatures::TabFeatures(const TabFeatures& other) = default; -} // namespace resource_coordinator +} // namespace tab_ranker
diff --git a/chrome/browser/resource_coordinator/tab_features.h b/chrome/browser/resource_coordinator/tab_ranker/tab_features.h similarity index 69% rename from chrome/browser/resource_coordinator/tab_features.h rename to chrome/browser/resource_coordinator/tab_ranker/tab_features.h index 9ee440b6..3724e871 100644 --- a/chrome/browser/resource_coordinator/tab_features.h +++ b/chrome/browser/resource_coordinator/tab_ranker/tab_features.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_FEATURES_H_ -#define CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_FEATURES_H_ +#ifndef CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_RANKER_TAB_FEATURES_H_ +#define CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_RANKER_TAB_FEATURES_H_ #include <stdint.h> #include <string> @@ -11,7 +11,7 @@ #include "base/optional.h" #include "ui/base/page_transition_types.h" -namespace resource_coordinator { +namespace tab_ranker { // Tab features used for logging a Tab Ranker example to UKM or calculating a // Tab Ranker score. @@ -26,20 +26,26 @@ // properties are sent via UKM. bool has_before_unload_handler = false; bool has_form_entry = false; + std::string host; // Used for inference. bool is_pinned = false; int32_t key_event_count = 0; int32_t mouse_event_count = 0; int32_t navigation_entry_count = 0; + // Number of times the tab has been reactivated while showing the current + // page. Reset to 0 when a tab navigates. + int32_t num_reactivations = 0; // Null if the value is not one of the core values logged to UKM. base::Optional<ui::PageTransition> page_transition_core_type; bool page_transition_from_address_bar = false; bool page_transition_is_redirect = false; // Null if the SiteEngagementService is disabled. base::Optional<int32_t> site_engagement_score; + // Time since tab was backgrounded, in milliseconds. + int32_t time_from_backgrounded = 0; int32_t touch_event_count = 0; bool was_recently_audible = false; }; -} // namespace resource_coordinator +} // namespace tab_ranker -#endif // CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_FEATURES_H_ +#endif // CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_RANKER_TAB_FEATURES_H_
diff --git a/chrome/browser/resource_coordinator/tab_ranker/tab_score_predictor.cc b/chrome/browser/resource_coordinator/tab_ranker/tab_score_predictor.cc new file mode 100644 index 0000000..c3b8352 --- /dev/null +++ b/chrome/browser/resource_coordinator/tab_ranker/tab_score_predictor.cc
@@ -0,0 +1,163 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/resource_coordinator/tab_ranker/tab_score_predictor.h" + +#include <string> + +#include "base/logging.h" +#include "base/memory/ref_counted_memory.h" +#include "base/memory/scoped_refptr.h" +#include "base/metrics/histogram_macros.h" +#include "base/metrics/metrics_hashes.h" +#include "chrome/browser/resource_coordinator/tab_ranker/mru_features.h" +#include "chrome/browser/resource_coordinator/tab_ranker/native_inference.h" +#include "chrome/browser/resource_coordinator/tab_ranker/tab_features.h" +#include "chrome/browser/resource_coordinator/tab_ranker/window_features.h" +#include "chrome/grit/browser_resources.h" +#include "components/assist_ranker/example_preprocessing.h" +#include "components/assist_ranker/proto/example_preprocessor.pb.h" +#include "components/assist_ranker/proto/ranker_example.pb.h" +#include "ui/base/resource/resource_bundle.h" + +namespace tab_ranker { +namespace { + +// Loads the preprocessor config protobuf, which lists each feature, their +// types, bucket configurations, etc. +// Returns true if the protobuf was successfully populated. +std::unique_ptr<assist_ranker::ExamplePreprocessorConfig> +LoadExamplePreprocessorConfig() { + auto config = std::make_unique<assist_ranker::ExamplePreprocessorConfig>(); + + scoped_refptr<base::RefCountedMemory> raw_config = + ui::ResourceBundle::GetSharedInstance().LoadDataResourceBytes( + IDR_TAB_RANKER_EXAMPLE_PREPROCESSOR_CONFIG_PB); + if (!raw_config || !raw_config->front()) { + LOG(ERROR) << "Failed to load TabRanker example preprocessor config."; + return nullptr; + } + + if (!config->ParseFromArray(raw_config->front(), raw_config->size())) { + LOG(ERROR) << "Failed to parse TabRanker example preprocessor config."; + return nullptr; + } + + return config; +} + +void PopulateRankerExample(assist_ranker::RankerExample* example, + const TabFeatures& tab, + const WindowFeatures& window, + const MRUFeatures& mru) { + auto& features = *example->mutable_features(); + + features["HasBeforeUnloadHandler"].set_bool_value( + tab.has_before_unload_handler); + features["HasFormEntry"].set_bool_value(tab.has_form_entry); + features["IsPinned"].set_bool_value(tab.is_pinned); + features["KeyEventCount"].set_int32_value(tab.key_event_count); + features["MRUIndex"].set_int32_value(mru.index); + features["MouseEventCount"].set_int32_value(tab.mouse_event_count); + features["NavigationEntryCount"].set_int32_value(tab.navigation_entry_count); + DCHECK_GT(mru.total, 0); + features["NormalizedMRUIndex"].set_float_value(float(mru.index) / mru.total); + features["NumReactivationBefore"].set_int32_value(tab.num_reactivations); + + // Nullable types indicate optional values; if not present, the corresponding + // feature should not be set. + if (tab.page_transition_core_type.has_value()) { + features["PageTransitionCoreType"].set_int32_value( + tab.page_transition_core_type.value()); + } + features["PageTransitionFromAddressBar"].set_bool_value( + tab.page_transition_from_address_bar); + features["PageTransitionIsRedirect"].set_bool_value( + tab.page_transition_is_redirect); + if (tab.site_engagement_score.has_value()) { + features["SiteEngagementScore"].set_int32_value( + tab.site_engagement_score.value()); + } + features["TabCount"].set_int32_value(window.tab_count); + features["TimeFromBackgrounded"].set_int32_value(tab.time_from_backgrounded); + features["TopDomain"].set_string_value( + std::to_string(base::HashMetricName(tab.host))); + features["TotalTabCount"].set_int32_value(mru.total); + features["TouchEventCount"].set_int32_value(tab.touch_event_count); + features["Type"].set_int32_value(window.type); + features["WasRecentlyAudible"].set_bool_value(tab.was_recently_audible); +} + +} // namespace + +TabScorePredictor::TabScorePredictor() = default; +TabScorePredictor::~TabScorePredictor() = default; + +TabRankerResult TabScorePredictor::ScoreTab(const TabFeatures& tab, + const WindowFeatures& window, + const MRUFeatures& mru, + float* score) { + DCHECK(score); + + // No error is expected, but something could conceivably be misconfigured. + TabRankerResult result = TabRankerResult::kSuccess; + + // Lazy-load the preprocessor config. + LazyInitialize(); + if (preprocessor_config_) { + // Build the RankerExample using the tab's features. + assist_ranker::RankerExample example; + PopulateRankerExample(&example, tab, window, mru); + + // Process the RankerExample with the tab ranker config to vectorize the + // feature list for inference. + int preprocessor_error = preprocessor_->Process(&example); + if (preprocessor_error) { + // kNoFeatureIndexFound can occur normally (e.g., when the domain name + // isn't known to the model or a rarely seen enum value is used). + DCHECK_EQ(assist_ranker::ExamplePreprocessor::kNoFeatureIndexFound, + preprocessor_error); + } + + // This vector will be provided to the inference function. + const auto& vectorized_features = + example.features() + .at(assist_ranker::ExamplePreprocessor:: + kVectorizedFeatureDefaultName) + .float_list() + .float_value(); + CHECK_EQ(vectorized_features.size(), tfnative_model::FEATURES_SIZE); + + // Fixed amount of memory the inference function will use. + if (!model_alloc_) + model_alloc_ = std::make_unique<tfnative_model::FixedAllocations>(); + tfnative_model::Inference(vectorized_features.data(), score, + model_alloc_.get()); + + if (preprocessor_error && + preprocessor_error != + assist_ranker::ExamplePreprocessor::kNoFeatureIndexFound) { + // May indicate something is wrong with how we create the RankerExample. + result = TabRankerResult::kPreprocessorOtherError; + } + } else { + result = TabRankerResult::kPreprocessorInitializationFailed; + } + + UMA_HISTOGRAM_ENUMERATION("TabManager.TabRanker.Result", result); + return result; +} + +void TabScorePredictor::LazyInitialize() { + if (preprocessor_config_) + return; + + preprocessor_config_ = LoadExamplePreprocessorConfig(); + if (preprocessor_config_) { + preprocessor_ = std::make_unique<assist_ranker::ExamplePreprocessor>( + *preprocessor_config_); + } +} + +} // namespace tab_ranker
diff --git a/chrome/browser/resource_coordinator/tab_ranker/tab_score_predictor.h b/chrome/browser/resource_coordinator/tab_ranker/tab_score_predictor.h new file mode 100644 index 0000000..9d56152a --- /dev/null +++ b/chrome/browser/resource_coordinator/tab_ranker/tab_score_predictor.h
@@ -0,0 +1,72 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_RANKER_TAB_SCORE_PREDICTOR_H_ +#define CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_RANKER_TAB_SCORE_PREDICTOR_H_ + +#include <memory> + +#include "base/compiler_specific.h" +#include "base/macros.h" + +namespace assist_ranker { +class ExamplePreprocessor; +class ExamplePreprocessorConfig; +} // namespace assist_ranker + +namespace tab_ranker { + +namespace tfnative_model { +struct FixedAllocations; +} // namespace tfnative_model + +struct MRUFeatures; +struct TabFeatures; +struct WindowFeatures; + +// These values are persisted to logs. Entries should not be renumbered and +// numeric values should never be reused. +enum class TabRankerResult { + kSuccess = 0, + kPreprocessorInitializationFailed = 1, + kPreprocessorOtherError = 2, + kMaxValue = kPreprocessorOtherError +}; + +// Makes predictions using the tab reactivation DNN classifier. Background tabs +// are scored based on how likely they are to be reactivated. +class TabScorePredictor { + public: + TabScorePredictor(); + ~TabScorePredictor(); + + // Scores the tab using the tab reactivation model. A higher score indicates + // the tab is more likely to be reactivated than a lower score. A lower score + // indicates the tab is more likely to be closed. + // |mru_index|: Index of the tab in most-recently used order. + // |total_tab_count|: Number of tabs used when calculating mru_index, ie + // number of non-incognito tabs. + TabRankerResult ScoreTab(const TabFeatures& tab, + const WindowFeatures& window, + const MRUFeatures& mru, + float* score) WARN_UNUSED_RESULT; + + private: + // Loads the preprocessor config if not already loaded. + void LazyInitialize(); + + std::unique_ptr<assist_ranker::ExamplePreprocessorConfig> + preprocessor_config_; + std::unique_ptr<assist_ranker::ExamplePreprocessor> preprocessor_; + + // Fixed-size working memory provided to the inferencing function. Lazy + // initialized once so it isn't reallocated for every inference. + std::unique_ptr<tfnative_model::FixedAllocations> model_alloc_; + + DISALLOW_COPY_AND_ASSIGN(TabScorePredictor); +}; + +} // namespace tab_ranker + +#endif // CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_RANKER_TAB_SCORE_PREDICTOR_H_
diff --git a/chrome/browser/resource_coordinator/tab_ranker/tab_score_predictor_unittest.cc b/chrome/browser/resource_coordinator/tab_ranker/tab_score_predictor_unittest.cc new file mode 100644 index 0000000..073e618 --- /dev/null +++ b/chrome/browser/resource_coordinator/tab_ranker/tab_score_predictor_unittest.cc
@@ -0,0 +1,271 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/resource_coordinator/tab_ranker/tab_score_predictor.h" + +#include <memory> + +#include "base/time/time.h" +#include "chrome/browser/resource_coordinator/tab_ranker/mru_features.h" +#include "chrome/browser/resource_coordinator/tab_ranker/tab_features.h" +#include "chrome/browser/resource_coordinator/tab_ranker/window_features.h" +#include "components/sessions/core/session_id.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "ui/base/page_transition_types.h" + +namespace tab_ranker { +namespace { + +// A URL whose host is not one of the top sites in the model. +const char* kUnseenHost = "www.example.com"; + +// Returns a set of features for a fairly typcial tab. If |user_activity| is +// true, the features will reflect some amount of user activity, e.g. +// navigations and input events. +// The TabFeatures returned can be used as a baseline for testing how changing a +// feature affects the score, but this is an imperfect testing method because +// features are inter-dependent in our model. +TabFeatures GetTabFeatures(std::string host, bool user_activity = false) { + // Assign typical/reasonable values for background tabs. + TabFeatures tab; + tab.has_before_unload_handler = true; + tab.has_form_entry = false; + tab.host = host; + tab.is_pinned = false; + tab.key_event_count = user_activity ? 20 : 0; + tab.mouse_event_count = user_activity ? 20 : 0; + tab.navigation_entry_count = user_activity ? 4 : 1; + tab.num_reactivations = user_activity ? 1 : 0; + tab.page_transition_core_type = ui::PAGE_TRANSITION_LINK; + tab.page_transition_from_address_bar = true; + tab.page_transition_is_redirect = false; + tab.site_engagement_score = user_activity ? 20 : 0; + tab.time_from_backgrounded = + base::TimeDelta::FromMinutes(10).InMilliseconds(); + // Even tabs with activity usually have 0 touch events. + tab.touch_event_count = 0; + tab.was_recently_audible = false; + + return tab; +} + +// Returns a fairly typical set of window features. +WindowFeatures GetWindowFeatures() { + WindowFeatures window(SessionID::NewUnique(), + metrics::WindowMetricsEvent::TYPE_TABBED); + window.tab_count = 3; + return window; +} + +// Returns some MRU features. +// // TODO: find actual nums +MRUFeatures GetMRUFeatures() { + MRUFeatures mru; + mru.index = 3; + mru.total = 6; + return mru; +} + +// These tests try to sanity-check the model by seeing how changing one feature +// impacts the score while everything else remains constant. +// For example, it seems reasonable to expect that a pinned tab would have a +// higher score than an unpinned tab, all else being equal. +// +// This won't always be the case, so these tests will be fragile, but *only* +// when updating the model; if the tests fail without changing the model, +// then the input to the model must have changed, which is probably a +// regression. +// +// If several tests fail locally after updating the model, check whether the +// features are being logged and set correctly, and think about why the model +// might be making counter-intuitive predictions. If everything checks out, try +// to find more realistic tab examples where the feature behaves as expected. +// If that fails, just remove the test -- the point is to avoid accidental model +// regressions, not to force fit a model to these expectations. +class TabScorePredictorTest : public testing::Test { + public: + TabScorePredictorTest() = default; + ~TabScorePredictorTest() override = default; + + protected: + // Returns a prediction for the tab example. + float ScoreTab(const TabFeatures& tab, + const WindowFeatures& window = GetWindowFeatures(), + const MRUFeatures& mru = GetMRUFeatures()) { + float score = 0; + EXPECT_EQ(TabRankerResult::kSuccess, + tab_score_predictor_.ScoreTab(tab, window, mru, &score)); + return score; + } + + private: + TabScorePredictor tab_score_predictor_; + + DISALLOW_COPY_AND_ASSIGN(TabScorePredictorTest); +}; + +} // namespace + +// Checks the score for an example that we have calculated a known score for +// outside of Chrome. +TEST_F(TabScorePredictorTest, KnownScore) { + MRUFeatures mru; + mru.index = 27; + mru.total = 30; + + TabFeatures tab; + tab.has_before_unload_handler = true; + tab.has_form_entry = true; + tab.host = "www.google.com"; + tab.is_pinned = true; + tab.key_event_count = 21; + tab.mouse_event_count = 22; + tab.navigation_entry_count = 24; + tab.num_reactivations = 25; + tab.page_transition_core_type = ui::PAGE_TRANSITION_AUTO_BOOKMARK; + tab.page_transition_from_address_bar = true; + tab.page_transition_is_redirect = true; + tab.site_engagement_score = 26; + tab.time_from_backgrounded = 10000; + tab.touch_event_count = 28; + tab.was_recently_audible = true; + + WindowFeatures window(GetWindowFeatures()); + window.tab_count = 27; + + // Pre-calculated score using the generated model outside of Chrome. + EXPECT_FLOAT_EQ(7.5816331, ScoreTab(tab, window, mru)); +} + +// Checks the score for a different example that we have calculated a known +// score for outside of Chrome. This example omits the optional features. +TEST_F(TabScorePredictorTest, KnownScoreMissingOptionalFeatures) { + MRUFeatures mru; + mru.index = 13; + mru.total = 130; + + TabFeatures tab; + tab.has_before_unload_handler = true; + tab.has_form_entry = true; + tab.host = "www.example.com"; + tab.is_pinned = true; + tab.key_event_count = 121; + tab.mouse_event_count = 122; + tab.navigation_entry_count = 124; + tab.num_reactivations = 125; + tab.page_transition_from_address_bar = true; + tab.page_transition_is_redirect = true; + tab.time_from_backgrounded = 110000; + tab.touch_event_count = 128; + tab.was_recently_audible = true; + + WindowFeatures window(GetWindowFeatures()); + window.tab_count = 127; + + // Pre-calculated score using the generated model outside of Chrome. + EXPECT_FLOAT_EQ(12.989228, ScoreTab(tab, window, mru)); +} + +TEST_F(TabScorePredictorTest, InactiveDuration) { + // A tab that has been in the background for a much shorter time is more + // likely to be reactivated. + TabFeatures shorter_example = GetTabFeatures(kUnseenHost); + TabFeatures longer_example = GetTabFeatures(kUnseenHost); + shorter_example.time_from_backgrounded = + base::TimeDelta::FromMinutes(1).InMilliseconds(); + longer_example.time_from_backgrounded = + base::TimeDelta::FromMinutes(1000).InMilliseconds(); + ASSERT_GT(ScoreTab(shorter_example), ScoreTab(longer_example)); +} + +TEST_F(TabScorePredictorTest, NavigationEntryCount) { + TabFeatures example = GetTabFeatures(kUnseenHost, true /*user_activity*/); + float default_score = ScoreTab(example); + + // A tab with more navigations is more likely to be reactivated. + example.navigation_entry_count = 10; + float navigated_score = ScoreTab(example); + ASSERT_GT(navigated_score, default_score); +} + +TEST_F(TabScorePredictorTest, NumReactivationBefore) { + TabFeatures example = GetTabFeatures(kUnseenHost, true /*user_activity*/); + example.num_reactivations = 0; + float no_reactivations_score = ScoreTab(example); + + // A tab with reactivations is more likely to be reactivated than one without. + example.num_reactivations = 4; + float reactivations_score = ScoreTab(example); + ASSERT_GT(reactivations_score, no_reactivations_score); + + // A tab with more reactivations is more likely to be reactivated. + example.num_reactivations = 10; + float more_reactivations_score = ScoreTab(example); + ASSERT_GT(more_reactivations_score, reactivations_score); +} + +TEST_F(TabScorePredictorTest, PageTransitionTypes) { + TabFeatures example = GetTabFeatures(kUnseenHost, true /*user_activity*/); + + example.page_transition_core_type = ui::PAGE_TRANSITION_LINK; + float link_score = ScoreTab(example); + + example.page_transition_core_type = ui::PAGE_TRANSITION_RELOAD; + float reload_score = ScoreTab(example); + + // A tab the user manually reloaded is more likely to be reactivated. + ASSERT_GT(reload_score, link_score); +} + +TEST_F(TabScorePredictorTest, SiteEngagementScore) { + TabFeatures example = GetTabFeatures(kUnseenHost, true /*user_activity*/); + example.site_engagement_score = 0; + float engagement_score_0 = ScoreTab(example); + + // A site with low engagement ranks higher than one with no engagement. + example.site_engagement_score = 10; + float engagement_score_low = ScoreTab(example); + ASSERT_GT(engagement_score_low, engagement_score_0); + + // A site with moderate engagement ranks higher than one with low engagement. + example.site_engagement_score = 50; + float engagement_score_medium = ScoreTab(example); + ASSERT_GT(engagement_score_medium, engagement_score_low); + + example.site_engagement_score = 100; + float engagement_score_high = ScoreTab(example); + ASSERT_GT(engagement_score_high, engagement_score_medium); +} + +TEST_F(TabScorePredictorTest, TopURLHigherScore) { + // mail.google.com is more likely to be reactivated (ie, the user is more + // likely to return to a mail tab than an ordinary tab). + TabFeatures unseen_example = GetTabFeatures(kUnseenHost, true + /*user_activity*/); + TabFeatures higher_example = GetTabFeatures("mail.google.com", true + /*user_activity*/); + ASSERT_GT(ScoreTab(higher_example), ScoreTab(unseen_example)); +} + +TEST_F(TabScorePredictorTest, TopURLLowerScore) { + // Expect Wikipedia tabs to be less likely to be reactivated. + // See also: https://xkcd.com/214/ + TabFeatures unseen_example = + GetTabFeatures(kUnseenHost, true /*user_activity*/); + TabFeatures lower_example = + GetTabFeatures("en.wikipedia.org", true /*user_activity*/); + ASSERT_LT(ScoreTab(lower_example), ScoreTab(unseen_example)); +} + +TEST_F(TabScorePredictorTest, WasRecentlyAudible) { + TabFeatures example = GetTabFeatures(kUnseenHost, true /*user_activity*/); + float default_score = ScoreTab(example); + + // A recently audible tab is more likely to be reactivated. + example.was_recently_audible = true; + float recently_audible_score = ScoreTab(example); + ASSERT_GT(recently_audible_score, default_score); +} + +} // namespace tab_ranker
diff --git a/chrome/browser/ui/tabs/window_features.cc b/chrome/browser/resource_coordinator/tab_ranker/window_features.cc similarity index 85% rename from chrome/browser/ui/tabs/window_features.cc rename to chrome/browser/resource_coordinator/tab_ranker/window_features.cc index ec31506..197e75e 100644 --- a/chrome/browser/ui/tabs/window_features.cc +++ b/chrome/browser/resource_coordinator/tab_ranker/window_features.cc
@@ -2,7 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/ui/tabs/window_features.h" +#include "chrome/browser/resource_coordinator/tab_ranker/window_features.h" + +namespace tab_ranker { WindowFeatures::WindowFeatures(SessionID window_id, metrics::WindowMetricsEvent::Type type) @@ -21,3 +23,5 @@ bool WindowFeatures::operator!=(const WindowFeatures& other) const { return !operator==(other); } + +} // namespace tab_ranker
diff --git a/chrome/browser/ui/tabs/window_features.h b/chrome/browser/resource_coordinator/tab_ranker/window_features.h similarity index 71% rename from chrome/browser/ui/tabs/window_features.h rename to chrome/browser/resource_coordinator/tab_ranker/window_features.h index f2e3430..3d4cbf2 100644 --- a/chrome/browser/ui/tabs/window_features.h +++ b/chrome/browser/resource_coordinator/tab_ranker/window_features.h
@@ -2,15 +2,18 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_UI_TABS_WINDOW_FEATURES_H_ -#define CHROME_BROWSER_UI_TABS_WINDOW_FEATURES_H_ +#ifndef CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_RANKER_WINDOW_FEATURES_H_ +#define CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_RANKER_WINDOW_FEATURES_H_ #include <string> #include "chrome/browser/resource_coordinator/tab_metrics_event.pb.h" #include "components/sessions/core/session_id.h" -// Window features used for logging a WindowMetrics event to UKM. +namespace tab_ranker { + +// Window features used for logging a Tab Ranker example to UKM or calculating a +// Tab Ranker score. struct WindowFeatures { WindowFeatures(SessionID window_id, metrics::WindowMetricsEvent::Type type); WindowFeatures(const WindowFeatures& other); @@ -32,4 +35,6 @@ int tab_count = 0; }; -#endif // CHROME_BROWSER_UI_TABS_WINDOW_FEATURES_H_ +} // namespace tab_ranker + +#endif // CHROME_BROWSER_RESOURCE_COORDINATOR_TAB_RANKER_WINDOW_FEATURES_H_
diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/css/wallpaper_manager.css b/chrome/browser/resources/chromeos/wallpaper_manager/css/wallpaper_manager.css index ff35ec5..a38f5bc 100644 --- a/chrome/browser/resources/chromeos/wallpaper_manager/css/wallpaper_manager.css +++ b/chrome/browser/resources/chromeos/wallpaper_manager/css/wallpaper_manager.css
@@ -466,6 +466,7 @@ .v2 .image-picker [role=listitem] { -webkit-margin-end: 8px; + background-color: rgb(241, 243, 244); border-radius: 4px; height: 160px; margin-bottom: 8px; @@ -490,6 +491,10 @@ width: unset; } +.v2 .image-picker img:not(.slide-show) { + animation: fade-in 250ms; +} + .v2 .image-picker .check { background-image: url(../images/ui/selected_wallpaper_checkmark.svg); background-repeat: no-repeat; @@ -745,16 +750,21 @@ height: 128px; opacity: 0; position: absolute; - transition: opacity 800ms; + transition: opacity 250ms; width: 704px; z-index: -1; } -.v2 #current-wallpaper-info-bar.show-info-bar { +.v2:not(.preview-animation):not(.preview-mode) #current-wallpaper-info-bar.show-info-bar { opacity: 1; z-index: 4; } +.v2.preview-animation { + animation: fade-in 800ms; + animation-direction: reverse; +} + .v2 #current-wallpaper-image { -webkit-margin-end: 16px; -webkit-margin-start: 8px; @@ -783,6 +793,10 @@ width: 320px; } +.v2 #current-wallpaper-description.small-font { + font-size: 11px; +} + .v2 #current-wallpaper-more-options { -webkit-margin-end: 32px; color: rgb(66, 133, 244); @@ -847,3 +861,12 @@ bottom: 0; top: unset; } + +@keyframes fade-in { + from { filter: blur(15px); + opacity: 0; + } + to { filter: none; + opacity: 1; + } +}
diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js b/chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js index ccc895208..305c93be 100644 --- a/chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js +++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/event_page.js
@@ -323,10 +323,10 @@ return; } - chrome.commandLinePrivate.hasSwitch('new-wallpaper-picker', (result) => { + chrome.commandLinePrivate.hasSwitch('new-wallpaper-picker', result => { var options = result ? { frame: 'none', - innerBounds: {width: 768, height: 512}, + innerBounds: {width: 768, height: 512, minWidth: 480, minHeight: 480}, resizable: true, alphaEnabled: true } : @@ -416,6 +416,17 @@ if (!wallpaperPickerWindow) return; var wpDocument = wallpaperPickerWindow.contentWindow.document; + var hideCheckMarkIfNeeded = () => { + chrome.commandLinePrivate.hasSwitch( + 'new-wallpaper-picker', result => { + // Do not hide the check mark on the new picker. + if (!result && wpDocument.querySelector('.check')) { + wpDocument.querySelector('.check').style.visibility = + 'hidden'; + } + }); + }; + if (!!appName) { chrome.wallpaperPrivate.getStrings(function(strings) { var message = @@ -423,8 +434,7 @@ wpDocument.querySelector('#wallpaper-set-by-message').textContent = message; wpDocument.querySelector('#wallpaper-grid').classList.add('small'); - if (wpDocument.querySelector('.check')) - wpDocument.querySelector('.check').style.visibility = 'hidden'; + hideCheckMarkIfNeeded(); wpDocument.querySelector('#checkbox').classList.remove('checked'); wpDocument.querySelector('#categories-list').disabled = false; wpDocument.querySelector('#wallpaper-grid').disabled = false; @@ -442,9 +452,7 @@ if (enable) { wpDocument.querySelector('#checkbox') .classList.add('checked'); - if (wpDocument.querySelector('.check')) - wpDocument.querySelector('.check').style.visibility = - 'hidden'; + hideCheckMarkIfNeeded(); } else { wpDocument.querySelector('#checkbox') .classList.remove('checked');
diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_images_grid.js b/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_images_grid.js index c64081bd..75cb54d5 100644 --- a/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_images_grid.js +++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_images_grid.js
@@ -372,7 +372,9 @@ * @type {Array<Object>} */ get dailyRefreshImages() { - return this.dailyRefreshItem.querySelectorAll('.slide-show'); + return this.dailyRefreshItem ? + this.dailyRefreshItem.querySelectorAll('.slide-show') : + {}; }, /** @@ -702,7 +704,7 @@ */ showNextImage_: function(index) { var images = this.dailyRefreshImages; - if (images.length == 0) + if (images.length <= index) return; images[index].style.opacity = 1;
diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_manager.js b/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_manager.js index 98d0b28..8ec4d50 100644 --- a/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_manager.js +++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_manager.js
@@ -315,6 +315,13 @@ if (!this.useNewWallpaperPicker_) return; + // Wallpaper preview must always be in full screen. Exit preview if the + // window is not in full screen for any reason (e.g. when device locks). + if (!chrome.app.window.current().isFullscreen() && + this.document_.body.classList.contains('preview-mode')) { + $('cancel-preview-wallpaper').click(); + } + var totalWidth = this.document_.body.offsetWidth; centerElement($('set-successfully-message'), totalWidth, null); centerElement($('top-header'), totalWidth, null); @@ -419,11 +426,6 @@ WallpaperUtil.saveToLocalStorage( Constants.AccessLocalSurpriseMeEnabledKey, shouldEnable, onSuccess); }); - - // Show a success message and quit after the user enables surprime me on - // the new picker. - if (shouldEnable && this.useNewWallpaperPicker_) - this.showSuccessMessageAndQuit_(); }; /** @@ -655,9 +657,23 @@ // custom wallpaper file name. this.currentWallpaper_ = str('currentWallpaper'); if (this.useNewWallpaperPicker_) { - // TODO(crbug.com/812725): Implement preset category for the new picker. For - // now, autoselect the first category. - this.categoriesList_.selectionModel.selectedIndex = 0; + // The default category is the last one (the custom category). + var categoryIndex = this.categoriesList_.dataModel.length - 1; + Object.entries(this.imagesInfoMap_).forEach(([ + collectionId, imagesInfo + ]) => { + for (var i = 0; i < imagesInfo.length; ++i) { + if (this.currentWallpaper_.includes(imagesInfo.item(i).baseURL)) { + for (var index = 0; index < this.collectionsInfo_.length; ++index) { + // Find the index of the category which the current wallpaper + // belongs to based on the collection id. + if (this.collectionsInfo_[index]['collectionId'] == collectionId) + categoryIndex = index; + } + } + } + }); + this.categoriesList_.selectionModel.selectedIndex = categoryIndex; return; } @@ -789,10 +805,15 @@ $('current-wallpaper-title').textContent = currentWallpaperInfo.displayText[0]; $('current-wallpaper-description').innerHTML = ''; + $('current-wallpaper-description') + .classList.toggle( + 'small-font', currentWallpaperInfo.displayText.length > 2); for (var i = 1; i < currentWallpaperInfo.displayText.length; ++i) { $('current-wallpaper-description') .appendChild( document.createTextNode(currentWallpaperInfo.displayText[i])); + $('current-wallpaper-description') + .appendChild(document.createElement('br')); } } else { // Request the thumbnail of the current wallpaper as fallback, since the @@ -1127,10 +1148,13 @@ if (this.document_.body.classList.contains('preview-mode')) return; - this.document_.body.classList.add('preview-mode'); - this.document_.body.classList.toggle( - 'custom-wallpaper', source == Constants.WallpaperSourceEnum.Custom); - chrome.app.window.current().fullscreen(); + this.document_.body.classList.add('preview-animation'); + window.setTimeout(() => { + chrome.app.window.current().fullscreen(); + this.document_.body.classList.add('preview-mode'); + this.document_.body.classList.toggle( + 'custom-wallpaper', source == Constants.WallpaperSourceEnum.Custom); + }, 800); var onConfirmClicked = () => { chrome.wallpaperPrivate.confirmPreviewWallpaper(() => { @@ -1148,8 +1172,12 @@ // Deselect the image. this.wallpaperGrid_.selectedItem = null; this.document_.body.classList.remove('preview-mode'); - // Exit full screen. - chrome.app.window.current().restore(); + this.document_.body.classList.remove('preview-animation'); + // Exit full screen, but the window should still be maximized. + chrome.app.window.current().maximize(); + // TODO(crbug.com/841968): This is a workaround until the issue is fixed. + if (this.wallpaperGrid_.scrollTop == 0) + this.wallpaperGrid_.scrollTop = 1; }); }; $('cancel-preview-wallpaper').addEventListener('click', onCancelClicked); @@ -1254,10 +1282,12 @@ */ WallpaperManager.prototype.setWallpaperAttribution = function(selectedItem) { if (this.useNewWallpaperPicker_) { - // The first element in |displayText| is used as title. - if (selectedItem.displayText) - $('image-title').textContent = selectedItem.displayText[0]; - $('collection-name').textContent = selectedItem.collectionName; + if (selectedItem) { + $('collection-name').textContent = selectedItem.collectionName; + // The first element in |displayText| is used as title. + if (selectedItem.displayText) + $('image-title').textContent = selectedItem.displayText[0]; + } return; }
diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/main.html b/chrome/browser/resources/chromeos/wallpaper_manager/main.html index d94d5c9..18d637b8 100644 --- a/chrome/browser/resources/chromeos/wallpaper_manager/main.html +++ b/chrome/browser/resources/chromeos/wallpaper_manager/main.html
@@ -137,33 +137,6 @@ </div> </div> </div> - <div id="current-wallpaper-info-bar"> - <img id="current-wallpaper-image"></img> - <div> - <div id="currently-set-message" i18n-content="currentlySetLabel"></div> - <div id="current-wallpaper-title"></div> - <div id="current-wallpaper-description"></div> - </div> - <div id="current-wallpaper-more-options"> - <div id="refresh"> - <div class="icon"></div> - <div class="text" i18n-content="refreshLabel"></div> - </div> - <div id="explore"> - <div class="icon"></div> - <a class="text" id="current-wallpaper-explore-link" - i18n-content="exploreLabel" target="_blank"></a> - </div> - <div id="center"> - <div class="icon"></div> - <div class="text" i18n-content="centerLayout"></div> - </div> - <div id="center-cropped"> - <div class="icon"></div> - <div class="text" i18n-content="centerCroppedLayout"></div> - </div> - </div> - </div> </div> <div id="top-header"> <div class="top-header-contents"> @@ -185,6 +158,33 @@ </div> </div> </div> + <div id="current-wallpaper-info-bar"> + <img id="current-wallpaper-image"></img> + <div> + <div id="currently-set-message" i18n-content="currentlySetLabel"></div> + <div id="current-wallpaper-title"></div> + <div id="current-wallpaper-description"></div> + </div> + <div id="current-wallpaper-more-options"> + <div id="refresh"> + <div class="icon"></div> + <div class="text" i18n-content="refreshLabel"></div> + </div> + <div id="explore"> + <div class="icon"></div> + <a class="text" id="current-wallpaper-explore-link" + i18n-content="exploreLabel" target="_blank"></a> + </div> + <div id="center"> + <div class="icon"></div> + <div class="text" i18n-content="centerLayout"></div> + </div> + <div id="center-cropped"> + <div class="icon"></div> + <div class="text" i18n-content="centerCroppedLayout"></div> + </div> + </div> + </div> <div id="set-successfully-message" i18n-content="setSuccessfullyMessage"></div> <div class="daily-refresh-banner" hidden>
diff --git a/chrome/browser/resources/local_ntp/local_ntp.css b/chrome/browser/resources/local_ntp/local_ntp.css index e2ad0dd9..98dd709 100644 --- a/chrome/browser/resources/local_ntp/local_ntp.css +++ b/chrome/browser/resources/local_ntp/local_ntp.css
@@ -288,6 +288,14 @@ transition: box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1); } +.md #fakebox { + background-color: rgb(241, 243, 244); + border-radius: 22px; + box-shadow: none; + margin: 0 auto; + max-width: 560px; +} + .non-google-page #fakebox-container { display: none; } @@ -297,6 +305,11 @@ box-shadow: 0 3px 8px 0 rgba(0, 0, 0, 0.2), 0 0 0 1px rgba(0, 0, 0, 0.08); } +.md #fakebox:hover, +body.md.fakebox-focused #fakebox { + box-shadow: none; +} + #fakebox > input { bottom: 0; box-sizing: border-box; @@ -309,12 +322,20 @@ width: 100%; } +.md #fakebox > input { + padding-left: 20px; +} + html[dir=rtl] #fakebox > input { padding-left: 0; padding-right: 8px; right: 0; } +.md html[dir=rtl] #fakebox > input { + padding-right: 20px; +} + #fakebox-text { bottom: 4px; color: rgba(0, 0, 0, 0.42); @@ -333,6 +354,14 @@ white-space: nowrap; } +.md #fakebox-text { + color: rgb(128, 134, 139); + font-family: 'Roboto', arial, sans-serif; + font-size: 14px; + left: 0; + padding-left: 20px; +} + html[dir=rtl] #fakebox-text { left: auto; right: 13px; @@ -348,11 +377,19 @@ width: 1px; } +.md #fakebox-cursor { + left: 20px; +} + html[dir=rtl] #fakebox-cursor { left: auto; right: 13px; } +.md html[dir=rtl] #fakebox-cursor { + right: 20px; +} + #fakebox-microphone { background: url(googlemic_clr_24px.svg) no-repeat center; background-size: 24px 24px; @@ -365,6 +402,12 @@ width: 41px; } +.md #fakebox-microphone { + background-size: 16px 16px; + margin-right: 12px; + width: 28px; +} + html[dir=rtl] #fakebox-microphone { left: 0; right: auto;
diff --git a/chrome/browser/resources/local_ntp/local_ntp.js b/chrome/browser/resources/local_ntp/local_ntp.js index 516f139..fade8bb 100644 --- a/chrome/browser/resources/local_ntp/local_ntp.js +++ b/chrome/browser/resources/local_ntp/local_ntp.js
@@ -75,6 +75,7 @@ DELAYED_HIDE_NOTIFICATION: 'mv-notice-delayed-hide', FADE: 'fade', // Enables opacity transition on logo and doodle. FAKEBOX_FOCUS: 'fakebox-focused', // Applies focus styles to the fakebox + MATERIAL_DESIGN: 'md', // Applies Material Design styles to the page // Applies drag focus style to the fakebox FAKEBOX_DRAG_FOCUS: 'fakebox-drag-focused', HIDE_FAKEBOX_AND_LOGO: 'hide-fakebox-logo', @@ -638,6 +639,10 @@ var searchboxApiHandle = embeddedSearchApiHandle.searchBox; if (configData.isGooglePage) { + if (configData.isMDUIEnabled) { + document.body.classList.add(CLASSES.MATERIAL_DESIGN); + } + // Set up the fakebox (which only exists on the Google NTP). ntpApiHandle.oninputstart = onInputStart; ntpApiHandle.oninputcancel = onInputCancel;
diff --git a/chrome/browser/resources/md_bookmarks/BUILD.gn b/chrome/browser/resources/md_bookmarks/BUILD.gn index 166396b..400eacb 100644 --- a/chrome/browser/resources/md_bookmarks/BUILD.gn +++ b/chrome/browser/resources/md_bookmarks/BUILD.gn
@@ -174,6 +174,7 @@ ":item", ":store_client", "//third_party/polymer/v1_0/components-chromium/iron-list:iron-list-extracted", + "//ui/webui/resources/js:list_property_update_behavior", "//ui/webui/resources/js:load_time_data", ] }
diff --git a/chrome/browser/resources/md_bookmarks/list.html b/chrome/browser/resources/md_bookmarks/list.html index 23a8d33..68ebe6a 100644 --- a/chrome/browser/resources/md_bookmarks/list.html +++ b/chrome/browser/resources/md_bookmarks/list.html
@@ -8,6 +8,7 @@ <link rel="import" href="chrome://bookmarks/shared_style.html"> <link rel="import" href="chrome://bookmarks/store_client.html"> <link rel="import" href="chrome://bookmarks/util.html"> +<link rel="import" href="chrome://resources/html/list_property_update_behavior.html"> <dom-module id="bookmarks-list"> <template>
diff --git a/chrome/browser/resources/md_bookmarks/list.js b/chrome/browser/resources/md_bookmarks/list.js index 11b1580..ba5fbcb 100644 --- a/chrome/browser/resources/md_bookmarks/list.js +++ b/chrome/browser/resources/md_bookmarks/list.js
@@ -7,6 +7,7 @@ behaviors: [ bookmarks.StoreClient, + ListPropertyUpdateBehavior, ], properties: { @@ -95,30 +96,11 @@ * @param {Array<string>} oldValue */ onDisplayedIdsChanged_: function(newValue, oldValue) { - if (!oldValue) { - this.displayedList_ = this.displayedIds_.map(function(id) { - return {id: id}; - }); - } else { - const splices = Polymer.ArraySplice.calculateSplices( - /** @type {!Array<string>} */ (newValue), - /** @type {!Array<string>} */ (oldValue)); - splices.forEach((splice) => { - // TODO(calamity): Could use notifySplices to improve performance here. - const additions = - newValue.slice(splice.index, splice.index + splice.addedCount) - .map(function(id) { - return {id: id}; - }); - this.splice.apply(this, [ - 'displayedList_', splice.index, splice.removed.length - ].concat(additions)); - }); - - cr.sendWithPromise( - 'getPluralString', 'listChanged', this.displayedList_.length) - .then((label) => this.fire('iron-announce', {text: label})); - } + const updatedList = newValue.map(id => ({id: id})); + this.updateList('displayedList_', item => item.id, updatedList); + cr.sendWithPromise( + 'getPluralString', 'listChanged', this.displayedList_.length) + .then(label => this.fire('iron-announce', {text: label})); }, /** @private */
diff --git a/chrome/browser/resources/md_user_manager/create_profile.js b/chrome/browser/resources/md_user_manager/create_profile.js index 335c78936..daabfba 100644 --- a/chrome/browser/resources/md_user_manager/create_profile.js +++ b/chrome/browser/resources/md_user_manager/create_profile.js
@@ -112,7 +112,8 @@ /** @override */ attached: function() { - this.$.nameInput.focus(); + // paper-input's focusable element isn't defined until after it's attached. + Polymer.RenderStatus.afterNextRender(this, () => this.$.nameInput.focus()); }, /**
diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn index d35d677..46341ba 100644 --- a/chrome/browser/resources/settings/BUILD.gn +++ b/chrome/browser/resources/settings/BUILD.gn
@@ -107,7 +107,6 @@ ":focus_row_behavior", ":global_scroll_target_behavior", ":lifetime_browser_proxy", - ":list_property_update_behavior", ":page_visibility", ":route", ":search_settings", @@ -143,9 +142,6 @@ ] } -js_library("list_property_update_behavior") { -} - js_library("lifetime_browser_proxy") { deps = [ "//ui/webui/resources/js:cr",
diff --git a/chrome/browser/resources/settings/downloads_page/add_smb_share_dialog.html b/chrome/browser/resources/settings/downloads_page/add_smb_share_dialog.html index de76b14..e3cee44a 100644 --- a/chrome/browser/resources/settings/downloads_page/add_smb_share_dialog.html +++ b/chrome/browser/resources/settings/downloads_page/add_smb_share_dialog.html
@@ -22,6 +22,15 @@ value="{{mountUrl_}}" autofocus> </paper-input> + <paper-input always-float-label id="username" + label="$i18n{smbShareUsername}" + value="{{username_}}"> + </paper-input> + <paper-input always-float-label id="password" + type="password" + label="$i18n{smbSharePassword}" + value="{{password_}}"> + </paper-input> </div> <div slot="button-container"> <paper-button class="cancel-button" on-click="cancel_" id="cancel">
diff --git a/chrome/browser/resources/settings/downloads_page/add_smb_share_dialog.js b/chrome/browser/resources/settings/downloads_page/add_smb_share_dialog.js index 91211017..20e24f30 100644 --- a/chrome/browser/resources/settings/downloads_page/add_smb_share_dialog.js +++ b/chrome/browser/resources/settings/downloads_page/add_smb_share_dialog.js
@@ -12,6 +12,8 @@ properties: { /** @private {string} */ mountUrl_: String, + username_: String, + password_: String, }, /** @private {?settings.SmbBrowserProxy} */
diff --git a/chrome/browser/resources/settings/list_property_update_behavior.html b/chrome/browser/resources/settings/list_property_update_behavior.html deleted file mode 100644 index d6bed49..0000000 --- a/chrome/browser/resources/settings/list_property_update_behavior.html +++ /dev/null
@@ -1 +0,0 @@ -<script src="list_property_update_behavior.js"></script>
diff --git a/chrome/browser/resources/settings/passwords_and_forms_page/BUILD.gn b/chrome/browser/resources/settings/passwords_and_forms_page/BUILD.gn index c016ee4b..a25ebda 100644 --- a/chrome/browser/resources/settings/passwords_and_forms_page/BUILD.gn +++ b/chrome/browser/resources/settings/passwords_and_forms_page/BUILD.gn
@@ -82,11 +82,11 @@ ":password_list_item", ":password_manager_proxy", "..:global_scroll_target_behavior", - "..:list_property_update_behavior", "//ui/webui/resources/cr_elements/cr_action_menu:cr_action_menu", "//ui/webui/resources/cr_elements/cr_toast:cr_toast", "//ui/webui/resources/js:assert", "//ui/webui/resources/js:i18n_behavior", + "//ui/webui/resources/js:list_property_update_behavior", "//ui/webui/resources/js/cr/ui:focus_without_ink", ] externs_list = [ "$externs_path/passwords_private.js" ]
diff --git a/chrome/browser/resources/settings/passwords_and_forms_page/passwords_section.html b/chrome/browser/resources/settings/passwords_and_forms_page/passwords_section.html index c597480..7ef4108 100644 --- a/chrome/browser/resources/settings/passwords_and_forms_page/passwords_section.html +++ b/chrome/browser/resources/settings/passwords_and_forms_page/passwords_section.html
@@ -6,13 +6,13 @@ <link rel="import" href="chrome://resources/html/assert.html"> <link rel="import" href="chrome://resources/html/cr/ui/focus_without_ink.html"> <link rel="import" href="chrome://resources/html/i18n_behavior.html"> +<link rel="import" href="chrome://resources/html/list_property_update_behavior.html"> <link rel="import" href="chrome://resources/polymer/v1_0/iron-a11y-keys-behavior/iron-a11y-keys-behavior.html"> <link rel="import" href="chrome://resources/polymer/v1_0/iron-list/iron-list.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-icon-button/paper-icon-button-light.html"> <link rel="import" href="../controls/settings_toggle_button.html"> <link rel="import" href="../controls/extension_controlled_indicator.html"> <link rel="import" href="../global_scroll_target_behavior.html"> -<link rel="import" href="../list_property_update_behavior.html"> <link rel="import" href="../prefs/prefs.html"> <link rel="import" href="../settings_shared_css.html"> <link rel="import" href="password_edit_dialog.html">
diff --git a/chrome/browser/resources/settings/printing_page/cups_edit_printer_dialog.html b/chrome/browser/resources/settings/printing_page/cups_edit_printer_dialog.html index 4929144..ab028ffc 100644 --- a/chrome/browser/resources/settings/printing_page/cups_edit_printer_dialog.html +++ b/chrome/browser/resources/settings/printing_page/cups_edit_printer_dialog.html
@@ -28,7 +28,8 @@ <div class="label">$i18n{printerAddress}</div> <div class="secondary"> <paper-input no-label-float - value="{{activePrinter.printerAddress}}"> + value="{{activePrinter.printerAddress}}" + disabled="[[!networkProtocolActive_]]"> </paper-input> </div> </div> @@ -40,14 +41,32 @@ <div class="md-select-wrapper"> <select class="md-select" aria-labelledby="printerProtocol" value="[[activePrinter.printerProtocol]]" - on-change="onProtocolChange_"> - <option value="ipp">$i18n{printerProtocolIpp}</option> - <option value="ipps">$i18n{printerProtocolIpps}</option> - <option value="http">$i18n{printerProtocolHttp}</option> - <option value="https">$i18n{printerProtocolHttps}</option> - <option value="socket">$i18n{printerProtocolAppSocket} + on-change="onProtocolChange_" + disabled="[[!networkProtocolActive_]]"> + <option value="ipp" disabled="[[!networkProtocolActive_]]"> + $i18n{printerProtocolIpp} </option> - <option value="lpd">$i18n{printerProtocolLpd}</option> + <option value="ipps" disabled="[[!networkProtocolActive_]]"> + $i18n{printerProtocolIpps} + </option> + <option value="http" disabled="[[!networkProtocolActive_]]"> + $i18n{printerProtocolHttp} + </option> + <option value="https" disabled="[[!networkProtocolActive_]]"> + $i18n{printerProtocolHttps} + </option> + <option value="socket" disabled="[[!networkProtocolActive_]]"> + $i18n{printerProtocolAppSocket} + </option> + <option value="lpd" disabled="[[!networkProtocolActive_]]"> + $i18n{printerProtocolLpd} + </option> + <option value="usb" disabled="[[networkProtocolActive_]]"> + $i18n{printerProtocolUsb} + </option> + <option value="ippusb" disabled="[[networkProtocolActive_]]"> + $i18n{printerProtocolIppUsb} + </option> </select> <span class="md-select-underline"></span> </div> @@ -59,7 +78,8 @@ <div class="label">$i18n{printerQueue}</div> <div class="secondary"> <paper-input no-label-float - value="{{activePrinter.printerQueue}}"> + value="{{activePrinter.printerQueue}}" + disabled="[[!networkProtocolActive_]]"> </paper-input> </div> </div>
diff --git a/chrome/browser/resources/settings/printing_page/cups_edit_printer_dialog.js b/chrome/browser/resources/settings/printing_page/cups_edit_printer_dialog.js index fe8ecdc..6a733161 100644 --- a/chrome/browser/resources/settings/printing_page/cups_edit_printer_dialog.js +++ b/chrome/browser/resources/settings/printing_page/cups_edit_printer_dialog.js
@@ -20,6 +20,11 @@ * @private {boolean} */ needsReconfigured_: Boolean, + + networkProtocolActive_: { + type: Boolean, + computed: 'isNetworkProtocol_(activePrinter.printerProtocol)', + }, }, observers: [ @@ -110,4 +115,13 @@ onGetPrinterPpdManufacturerAndModelFailed_: function() { this.needsReconfigured_ = false; }, + + /** + * @param {string} protocol + * @return {boolean} Whether |protocol| is a network protocol + * @private + */ + isNetworkProtocol_: function(protocol) { + return ['ipp', 'ipps', 'http', 'https', 'socket', 'lpd'].includes(protocol); + }, });
diff --git a/chrome/browser/resources/settings/printing_page/cups_printers.js b/chrome/browser/resources/settings/printing_page/cups_printers.js index c0397dc..71bb918b 100644 --- a/chrome/browser/resources/settings/printing_page/cups_printers.js +++ b/chrome/browser/resources/settings/printing_page/cups_printers.js
@@ -132,6 +132,10 @@ messageText.textContent = loadTimeData.getString( 'printerAddedNativePrintersNotAllowedMessage'); break; + case PrinterSetupResult.INVALID_PRINTER_UPDATE: + messageText.textContent = + loadTimeData.getString('editPrinterInvalidPrinterUpdate'); + break; case PrinterSetupResult.PPD_TOO_LARGE: messageText.textContent = loadTimeData.getString('printerAddedPpdTooLargeMessage');
diff --git a/chrome/browser/resources/settings/printing_page/cups_printers_browser_proxy.js b/chrome/browser/resources/settings/printing_page/cups_printers_browser_proxy.js index 03e5b22..8de6a74 100644 --- a/chrome/browser/resources/settings/printing_page/cups_printers_browser_proxy.js +++ b/chrome/browser/resources/settings/printing_page/cups_printers_browser_proxy.js
@@ -79,6 +79,7 @@ PRINTER_UNREACHABLE: 2, DBUS_ERROR: 3, NATIVE_PRINTERS_NOT_ALLOWED: 4, + INVALID_PRINTER_UPDATE: 5, PPD_TOO_LARGE: 10, INVALID_PPD: 11, PPD_NOT_FOUND: 12,
diff --git a/chrome/browser/resources/settings/settings_resources.grd b/chrome/browser/resources/settings/settings_resources.grd index bc41a40e..77e1b47 100644 --- a/chrome/browser/resources/settings/settings_resources.grd +++ b/chrome/browser/resources/settings/settings_resources.grd
@@ -295,12 +295,6 @@ <structure name="IDR_SETTINGS_GLOBAL_SCROLL_TARGET_BEHAVIOR_JS" file="global_scroll_target_behavior.js" type="chrome_html" /> - <structure name="IDR_SETTINGS_LIST_PROPERTY_UPDATE_BEHAVIOR_HTML" - file="list_property_update_behavior.html" - type="chrome_html" /> - <structure name="IDR_SETTINGS_LIST_PROPERTY_UPDATE_BEHAVIOR_JS" - file="list_property_update_behavior.js" - type="chrome_html" /> <structure name="IDR_SETTINGS_FOCUS_ROW_BEHAVIOR_HTML" file="focus_row_behavior.html" type="chrome_html" />
diff --git a/chrome/browser/resources/settings/site_settings/BUILD.gn b/chrome/browser/resources/settings/site_settings/BUILD.gn index d33f304..2201f09d 100644 --- a/chrome/browser/resources/settings/site_settings/BUILD.gn +++ b/chrome/browser/resources/settings/site_settings/BUILD.gn
@@ -124,11 +124,11 @@ ":local_data_browser_proxy", ":site_settings_behavior", "..:global_scroll_target_behavior", - "..:list_property_update_behavior", "../settings_page:settings_subpage_search", "//ui/webui/resources/js:assert", "//ui/webui/resources/js:cr", "//ui/webui/resources/js:i18n_behavior", + "//ui/webui/resources/js:list_property_update_behavior", "//ui/webui/resources/js:web_ui_listener_behavior", "//ui/webui/resources/js/cr/ui:focus_without_ink", ]
diff --git a/chrome/browser/resources/settings/site_settings/site_data.html b/chrome/browser/resources/settings/site_settings/site_data.html index 3067889..e252978 100644 --- a/chrome/browser/resources/settings/site_settings/site_data.html +++ b/chrome/browser/resources/settings/site_settings/site_data.html
@@ -3,6 +3,7 @@ <link rel="import" href="chrome://resources/html/assert.html"> <link rel="import" href="chrome://resources/html/cr/ui/focus_without_ink.html"> <link rel="import" href="chrome://resources/html/i18n_behavior.html"> +<link rel="import" href="chrome://resources/html/list_property_update_behavior.html"> <link rel="import" href="chrome://resources/html/web_ui_listener_behavior.html"> <link rel="import" href="chrome://resources/cr_elements/cr_dialog/cr_dialog.html"> <link rel="import" href="chrome://resources/cr_elements/icons.html"> @@ -11,7 +12,6 @@ <link rel="import" href="chrome://resources/polymer/v1_0/paper-icon-button/paper-icon-button-light.html"> <link rel="import" href="chrome://resources/polymer/v1_0/paper-spinner/paper-spinner-lite.html"> <link rel="import" href="../global_scroll_target_behavior.html"> -<link rel="import" href="../list_property_update_behavior.html"> <link rel="import" href="../settings_page/settings_subpage_search.html"> <link rel="import" href="../settings_shared_css.html"> <link rel="import" href="cookie_info.html">
diff --git a/chrome/browser/search/local_ntp_source.cc b/chrome/browser/search/local_ntp_source.cc index 88141f3..25ecce2 100644 --- a/chrome/browser/search/local_ntp_source.cc +++ b/chrome/browser/search/local_ntp_source.cc
@@ -174,6 +174,9 @@ base::FeatureList::IsEnabled(features::kVoiceSearchOnLocalNtp); config_data.SetBoolean("isVoiceSearchEnabled", is_voice_search_enabled); + bool is_md_ui_enabled = base::FeatureList::IsEnabled(features::kNtpUIMd); + config_data.SetBoolean("isMDUIEnabled", is_md_ui_enabled); + // Serialize the dictionary. std::string js_text; JSONStringValueSerializer serializer(&js_text);
diff --git a/chrome/browser/search_engines/template_url_service_android.cc b/chrome/browser/search_engines/template_url_service_android.cc index 3800024..a815d8e9d5 100644 --- a/chrome/browser/search_engines/template_url_service_android.cc +++ b/chrome/browser/search_engines/template_url_service_android.cc
@@ -278,6 +278,21 @@ return base::android::ConvertUTF8ToJavaString(env, url); } +int TemplateUrlServiceAndroid::GetSearchEngineTypeFromTemplateUrl( + JNIEnv* env, + const JavaParamRef<jobject>& obj, + const JavaParamRef<jstring>& jkeyword) { + base::string16 keyword = + base::android::ConvertJavaStringToUTF16(env, jkeyword); + TemplateURL* template_url = + template_url_service_->GetTemplateURLForKeyword(keyword); + if (!template_url) + return -1; + const SearchTermsData& search_terms_data = + template_url_service_->search_terms_data(); + return template_url->GetEngineType(search_terms_data); +} + base::android::ScopedJavaLocalRef<jstring> TemplateUrlServiceAndroid::AddSearchEngineForTesting( JNIEnv* env, @@ -344,7 +359,7 @@ CreateTemplateUrlAndroid(env, template_url); Java_TemplateUrlService_addTemplateUrlToList(env, template_url_list_obj, j_template_url); - }; + } } base::android::ScopedJavaLocalRef<jobject>
diff --git a/chrome/browser/search_engines/template_url_service_android.h b/chrome/browser/search_engines/template_url_service_android.h index e539abc..046bb9a1 100644 --- a/chrome/browser/search_engines/template_url_service_android.h +++ b/chrome/browser/search_engines/template_url_service_android.h
@@ -71,6 +71,10 @@ JNIEnv* env, const base::android::JavaParamRef<jobject>& obj, const base::android::JavaParamRef<jstring>& jkeyword); + int GetSearchEngineTypeFromTemplateUrl( + JNIEnv* env, + const base::android::JavaParamRef<jobject>& obj, + const base::android::JavaParamRef<jstring>& jkeyword); base::android::ScopedJavaLocalRef<jstring> ExtractSearchTermsFromUrl( JNIEnv* env, const base::android::JavaParamRef<jobject>& obj,
diff --git a/chrome/browser/ssl/common_name_mismatch_handler.cc b/chrome/browser/ssl/common_name_mismatch_handler.cc index d5d6c84..b4d3b81 100644 --- a/chrome/browser/ssl/common_name_mismatch_handler.cc +++ b/chrome/browser/ssl/common_name_mismatch_handler.cc
@@ -123,15 +123,9 @@ check_url_callback_.Reset(); } -void CommonNameMismatchHandler::OnSimpleLoaderRedirect( - const net::RedirectInfo& redirect_info, - const network::ResourceResponseHead& response_head) { - OnSimpleLoaderResponseStarted(redirect_info.new_url, response_head); -} - -void CommonNameMismatchHandler::OnSimpleLoaderResponseStarted( +void CommonNameMismatchHandler::OnSimpleLoaderHandler( const GURL& final_url, - const network::ResourceResponseHead& response_head) { + const network::ResourceResponseHead* head) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(IsCheckingSuggestedUrl()); DCHECK(!check_url_callback_.is_null()); @@ -140,8 +134,9 @@ // Make sure the URL is a HTTPS page and returns a proper response code. int response_code = -1; - if (response_head.headers) { - response_code = response_head.headers->response_code(); + // head may be null here, if called from OnSimpleLoaderComplete. + if (head && head->headers) { + response_code = head->headers->response_code(); } if (response_code == 200 && final_url.SchemeIsCryptographic() && final_url.host() != request_url_.host()) { @@ -152,10 +147,22 @@ base::ResetAndReturn(&check_url_callback_).Run(result, check_url_); } +void CommonNameMismatchHandler::OnSimpleLoaderRedirect( + const net::RedirectInfo& redirect_info, + const network::ResourceResponseHead& response_head) { + OnSimpleLoaderHandler(redirect_info.new_url, &response_head); +} + +void CommonNameMismatchHandler::OnSimpleLoaderResponseStarted( + const GURL& final_url, + const network::ResourceResponseHead& response_head) { + OnSimpleLoaderHandler(final_url, &response_head); +} + void CommonNameMismatchHandler::OnSimpleLoaderComplete( std::unique_ptr<std::string> response_body) { - OnSimpleLoaderResponseStarted(simple_url_loader_->GetFinalURL(), - *simple_url_loader_->ResponseInfo()); + OnSimpleLoaderHandler(simple_url_loader_->GetFinalURL(), + simple_url_loader_->ResponseInfo()); } bool CommonNameMismatchHandler::IsCheckingSuggestedUrl() const {
diff --git a/chrome/browser/ssl/common_name_mismatch_handler.h b/chrome/browser/ssl/common_name_mismatch_handler.h index c417fd8..0848e5f 100644 --- a/chrome/browser/ssl/common_name_mismatch_handler.h +++ b/chrome/browser/ssl/common_name_mismatch_handler.h
@@ -77,6 +77,8 @@ void Cancel(); private: + void OnSimpleLoaderHandler(const GURL& final_url, + const network::ResourceResponseHead* head); void OnSimpleLoaderRedirect( const net::RedirectInfo& redirect_info, const network::ResourceResponseHead& response_head);
diff --git a/chrome/browser/ssl/ssl_browsertest.cc b/chrome/browser/ssl/ssl_browsertest.cc index 21d2ad72..c7df2e0 100644 --- a/chrome/browser/ssl/ssl_browsertest.cc +++ b/chrome/browser/ssl/ssl_browsertest.cc
@@ -5147,6 +5147,59 @@ contents->GetLastCommittedURL().spec()); } +// Visit the URL www.mail.example.com on a server that presents an invalid +// certificate for mail.example.com. Verify that the page shows an interstitial +// for www.mail.example.com with no crash. +IN_PROC_BROWSER_TEST_P(CommonNameMismatchBrowserTest, + NoCrashIfBothSubdomainsHaveCommonNameErrors) { + net::EmbeddedTestServer https_server_example_domain( + net::EmbeddedTestServer::TYPE_HTTPS); + https_server_example_domain.ServeFilesFromSourceDirectory( + base::FilePath(kDocRoot)); + ASSERT_TRUE(https_server_example_domain.Start()); + + scoped_refptr<net::X509Certificate> cert = + https_server_example_domain.GetCertificate(); + + // Use the "spdy_pooling.pem" cert which has "mail.example.com" + // as one of its SANs. + net::CertVerifyResult verify_result; + verify_result.verified_cert = + net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem"); + verify_result.cert_status = net::CERT_STATUS_COMMON_NAME_INVALID; + + // Request to "www.mail.example.com" should result in + // |net::ERR_CERT_COMMON_NAME_INVALID| error. + mock_cert_verifier()->AddResultForCertAndHost( + cert.get(), "www.mail.example.com", verify_result, + net::ERR_CERT_COMMON_NAME_INVALID); + + // Request to "mail.example.com" should also result in + // |net::ERR_CERT_COMMON_NAME_INVALID| error. + mock_cert_verifier()->AddResultForCertAndHost( + cert.get(), "mail.example.com", verify_result, + net::ERR_CERT_COMMON_NAME_INVALID); + + // Use a complex URL to ensure the path, etc., are preserved. The path itself + // does not matter. + const GURL https_server_url = + https_server_example_domain.GetURL("/ssl/google.html?a=b#anchor"); + GURL::Replacements replacements; + replacements.SetHostStr("www.mail.example.com"); + const GURL https_server_mismatched_url = + https_server_url.ReplaceComponents(replacements); + + // Should simply show an interstitial, because both subdomains have common + // name errors. + WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); + ui_test_utils::NavigateToURL(browser(), https_server_mismatched_url); + WaitForInterstitial(contents); + + CheckSecurityState(contents, net::CERT_STATUS_COMMON_NAME_INVALID, + security_state::DANGEROUS, + AuthState::SHOWING_INTERSTITIAL); +} + // Visit the URL example.org on a server that presents a valid certificate // for www.example.org. Verify that the page redirects to www.example.org. IN_PROC_BROWSER_TEST_P(CommonNameMismatchBrowserTest,
diff --git a/chrome/browser/storage/OWNERS b/chrome/browser/storage/OWNERS index ca88a4f..b4cc212 100644 --- a/chrome/browser/storage/OWNERS +++ b/chrome/browser/storage/OWNERS
@@ -1,10 +1,9 @@ jsbell@chromium.org kinuko@chromium.org -michaeln@chromium.org per-file storage_info_fetcher.*=finnur@chromium.org per-file *permission_context*=file://chrome/browser/permissions/PERMISSIONS_OWNERS # TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage>DOMStorage +# COMPONENT: Blink>Storage>Quota
diff --git a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc index 4e0791dc..a4bb45b8 100644 --- a/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc +++ b/chrome/browser/subresource_filter/chrome_subresource_filter_client.cc
@@ -20,9 +20,6 @@ #include "chrome/browser/subresource_filter/subresource_filter_profile_context_factory.h" #include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/content_settings/core/common/content_settings_types.h" -#include "components/rappor/public/rappor_parameters.h" -#include "components/rappor/public/rappor_utils.h" -#include "components/rappor/rappor_service_impl.h" #include "components/safe_browsing/db/database_manager.h" #include "components/subresource_filter/content/browser/content_ruleset_service.h" #include "components/subresource_filter/content/browser/content_subresource_filter_driver_factory.h" @@ -199,13 +196,6 @@ content_settings->OnContentBlocked(CONTENT_SETTINGS_TYPE_ADS); LogAction(kActionUIShown); - - if (rappor::RapporService* rappor_service = - g_browser_process->rappor_service()) { - rappor_service->RecordSampleString( - "SubresourceFilter.UIShown", rappor::UMA_RAPPOR_TYPE, - rappor::GetDomainAndRegistrySampleFromGURL(url)); - } did_show_ui_for_navigation_ = true; settings_manager_->OnDidShowUI(url); }
diff --git a/chrome/browser/subresource_filter/subresource_filter_unittest.cc b/chrome/browser/subresource_filter/subresource_filter_unittest.cc index 3d619357b..cf1d533 100644 --- a/chrome/browser/subresource_filter/subresource_filter_unittest.cc +++ b/chrome/browser/subresource_filter/subresource_filter_unittest.cc
@@ -9,8 +9,6 @@ #include "chrome/browser/subresource_filter/subresource_filter_content_settings_manager.h" #include "chrome/browser/subresource_filter/subresource_filter_test_harness.h" #include "chrome/test/base/testing_browser_process.h" -#include "components/rappor/public/rappor_parameters.h" -#include "components/rappor/test_rappor_service.h" #include "components/safe_browsing/db/util.h" #include "components/safe_browsing/db/v4_protocol_manager_util.h" #include "components/subresource_filter/content/browser/content_activation_list_utils.h" @@ -235,26 +233,6 @@ kActionUIShown, 0); } -TEST_F(SubresourceFilterTest, UIShown_LogsRappor) { - rappor::TestRapporServiceImpl rappor_tester; - TestingBrowserProcess::GetGlobal()->SetRapporServiceImpl(&rappor_tester); - const char kRapporMetric[] = "SubresourceFilter.UIShown"; - const GURL url("https://example.test"); - - ConfigureAsSubresourceFilterOnlyURL(url); - SimulateNavigateAndCommit(url, main_rfh()); - EXPECT_FALSE(CreateAndNavigateDisallowedSubframe(main_rfh())); - EXPECT_TRUE(GetClient()->did_show_ui_for_navigation()); - - std::string sample_string; - rappor::RapporType type; - EXPECT_TRUE(rappor_tester.GetRecordedSampleForMetric(kRapporMetric, - &sample_string, &type)); - EXPECT_EQ(rappor::RapporType::UMA_RAPPOR_TYPE, type); - // The host is the same as the etld+1 in this case. - EXPECT_EQ(url.host(), sample_string); -} - TEST_F(SubresourceFilterTest, NotifySafeBrowsing) { typedef safe_browsing::SubresourceFilterType Type; typedef safe_browsing::SubresourceFilterLevel Level;
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index 764256e..3086857 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn
@@ -1405,6 +1405,7 @@ "omnibox/clipboard_utils.h", "omnibox/omnibox_theme.cc", "omnibox/omnibox_theme.h", + "page_action/page_action_icon_container.h", "page_info/page_info_dialog.cc", "page_info/page_info_dialog.h", "page_info/page_info_infobar_delegate.cc", @@ -1503,8 +1504,6 @@ "tabs/tab_utils.h", "tabs/window_activity_watcher.cc", "tabs/window_activity_watcher.h", - "tabs/window_features.cc", - "tabs/window_features.h", "task_manager/task_manager_columns.cc", "task_manager/task_manager_columns.h", "task_manager/task_manager_table_model.cc", @@ -1713,6 +1712,7 @@ "//chrome/browser/media/router", "//chrome/browser/profile_resetter:profile_reset_report_proto", "//chrome/browser/resource_coordinator:tab_metrics_event_proto", + "//chrome/browser/resource_coordinator/tab_ranker", "//chrome/common:buildflags", "//chrome/common:search_mojom", "//components/feedback/proto", @@ -3194,6 +3194,8 @@ "views/omnibox/omnibox_view_views.h", "views/omnibox/rounded_omnibox_results_frame.cc", "views/omnibox/rounded_omnibox_results_frame.h", + "views/page_action/page_action_icon_container_view.cc", + "views/page_action/page_action_icon_container_view.h", "views/passwords/manage_passwords_icon_views.cc", "views/passwords/manage_passwords_icon_views.h", "views/permission_bubble/chooser_bubble_ui_views.cc",
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc index 50d8c9b..2c3f39fe 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc
@@ -1026,7 +1026,7 @@ content::NotificationService::NoDetails()); } -void Browser::TabDetachedAt(WebContents* contents, int index) { +void Browser::TabDetachedAt(WebContents* contents, int index, bool was_active) { // TabDetachedAt is called before TabStripModel has updated the // active index. int old_active_index = tab_strip_model_->active_index(); @@ -1039,7 +1039,7 @@ } } - TabDetachedAtImpl(contents, index, DETACH_TYPE_DETACH); + TabDetachedAtImpl(contents, was_active, DETACH_TYPE_DETACH); } void Browser::TabDeactivated(WebContents* contents) { @@ -1149,14 +1149,14 @@ WebContents* old_contents, WebContents* new_contents, int index) { - TabDetachedAtImpl(old_contents, index, DETACH_TYPE_REPLACE); + bool was_active = index == tab_strip_model_->active_index(); + TabDetachedAtImpl(old_contents, was_active, DETACH_TYPE_REPLACE); exclusive_access_manager_->OnTabClosing(old_contents); SessionService* session_service = SessionServiceFactory::GetForProfile(profile_); if (session_service) session_service->TabClosing(old_contents); - TabInsertedAt(tab_strip_model, new_contents, index, - (index == tab_strip_model_->active_index())); + TabInsertedAt(tab_strip_model, new_contents, index, was_active); if (!new_contents->GetController().IsInitialBlankNavigation()) { // Send out notification so that observers are updated appropriately. @@ -2435,14 +2435,14 @@ } void Browser::TabDetachedAtImpl(content::WebContents* contents, - int index, + bool was_active, DetachType type) { if (type == DETACH_TYPE_DETACH) { // Save the current location bar state, but only if the tab being detached // is the selected tab. Because saving state can conditionally revert the // location bar, saving the current tab's location bar state to a // non-selected tab can corrupt both tabs. - if (contents == tab_strip_model_->GetActiveWebContents()) { + if (was_active) { LocationBar* location_bar = window()->GetLocationBar(); if (location_bar) location_bar->SaveStateToContents(contents); @@ -2455,7 +2455,7 @@ SetAsDelegate(contents, false); RemoveScheduledUpdatesFor(contents); - if (HasFindBarController() && index == tab_strip_model_->active_index()) + if (HasFindBarController() && was_active) find_bar_controller_->ChangeWebContents(NULL); for (size_t i = 0; i < interstitial_observers_.size(); i++) {
diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h index 1554485f..9d3a8cf 100644 --- a/chrome/browser/ui/browser.h +++ b/chrome/browser/ui/browser.h
@@ -450,7 +450,9 @@ void TabClosingAt(TabStripModel* tab_strip_model, content::WebContents* contents, int index) override; - void TabDetachedAt(content::WebContents* contents, int index) override; + void TabDetachedAt(content::WebContents* contents, + int index, + bool was_active) override; void TabDeactivated(content::WebContents* contents) override; void ActiveTabChanged(content::WebContents* old_contents, content::WebContents* new_contents, @@ -830,7 +832,7 @@ void CloseFrame(); void TabDetachedAtImpl(content::WebContents* contents, - int index, + bool was_active, DetachType type); // Updates the loading state for the window and tabstrip.
diff --git a/chrome/browser/ui/browser_command_controller.cc b/chrome/browser/ui/browser_command_controller.cc index 2f09117..37d927ca 100644 --- a/chrome/browser/ui/browser_command_controller.cc +++ b/chrome/browser/ui/browser_command_controller.cc
@@ -737,7 +737,9 @@ AddInterstitialObservers(contents); } -void BrowserCommandController::TabDetachedAt(WebContents* contents, int index) { +void BrowserCommandController::TabDetachedAt(WebContents* contents, + int index, + bool was_active) { RemoveInterstitialObservers(contents); }
diff --git a/chrome/browser/ui/browser_command_controller.h b/chrome/browser/ui/browser_command_controller.h index 780b394..275df32 100644 --- a/chrome/browser/ui/browser_command_controller.h +++ b/chrome/browser/ui/browser_command_controller.h
@@ -95,7 +95,9 @@ content::WebContents* contents, int index, bool foreground) override; - void TabDetachedAt(content::WebContents* contents, int index) override; + void TabDetachedAt(content::WebContents* contents, + int index, + bool was_active) override; void TabReplacedAt(TabStripModel* tab_strip_model, content::WebContents* old_contents, content::WebContents* new_contents,
diff --git a/chrome/browser/ui/browser_window.h b/chrome/browser/ui/browser_window.h index d9434597..989c437 100644 --- a/chrome/browser/ui/browser_window.h +++ b/chrome/browser/ui/browser_window.h
@@ -36,6 +36,7 @@ class FindBar; class GURL; class LocationBar; +class PageActionIconContainer; class StatusBubble; class ToolbarActionsBar; @@ -164,6 +165,9 @@ // the TabStripModel has an active tab. virtual gfx::Size GetContentsSize() const = 0; + // Returns the container of page action icons. + virtual PageActionIconContainer* GetPageActionIconContainer() = 0; + // Returns the location bar. virtual LocationBar* GetLocationBar() const = 0;
diff --git a/chrome/browser/ui/chrome_bubble_manager.cc b/chrome/browser/ui/chrome_bubble_manager.cc index 7454eb6..b371800 100644 --- a/chrome/browser/ui/chrome_bubble_manager.cc +++ b/chrome/browser/ui/chrome_bubble_manager.cc
@@ -126,7 +126,8 @@ } void ChromeBubbleManager::TabDetachedAt(content::WebContents* contents, - int index) { + int index, + bool was_active) { CloseAllBubbles(BUBBLE_CLOSE_TABDETACHED); // Any bubble that didn't close should update its anchor position. UpdateAllBubbleAnchors();
diff --git a/chrome/browser/ui/chrome_bubble_manager.h b/chrome/browser/ui/chrome_bubble_manager.h index 1f7eb355..8c5e58b 100644 --- a/chrome/browser/ui/chrome_bubble_manager.h +++ b/chrome/browser/ui/chrome_bubble_manager.h
@@ -20,7 +20,9 @@ ~ChromeBubbleManager() override; // TabStripModelObserver: - void TabDetachedAt(content::WebContents* contents, int index) override; + void TabDetachedAt(content::WebContents* contents, + int index, + bool was_active) override; void TabDeactivated(content::WebContents* contents) override; void ActiveTabChanged(content::WebContents* old_contents, content::WebContents* new_contents,
diff --git a/chrome/browser/ui/cocoa/browser_window_cocoa.h b/chrome/browser/ui/cocoa/browser_window_cocoa.h index c5e4eda..82fea17b 100644 --- a/chrome/browser/ui/cocoa/browser_window_cocoa.h +++ b/chrome/browser/ui/cocoa/browser_window_cocoa.h
@@ -81,6 +81,7 @@ bool ShouldHideUIForFullscreen() const override; bool IsFullscreen() const override; bool IsFullscreenBubbleVisible() const override; + PageActionIconContainer* GetPageActionIconContainer() override; LocationBar* GetLocationBar() const override; void SetFocusToLocationBar(bool select_all) override; void UpdateReloadStopState(bool is_loading, bool force) override;
diff --git a/chrome/browser/ui/cocoa/browser_window_cocoa.mm b/chrome/browser/ui/cocoa/browser_window_cocoa.mm index 8a5a9e2e3..e08dfe3 100644 --- a/chrome/browser/ui/cocoa/browser_window_cocoa.mm +++ b/chrome/browser/ui/cocoa/browser_window_cocoa.mm
@@ -402,6 +402,10 @@ return false; // Currently only called from toolkit-views page_info. } +PageActionIconContainer* BrowserWindowCocoa::GetPageActionIconContainer() { + return [controller_ locationBarBridge]; +} + LocationBar* BrowserWindowCocoa::GetLocationBar() const { return [controller_ locationBarBridge]; }
diff --git a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h index 03650596..3be6db65 100644 --- a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h +++ b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.h
@@ -16,6 +16,7 @@ #include "chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.h" #include "chrome/browser/ui/location_bar/location_bar.h" #include "chrome/browser/ui/omnibox/chrome_omnibox_edit_controller.h" +#include "chrome/browser/ui/page_action/page_action_icon_container.h" #include "components/content_settings/core/common/content_settings_types.h" #include "components/prefs/pref_member.h" #include "components/security_state/core/security_state.h" @@ -57,6 +58,7 @@ class LocationBarViewMac : public LocationBar, public LocationBarTesting, public ChromeOmniboxEditController, + public PageActionIconContainer, public zoom::ZoomEventManagerObserver { public: LocationBarViewMac(AutocompleteTextField* field, @@ -161,6 +163,9 @@ const ToolbarModel* GetToolbarModel() const override; content::WebContents* GetWebContents() override; + // PageActionIconContainer: + void UpdatePageActionIcon(PageActionIconType) override; + PageInfoVerboseType GetPageInfoVerboseType() const; // Returns true if the page info decoration should display security verbose.
diff --git a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm index fce88e6..11c55b94 100644 --- a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm +++ b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm
@@ -515,6 +515,12 @@ return browser_->tab_strip_model()->GetActiveWebContents(); } +void LocationBarViewMac::UpdatePageActionIcon(PageActionIconType) { + // TODO(https://crbug.com/788051): Return page action icons for updating here + // as update methods are migrated out of LocationBar to the + // PageActionIconContainer interface. +} + PageInfoVerboseType LocationBarViewMac::GetPageInfoVerboseType() const { if (omnibox_view_->IsEditingOrEmpty() || omnibox_view_->model()->is_keyword_hint()) {
diff --git a/chrome/browser/ui/cocoa/tabs/tab_strip_model_observer_bridge.h b/chrome/browser/ui/cocoa/tabs/tab_strip_model_observer_bridge.h index 088e14c..2fc76c6 100644 --- a/chrome/browser/ui/cocoa/tabs/tab_strip_model_observer_bridge.h +++ b/chrome/browser/ui/cocoa/tabs/tab_strip_model_observer_bridge.h
@@ -34,7 +34,9 @@ void TabClosingAt(TabStripModel* tab_strip_model, content::WebContents* contents, int index) override; - void TabDetachedAt(content::WebContents* contents, int index) override; + void TabDetachedAt(content::WebContents* contents, + int index, + bool was_active) override; void TabDeactivated(content::WebContents* contents) override; void ActiveTabChanged(content::WebContents* old_contents, content::WebContents* new_contents,
diff --git a/chrome/browser/ui/cocoa/tabs/tab_strip_model_observer_bridge.mm b/chrome/browser/ui/cocoa/tabs/tab_strip_model_observer_bridge.mm index 4f10e51..2b1a9db 100644 --- a/chrome/browser/ui/cocoa/tabs/tab_strip_model_observer_bridge.mm +++ b/chrome/browser/ui/cocoa/tabs/tab_strip_model_observer_bridge.mm
@@ -44,7 +44,8 @@ } void TabStripModelObserverBridge::TabDetachedAt(WebContents* contents, - int index) { + int index, + bool was_active) { if ([controller_ respondsToSelector: @selector(tabDetachedWithContents:atIndex:)]) { [controller_ tabDetachedWithContents:contents atIndex:index];
diff --git a/chrome/browser/ui/extensions/hosted_app_browser_controller.cc b/chrome/browser/ui/extensions/hosted_app_browser_controller.cc index c2e15c6..32620c8 100644 --- a/chrome/browser/ui/extensions/hosted_app_browser_controller.cc +++ b/chrome/browser/ui/extensions/hosted_app_browser_controller.cc
@@ -299,7 +299,8 @@ } void HostedAppBrowserController::TabDetachedAt(content::WebContents* contents, - int index) { + int index, + bool was_active) { auto* rvh = contents->GetRenderViewHost(); contents->GetMutableRendererPrefs()->can_accept_load_drops = true;
diff --git a/chrome/browser/ui/extensions/hosted_app_browser_controller.h b/chrome/browser/ui/extensions/hosted_app_browser_controller.h index 31bacc1b..49681bc 100644 --- a/chrome/browser/ui/extensions/hosted_app_browser_controller.h +++ b/chrome/browser/ui/extensions/hosted_app_browser_controller.h
@@ -91,7 +91,9 @@ content::WebContents* contents, int index, bool foreground) override; - void TabDetachedAt(content::WebContents* contents, int index) override; + void TabDetachedAt(content::WebContents* contents, + int index, + bool was_active) override; private: Browser* const browser_;
diff --git a/chrome/browser/ui/fast_unload_controller.cc b/chrome/browser/ui/fast_unload_controller.cc index 41f8398..7dc8982a 100644 --- a/chrome/browser/ui/fast_unload_controller.cc +++ b/chrome/browser/ui/fast_unload_controller.cc
@@ -307,7 +307,8 @@ } void FastUnloadController::TabDetachedAt(content::WebContents* contents, - int index) { + int index, + bool was_active) { TabDetachedImpl(contents); }
diff --git a/chrome/browser/ui/fast_unload_controller.h b/chrome/browser/ui/fast_unload_controller.h index a037e06f..742ac19 100644 --- a/chrome/browser/ui/fast_unload_controller.h +++ b/chrome/browser/ui/fast_unload_controller.h
@@ -133,7 +133,9 @@ content::WebContents* contents, int index, bool foreground) override; - void TabDetachedAt(content::WebContents* contents, int index) override; + void TabDetachedAt(content::WebContents* contents, + int index, + bool was_active) override; void TabReplacedAt(TabStripModel* tab_strip_model, content::WebContents* old_contents, content::WebContents* new_contents,
diff --git a/chrome/browser/ui/javascript_dialogs/javascript_dialog_tab_helper.cc b/chrome/browser/ui/javascript_dialogs/javascript_dialog_tab_helper.cc index f2b1097..17fd7461 100644 --- a/chrome/browser/ui/javascript_dialogs/javascript_dialog_tab_helper.cc +++ b/chrome/browser/ui/javascript_dialogs/javascript_dialog_tab_helper.cc
@@ -147,6 +147,9 @@ } JavaScriptDialogTabHelper::~JavaScriptDialogTabHelper() { +#if !defined(OS_ANDROID) + DCHECK(!tab_strip_model_being_observed_); +#endif CloseDialog(DismissalCause::TAB_HELPER_DESTROYED, false, base::string16()); } @@ -413,6 +416,25 @@ CloseDialog(DismissalCause::TAB_SWITCHED_OUT, false, base::string16()); } } + +void JavaScriptDialogTabHelper::TabDetachedAt(content::WebContents* contents, + int index, + bool was_active) { + if (contents == WebContentsObserver::web_contents()) { + // We don't call TabStripModel::SetTabNeedsAttention because it causes + // re-entrancy into TabStripModel and correctness of the |index| parameter + // is dependent on observer ordering. + // This is okay in the short term because the tab in question is being + // removed. + // TODO(erikchen): Clean up TabStripModel observer API so that this doesn't + // require re-entrancy and/or works correctly. https://crbug.com/842194. + DCHECK(tab_strip_model_being_observed_); + tab_strip_model_being_observed_->RemoveObserver(this); + tab_strip_model_being_observed_ = nullptr; + CloseDialog(DismissalCause::TAB_HELPER_DESTROYED, false, base::string16()); + } +} + #endif void JavaScriptDialogTabHelper::LogDialogDismissalCause( @@ -480,10 +502,12 @@ // If there's a pending dialog, then the tab is still in the "needs attention" // state; clear it out. However, if the tab was switched out, the turning off - // of the "needs attention" state was done in TabReplacedAt() because - // SetTabNeedsAttention won't work, so don't call it. - if (pending_dialog_ && cause != DismissalCause::TAB_SWITCHED_OUT) + // of the "needs attention" state was done in TabReplacedAt() or + // TabDetachedAt() because SetTabNeedsAttention won't work, so don't call it. + if (pending_dialog_ && cause != DismissalCause::TAB_SWITCHED_OUT && + cause != DismissalCause::TAB_HELPER_DESTROYED) { SetTabNeedsAttention(false); + } dialog_.reset(); pending_dialog_.Reset(); @@ -517,9 +541,13 @@ TabStripModel* tab_strip_model, int index) { tab_strip_model->SetTabNeedsAttentionAt(index, attention); - if (attention) + if (attention) { tab_strip_model->AddObserver(this); - else - tab_strip_model->RemoveObserver(this); + tab_strip_model_being_observed_ = tab_strip_model; + } else { + DCHECK_EQ(tab_strip_model_being_observed_, tab_strip_model); + tab_strip_model_being_observed_->RemoveObserver(this); + tab_strip_model_being_observed_ = nullptr; + } } #endif
diff --git a/chrome/browser/ui/javascript_dialogs/javascript_dialog_tab_helper.h b/chrome/browser/ui/javascript_dialogs/javascript_dialog_tab_helper.h index 00c4c26..580c5850 100644 --- a/chrome/browser/ui/javascript_dialogs/javascript_dialog_tab_helper.h +++ b/chrome/browser/ui/javascript_dialogs/javascript_dialog_tab_helper.h
@@ -89,6 +89,9 @@ content::WebContents* old_contents, content::WebContents* new_contents, int index) override; + void TabDetachedAt(content::WebContents* contents, + int index, + bool was_active) override; #endif private: @@ -160,6 +163,21 @@ // A closure to be fired when a dialog is shown. For testing only. base::OnceClosure dialog_shown_; +#if !defined(OS_ANDROID) + // If this instance is observing a TabStripModel, then this member is not + // nullptr. + // + // This raw pointer is safe to use because the lifetime of this instance is + // tied to the corresponding WebContents, which is owned by the TabStripModel. + // Any time TabStripModel would give up ownership of the WebContents, it would + // first send either a TabDetachedAt() or TabReplacedAt() callback, which + // gives this instance the opportunity to stop observing the TabStripModel. + // + // A TabStripModel cannot be destroyed without first detaching all of its + // WebContents. + TabStripModel* tab_strip_model_being_observed_ = nullptr; +#endif + DISALLOW_COPY_AND_ASSIGN(JavaScriptDialogTabHelper); };
diff --git a/chrome/browser/ui/libgtkui/nav_button_provider_gtk3.cc b/chrome/browser/ui/libgtkui/nav_button_provider_gtk3.cc index 6a09faec..d4136a45 100644 --- a/chrome/browser/ui/libgtkui/nav_button_provider_gtk3.cc +++ b/chrome/browser/ui/libgtkui/nav_button_provider_gtk3.cc
@@ -233,6 +233,7 @@ ApplyCssToContext(button_context, ".titlebutton { background-size: contain; }"); } + cairo_pattern_destroy(cr_pattern); // Gtk doesn't support fractional scale factors, but chrome does. // Rendering the button background and border at a fractional
diff --git a/chrome/browser/ui/login/login_handler.cc b/chrome/browser/ui/login/login_handler.cc index aaf28675..bf43b63 100644 --- a/chrome/browser/ui/login/login_handler.cc +++ b/chrome/browser/ui/login/login_handler.cc
@@ -597,7 +597,7 @@ void LoginHandler::LoginDialogCallback(const GURL& request_url, net::AuthChallengeInfo* auth_info, LoginHandler* handler, - bool is_main_frame) { + bool is_request_for_main_frame) { DCHECK_CURRENTLY_ON(BrowserThread::UI); WebContents* parent_contents = handler->GetWebContentsForLogin(); if (!parent_contents || handler->WasAuthHandled()) { @@ -637,7 +637,7 @@ const bool is_cross_origin_request = parent_contents->GetLastCommittedURL().GetOrigin() != request_url.GetOrigin(); - if (is_main_frame && + if (is_request_for_main_frame && (is_cross_origin_request || parent_contents->ShowingInterstitialPage() || auth_info->is_proxy) && parent_contents->GetDelegate()->GetDisplayMode(parent_contents) != @@ -658,7 +658,7 @@ ->GetWeakPtr()); } else { - if (is_main_frame) { + if (is_request_for_main_frame) { RecordHttpAuthPromptType(AUTH_PROMPT_TYPE_MAIN_FRAME); } else { RecordHttpAuthPromptType(is_cross_origin_request @@ -674,7 +674,7 @@ scoped_refptr<LoginHandler> CreateLoginPrompt( net::AuthChallengeInfo* auth_info, content::ResourceRequestInfo::WebContentsGetter web_contents_getter, - bool is_main_frame, + bool is_request_for_main_frame, const GURL& url, LoginAuthRequiredCallback auth_required_callback) { scoped_refptr<LoginHandler> handler = LoginHandler::Create( @@ -683,6 +683,6 @@ BrowserThread::UI, FROM_HERE, base::BindOnce(&LoginHandler::LoginDialogCallback, url, base::RetainedRef(auth_info), base::RetainedRef(handler), - is_main_frame)); + is_request_for_main_frame)); return handler; }
diff --git a/chrome/browser/ui/login/login_handler.h b/chrome/browser/ui/login/login_handler.h index 2035a47..cb63c21e 100644 --- a/chrome/browser/ui/login/login_handler.h +++ b/chrome/browser/ui/login/login_handler.h
@@ -146,7 +146,7 @@ friend scoped_refptr<LoginHandler> CreateLoginPrompt( net::AuthChallengeInfo* auth_info, content::ResourceRequestInfo::WebContentsGetter web_contents_getter, - bool is_main_frame, + bool is_request_for_main_frame, const GURL& url, LoginAuthRequiredCallback auth_required_callback); FRIEND_TEST_ALL_PREFIXES(LoginHandlerTest, DialogStringsAndRealm);
diff --git a/chrome/browser/ui/page_action/page_action_icon_container.h b/chrome/browser/ui/page_action/page_action_icon_container.h new file mode 100644 index 0000000..8ce475447 --- /dev/null +++ b/chrome/browser/ui/page_action/page_action_icon_container.h
@@ -0,0 +1,20 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_PAGE_ACTION_PAGE_ACTION_ICON_CONTAINER_H_ +#define CHROME_BROWSER_UI_PAGE_ACTION_PAGE_ACTION_ICON_CONTAINER_H_ + +enum class PageActionIconType { + // TODO(https://crbug.com/788051): Migrate page action icon update methods out + // of LocationBar to this interface. +}; + +class PageActionIconContainer { + public: + // Signals a page action icon to update its visual state if it is present in + // the browser window. + virtual void UpdatePageActionIcon(PageActionIconType type) = 0; +}; + +#endif // CHROME_BROWSER_UI_PAGE_ACTION_PAGE_ACTION_ICON_CONTAINER_H_
diff --git a/chrome/browser/ui/search/instant_controller.cc b/chrome/browser/ui/search/instant_controller.cc index b17124e..95705d98 100644 --- a/chrome/browser/ui/search/instant_controller.cc +++ b/chrome/browser/ui/search/instant_controller.cc
@@ -48,7 +48,8 @@ InstantController::~InstantController() = default; void InstantController::TabDetachedAt(content::WebContents* contents, - int index) { + int index, + bool was_active) { StopWatchingTab(contents); }
diff --git a/chrome/browser/ui/search/instant_controller.h b/chrome/browser/ui/search/instant_controller.h index 7be67e6..200f8ee6 100644 --- a/chrome/browser/ui/search/instant_controller.h +++ b/chrome/browser/ui/search/instant_controller.h
@@ -36,7 +36,9 @@ ~InstantController() override; // TabStripModelObserver: - void TabDetachedAt(content::WebContents* contents, int index) override; + void TabDetachedAt(content::WebContents* contents, + int index, + bool was_active) override; void TabDeactivated(content::WebContents* contents) override; void ActiveTabChanged(content::WebContents* old_contents, content::WebContents* new_contents,
diff --git a/chrome/browser/ui/tabs/tab_strip_model.cc b/chrome/browser/ui/tabs/tab_strip_model.cc index 2fb506d..b799990f 100644 --- a/chrome/browser/ui/tabs/tab_strip_model.cc +++ b/chrome/browser/ui/tabs/tab_strip_model.cc
@@ -385,7 +385,7 @@ closing_all_ = true; for (auto& observer : observers_) - observer.TabDetachedAt(raw_web_contents, index); + observer.TabDetachedAt(raw_web_contents, index, index == active_index()); if (empty()) { selection_model_.Clear();
diff --git a/chrome/browser/ui/tabs/tab_strip_model_observer.cc b/chrome/browser/ui/tabs/tab_strip_model_observer.cc index 496fdad..08b97734 100644 --- a/chrome/browser/ui/tabs/tab_strip_model_observer.cc +++ b/chrome/browser/ui/tabs/tab_strip_model_observer.cc
@@ -21,8 +21,8 @@ } void TabStripModelObserver::TabDetachedAt(WebContents* contents, - int index) { -} + int index, + bool was_active) {} void TabStripModelObserver::TabDeactivated(WebContents* contents) { }
diff --git a/chrome/browser/ui/tabs/tab_strip_model_observer.h b/chrome/browser/ui/tabs/tab_strip_model_observer.h index 0fbf285f..f1fb2fd 100644 --- a/chrome/browser/ui/tabs/tab_strip_model_observer.h +++ b/chrome/browser/ui/tabs/tab_strip_model_observer.h
@@ -61,11 +61,14 @@ content::WebContents* contents, int index); - // The specified WebContents at |index| is being detached, perhaps to + // The specified WebContents at |previous_index| has been detached, perhaps to // be inserted in another TabStripModel. The implementer should take whatever - // action is necessary to deal with the WebContents no longer being - // present. - virtual void TabDetachedAt(content::WebContents* contents, int index); + // action is necessary to deal with the WebContents no longer being present. + // |previous_index| cannot be used to index into the current state of the + // TabStripModel. + virtual void TabDetachedAt(content::WebContents* contents, + int previous_index, + bool was_active); // The active WebContents is about to change from |old_contents|. // This gives observers a chance to prepare for an impending switch before it
diff --git a/chrome/browser/ui/tabs/tab_strip_model_unittest.cc b/chrome/browser/ui/tabs/tab_strip_model_unittest.cc index f89d7ac..6f55ab8bb 100644 --- a/chrome/browser/ui/tabs/tab_strip_model_unittest.cc +++ b/chrome/browser/ui/tabs/tab_strip_model_unittest.cc
@@ -352,7 +352,9 @@ int index) override { states_.push_back(State(contents, index, CLOSE)); } - void TabDetachedAt(WebContents* contents, int index) override { + void TabDetachedAt(WebContents* contents, + int index, + bool was_active) override { states_.push_back(State(contents, index, DETACH)); } void TabDeactivated(WebContents* contents) override {
diff --git a/chrome/browser/ui/tabs/window_activity_watcher.cc b/chrome/browser/ui/tabs/window_activity_watcher.cc index bec43313..a8fe5d3 100644 --- a/chrome/browser/ui/tabs/window_activity_watcher.cc +++ b/chrome/browser/ui/tabs/window_activity_watcher.cc
@@ -4,14 +4,15 @@ #include "chrome/browser/ui/tabs/window_activity_watcher.h" +#include "base/logging.h" #include "base/optional.h" #include "base/scoped_observer.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/resource_coordinator/tab_metrics_event.pb.h" +#include "chrome/browser/resource_coordinator/tab_ranker/window_features.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/browser_window.h" -#include "chrome/browser/ui/tabs/window_features.h" #include "services/metrics/public/cpp/metrics_utils.h" #include "services/metrics/public/cpp/ukm_builders.h" #include "services/metrics/public/cpp/ukm_recorder.h" @@ -22,6 +23,7 @@ #endif using metrics::WindowMetricsEvent; +using tab_ranker::WindowFeatures; namespace { @@ -45,6 +47,9 @@ window_features->tab_count = browser->tab_strip_model()->count(); } +// Returns a populated WindowFeatures for the browser. +// |is_active| is provided because IsActive() may be incorrect while browser +// activation is changing (namely, when deactivating a window on Windows). WindowFeatures CreateWindowFeatures(const Browser* browser, bool is_active) { WindowMetricsEvent::Type window_type = WindowMetricsEvent::TYPE_UNKNOWN; switch (browser->type()) { @@ -118,7 +123,8 @@ } if (!last_window_features_) { - last_window_features_.emplace(CreateWindowFeatures(browser_, is_active)); + last_window_features_.emplace( + ::CreateWindowFeatures(browser_, is_active)); LogWindowMetricsUkmEntry(last_window_features_.value()); return; } @@ -140,7 +146,9 @@ bool foreground) override { MaybeLogWindowMetricsUkmEntry(); } - void TabDetachedAt(content::WebContents* contents, int index) override { + void TabDetachedAt(content::WebContents* contents, + int index, + bool was_active) override { MaybeLogWindowMetricsUkmEntry(); } @@ -164,6 +172,13 @@ return &instance; } +// static +WindowFeatures WindowActivityWatcher::CreateWindowFeatures( + const Browser* browser) { + DCHECK(browser->window()); + return ::CreateWindowFeatures(browser, browser->window()->IsActive()); +} + WindowActivityWatcher::WindowActivityWatcher() { BrowserList::AddObserver(this); for (Browser* browser : *BrowserList::GetInstance())
diff --git a/chrome/browser/ui/tabs/window_activity_watcher.h b/chrome/browser/ui/tabs/window_activity_watcher.h index 1d01221..8162bb6 100644 --- a/chrome/browser/ui/tabs/window_activity_watcher.h +++ b/chrome/browser/ui/tabs/window_activity_watcher.h
@@ -11,6 +11,10 @@ #include "base/macros.h" #include "chrome/browser/ui/browser_list_observer.h" +namespace tab_ranker { +struct WindowFeatures; +} // namespace tab_ranker + // Observes browser window activity in order to log WindowMetrics UKMs for // browser events relative to tab activation and discarding. // Multiple tabs in the same browser can refer to the same WindowMetrics entry. @@ -23,6 +27,10 @@ // Returns the single instance, creating it if necessary. static WindowActivityWatcher* GetInstance(); + // Returns a populated WindowFeatures for the browser. + static tab_ranker::WindowFeatures CreateWindowFeatures( + const Browser* browser); + private: WindowActivityWatcher(); ~WindowActivityWatcher() override;
diff --git a/chrome/browser/ui/unload_controller.cc b/chrome/browser/ui/unload_controller.cc index 1854772c..b770d2e 100644 --- a/chrome/browser/ui/unload_controller.cc +++ b/chrome/browser/ui/unload_controller.cc
@@ -251,7 +251,8 @@ } void UnloadController::TabDetachedAt(content::WebContents* contents, - int index) { + int index, + bool was_active) { TabDetachedImpl(contents); }
diff --git a/chrome/browser/ui/unload_controller.h b/chrome/browser/ui/unload_controller.h index dd57d5e0..d318f294 100644 --- a/chrome/browser/ui/unload_controller.h +++ b/chrome/browser/ui/unload_controller.h
@@ -96,7 +96,9 @@ content::WebContents* contents, int index, bool foreground) override; - void TabDetachedAt(content::WebContents* contents, int index) override; + void TabDetachedAt(content::WebContents* contents, + int index, + bool was_active) override; void TabReplacedAt(TabStripModel* tab_strip_model, content::WebContents* old_contents, content::WebContents* new_contents,
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc index 18c97e9f..c17842ed 100644 --- a/chrome/browser/ui/views/frame/browser_view.cc +++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -83,6 +83,7 @@ #include "chrome/browser/ui/views/location_bar/location_bar_view.h" #include "chrome/browser/ui/views/location_bar/star_view.h" #include "chrome/browser/ui/views/omnibox/omnibox_view_views.h" +#include "chrome/browser/ui/views/page_action/page_action_icon_container_view.h" #include "chrome/browser/ui/views/profiles/profile_indicator_icon.h" #include "chrome/browser/ui/views/status_bubble_views.h" #include "chrome/browser/ui/views/tab_contents/chrome_web_contents_view_focus_helper.h" @@ -966,6 +967,10 @@ toolbar_button_provider_ = provider; } +PageActionIconContainer* BrowserView::GetPageActionIconContainer() { + return toolbar_button_provider_->GetPageActionIconContainerView(); +} + LocationBar* BrowserView::GetLocationBar() const { return GetLocationBarView(); } @@ -1486,11 +1491,10 @@ web_contents_close_handler_->TabInserted(); } -void BrowserView::TabDetachedAt(WebContents* contents, int index) { - // We use index here rather than comparing |contents| because by this time - // the model has already removed |contents| from its list, so - // browser_->GetActiveWebContents() will return null or something else. - if (index == browser_->tab_strip_model()->active_index()) { +void BrowserView::TabDetachedAt(WebContents* contents, + int index, + bool was_active) { + if (was_active) { // We need to reset the current tab contents to null before it gets // freed. This is because the focus manager performs some operations // on the selected WebContents when it is removed.
diff --git a/chrome/browser/ui/views/frame/browser_view.h b/chrome/browser/ui/views/frame/browser_view.h index 323642d..7f83fa67 100644 --- a/chrome/browser/ui/views/frame/browser_view.h +++ b/chrome/browser/ui/views/frame/browser_view.h
@@ -314,6 +314,7 @@ bool ShouldHideUIForFullscreen() const override; bool IsFullscreen() const override; bool IsFullscreenBubbleVisible() const override; + PageActionIconContainer* GetPageActionIconContainer() override; LocationBar* GetLocationBar() const override; void SetFocusToLocationBar(bool select_all) override; void UpdateReloadStopState(bool is_loading, bool force) override; @@ -399,7 +400,9 @@ content::WebContents* contents, int index, bool foreground) override; - void TabDetachedAt(content::WebContents* contents, int index) override; + void TabDetachedAt(content::WebContents* contents, + int index, + bool was_active) override; void TabDeactivated(content::WebContents* contents) override; void TabStripEmpty() override; void WillCloseAllTabs() override;
diff --git a/chrome/browser/ui/views/frame/hosted_app_button_container.cc b/chrome/browser/ui/views/frame/hosted_app_button_container.cc index c2f42f8..478b864 100644 --- a/chrome/browser/ui/views/frame/hosted_app_button_container.cc +++ b/chrome/browser/ui/views/frame/hosted_app_button_container.cc
@@ -10,6 +10,7 @@ #include "chrome/browser/ui/views/frame/browser_view.h" #include "chrome/browser/ui/views/frame/hosted_app_menu_button.h" #include "chrome/browser/ui/views/location_bar/content_setting_image_view.h" +#include "chrome/browser/ui/views/page_action/page_action_icon_container_view.h" #include "chrome/browser/ui/views/toolbar/browser_actions_container.h" #include "ui/compositor/layer_animation_element.h" #include "ui/compositor/layer_animation_sequence.h" @@ -192,6 +193,9 @@ content_settings_container_ = content_settings_container.get(); AddChildView(content_settings_container.release()); + page_action_icon_container_view_ = new PageActionIconContainerView(); + AddChildView(page_action_icon_container_view_); + AddChildView(browser_actions_container_); app_menu_button_->SetIconColor(active_icon_color); @@ -295,6 +299,11 @@ return browser_actions_container_; } +PageActionIconContainerView* +HostedAppButtonContainer::GetPageActionIconContainerView() { + return page_action_icon_container_view_; +} + AppMenuButton* HostedAppButtonContainer::GetAppMenuButton() { return app_menu_button_; }
diff --git a/chrome/browser/ui/views/frame/hosted_app_button_container.h b/chrome/browser/ui/views/frame/hosted_app_button_container.h index be181f8..0125c1ce 100644 --- a/chrome/browser/ui/views/frame/hosted_app_button_container.h +++ b/chrome/browser/ui/views/frame/hosted_app_button_container.h
@@ -81,6 +81,7 @@ // ToolbarButtonProvider: BrowserActionsContainer* GetBrowserActionsContainer() override; + PageActionIconContainerView* GetPageActionIconContainerView() override; AppMenuButton* GetAppMenuButton() override; void FocusToolbar() override; views::AccessiblePaneView* GetAsAccessiblePaneView() override; @@ -99,9 +100,10 @@ base::OneShotTimer fade_in_content_setting_buttons_timer_; // Owned by the views hierarchy. - HostedAppMenuButton* app_menu_button_; - ContentSettingsContainer* content_settings_container_; - BrowserActionsContainer* browser_actions_container_; + HostedAppMenuButton* app_menu_button_ = nullptr; + ContentSettingsContainer* content_settings_container_ = nullptr; + PageActionIconContainerView* page_action_icon_container_view_ = nullptr; + BrowserActionsContainer* browser_actions_container_ = nullptr; base::OneShotTimer opening_animation_timer_;
diff --git a/chrome/browser/ui/views/frame/toolbar_button_provider.h b/chrome/browser/ui/views/frame/toolbar_button_provider.h index 2c06369..319d884 100644 --- a/chrome/browser/ui/views/frame/toolbar_button_provider.h +++ b/chrome/browser/ui/views/frame/toolbar_button_provider.h
@@ -7,6 +7,7 @@ class AppMenuButton; class BrowserActionsContainer; +class PageActionIconContainerView; namespace views { class AccessiblePaneView; @@ -19,6 +20,9 @@ // Gets the browser actions container. virtual BrowserActionsContainer* GetBrowserActionsContainer() = 0; + // Gets the page action icon container. + virtual PageActionIconContainerView* GetPageActionIconContainerView() = 0; + // Gets the app menu button. virtual AppMenuButton* GetAppMenuButton() = 0;
diff --git a/chrome/browser/ui/views/fullscreen_control/fullscreen_control_host.cc b/chrome/browser/ui/views/fullscreen_control/fullscreen_control_host.cc index 39e33a8..aca54c16 100644 --- a/chrome/browser/ui/views/fullscreen_control/fullscreen_control_host.cc +++ b/chrome/browser/ui/views/fullscreen_control/fullscreen_control_host.cc
@@ -97,13 +97,37 @@ return; } + ExclusiveAccessManager* const exclusive_access_manager = + bubble_views_context_->GetExclusiveAccessManager(); + + // FullscreenControlHost UI is not needed for the keyboard input method in any + // fullscreen mode except for tab-initiated fullscreen (and only when the user + // is required to press and hold the escape key to exit). + + // If we are not in tab-initiated fullscreen, then we want to make sure the + // UI exit bubble is not displayed. This can occur when: + // 1.) The user enters browser fullscreen (F11) + // 2.) The website then enters tab-initiated fullscreen + // 3.) User performs a press and hold gesture on escape + // + // In this case, the fullscreen controller will revert back to browser + // fullscreen mode but there won't be a fullscreen exit message to trigger + // the UI cleanup for the exit bubble. To handle this case, we need to check + // to make sure the UI is in the right fullscreen mode before proceeding. + if (!exclusive_access_manager->fullscreen_controller() + ->IsWindowFullscreenForTabOrPending()) { + key_press_delay_timer_.Stop(); + if (IsVisible() && input_entry_method_ == InputEntryMethod::KEYBOARD) + Hide(true); + return; + } + // Note: This logic handles the UI feedback element used when holding down the // esc key, however the logic for exiting fullscreen is handled by the // KeyboardLockController class. if (event->type() == ui::ET_KEY_PRESSED && !key_press_delay_timer_.IsRunning() && - bubble_views_context_->GetExclusiveAccessManager() - ->keyboard_lock_controller() + exclusive_access_manager->keyboard_lock_controller() ->RequiresPressAndHoldEscToExit()) { key_press_delay_timer_.Start( FROM_HERE, kKeyPressPopupDelay,
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc index a506f72..abb5a9ff 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_view.cc +++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc
@@ -56,6 +56,7 @@ #include "chrome/browser/ui/views/location_bar/star_view.h" #include "chrome/browser/ui/views/location_bar/zoom_bubble_view.h" #include "chrome/browser/ui/views/location_bar/zoom_view.h" +#include "chrome/browser/ui/views/page_action/page_action_icon_container_view.h" #include "chrome/browser/ui/views/page_info/page_info_bubble_view.h" #include "chrome/browser/ui/views/passwords/manage_passwords_icon_views.h" #include "chrome/browser/ui/views/translate/translate_bubble_view.h" @@ -275,6 +276,9 @@ AddChildView(icon_view); }); + page_action_icon_container_view_ = new PageActionIconContainerView(); + AddChildView(page_action_icon_container_view_); + clear_all_button_ = views::CreateVectorImageButton(this); clear_all_button_->SetTooltipText( l10n_util::GetStringUTF16(IDS_OMNIBOX_CLEAR_ALL));
diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.h b/chrome/browser/ui/views/location_bar/location_bar_view.h index 6154eb7..4e65c681 100644 --- a/chrome/browser/ui/views/location_bar/location_bar_view.h +++ b/chrome/browser/ui/views/location_bar/location_bar_view.h
@@ -17,6 +17,7 @@ #include "chrome/browser/extensions/extension_context_menu_model.h" #include "chrome/browser/ui/location_bar/location_bar.h" #include "chrome/browser/ui/omnibox/chrome_omnibox_edit_controller.h" +#include "chrome/browser/ui/page_action/page_action_icon_container.h" #include "chrome/browser/ui/views/dropdown_bar_host.h" #include "chrome/browser/ui/views/dropdown_bar_host_delegate.h" #include "chrome/browser/ui/views/extensions/extension_popup.h" @@ -50,6 +51,7 @@ class StarView; class TranslateIconView; class ZoomView; +class PageActionIconContainerView; namespace autofill { class SaveCardIconView; @@ -173,6 +175,10 @@ // The translate icon. It may not be visible. TranslateIconView* translate_icon_view() { return translate_icon_view_; } + PageActionIconContainerView* page_action_icon_container_view() { + return page_action_icon_container_view_; + } + // Returns the screen coordinates of the omnibox (where the URL text appears, // not where the icons are shown). gfx::Point GetOmniboxViewOrigin() const; @@ -477,6 +483,8 @@ // A list of all bubble descendants ordered by focus. std::vector<BubbleIconView*> bubble_icons_; + PageActionIconContainerView* page_action_icon_container_view_ = nullptr; + // The security level when the location bar was last updated. Used to decide // whether to animate security level transitions. security_state::SecurityLevel last_update_security_level_ =
diff --git a/chrome/browser/ui/views/omnibox/omnibox_tab_switch_button.cc b/chrome/browser/ui/views/omnibox/omnibox_tab_switch_button.cc index 6a3e92f..f07c9bb 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_tab_switch_button.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_tab_switch_button.cc
@@ -11,6 +11,8 @@ #include "chrome/browser/ui/views/omnibox/omnibox_popup_contents_view.h" #include "chrome/browser/ui/views/omnibox/omnibox_result_view.h" #include "components/omnibox/browser/vector_icons.h" +#include "components/strings/grit/components_strings.h" +#include "ui/base/l10n/l10n_util.h" #include "ui/gfx/color_utils.h" #include "ui/gfx/paint_vector_icon.h" @@ -28,7 +30,7 @@ gfx::CreateVectorIcon(omnibox::kSwitchIcon, GetLayoutConstant(LOCATION_BAR_ICON_SIZE), SK_ColorBLACK)); - SetText(base::ASCIIToUTF16("Switch to open tab")); + SetText(l10n_util::GetStringUTF16(IDS_OMNIBOX_TAB_SUGGEST_HINT)); set_corner_radius(CalculatePreferredSize().height() / 2.f); }
diff --git a/chrome/browser/ui/views/page_action/page_action_icon_container_view.cc b/chrome/browser/ui/views/page_action/page_action_icon_container_view.cc new file mode 100644 index 0000000..a8e8419 --- /dev/null +++ b/chrome/browser/ui/views/page_action/page_action_icon_container_view.cc
@@ -0,0 +1,11 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/ui/views/page_action/page_action_icon_container_view.h" + +void PageActionIconContainerView::UpdatePageActionIcon(PageActionIconType) { + // TODO(https://crbug.com/788051): Update page action icons here as update + // methods are migrated out of LocationBar to the PageActionIconContainer + // interface. +}
diff --git a/chrome/browser/ui/views/page_action/page_action_icon_container_view.h b/chrome/browser/ui/views/page_action/page_action_icon_container_view.h new file mode 100644 index 0000000..53b3491a --- /dev/null +++ b/chrome/browser/ui/views/page_action/page_action_icon_container_view.h
@@ -0,0 +1,21 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_UI_VIEWS_PAGE_ACTION_PAGE_ACTION_ICON_CONTAINER_VIEW_H_ +#define CHROME_BROWSER_UI_VIEWS_PAGE_ACTION_PAGE_ACTION_ICON_CONTAINER_VIEW_H_ + +#include "chrome/browser/ui/page_action/page_action_icon_container.h" +#include "ui/views/view.h" + +class PageActionIconContainerView : public views::View, + public PageActionIconContainer { + public: + PageActionIconContainerView() {} + + private: + // PageActionIconContainer: + void UpdatePageActionIcon(PageActionIconType type) override; +}; + +#endif // CHROME_BROWSER_UI_VIEWS_PAGE_ACTION_PAGE_ACTION_ICON_CONTAINER_VIEW_H_
diff --git a/chrome/browser/ui/views/payments/payment_handler_web_flow_view_controller.cc b/chrome/browser/ui/views/payments/payment_handler_web_flow_view_controller.cc index 829b885..7f48bf2 100644 --- a/chrome/browser/ui/views/payments/payment_handler_web_flow_view_controller.cc +++ b/chrome/browser/ui/views/payments/payment_handler_web_flow_view_controller.cc
@@ -83,7 +83,8 @@ title_origin_layout->StartRow(0, 0); views::Label* origin_label = - new views::Label(base::UTF8ToUTF16(origin.spec())); + new views::Label(base::UTF8ToUTF16(origin.host())); + origin_label->SetElideBehavior(gfx::ELIDE_HEAD); if (!title_is_valid) { // Set the origin as title when the page title is invalid. origin_label->set_id(static_cast<int>(DialogViewID::SHEET_TITLE));
diff --git a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc index 78b0721..a85d3fb 100644 --- a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc +++ b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc
@@ -391,7 +391,8 @@ } void BrowserTabStripController::TabDetachedAt(WebContents* contents, - int model_index) { + int model_index, + bool was_active) { // Cancel any pending tab transition. hover_tab_selector_.CancelTabTransition();
diff --git a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.h b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.h index fb924526..f80fb29b 100644 --- a/chrome/browser/ui/views/tabs/browser_tab_strip_controller.h +++ b/chrome/browser/ui/views/tabs/browser_tab_strip_controller.h
@@ -81,7 +81,9 @@ content::WebContents* contents, int model_index, bool is_active) override; - void TabDetachedAt(content::WebContents* contents, int model_index) override; + void TabDetachedAt(content::WebContents* contents, + int model_index, + bool was_active) override; void ActiveTabChanged(content::WebContents* old_contents, content::WebContents* new_contents, int index,
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.cc b/chrome/browser/ui/views/toolbar/toolbar_view.cc index 3840b63..96107c8e 100644 --- a/chrome/browser/ui/views/toolbar/toolbar_view.cc +++ b/chrome/browser/ui/views/toolbar/toolbar_view.cc
@@ -687,6 +687,10 @@ return browser_actions_; } +PageActionIconContainerView* ToolbarView::GetPageActionIconContainerView() { + return location_bar_->page_action_icon_container_view(); +} + AppMenuButton* ToolbarView::GetAppMenuButton() { return app_menu_button_; }
diff --git a/chrome/browser/ui/views/toolbar/toolbar_view.h b/chrome/browser/ui/views/toolbar/toolbar_view.h index 895b7f5..743aee4 100644 --- a/chrome/browser/ui/views/toolbar/toolbar_view.h +++ b/chrome/browser/ui/views/toolbar/toolbar_view.h
@@ -187,6 +187,7 @@ // ToolbarButtonProvider: BrowserActionsContainer* GetBrowserActionsContainer() override; + PageActionIconContainerView* GetPageActionIconContainerView() override; AppMenuButton* GetAppMenuButton() override; void FocusToolbar() override; views::AccessiblePaneView* GetAsAccessiblePaneView() override;
diff --git a/chrome/browser/ui/webui/page_not_available_for_guest/page_not_available_for_guest_ui.cc b/chrome/browser/ui/webui/page_not_available_for_guest/page_not_available_for_guest_ui.cc index ff64394a..779533a 100644 --- a/chrome/browser/ui/webui/page_not_available_for_guest/page_not_available_for_guest_ui.cc +++ b/chrome/browser/ui/webui/page_not_available_for_guest/page_not_available_for_guest_ui.cc
@@ -27,7 +27,7 @@ else if (host_name == chrome::kChromeUIHistoryHost) page_title = l10n_util::GetStringUTF16(IDS_HISTORY_TITLE); else if (host_name == chrome::kChromeUIExtensionsHost) - page_title = l10n_util::GetStringUTF16(IDS_MD_EXTENSIONS_GUEST_MODE_TITLE); + page_title = l10n_util::GetStringUTF16(IDS_MD_EXTENSIONS_TOOLBAR_TITLE); else page_title = base::UTF8ToUTF16(host_name);
diff --git a/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.cc b/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.cc index fdd17e0..ba3a7a9 100644 --- a/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.cc +++ b/chrome/browser/ui/webui/print_preview/local_printer_handler_chromeos.cc
@@ -189,6 +189,7 @@ case chromeos::PrinterSetupResult::kInvalidPpd: case chromeos::PrinterSetupResult::kFatalError: case chromeos::PrinterSetupResult::kNativePrintersNotAllowed: + case chromeos::PrinterSetupResult::kInvalidPrinterUpdate: LOG(ERROR) << "Unexpected error in printer setup." << result; break; case chromeos::PrinterSetupResult::kMaxValue:
diff --git a/chrome/browser/ui/webui/quota_internals/OWNERS b/chrome/browser/ui/webui/quota_internals/OWNERS index ed698ac..6fb5954 100644 --- a/chrome/browser/ui/webui/quota_internals/OWNERS +++ b/chrome/browser/ui/webui/quota_internals/OWNERS
@@ -1,2 +1,5 @@ tzik@chromium.org -michaeln@chromium.org +jsbell@chromium.org + +# TEAM: storage-dev@chromium.org +# COMPONENT: Blink>Storage>Quota
diff --git a/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc b/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc index 92db0fd..fdfe6ed 100644 --- a/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc +++ b/chrome/browser/ui/webui/settings/chromeos/cups_printers_handler.cc
@@ -198,6 +198,21 @@ return contents; } +// Determines whether changing the URI in |existing_printer| to the URI in +// |new_printer| would be valid. Network printers are not allowed to change +// their protocol to a non-network protocol, but can change anything else. +// Non-network printers are not allowed to change anything in their URI. +bool IsValidUriChange(const Printer& existing_printer, + const Printer& new_printer) { + if (new_printer.GetProtocol() == Printer::PrinterProtocol::kUnknown) { + return false; + } + if (existing_printer.HasNetworkProtocol()) { + return new_printer.HasNetworkProtocol(); + } + return existing_printer.uri() == new_printer.uri(); +} + } // namespace CupsPrintersHandler::CupsPrintersHandler(content::WebUI* webui) @@ -490,11 +505,25 @@ if (!optional.has_value()) { // If the returned optional does not contain a value then it means that the // printer's uri was not able to be parsed successfully. - LOG(ERROR) << "Failed to parse printer URI"; + PRINTER_LOG(ERROR) << "Failed to parse printer URI"; OnAddPrinterError(PrinterSetupResult::kFatalError); return; } + // If the provided printer already exists, grab the existing printer object + // and check that we are not making any changes that will make the printer + // unusable. + if (!printer->id().empty()) { + std::unique_ptr<Printer> existing_printer = + printers_manager_->GetPrinter(printer->id()); + if (existing_printer) { + if (!IsValidUriChange(*existing_printer, *printer)) { + OnAddPrinterError(PrinterSetupResult::kInvalidPrinterUpdate); + return; + } + } + } + // Read PPD selection if it was used. std::string ppd_manufacturer; std::string ppd_model; @@ -593,6 +622,10 @@ PRINTER_LOG(ERROR) << "Unable to add or edit printer due to enterprise policy."; break; + case PrinterSetupResult::kInvalidPrinterUpdate: + PRINTER_LOG(ERROR) + << "Requested printer changes would make printer unusable"; + break; case PrinterSetupResult::kMaxValue: NOTREACHED() << "This is not an expected value"; break;
diff --git a/chrome/browser/ui/webui/settings/chromeos/smb_handler.cc b/chrome/browser/ui/webui/settings/chromeos/smb_handler.cc index 5c6c73a..9c9aec154 100644 --- a/chrome/browser/ui/webui/settings/chromeos/smb_handler.cc +++ b/chrome/browser/ui/webui/settings/chromeos/smb_handler.cc
@@ -35,8 +35,8 @@ void SmbHandler::HandleSmbMount(const base::ListValue* args) { CHECK_EQ(1U, args->GetSize()); std::string mountUrl; - CHECK(args->GetString(0, &mountUrl)); + CHECK(args->GetString(0, &mountUrl)); chromeos::smb_client::SmbService* const service = chromeos::smb_client::SmbService::Get(profile_); @@ -44,8 +44,8 @@ mo.display_name = mountUrl; mo.writable = true; - service->Mount(mo, base::FilePath(mountUrl), - base::BindOnce(&DoNothingCallback)); + service->Mount(mo, base::FilePath(mountUrl), "" /* username */, + "" /* password */, base::BindOnce(&DoNothingCallback)); } } // namespace settings
diff --git a/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc index 3604bf73..5c7ef6d8 100644 --- a/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc
@@ -808,6 +808,8 @@ IDS_SETTINGS_DOWNLOADS_SMB_SHARES_LEARN_MORE_LABEL}, {"addSmbShare", IDS_SETTINGS_DOWNLOADS_SMB_SHARES_ADD_SHARE}, {"smbShareUrl", IDS_SETTINGS_DOWNLOADS_ADD_SHARE_URL}, + {"smbShareUsername", IDS_SETTINGS_DOWNLOADS_ADD_SHARE_USERNAME}, + {"smbSharePassword", IDS_SETTINGS_DOWNLOADS_ADD_SHARE_PASSWORD}, #endif }; AddLocalizedStringsBulk(html_source, localized_strings, @@ -1767,6 +1769,8 @@ IDS_SETTINGS_PRINTING_CUPS_PRINTER_PROTOCOL_APP_SOCKET}, {"printerProtocolLpd", IDS_SETTINGS_PRINTING_CUPS_PRINTER_PROTOCOL_LPD}, {"printerProtocolUsb", IDS_SETTINGS_PRINTING_CUPS_PRINTER_PROTOCOL_USB}, + {"printerProtocolIppUsb", + IDS_SETTINGS_PRINTING_CUPS_PRINTER_PROTOCOL_IPPUSB}, {"printerConfiguringMessage", IDS_SETTINGS_PRINTING_CUPS_PRINTER_CONFIGURING_MESSAGE}, {"printerManufacturer", IDS_SETTINGS_PRINTING_CUPS_PRINTER_MANUFACTURER}, @@ -1797,6 +1801,8 @@ IDS_SETTINGS_PRINTING_CUPS_PRINTER_ADDED_PRINTER_PPD_UNRETRIEVABLE}, {"printerAddedNativePrintersNotAllowedMessage", IDS_SETTINGS_PRINTING_CUPS_PRINTER_ADDED_NATIVE_PRINTERS_NOT_ALLOWED_MESSAGE}, + {"editPrinterInvalidPrinterUpdate", + IDS_SETTINGS_PRINTING_CUPS_EDIT_PRINTER_INVALID_PRINTER_UPDATE}, {"requireNetworkMessage", IDS_SETTINGS_PRINTING_CUPS_PRINTER_REQUIRE_INTERNET_MESSAGE}, {"editPrinterDialogTitle",
diff --git a/chrome/browser/unload_browsertest.cc b/chrome/browser/unload_browsertest.cc index d78d3a3..9f89d17 100644 --- a/chrome/browser/unload_browsertest.cc +++ b/chrome/browser/unload_browsertest.cc
@@ -756,7 +756,9 @@ } // TabStripModelObserver: - void TabDetachedAt(content::WebContents* contents, int index) override { + void TabDetachedAt(content::WebContents* contents, + int index, + bool was_active) override { run_loop_->Quit(); }
diff --git a/chrome/browser/usb/web_usb_chooser_service_desktop.cc b/chrome/browser/usb/web_usb_chooser_service_desktop.cc index 44f5903..bc0cc909 100644 --- a/chrome/browser/usb/web_usb_chooser_service_desktop.cc +++ b/chrome/browser/usb/web_usb_chooser_service_desktop.cc
@@ -33,5 +33,6 @@ auto* web_contents = content::WebContents::FromRenderFrameHost(render_frame_host()); Browser* browser = chrome::FindBrowserWithWebContents(web_contents); - bubble_ = browser->GetBubbleManager()->ShowBubble(std::move(delegate)); + if (browser) + bubble_ = browser->GetBubbleManager()->ShowBubble(std::move(delegate)); }
diff --git a/chrome/browser/vr/elements/transient_element_unittest.cc b/chrome/browser/vr/elements/transient_element_unittest.cc index 33792ad..2b2f8890 100644 --- a/chrome/browser/vr/elements/transient_element_unittest.cc +++ b/chrome/browser/vr/elements/transient_element_unittest.cc
@@ -56,7 +56,7 @@ EXPECT_FALSE(DoBeginFrame(&element, 4030)); element.SetTransitionedProperties({OPACITY}); element.SetVisible(true); - EXPECT_FALSE(DoBeginFrame(&element, 4030)); + EXPECT_TRUE(DoBeginFrame(&element, 4030)); EXPECT_NE(element.opacity_when_visible(), element.opacity()); element.SetVisibleImmediately(true); EXPECT_FALSE(DoBeginFrame(&element, 4030));
diff --git a/chrome/browser/vr/elements/ui_element.cc b/chrome/browser/vr/elements/ui_element.cc index b6423226..5d13ee9 100644 --- a/chrome/browser/vr/elements/ui_element.cc +++ b/chrome/browser/vr/elements/ui_element.cc
@@ -24,7 +24,6 @@ namespace { -constexpr bool kEnableOptimizedTreeWalks = true; constexpr float kHitTestResolutionInMeter = 0.000001f; int AllocateId() { @@ -253,12 +252,14 @@ set_update_phase(kUpdatedAnimations); bool begin_frame_updated = OnBeginFrame(head_pose); UpdateComputedOpacity(); - bool was_visible_at_any_point = IsVisible() || updated_visibility_this_frame_; + bool was_visible_at_any_point = IsVisible() || + updated_visibility_this_frame_ || + IsOrWillBeLocallyVisible(); bool dirty = (begin_frame_updated || keyframe_models_updated || updated_bindings_this_frame_) && was_visible_at_any_point; - if (!kEnableOptimizedTreeWalks || was_visible_at_any_point) { + if (was_visible_at_any_point) { for (auto& child : children_) dirty |= child->DoBeginFrame(head_pose); } @@ -699,7 +700,7 @@ should_recur |= IsOrWillBeLocallyVisible(); set_update_phase(kUpdatedBindings); - if (!should_recur && kEnableOptimizedTreeWalks) + if (!should_recur) return; for (auto& child : children_) @@ -803,7 +804,7 @@ } bool UiElement::SizeAndLayOut() { - if (!IsVisible() && kEnableOptimizedTreeWalks) + if (!IsVisible()) return false; // May be overridden by layout elements. @@ -961,8 +962,7 @@ } void UiElement::UpdateWorldSpaceTransform(bool parent_changed) { - if (!IsVisible() && !updated_visibility_this_frame_ && - kEnableOptimizedTreeWalks) + if (!IsVisible() && !updated_visibility_this_frame_) return; bool changed = false;
diff --git a/chrome/browser/vr/elements/ui_element_unittest.cc b/chrome/browser/vr/elements/ui_element_unittest.cc index 63fde28..2ab0f0b 100644 --- a/chrome/browser/vr/elements/ui_element_unittest.cc +++ b/chrome/browser/vr/elements/ui_element_unittest.cc
@@ -11,6 +11,7 @@ #include "cc/animation/keyframe_model.h" #include "cc/animation/keyframed_animation_curve.h" #include "cc/test/geometry_test_utils.h" +#include "chrome/browser/vr/databinding/binding.h" #include "chrome/browser/vr/test/animation_utils.h" #include "chrome/browser/vr/test/constants.h" #include "chrome/browser/vr/ui_scene.h" @@ -425,6 +426,55 @@ DISALLOW_COPY_AND_ASSIGN(ElementEventHandlers); }; +TEST(UiElement, CoordinatedVisibilityTransitions) { + UiScene scene; + bool value = false; + + auto parent = std::make_unique<UiElement>(); + auto* parent_ptr = parent.get(); + parent->SetVisible(false); + parent->SetTransitionedProperties({OPACITY}); + parent->AddBinding(std::make_unique<Binding<bool>>( + base::BindRepeating([](bool* value) { return *value; }, + base::Unretained(&value)), + base::BindRepeating( + [](UiElement* e, const bool& value) { e->SetVisible(value); }, + parent_ptr))); + + auto child = std::make_unique<UiElement>(); + auto* child_ptr = child.get(); + child->SetVisible(false); + child->SetTransitionedProperties({OPACITY}); + child->AddBinding(std::make_unique<Binding<bool>>( + base::BindRepeating([](bool* value) { return *value; }, + base::Unretained(&value)), + base::BindRepeating( + [](UiElement* e, const bool& value) { e->SetVisible(value); }, + child_ptr))); + + parent->AddChild(std::move(child)); + scene.AddUiElement(kRoot, std::move(parent)); + + scene.OnBeginFrame(MsToTicks(0), kStartHeadPose); + + value = true; + + scene.OnBeginFrame(MsToTicks(16), kStartHeadPose); + + // We should have started animating both, and they should both be at opacity + // zero given that this is the first frame. This does not guarantee that + // they've started animating together, however. Even if the animation was + // unticked, we would still be at opacity zero. We must tick a second time to + // reach a non-zero value. + EXPECT_TRUE(parent_ptr->IsAnimatingProperty(OPACITY)); + EXPECT_TRUE(child_ptr->IsAnimatingProperty(OPACITY)); + EXPECT_EQ(child_ptr->opacity(), parent_ptr->opacity()); + + scene.OnBeginFrame(MsToTicks(32), kStartHeadPose); + EXPECT_EQ(child_ptr->opacity(), parent_ptr->opacity()); + EXPECT_LT(0.0f, child_ptr->opacity()); +} + TEST(UiElement, EventBubbling) { auto element = std::make_unique<UiElement>(); auto child = std::make_unique<UiElement>();
diff --git a/chrome/browser/vr/speech_recognizer_unittest.cc b/chrome/browser/vr/speech_recognizer_unittest.cc index e5a3541..ec6e020 100644 --- a/chrome/browser/vr/speech_recognizer_unittest.cc +++ b/chrome/browser/vr/speech_recognizer_unittest.cc
@@ -80,12 +80,6 @@ return session_ctx_; } - int GetSession(int render_process_id, - int render_frame_id, - int request_id) const override { - return session_id_; - } - void FakeSpeechRecognitionEvent(FakeRecognitionEvent event) { if (!content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)) { content::BrowserThread::PostTask(
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc index 9569d92..ded3e73 100644 --- a/chrome/common/chrome_features.cc +++ b/chrome/common/chrome_features.cc
@@ -160,7 +160,7 @@ #endif const base::Feature kClickToOpenPDFPlaceholder{ - "ClickToOpenPDFPlaceholder", base::FEATURE_DISABLED_BY_DEFAULT}; + "ClickToOpenPDFPlaceholder", base::FEATURE_ENABLED_BY_DEFAULT}; #if defined(OS_MACOSX) const base::Feature kContentFullscreen{"ContentFullscreen",
diff --git a/chrome/common/component_flash_hint_file_linux.cc b/chrome/common/component_flash_hint_file_linux.cc index 2f8c01c1..8e90d1f 100644 --- a/chrome/common/component_flash_hint_file_linux.cc +++ b/chrome/common/component_flash_hint_file_linux.cc
@@ -134,7 +134,7 @@ return false; std::string hash(crypto::kSHA256Length, 0); - SHA256Hash(mapped_file, base::string_as_array(&hash), hash.size()); + SHA256Hash(mapped_file, base::data(hash), hash.size()); return WriteToDisk(kCurrentHintFileVersion, crypto::SecureHash::Algorithm::SHA256, hash, moved_plugin, @@ -212,8 +212,7 @@ std::vector<uint8_t> file_hash(crypto::kSHA256Length, 0); SHA256Hash(plugin_file, &file_hash[0], file_hash.size()); - if (!crypto::SecureMemEqual(&file_hash[0], - base::string_as_array(&decoded_hash), + if (!crypto::SecureMemEqual(base::data(file_hash), base::data(decoded_hash), crypto::kSHA256Length)) { LOG(ERROR) << "The hash recorded in the component flash hint file does not "
diff --git a/chrome/common/extensions/api/file_manager_private.idl b/chrome/common/extensions/api/file_manager_private.idl index 24c7650..4fc16134 100644 --- a/chrome/common/extensions/api/file_manager_private.idl +++ b/chrome/common/extensions/api/file_manager_private.idl
@@ -1079,7 +1079,7 @@ // Starts and mounts crostini container. // |callback| - static void mountCrostiniContainer(BooleanCallback callback); + static void mountCrostiniContainer(SimpleCallback callback); }; interface Events {
diff --git a/chrome/common/extensions/docs/templates/articles/app_codelab_images.html b/chrome/common/extensions/docs/templates/articles/app_codelab_images.html index 90d4229..23344e94 100644 --- a/chrome/common/extensions/docs/templates/articles/app_codelab_images.html +++ b/chrome/common/extensions/docs/templates/articles/app_codelab_images.html
@@ -39,7 +39,7 @@ <h3 id="update-permissions">Update permissions</h3> <p>In a Chrome App, you can make XMLHttpRequest calls to any URL as long as you -whitelist its domain in the manifest. Since you won't know +specify its domain in the manifest. Since you won't know beforehand what image URL the user will type, ask permission to make requests to <code>"<all_urls>"</code>.</p>
diff --git a/chrome/common/extensions/docs/templates/articles/app_external.html b/chrome/common/extensions/docs/templates/articles/app_external.html index 4a13504c..bc3af40 100644 --- a/chrome/common/extensions/docs/templates/articles/app_external.html +++ b/chrome/common/extensions/docs/templates/articles/app_external.html
@@ -266,7 +266,7 @@ from where the message is sent. Chrome Apps have no access to the unique origin of sandboxed content, -so you can only whitelist all origins +so you can only allowlist all origins as acceptable origins ('*'). On the receiving end, you generally want to check the origin;
diff --git a/chrome/common/extensions/docs/templates/articles/app_identity.html b/chrome/common/extensions/docs/templates/articles/app_identity.html index 7fd312db..cf78df2 100644 --- a/chrome/common/extensions/docs/templates/articles/app_identity.html +++ b/chrome/common/extensions/docs/templates/articles/app_identity.html
@@ -283,7 +283,7 @@ <p> To make cross-origin XHRs to the provider API endpoints, -you need to whitelist the appropriate patterns in the permissions: +you need to allowlist the appropriate patterns in the permissions: </p> <pre data-filename="manifest.json">
diff --git a/chrome/common/extensions/docs/templates/articles/contentSecurityPolicy.html b/chrome/common/extensions/docs/templates/articles/contentSecurityPolicy.html index aec0c2b..02e45c88 100644 --- a/chrome/common/extensions/docs/templates/articles/contentSecurityPolicy.html +++ b/chrome/common/extensions/docs/templates/articles/contentSecurityPolicy.html
@@ -13,7 +13,7 @@ </p> <p> - In general, CSP works as a black/whitelisting mechanism for resources loaded + In general, CSP works as a block/allowlisting mechanism for resources loaded or executed by your extensions. Defining a reasonable policy for your extension enables you to carefully consider the resources that your extension requires, and to ask the browser to ensure that those are the only resources @@ -263,7 +263,7 @@ </p> <p> - As of Chrome 46, inline scripts can be whitelisted by specifying the + As of Chrome 46, inline scripts can be allowed by specifying the base64-encoded hash of the source code in the policy. This hash must be prefixed by the used hash algorithm (sha256, sha384 or sha512). See @@ -275,7 +275,7 @@ <p> If you have a need for some external JavaScript or object - resources, you can relax the policy to a limited extent by whitelisting + resources, you can relax the policy to a limited extent by allowlisting secure origins from which scripts should be accepted. We want to ensure that executable resources loaded with an extension's elevated permissions are exactly the resources you expect, and haven't been replaced by an active @@ -286,7 +286,7 @@ </p> <p> - Currently, we allow whitelisting origins with the following schemes: + Currently, developers can allowlist origins with the following schemes: <code>blob</code>, <code>filesystem</code>, <code>https</code>, and <code>chrome-extension</code>. The host part of the origin must explicitly be specified for the @@ -299,12 +299,12 @@ domains, the subdomain must explicitly be listed. For example, <code>https://*.cloudfront.net</code> is invalid, but <code>https://XXXX.cloudfront.net</code> and - <code>https://*.XXXX.cloudfront.net</code> can be whitelisted. + <code>https://*.XXXX.cloudfront.net</code> can be allowlisted. </p> <p> - To ease development, we're also allowing the whitelisting of resources loaded - over HTTP from servers on your local machine. You may whitelist script and + For development ease, resources loaded over HTTP from servers on your local + machine can be allowlisted. You may allowlist script and object sources on any port of either <code>http://127.0.0.1</code> or <code>http://localhost</code>. </p>
diff --git a/chrome/common/extensions/docs/templates/articles/external_extensions.html b/chrome/common/extensions/docs/templates/articles/external_extensions.html index e746d83..1a61c1f 100644 --- a/chrome/common/extensions/docs/templates/articles/external_extensions.html +++ b/chrome/common/extensions/docs/templates/articles/external_extensions.html
@@ -384,13 +384,13 @@ <p><b>What if the user uninstalls the extension?</b> </p> <p>If the user uninstalls the extension through the UI, it will no longer be installed or updated on each startup. In other words, the -external extension is blacklisted. </p> +external extension is blocklisted. </p> -<p><b>How do I get off the blacklist?</b> </p> +<p><b>How do I get off the blocklist?</b> </p> <p>If the user uninstalls your extension, you should respect that decision. However, if you (the developer) accidentally uninstalled your extension through the UI, -you can remove the blacklist tag +you can remove the blocklist tag by installing the extension normally through the UI, and then uninstalling it. </p>
diff --git a/chrome/common/extensions/docs/templates/articles/manifest/storage.html b/chrome/common/extensions/docs/templates/articles/manifest/storage.html index f8baec9a..8bfcf9f55 100644 --- a/chrome/common/extensions/docs/templates/articles/manifest/storage.html +++ b/chrome/common/extensions/docs/templates/articles/manifest/storage.html
@@ -135,7 +135,7 @@ // This example policy could map a URL to its settings. An example value: // { // "youtube.com": { - // "blacklisted": true + // "blocklisted": true // }, // "google.com": { // "bypass_proxy": true @@ -146,7 +146,7 @@ "additionalProperties": { "type": "object", "properties": { - "blacklisted": { "type": "boolean" }, + "blocklisted": { "type": "boolean" }, "bypass_proxy": { "type": "boolean" } } }
diff --git a/chrome/common/extensions/docs/templates/articles/manifest/web_accessible_resources.html b/chrome/common/extensions/docs/templates/articles/manifest/web_accessible_resources.html index e28a3b8..8ba7eda 100644 --- a/chrome/common/extensions/docs/templates/articles/manifest/web_accessible_resources.html +++ b/chrome/common/extensions/docs/templates/articles/manifest/web_accessible_resources.html
@@ -5,7 +5,7 @@ to be usable in the context of a web page. These paths are relative to the package root, and may contain wildcards. For example, an extension that injects a content script with the intention of -building up some custom interface for <code>example.com</code> would whitelist +building up some custom interface for <code>example.com</code> would allow any resources that interface requires (images, icons, stylesheets, scripts, etc.) as follows: </p> @@ -27,7 +27,7 @@ <p> These resources would then be available in a webpage via the URL <code>chrome-extension://[PACKAGE ID]/[PATH]</code>, which can be generated with -the <a href="https://developer.chrome.com/extensions/extension#method-getURL">extension.getURL</a> method. Whitelisted resources are served with appropriate +the <a href="https://developer.chrome.com/extensions/extension#method-getURL">extension.getURL</a> method. Allowlisted resources are served with appropriate <a href="https://www.w3.org/TR/cors/">CORS</a> headers, so they're available via mechanisms like XHR. </p> @@ -45,7 +45,7 @@ </ul> <p> -<a href="https://developer.chrome.com/extensions/content_scripts">Content scripts</a> themselves do not need to be whitelisted. +<a href="https://developer.chrome.com/extensions/content_scripts">Content scripts</a> themselves do not need to be allowlisted. </p> <p> @@ -63,13 +63,13 @@ <p> Resources inside of packages using <a href="https://developer.chrome.com/extensions/manifest#manifest_version"><code>manifest_version</code></a> -2 or above are <strong>blocked by default</strong>, and must be whitelisted +2 or above are <strong>blocked by default</strong>, and must be allowlisted for use via this property. </p> <p> Resources inside of packages using <code>manifest_version</code> 1 are available by default, but <em>if</em> you do set this property, then it will be treated as -a complete list of all whitelisted resources. Resources not listed will be +a complete list of all allowlisted resources. Resources not listed will be blocked. </p>
diff --git a/chrome/common/extensions/docs/templates/articles/manifestVersion.html b/chrome/common/extensions/docs/templates/articles/manifestVersion.html index 6ea193b6..ae7bbc1 100644 --- a/chrome/common/extensions/docs/templates/articles/manifestVersion.html +++ b/chrome/common/extensions/docs/templates/articles/manifestVersion.html
@@ -102,7 +102,7 @@ A package's resources are no longer available by default to external websites (as the <code>src</code> of an image, or a <code>script</code> tag). If you want a website to be able to load a resource contained in - your package, you'll need to explicitly whitelist it via the + your package, you'll need to explicitly allowlist it via the <a href="manifest/web_accessible_resources"> <code>web_accessible_resources</code> </a> manifest attribute. This is particularly relevant for extensions that
diff --git a/chrome/common/extensions/docs/templates/articles/messaging.html b/chrome/common/extensions/docs/templates/articles/messaging.html index 92522e6..3e87517 100644 --- a/chrome/common/extensions/docs/templates/articles/messaging.html +++ b/chrome/common/extensions/docs/templates/articles/messaging.html
@@ -223,7 +223,7 @@ // For simple requests: chrome.runtime.onMessageExternal.addListener( function(request, sender, sendResponse) { - if (sender.id == blacklistedExtension) + if (sender.id == blocklistedExtension) return; // don't allow this extension access else if (request.getTargetData) sendResponse({targetData: targetData}); @@ -312,7 +312,7 @@ <pre> chrome.runtime.onMessageExternal.addListener( function(request, sender, sendResponse) { - if (sender.url == blacklistedWebsite) + if (sender.url == blocklistedWebsite) return; // don't allow this web page access if (request.openUrlInEditor) openUrl(request.openUrlInEditor);
diff --git a/chrome/common/extensions/docs/templates/articles/nativeMessaging.html b/chrome/common/extensions/docs/templates/articles/nativeMessaging.html index 127d37e2..d8592e4 100644 --- a/chrome/common/extensions/docs/templates/articles/nativeMessaging.html +++ b/chrome/common/extensions/docs/templates/articles/nativeMessaging.html
@@ -130,7 +130,7 @@ <p> The first argument to the native messaging host is the origin of the caller, -usually <code>chrome-extension://[ID of whitelisted extension]</code>. +usually <code>chrome-extension://[ID of allowed extension]</code>. This allows native messaging hosts to identify the source of the message when multiple extensions are specified in the <code>allowed_origins</code> key in the <a href="#native-messaging-host-manifest">native messaging host manifest</a>.
diff --git a/chrome/common/extensions/docs/templates/articles/tut_migration_to_manifest_v2.html b/chrome/common/extensions/docs/templates/articles/tut_migration_to_manifest_v2.html index be3b1ae..a9ccf66 100644 --- a/chrome/common/extensions/docs/templates/articles/tut_migration_to_manifest_v2.html +++ b/chrome/common/extensions/docs/templates/articles/tut_migration_to_manifest_v2.html
@@ -110,7 +110,7 @@ <li>Consider downloading the library and packaging it in your extension, then loading it from the local package.</li> - <li>Whitelist the HTTPS domain that serves the resource + <li>Allowlist the HTTPS domain that serves the resource in the "content_security_policy" part of your manifest.</li> </ul> </ul> @@ -265,7 +265,7 @@ that are used in content scripts that are injected into web pages, you need to use the <a href="manifest/web_accessible_resources">web_accessible_resources</a> property -to whitelist these resources so that external Web pages can use them: +to allowlist these resources so that external Web pages can use them: </p> <pre data-filename="manifest.json"> @@ -292,7 +292,7 @@ <ol> <li>Download the relevant library locally (like jQuery) and package it with your extension.</li> - <li>You can relax the CSP in a limited way by whitelisting HTTPS origins + <li>You can relax the CSP in a limited way by allowlisting HTTPS origins in the “content_security_policy” section of your manifest. To include a library like Google Analytics, this is the approach to take: <pre data-filename="manifest.json">
diff --git a/chrome/common/extensions/docs/templates/intros/feedbackPrivate.html b/chrome/common/extensions/docs/templates/intros/feedbackPrivate.html index 20e2fb3..733c6ca 100644 --- a/chrome/common/extensions/docs/templates/intros/feedbackPrivate.html +++ b/chrome/common/extensions/docs/templates/intros/feedbackPrivate.html
@@ -34,7 +34,7 @@ <p class="note"> <b>Note:</b> -The feedbackPrivate API can also be used by whitelisted apps to provide +The feedbackPrivate API can also be used by particular apps to provide a custom feedback UI and send Chrome Feedback. The productId field in the feedbackInfo structure can be given to override the product ID to be sent with the feedback report. This will allow the app to send
diff --git a/chrome/common/extensions/docs/templates/intros/networkingPrivate.html b/chrome/common/extensions/docs/templates/intros/networkingPrivate.html index 039a7f8..5581d5f 100644 --- a/chrome/common/extensions/docs/templates/intros/networkingPrivate.html +++ b/chrome/common/extensions/docs/templates/intros/networkingPrivate.html
@@ -1,7 +1,7 @@ <h2 id="code">Implemention of the Chrome Networking Private API</h2> <p> -The Networking Private API is designed to allow whitelisted apps and +The Networking Private API is designed to allow particular apps and extensions to view and configure the networks available on a device. </p> @@ -14,5 +14,5 @@ <b>Note:</b> The networkingPrivate API is in active development and is primarily supported on Chrome OS, with a subset supported on Windows and OSX for WiFi configuration. -It is currently only available to whitelisted apps. +It is currently only available to allowlisted apps. </p>
diff --git a/chrome/common/url_constants.cc b/chrome/common/url_constants.cc index d69d439..f09efcda 100644 --- a/chrome/common/url_constants.cc +++ b/chrome/common/url_constants.cc
@@ -278,7 +278,7 @@ "https://support.google.com/chromebook/?p=tpm_update"; const char kTimeZoneSettingsLearnMoreURL[] = - "https://support.google.com/chromebook/answer/177871?hl=%s"; + "https://support.google.com/chromebook?p=chromebook_timezone&hl=%s"; #endif // defined(OS_CHROMEOS) #if defined(OS_MACOSX)
diff --git a/chrome/renderer/content_settings_observer_browsertest.cc b/chrome/renderer/content_settings_observer_browsertest.cc index 6713ba9..05d65400 100644 --- a/chrome/renderer/content_settings_observer_browsertest.cc +++ b/chrome/renderer/content_settings_observer_browsertest.cc
@@ -136,10 +136,9 @@ } // Tests that multiple invokations of AllowDOMStorage result in a single IPC. -// Fails due to http://crbug.com/104300 -TEST_F(ContentSettingsObserverBrowserTest, DISABLED_AllowDOMStorage) { +TEST_F(ContentSettingsObserverBrowserTest, AllowDOMStorage) { // Load some HTML, so we have a valid security origin. - LoadHTML("<html></html>"); + LoadHTMLWithUrlOverride("<html></html>", "https://example.com/"); MockContentSettingsObserver observer(view_->GetMainRenderFrame(), registry_.get()); ON_CALL(observer,
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 9ad8110..bd6e954d 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -2224,7 +2224,7 @@ "../browser/android/history_report/delta_file_backend_leveldb_unittest.cc", "../browser/android/history_report/delta_file_commons_unittest.cc", "../browser/android/history_report/usage_reports_buffer_backend_unittest.cc", - "../browser/android/locale/special_locale_handler_unittest.cc", + "../browser/android/locale/locale_template_url_loader_unittest.cc", "../browser/android/tab_web_contents_delegate_android_unittest.cc", # TODO(newt): move this to test_support_unit? @@ -2928,6 +2928,7 @@ "../browser/resource_coordinator/tab_manager_unittest.cc", "../browser/resource_coordinator/tab_manager_web_contents_data_unittest.cc", "../browser/resource_coordinator/tab_metrics_logger_unittest.cc", + "../browser/resource_coordinator/tab_ranker/tab_score_predictor_unittest.cc", # Android does not use the Message Center notification system. "../browser/notifications/message_center_notifications_unittest.cc",
diff --git a/chrome/test/base/test_browser_window.cc b/chrome/test/base/test_browser_window.cc index 4c6c5696..5f721988 100644 --- a/chrome/test/base/test_browser_window.cc +++ b/chrome/test/base/test_browser_window.cc
@@ -115,6 +115,10 @@ return const_cast<TestLocationBar*>(&location_bar_); } +PageActionIconContainer* TestBrowserWindow::GetPageActionIconContainer() { + return nullptr; +} + ToolbarActionsBar* TestBrowserWindow::GetToolbarActionsBar() { return nullptr; }
diff --git a/chrome/test/base/test_browser_window.h b/chrome/test/base/test_browser_window.h index b1e03a13..ac8e358e 100644 --- a/chrome/test/base/test_browser_window.h +++ b/chrome/test/base/test_browser_window.h
@@ -13,6 +13,7 @@ #include "chrome/browser/ui/browser_dialogs.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/ui/location_bar/location_bar.h" +#include "chrome/browser/ui/page_action/page_action_icon_container.h" #include "chrome/common/buildflags.h" #if defined(OS_CHROMEOS) @@ -74,6 +75,7 @@ bool IsFullscreen() const override; bool IsFullscreenBubbleVisible() const override; LocationBar* GetLocationBar() const override; + PageActionIconContainer* GetPageActionIconContainer() override; void SetFocusToLocationBar(bool select_all) override {} void UpdateReloadStopState(bool is_loading, bool force) override {} void UpdateToolbar(content::WebContents* contents) override {}
diff --git a/chrome/test/data/extensions/api_test/service_worker/mime_handler_view/background.js b/chrome/test/data/extensions/api_test/service_worker/mime_handler_view/background.js index 5e22d01d..e698de46 100644 --- a/chrome/test/data/extensions/api_test/service_worker/mime_handler_view/background.js +++ b/chrome/test/data/extensions/api_test/service_worker/mime_handler_view/background.js
@@ -7,14 +7,8 @@ // Called by mime_handler.js at the end of the test: chrome.runtime.onMessage.addListener(function(msg) { chrome.test.assertEq('finish test by checking SW URLs', msg); - chrome.test.assertEq([ - '/page_with_embed.html', - // "/well-known-mime.ics" is loaded by page_with_embed.html, but it should - // not have dispatched the "fetch" event in the Service Worker because it is - // a plugin resource. - '/mime_handler.html', - '/mime_handler.js', - ], seenPathsByServiceWorker, 'expected extension URLs'); + chrome.test.assertFalse( + seenPathsByServiceWorker.includes("/well-known-mime.ics")); chrome.test.notifyPass(); });
diff --git a/chrome/test/data/extensions/api_test/service_worker/mime_handler_view/mime_handler.js b/chrome/test/data/extensions/api_test/service_worker/mime_handler_view/mime_handler.js index e6d4b4a8..b656669 100644 --- a/chrome/test/data/extensions/api_test/service_worker/mime_handler_view/mime_handler.js +++ b/chrome/test/data/extensions/api_test/service_worker/mime_handler_view/mime_handler.js
@@ -8,8 +8,6 @@ var x = new XMLHttpRequest(); x.open('GET', streamInfo.streamUrl); x.onloadend = function() { - chrome.test.assertEq( - 'This is a well-known MIME (text/calendar).\n', x.responseText); chrome.runtime.sendMessage('finish test by checking SW URLs'); }; x.send();
diff --git a/chrome/test/data/local_ntp/local_ntp_browsertest.js b/chrome/test/data/local_ntp/local_ntp_browsertest.js index 3f032d66..6d2aa51 100644 --- a/chrome/test/data/local_ntp/local_ntp_browsertest.js +++ b/chrome/test/data/local_ntp/local_ntp_browsertest.js
@@ -73,6 +73,29 @@ window.chrome.embeddedSearch.newTabPage.mostVisited[0].rid)); }; +/** + * Tests that the GM2 style is applied when the flag is enabled. + */ +test.localNtp.testMDApplied = function() { + // Turn off voice search to avoid reinitializing the speech object + configData.isVoiceSearchEnabled = false; + + configData.isMDUIEnabled = true; + initLocalNTP(/*isGooglePage=*/true); + assertTrue(document.body.classList.contains('md')); +} + +/** + * Tests that the GM2 style is not applied when the flag is disabled. + */ +test.localNtp.testMDNotApplied = function() { + // Turn off voice search to avoid reinitializing the speech object + configData.isVoiceSearchEnabled = false; + + configData.isMDUIEnabled = false; + initLocalNTP(/*isGooglePage=*/true); + assertFalse(document.body.classList.contains('md')); +} // ***************************** HELPER FUNCTIONS ***************************** // Helper functions used in tests.
diff --git a/chromecast/browser/BUILD.gn b/chromecast/browser/BUILD.gn index 34ff693..30f34f0 100644 --- a/chromecast/browser/BUILD.gn +++ b/chromecast/browser/BUILD.gn
@@ -79,6 +79,14 @@ "renderer_prelauncher.h", "service/cast_service_simple.cc", "service/cast_service_simple.h", + "tts/tts_controller.h", + "tts/tts_controller_impl.cc", + "tts/tts_controller_impl.h", + "tts/tts_message_filter.cc", + "tts/tts_message_filter.h", + "tts/tts_platform.cc", + "tts/tts_platform.h", + "tts/tts_platform_stub.cc", "url_request_context_factory.cc", "url_request_context_factory.h", ] @@ -238,8 +246,20 @@ "extensions/api/braille_display_private/braille_display_private_api.h", "extensions/api/history/history_api.cc", "extensions/api/history/history_api.h", + "extensions/api/i18n/i18n_api.cc", + "extensions/api/i18n/i18n_api.h", "extensions/api/identity/identity_api.cc", "extensions/api/identity/identity_api.h", + "extensions/api/module/module.cc", + "extensions/api/module/module.h", + "extensions/api/tts/tts_engine_extension_api.cc", + "extensions/api/tts/tts_engine_extension_api.h", + "extensions/api/tts/tts_engine_extension_observer.cc", + "extensions/api/tts/tts_engine_extension_observer.h", + "extensions/api/tts/tts_extension_api.cc", + "extensions/api/tts/tts_extension_api.h", + "extensions/api/tts/tts_extension_api_constants.cc", + "extensions/api/tts/tts_extension_api_constants.h", "extensions/cast_display_info_provider.cc", "extensions/cast_display_info_provider.h", "extensions/cast_extension_host_delegate.cc", @@ -386,6 +406,7 @@ deps = [ "//base", "//chromecast/base", + "//components/prefs:test_support", "//content/public/browser", "//content/public/common", "//testing/gtest",
diff --git a/chromecast/browser/DEPS b/chromecast/browser/DEPS index 7cdf3460..f2dba8a 100644 --- a/chromecast/browser/DEPS +++ b/chromecast/browser/DEPS
@@ -58,4 +58,10 @@ # TODO(halliwell): Need to re-work this dependency otherwise Cast can't run # with Viz out of process. "+components/viz/service/display/overlay_strategy_underlay_cast.h", + + # No inclusion of WebKit from the browser, other than the ones in + # WebKit/public/{mojom,common}, or the ones that are strictly enum/POD, + # header-only types, and some selected common code. + # Needed for constants for TTS. + "+third_party/blink/public/platform/web_speech_synthesis_constants.h", ]
diff --git a/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/CastWebContentsComponentTest.java b/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/CastWebContentsComponentTest.java index 2cd0801..095ba70 100644 --- a/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/CastWebContentsComponentTest.java +++ b/chromecast/browser/android/junit/src/org/chromium/chromecast/shell/CastWebContentsComponentTest.java
@@ -150,12 +150,6 @@ Assume.assumeFalse(BuildConfig.DISPLAY_WEB_CONTENTS_IN_SERVICE); Assume.assumeFalse(BuildConfig.ENABLE_CAST_FRAGMENT); - BroadcastReceiver receiver = Mockito.mock(BroadcastReceiver.class); - IntentFilter intentFilter = - new IntentFilter(CastWebContentsIntentUtils.ACTION_ENABLE_TOUCH_INPUT); - LocalBroadcastManager.getInstance(ContextUtils.getApplicationContext()) - .registerReceiver(receiver, intentFilter); - CastWebContentsComponent component = new CastWebContentsComponent(INSTANCE_ID, null, null, null, false, false); component.enableTouchInput(true); @@ -165,9 +159,6 @@ Intent intent = mShadowActivity.getNextStartedActivity(); Assert.assertTrue(CastWebContentsIntentUtils.isTouchable(intent)); - - LocalBroadcastManager.getInstance(ContextUtils.getApplicationContext()) - .unregisterReceiver(receiver); } @Test @@ -175,12 +166,6 @@ Assume.assumeFalse(BuildConfig.DISPLAY_WEB_CONTENTS_IN_SERVICE); Assume.assumeFalse(BuildConfig.ENABLE_CAST_FRAGMENT); - BroadcastReceiver receiver = Mockito.mock(BroadcastReceiver.class); - IntentFilter intentFilter = - new IntentFilter(CastWebContentsIntentUtils.ACTION_ENABLE_TOUCH_INPUT); - LocalBroadcastManager.getInstance(ContextUtils.getApplicationContext()) - .registerReceiver(receiver, intentFilter); - CastWebContentsComponent component = new CastWebContentsComponent(INSTANCE_ID, null, null, null, false, false); component.enableTouchInput(false); @@ -190,9 +175,6 @@ Intent intent = mShadowActivity.getNextStartedActivity(); Assert.assertFalse(CastWebContentsIntentUtils.isTouchable(intent)); - - LocalBroadcastManager.getInstance(ContextUtils.getApplicationContext()) - .unregisterReceiver(receiver); } @Test
diff --git a/chromecast/browser/cast_browser_main_parts.cc b/chromecast/browser/cast_browser_main_parts.cc index bdba46a0..a6db318d2 100644 --- a/chromecast/browser/cast_browser_main_parts.cc +++ b/chromecast/browser/cast_browser_main_parts.cc
@@ -95,6 +95,7 @@ #endif #if BUILDFLAG(ENABLE_CHROMECAST_EXTENSIONS) +#include "chromecast/browser/extensions/api/tts/tts_extension_api.h" #include "chromecast/browser/extensions/cast_extension_system.h" #include "chromecast/browser/extensions/cast_extensions_browser_client.h" #include "chromecast/browser/extensions/cast_prefs.h" @@ -563,6 +564,11 @@ extension_system->Init(); extensions::ExtensionPrefs::Get(cast_browser_process_->browser_context()); + + // Force TTS to be available. It's lazy and this makes it eager. + // TODO(rdaum): There has to be a better way. + extensions::TtsAPI::GetFactoryInstance()->Get( + cast_browser_process_->browser_context()); #endif // Initializing metrics service and network delegates must happen after cast
diff --git a/chromecast/browser/cast_content_browser_client.cc b/chromecast/browser/cast_content_browser_client.cc index 822a8f1..6bd267bb 100644 --- a/chromecast/browser/cast_content_browser_client.cc +++ b/chromecast/browser/cast_content_browser_client.cc
@@ -36,6 +36,8 @@ #include "chromecast/browser/media/media_caps_impl.h" #include "chromecast/browser/renderer_config.h" #include "chromecast/browser/service/cast_service_simple.h" +#include "chromecast/browser/tts/tts_controller.h" +#include "chromecast/browser/tts/tts_message_filter.h" #include "chromecast/browser/url_request_context_factory.h" #include "chromecast/common/global_descriptors.h" #include "chromecast/media/audio/cast_audio_manager.h" @@ -316,6 +318,7 @@ render_process_id, browser_context)); host->AddFilter(new extensions::ExtensionsGuestViewMessageFilter( render_process_id, browser_context)); + host->AddFilter(new TtsMessageFilter(host->GetBrowserContext())); #endif }
diff --git a/chromecast/browser/extensions/api/i18n/i18n_api.cc b/chromecast/browser/extensions/api/i18n/i18n_api.cc new file mode 100644 index 0000000..6163c6c --- /dev/null +++ b/chromecast/browser/extensions/api/i18n/i18n_api.cc
@@ -0,0 +1,29 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromecast/browser/extensions/api/i18n/i18n_api.h" + +#include <algorithm> +#include <string> +#include <vector> + +#include "base/lazy_instance.h" +#include "base/strings/string_piece.h" +#include "base/strings/string_split.h" +#include "chromecast/common/extensions_api/i18n.h" +#include "components/prefs/pref_service.h" + +namespace GetAcceptLanguages = extensions::cast::api::i18n::GetAcceptLanguages; + +namespace extensions { + +ExtensionFunction::ResponseAction I18nGetAcceptLanguagesFunction::Run() { + std::vector<std::string> accept_languages; + + // TODO(rmrossi) Stubbed for now. + return RespondNow( + ArgumentList(GetAcceptLanguages::Results::Create(accept_languages))); +} + +} // namespace extensions
diff --git a/chromecast/browser/extensions/api/i18n/i18n_api.h b/chromecast/browser/extensions/api/i18n/i18n_api.h new file mode 100644 index 0000000..b7301ca --- /dev/null +++ b/chromecast/browser/extensions/api/i18n/i18n_api.h
@@ -0,0 +1,20 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMECAST_BROWSER_EXTENSIONS_API_I18N_I18N_API_H_ +#define CHROMECAST_BROWSER_EXTENSIONS_API_I18N_I18N_API_H_ + +#include "extensions/browser/extension_function.h" + +namespace extensions { + +class I18nGetAcceptLanguagesFunction : public UIThreadExtensionFunction { + ~I18nGetAcceptLanguagesFunction() override {} + ResponseAction Run() override; + DECLARE_EXTENSION_FUNCTION("i18n.getAcceptLanguages", I18N_GETACCEPTLANGUAGES) +}; + +} // namespace extensions + +#endif // CHROMECAST_BROWSER_EXTENSIONS_API_I18N_I18N_API_H_
diff --git a/chromecast/browser/extensions/api/module/module.cc b/chromecast/browser/extensions/api/module/module.cc new file mode 100644 index 0000000..ec348412c --- /dev/null +++ b/chromecast/browser/extensions/api/module/module.cc
@@ -0,0 +1,64 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromecast/browser/extensions/api/module/module.h" + +#include <memory> +#include <string> + +#include "base/values.h" +#include "extensions/browser/extension_prefs.h" +#include "extensions/browser/extension_system.h" +#include "extensions/browser/extension_util.h" +#include "extensions/common/manifest_url_handlers.h" + +namespace extensions { + +namespace extension { + +namespace { + +// A preference for storing the extension's update URL data. If not empty, the +// the ExtensionUpdater will append a ap= parameter to the URL when checking if +// a new version of the extension is available. +const char kUpdateURLData[] = "update_url_data"; + +} // namespace + +std::string GetUpdateURLData(const ExtensionPrefs* prefs, + const std::string& extension_id) { + std::string data; + prefs->ReadPrefAsString(extension_id, kUpdateURLData, &data); + return data; +} + +} // namespace extension + +ExtensionFunction::ResponseAction ExtensionSetUpdateUrlDataFunction::Run() { + std::string data; + EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &data)); + + if (ManifestURL::UpdatesFromGallery(extension())) { + return RespondNow(Error(kUnknownErrorDoNotUse)); + } + + ExtensionPrefs::Get(browser_context()) + ->UpdateExtensionPref(extension_id(), extension::kUpdateURLData, + std::make_unique<base::Value>(data)); + return RespondNow(NoArguments()); +} + +ExtensionFunction::ResponseAction +ExtensionIsAllowedIncognitoAccessFunction::Run() { + return RespondNow(OneArgument(std::make_unique<base::Value>( + util::IsIncognitoEnabled(extension_id(), browser_context())))); +} + +ExtensionFunction::ResponseAction +ExtensionIsAllowedFileSchemeAccessFunction::Run() { + // Deny file scheme access. + return RespondNow(OneArgument(std::make_unique<base::Value>(false))); +} + +} // namespace extensions
diff --git a/chromecast/browser/extensions/api/module/module.h b/chromecast/browser/extensions/api/module/module.h new file mode 100644 index 0000000..145ba66f --- /dev/null +++ b/chromecast/browser/extensions/api/module/module.h
@@ -0,0 +1,59 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMECAST_BROWSER_EXTENSIONS_API_MODULE_MODULE_H_ +#define CHROMECAST_BROWSER_EXTENSIONS_API_MODULE_MODULE_H_ + +#include "extensions/browser/extension_function.h" + +namespace extensions { +class ExtensionPrefs; + +namespace extension { +// Return the extension's update URL data, if any. +std::string GetUpdateURLData(const ExtensionPrefs* prefs, + const std::string& extension_id); +} // namespace extension + +class ExtensionSetUpdateUrlDataFunction : public UIThreadExtensionFunction { + public: + DECLARE_EXTENSION_FUNCTION("extension.setUpdateUrlData", + EXTENSION_SETUPDATEURLDATA) + + protected: + ~ExtensionSetUpdateUrlDataFunction() override {} + + // ExtensionFunction: + ResponseAction Run() override; +}; + +class ExtensionIsAllowedIncognitoAccessFunction + : public UIThreadExtensionFunction { + public: + DECLARE_EXTENSION_FUNCTION("extension.isAllowedIncognitoAccess", + EXTENSION_ISALLOWEDINCOGNITOACCESS) + + protected: + ~ExtensionIsAllowedIncognitoAccessFunction() override {} + + // ExtensionFunction: + ResponseAction Run() override; +}; + +class ExtensionIsAllowedFileSchemeAccessFunction + : public UIThreadExtensionFunction { + public: + DECLARE_EXTENSION_FUNCTION("extension.isAllowedFileSchemeAccess", + EXTENSION_ISALLOWEDFILESCHEMEACCESS) + + protected: + ~ExtensionIsAllowedFileSchemeAccessFunction() override {} + + // ExtensionFunction: + ResponseAction Run() override; +}; + +} // namespace extensions + +#endif // CHROMECAST_BROWSER_EXTENSIONS_API_MODULE_MODULE_H_
diff --git a/chromecast/browser/extensions/api/tts/tts_engine_extension_api.cc b/chromecast/browser/extensions/api/tts/tts_engine_extension_api.cc new file mode 100644 index 0000000..d98b872 --- /dev/null +++ b/chromecast/browser/extensions/api/tts/tts_engine_extension_api.cc
@@ -0,0 +1,400 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from +// chromecast/browser/tts/extension_api. +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#include "chromecast/browser/extensions/api/tts/tts_engine_extension_api.h" + +#include <stddef.h> +#include <string> +#include <utility> + +#include "base/json/json_writer.h" +#include "base/strings/utf_string_conversions.h" +#include "base/values.h" +#include "build/build_config.h" +#include "chromecast/browser/extensions/api/tts/tts_engine_extension_observer.h" +#include "chromecast/browser/extensions/api/tts/tts_extension_api.h" +#include "chromecast/browser/extensions/api/tts/tts_extension_api_constants.h" +#include "chromecast/browser/tts/tts_controller.h" +#include "chromecast/common/extensions_api/tts/tts_engine_manifest_handler.h" +#include "content/public/browser/render_frame_host.h" +#include "content/public/browser/render_process_host.h" +#include "content/public/browser/web_contents.h" +#include "content/public/common/console_message_level.h" +#include "extensions/browser/event_router.h" +#include "extensions/browser/extension_host.h" +#include "extensions/browser/extension_registry.h" +#include "extensions/browser/extension_system.h" +#include "extensions/browser/process_manager.h" +#include "extensions/common/extension.h" +#include "extensions/common/extension_set.h" +#include "net/base/network_change_notifier.h" +#include "ui/base/l10n/l10n_util.h" + +using extensions::EventRouter; +using extensions::Extension; +using extensions::ExtensionSystem; + +namespace constants = tts_extension_api_constants; + +namespace tts_engine_events { +const char kOnSpeak[] = "ttsEngine.onSpeak"; +const char kOnStop[] = "ttsEngine.onStop"; +const char kOnPause[] = "ttsEngine.onPause"; +const char kOnResume[] = "ttsEngine.onResume"; +}; // namespace tts_engine_events + +namespace { + +void WarnIfMissingPauseOrResumeListener( + content::BrowserContext* browser_context, + EventRouter* event_router, + std::string extension_id) { + bool has_onpause = event_router->ExtensionHasEventListener( + extension_id, tts_engine_events::kOnPause); + bool has_onresume = event_router->ExtensionHasEventListener( + extension_id, tts_engine_events::kOnResume); + if (has_onpause == has_onresume) + return; + + extensions::ExtensionHost* host = + extensions::ProcessManager::Get(browser_context) + ->GetBackgroundHostForExtension(extension_id); + host->host_contents()->GetMainFrame()->AddMessageToConsole( + content::CONSOLE_MESSAGE_LEVEL_WARNING, + constants::kErrorMissingPauseOrResume); +} + +const std::vector<extensions::TtsVoice>* GetVoicesInternal( + content::BrowserContext* context, + const extensions::Extension* extension) { + const std::vector<extensions::TtsVoice>* voices = + TtsEngineExtensionObserver::GetInstance(context)->GetRuntimeVoices( + extension->id()); + return voices ? voices : extensions::TtsVoices::GetTtsVoices(extension); +} + +} // namespace + +TtsExtensionEngine* TtsExtensionEngine::GetInstance() { + return base::Singleton<TtsExtensionEngine>::get(); +} + +void TtsExtensionEngine::GetVoices(content::BrowserContext* browser_context, + std::vector<VoiceData>* out_voices) { + EventRouter* event_router = EventRouter::Get(browser_context); + DCHECK(event_router); + + bool is_offline = (net::NetworkChangeNotifier::GetConnectionType() == + net::NetworkChangeNotifier::CONNECTION_NONE); + + const extensions::ExtensionSet& extensions = + extensions::ExtensionRegistry::Get(browser_context)->enabled_extensions(); + extensions::ExtensionSet::const_iterator iter; + for (iter = extensions.begin(); iter != extensions.end(); ++iter) { + const Extension* extension = iter->get(); + + if (!event_router->ExtensionHasEventListener(extension->id(), + tts_engine_events::kOnSpeak) || + !event_router->ExtensionHasEventListener(extension->id(), + tts_engine_events::kOnStop)) { + continue; + } + + const std::vector<extensions::TtsVoice>* tts_voices = + GetVoicesInternal(browser_context, extension); + if (!tts_voices) + continue; + + for (size_t i = 0; i < tts_voices->size(); ++i) { + const extensions::TtsVoice& voice = tts_voices->at(i); + + // Don't return remote voices when the system is offline. + if (voice.remote && is_offline) + continue; + + out_voices->push_back(VoiceData()); + VoiceData& result_voice = out_voices->back(); + + result_voice.native = false; + result_voice.name = voice.voice_name; + result_voice.lang = voice.lang; + result_voice.remote = voice.remote; + result_voice.extension_id = extension->id(); + if (voice.gender == constants::kGenderMale) + result_voice.gender = TTS_GENDER_MALE; + else if (voice.gender == constants::kGenderFemale) + result_voice.gender = TTS_GENDER_FEMALE; + else + result_voice.gender = TTS_GENDER_NONE; + + for (std::set<std::string>::const_iterator iter = + voice.event_types.begin(); + iter != voice.event_types.end(); ++iter) { + result_voice.events.insert(TtsEventTypeFromString(*iter)); + } + + // If the extension sends end events, the controller will handle + // queueing and send interrupted and cancelled events. + if (voice.event_types.find(constants::kEventTypeEnd) != + voice.event_types.end()) { + result_voice.events.insert(TTS_EVENT_CANCELLED); + result_voice.events.insert(TTS_EVENT_INTERRUPTED); + } + } + } +} + +void TtsExtensionEngine::Speak(Utterance* utterance, const VoiceData& voice) { + // See if the engine supports the "end" event; if so, we can keep the + // utterance around and track it. If not, we're finished with this + // utterance now. + bool sends_end_event = voice.events.find(TTS_EVENT_END) != voice.events.end(); + + std::unique_ptr<base::ListValue> args(new base::ListValue()); + args->AppendString(utterance->text()); + + // Pass through most options to the speech engine, but remove some + // that are handled internally. + std::unique_ptr<base::DictionaryValue> options( + static_cast<base::DictionaryValue*>(utterance->options()->DeepCopy())); + if (options->HasKey(constants::kRequiredEventTypesKey)) + options->Remove(constants::kRequiredEventTypesKey, NULL); + if (options->HasKey(constants::kDesiredEventTypesKey)) + options->Remove(constants::kDesiredEventTypesKey, NULL); + if (sends_end_event && options->HasKey(constants::kEnqueueKey)) + options->Remove(constants::kEnqueueKey, NULL); + if (options->HasKey(constants::kSrcIdKey)) + options->Remove(constants::kSrcIdKey, NULL); + if (options->HasKey(constants::kIsFinalEventKey)) + options->Remove(constants::kIsFinalEventKey, NULL); + if (options->HasKey(constants::kOnEventKey)) + options->Remove(constants::kOnEventKey, NULL); + + // Get the volume, pitch, and rate, but only if they weren't already in + // the options. TODO(dmazzoni): these shouldn't be redundant. + // http://crbug.com/463264 + if (!options->HasKey(constants::kRateKey)) { + options->SetDouble(constants::kRateKey, + utterance->continuous_parameters().rate); + } + if (!options->HasKey(constants::kPitchKey)) { + options->SetDouble(constants::kPitchKey, + utterance->continuous_parameters().pitch); + } + if (!options->HasKey(constants::kVolumeKey)) { + options->SetDouble(constants::kVolumeKey, + utterance->continuous_parameters().volume); + } + + // Add the voice name and language to the options if they're not + // already there, since they might have been picked by the TTS controller + // rather than directly by the client that requested the speech. + if (!options->HasKey(constants::kVoiceNameKey)) + options->SetString(constants::kVoiceNameKey, voice.name); + if (!options->HasKey(constants::kLangKey)) + options->SetString(constants::kLangKey, voice.lang); + + args->Append(std::move(options)); + args->AppendInteger(utterance->id()); + + std::string json; + base::JSONWriter::Write(*args, &json); + + auto event = std::make_unique<extensions::Event>( + extensions::events::TTS_ENGINE_ON_SPEAK, tts_engine_events::kOnSpeak, + std::move(args), utterance->browser_context()); + EventRouter::Get(utterance->browser_context()) + ->DispatchEventToExtension(utterance->extension_id(), std::move(event)); +} + +void TtsExtensionEngine::Stop(Utterance* utterance) { + std::unique_ptr<base::ListValue> args(new base::ListValue()); + auto event = std::make_unique<extensions::Event>( + extensions::events::TTS_ENGINE_ON_STOP, tts_engine_events::kOnStop, + std::move(args), utterance->browser_context()); + EventRouter::Get(utterance->browser_context()) + ->DispatchEventToExtension(utterance->extension_id(), std::move(event)); +} + +void TtsExtensionEngine::Pause(Utterance* utterance) { + std::unique_ptr<base::ListValue> args(new base::ListValue()); + auto event = std::make_unique<extensions::Event>( + extensions::events::TTS_ENGINE_ON_PAUSE, tts_engine_events::kOnPause, + std::move(args), utterance->browser_context()); + EventRouter* event_router = EventRouter::Get(utterance->browser_context()); + std::string id = utterance->extension_id(); + event_router->DispatchEventToExtension(id, std::move(event)); + WarnIfMissingPauseOrResumeListener(utterance->browser_context(), event_router, + id); +} + +void TtsExtensionEngine::Resume(Utterance* utterance) { + std::unique_ptr<base::ListValue> args(new base::ListValue()); + auto event = std::make_unique<extensions::Event>( + extensions::events::TTS_ENGINE_ON_RESUME, tts_engine_events::kOnResume, + std::move(args), utterance->browser_context()); + EventRouter* event_router = EventRouter::Get(utterance->browser_context()); + std::string id = utterance->extension_id(); + event_router->DispatchEventToExtension(id, std::move(event)); + WarnIfMissingPauseOrResumeListener(utterance->browser_context(), event_router, + id); +} + +bool TtsExtensionEngine::LoadBuiltInTtsExtension( + content::BrowserContext* browser_context) { +#if defined(OS_CHROMEOS) + // Check to see if the engine was previously loaded. + if (TtsEngineExtensionObserver::GetInstance(browser_context) + ->SawExtensionLoad(extension_misc::kSpeechSynthesisExtensionId, + true)) { + return false; + } + + // Load the component extension into this profile. + Profile* profile = Profile::FromBrowserContext(browser_context); + ExtensionService* extension_service = + extensions::ExtensionSystem::Get(profile)->extension_service(); + DCHECK(extension_service); + extension_service->component_loader()->AddChromeOsSpeechSynthesisExtension(); + return true; +#else + return false; +#endif +} + +ExtensionFunction::ResponseAction +ExtensionTtsEngineUpdateVoicesFunction::Run() { + base::ListValue* voices_data = nullptr; + EXTENSION_FUNCTION_VALIDATE(args_->GetList(0, &voices_data)); + auto tts_voices = std::make_unique<extensions::TtsVoices>(); + const char* error = nullptr; + for (size_t i = 0; i < voices_data->GetSize(); i++) { + extensions::TtsVoice voice; + base::DictionaryValue* voice_data = nullptr; + voices_data->GetDictionary(i, &voice_data); + + // Note partial validation of these attributes occurs based on tts engine's + // json schema (e.g. for data type matching). The missing checks follow + // similar checks in manifest parsing. + if (voice_data->HasKey(constants::kVoiceNameKey)) + voice_data->GetString(constants::kVoiceNameKey, &voice.voice_name); + if (voice_data->HasKey(constants::kLangKey)) { + voice_data->GetString(constants::kLangKey, &voice.lang); + if (!l10n_util::IsValidLocaleSyntax(voice.lang)) { + error = constants::kErrorInvalidLang; + continue; + } + } + if (voice_data->HasKey(constants::kGenderKey)) + voice_data->GetString(constants::kGenderKey, &voice.gender); + if (voice_data->HasKey(constants::kRemoteKey)) + voice_data->GetBoolean(constants::kRemoteKey, &voice.remote); + if (voice_data->HasKey(constants::kExtensionIdKey)) { + // Allow this for clients who might have used |chrome.tts.getVoices| to + // update existing voices. However, trying to update the voice of another + // extension should trigger an error. + std::string extension_id; + voice_data->GetString(constants::kExtensionIdKey, &extension_id); + if (extension()->id() != extension_id) { + error = constants::kErrorExtensionIdMismatch; + continue; + } + } + base::ListValue* event_types = nullptr; + if (voice_data->HasKey(constants::kEventTypesKey)) + voice_data->GetList(constants::kEventTypesKey, &event_types); + + if (event_types) { + for (size_t j = 0; j < event_types->GetSize(); j++) { + std::string event_type; + event_types->GetString(j, &event_type); + voice.event_types.insert(event_type); + } + } + + tts_voices->voices.push_back(voice); + } + + TtsEngineExtensionObserver::GetInstance(browser_context()) + ->SetRuntimeVoices(std::move(tts_voices), extension()->id()); + + if (error) + return RespondNow(Error(error)); + + return RespondNow(NoArguments()); +} + +ExtensionFunction::ResponseAction +ExtensionTtsEngineSendTtsEventFunction::Run() { + int utterance_id = 0; + EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(0, &utterance_id)); + + base::DictionaryValue* event = nullptr; + EXTENSION_FUNCTION_VALIDATE(args_->GetDictionary(1, &event)); + + std::string event_type; + EXTENSION_FUNCTION_VALIDATE( + event->GetString(constants::kEventTypeKey, &event_type)); + + int char_index = 0; + if (event->HasKey(constants::kCharIndexKey)) { + EXTENSION_FUNCTION_VALIDATE( + event->GetInteger(constants::kCharIndexKey, &char_index)); + } + + // Make sure the extension has included this event type in its manifest. + bool event_type_allowed = false; + const std::vector<extensions::TtsVoice>* tts_voices = + GetVoicesInternal(browser_context(), extension()); + if (!tts_voices) + return RespondNow(Error(constants::kErrorUndeclaredEventType)); + + for (size_t i = 0; i < tts_voices->size(); i++) { + const extensions::TtsVoice& voice = tts_voices->at(i); + if (voice.event_types.find(event_type) != voice.event_types.end()) { + event_type_allowed = true; + break; + } + } + if (!event_type_allowed) + return RespondNow(Error(constants::kErrorUndeclaredEventType)); + + TtsController* controller = TtsController::GetInstance(); + if (event_type == constants::kEventTypeStart) { + controller->OnTtsEvent(utterance_id, TTS_EVENT_START, char_index, + std::string()); + } else if (event_type == constants::kEventTypeEnd) { + controller->OnTtsEvent(utterance_id, TTS_EVENT_END, char_index, + std::string()); + } else if (event_type == constants::kEventTypeWord) { + controller->OnTtsEvent(utterance_id, TTS_EVENT_WORD, char_index, + std::string()); + } else if (event_type == constants::kEventTypeSentence) { + controller->OnTtsEvent(utterance_id, TTS_EVENT_SENTENCE, char_index, + std::string()); + } else if (event_type == constants::kEventTypeMarker) { + controller->OnTtsEvent(utterance_id, TTS_EVENT_MARKER, char_index, + std::string()); + } else if (event_type == constants::kEventTypeError) { + std::string error_message; + event->GetString(constants::kErrorMessageKey, &error_message); + controller->OnTtsEvent(utterance_id, TTS_EVENT_ERROR, char_index, + error_message); + } else if (event_type == constants::kEventTypePause) { + controller->OnTtsEvent(utterance_id, TTS_EVENT_PAUSE, char_index, + std::string()); + } else if (event_type == constants::kEventTypeResume) { + controller->OnTtsEvent(utterance_id, TTS_EVENT_RESUME, char_index, + std::string()); + } else { + EXTENSION_FUNCTION_VALIDATE(false); + } + + return RespondNow(NoArguments()); +}
diff --git a/chromecast/browser/extensions/api/tts/tts_engine_extension_api.h b/chromecast/browser/extensions/api/tts/tts_engine_extension_api.h new file mode 100644 index 0000000..de2ea41 --- /dev/null +++ b/chromecast/browser/extensions/api/tts/tts_engine_extension_api.h
@@ -0,0 +1,68 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from +// /chrome/browser/speech/extension_api +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#ifndef CHROMECAST_BROWSER_EXTENSIONS_API_TTS_TTS_ENGINE_EXTENSION_API_H_ +#define CHROMECAST_BROWSER_EXTENSIONS_API_TTS_TTS_ENGINE_EXTENSION_API_H_ + +#include <vector> + +#include "base/memory/singleton.h" +#include "chromecast/browser/tts/tts_controller.h" +#include "extensions/browser/extension_function.h" + +class Utterance; + +namespace content { +class BrowserContext; +} + +namespace tts_engine_events { +extern const char kOnSpeak[]; +extern const char kOnStop[]; +extern const char kOnPause[]; +extern const char kOnResume[]; +} // namespace tts_engine_events + +// TtsEngineDelegate implementation used by TtsController. +class TtsExtensionEngine : public TtsEngineDelegate { + public: + static TtsExtensionEngine* GetInstance(); + + // Overridden from TtsEngineDelegate: + void GetVoices(content::BrowserContext* browser_context, + std::vector<VoiceData>* out_voices) override; + void Speak(Utterance* utterance, const VoiceData& voice) override; + void Stop(Utterance* utterance) override; + void Pause(Utterance* utterance) override; + void Resume(Utterance* utterance) override; + bool LoadBuiltInTtsExtension( + content::BrowserContext* browser_context) override; +}; + +// Function that allows tts engines to update its list of supported voices at +// runtime. +class ExtensionTtsEngineUpdateVoicesFunction + : public UIThreadExtensionFunction { + private: + ~ExtensionTtsEngineUpdateVoicesFunction() override {} + ResponseAction Run() override; + DECLARE_EXTENSION_FUNCTION("ttsEngine.updateVoices", TTSENGINE_UPDATEVOICES) +}; + +// Hidden/internal extension function used to allow TTS engine extensions +// to send events back to the client that's calling tts.speak(). +class ExtensionTtsEngineSendTtsEventFunction + : public UIThreadExtensionFunction { + private: + ~ExtensionTtsEngineSendTtsEventFunction() override {} + ResponseAction Run() override; + DECLARE_EXTENSION_FUNCTION("ttsEngine.sendTtsEvent", TTSENGINE_SENDTTSEVENT) +}; + +#endif // CHROMECAST_BROWSER_EXTENSIONS_API_TTS_TTS_ENGINE_EXTENSION_API_H_
diff --git a/chromecast/browser/extensions/api/tts/tts_engine_extension_observer.cc b/chromecast/browser/extensions/api/tts/tts_engine_extension_observer.cc new file mode 100644 index 0000000..fc6441f --- /dev/null +++ b/chromecast/browser/extensions/api/tts/tts_engine_extension_observer.cc
@@ -0,0 +1,151 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from +// /chrome/browser/speech/extension_api +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#include "chromecast/browser/extensions/api/tts/tts_engine_extension_observer.h" + +#include "base/logging.h" +#include "base/memory/singleton.h" +#include "chromecast/browser/extensions/api/tts/tts_engine_extension_api.h" +#include "chromecast/browser/tts/tts_controller.h" +#include "chromecast/common/extensions_api/tts/tts_engine_manifest_handler.h" +#include "components/keyed_service/content/browser_context_dependency_manager.h" +#include "components/keyed_service/content/browser_context_keyed_service_factory.h" +#include "components/keyed_service/core/keyed_service.h" +#include "extensions/browser/event_router.h" +#include "extensions/browser/event_router_factory.h" + +// Factory to load one instance of TtsExtensionLoaderChromeOs per profile. +class TtsEngineExtensionObserverFactory + : public BrowserContextKeyedServiceFactory { + public: + static TtsEngineExtensionObserver* GetForBrowserContext( + content::BrowserContext* browser_context) { + return static_cast<TtsEngineExtensionObserver*>( + GetInstance()->GetServiceForBrowserContext(browser_context, true)); + } + + static TtsEngineExtensionObserverFactory* GetInstance() { + return base::Singleton<TtsEngineExtensionObserverFactory>::get(); + } + + private: + friend struct base::DefaultSingletonTraits<TtsEngineExtensionObserverFactory>; + + TtsEngineExtensionObserverFactory() + : BrowserContextKeyedServiceFactory( + "TtsEngineExtensionObserver", + BrowserContextDependencyManager::GetInstance()) { + DependsOn(extensions::EventRouterFactory::GetInstance()); + } + + ~TtsEngineExtensionObserverFactory() override {} + + content::BrowserContext* GetBrowserContextToUse( + content::BrowserContext* context) const override { + // If given an incognito profile (including the Chrome OS login + // profile), share the service with the original profile. + // TODO(rdaum): FIXME -- use this for chrome/chromeos, but for cast, etc. + // just use original profile return + // chrome::GetBrowserContextRedirectedInIncognito(context); + return context; + } + + KeyedService* BuildServiceInstanceFor( + content::BrowserContext* browser_context) const override { + return new TtsEngineExtensionObserver(browser_context); + } +}; + +TtsEngineExtensionObserver* TtsEngineExtensionObserver::GetInstance( + content::BrowserContext* browser_context) { + return TtsEngineExtensionObserverFactory::GetInstance()->GetForBrowserContext( + browser_context); +} + +TtsEngineExtensionObserver::TtsEngineExtensionObserver( + content::BrowserContext* browser_context) + : extension_registry_observer_(this), browser_context_(browser_context) { + extension_registry_observer_.Add( + extensions::ExtensionRegistry::Get(browser_context_)); + + extensions::EventRouter* event_router = + extensions::EventRouter::Get(browser_context_); + DCHECK(event_router); + event_router->RegisterObserver(this, tts_engine_events::kOnSpeak); + event_router->RegisterObserver(this, tts_engine_events::kOnStop); +} + +TtsEngineExtensionObserver::~TtsEngineExtensionObserver() {} + +bool TtsEngineExtensionObserver::SawExtensionLoad( + const std::string& extension_id, + bool update) { + bool previously_loaded = + engine_extension_ids_.find(extension_id) != engine_extension_ids_.end(); + + if (update) + engine_extension_ids_.insert(extension_id); + + return previously_loaded; +} + +const std::vector<extensions::TtsVoice>* +TtsEngineExtensionObserver::GetRuntimeVoices(const std::string extension_id) { + auto it = extension_id_to_runtime_voices_.find(extension_id); + if (it == extension_id_to_runtime_voices_.end()) + return nullptr; + + return &it->second->voices; +} + +void TtsEngineExtensionObserver::SetRuntimeVoices( + std::unique_ptr<extensions::TtsVoices> tts_voices, + const std::string extension_id) { + extension_id_to_runtime_voices_[extension_id] = std::move(tts_voices); + TtsController::GetInstance()->VoicesChanged(); +} + +void TtsEngineExtensionObserver::Shutdown() { + extensions::EventRouter::Get(browser_context_)->UnregisterObserver(this); +} + +bool TtsEngineExtensionObserver::IsLoadedTtsEngine( + const std::string& extension_id) { + extensions::EventRouter* event_router = + extensions::EventRouter::Get(browser_context_); + DCHECK(event_router); + if (event_router->ExtensionHasEventListener(extension_id, + tts_engine_events::kOnSpeak) && + event_router->ExtensionHasEventListener(extension_id, + tts_engine_events::kOnStop)) { + return true; + } + + return false; +} + +void TtsEngineExtensionObserver::OnListenerAdded( + const extensions::EventListenerInfo& details) { + if (!IsLoadedTtsEngine(details.extension_id)) + return; + + TtsController::GetInstance()->VoicesChanged(); + engine_extension_ids_.insert(details.extension_id); +} + +void TtsEngineExtensionObserver::OnExtensionUnloaded( + content::BrowserContext* browser_context, + const extensions::Extension* extension, + extensions::UnloadedExtensionReason reason) { + size_t erase_count = 0; + erase_count += engine_extension_ids_.erase(extension->id()); + erase_count += extension_id_to_runtime_voices_.erase(extension->id()); + if (erase_count > 0) + TtsController::GetInstance()->VoicesChanged(); +}
diff --git a/chromecast/browser/extensions/api/tts/tts_engine_extension_observer.h b/chromecast/browser/extensions/api/tts/tts_engine_extension_observer.h new file mode 100644 index 0000000..496f6e8 --- /dev/null +++ b/chromecast/browser/extensions/api/tts/tts_engine_extension_observer.h
@@ -0,0 +1,88 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from +// /chrome/browser/speech/extension_api +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#ifndef CHROMECAST_BROWSER_EXTENSIONS_API_TTS_TTS_ENGINE_EXTENSION_OBSERVER_H_ +#define CHROMECAST_BROWSER_EXTENSIONS_API_TTS_TTS_ENGINE_EXTENSION_OBSERVER_H_ + +#include "base/macros.h" +#include "base/scoped_observer.h" +#include "components/keyed_service/core/keyed_service.h" +#include "extensions/browser/event_router.h" +#include "extensions/browser/extension_registry.h" +#include "extensions/browser/extension_registry_observer.h" + +namespace content { +class BrowserContext; +} // namespace content + +namespace extensions { +struct TtsVoice; +struct TtsVoices; +}; // namespace extensions + +// BrowserContext-keyed class that observes the extension registry to determine +// load of extension-based tts engines. +class TtsEngineExtensionObserver + : public KeyedService, + public extensions::EventRouter::Observer, + public extensions::ExtensionRegistryObserver { + public: + static TtsEngineExtensionObserver* GetInstance( + content::BrowserContext* browser_context); + + // Returns if this observer saw the given extension load. Adds |extension_id| + // as loaded immediately if |update| is set to true. + bool SawExtensionLoad(const std::string& extension_id, bool update); + + // Gets the currently loaded TTS extension ids. + const std::set<std::string> GetTtsExtensions(); + + // Gets voices for |extension_id| updated through TtsEngine.updateVoices. + const std::vector<extensions::TtsVoice>* GetRuntimeVoices( + const std::string extension_id); + + // Called to update the voices list for the given extension. This overrides + // voices declared in the extension manifest. + void SetRuntimeVoices(std::unique_ptr<extensions::TtsVoices> tts_voices, + const std::string extension_id); + + // Implementation of KeyedService. + void Shutdown() override; + + // Implementation of extensions::EventRouter::Observer. + void OnListenerAdded(const extensions::EventListenerInfo& details) override; + + // extensions::ExtensionRegistryObserver overrides. + void OnExtensionUnloaded(content::BrowserContext* browser_context, + const extensions::Extension* extension, + extensions::UnloadedExtensionReason reason) override; + + private: + explicit TtsEngineExtensionObserver(content::BrowserContext* browser_context); + ~TtsEngineExtensionObserver() override; + + bool IsLoadedTtsEngine(const std::string& extension_id); + + ScopedObserver<extensions::ExtensionRegistry, + extensions::ExtensionRegistryObserver> + extension_registry_observer_; + + content::BrowserContext* browser_context_; + + std::set<std::string> engine_extension_ids_; + + std::map<std::string, std::unique_ptr<extensions::TtsVoices>> + extension_id_to_runtime_voices_; + + friend class TtsEngineExtensionObserverFactory; + + DISALLOW_COPY_AND_ASSIGN(TtsEngineExtensionObserver); +}; + +#endif // CHROMECAST_BROWSER_EXTENSIONS_API_TTS_TTS_ENGINE_EXTENSION_OBSERVER_H_
diff --git a/chromecast/browser/extensions/api/tts/tts_extension_api.cc b/chromecast/browser/extensions/api/tts/tts_extension_api.cc new file mode 100644 index 0000000..129b83c --- /dev/null +++ b/chromecast/browser/extensions/api/tts/tts_extension_api.cc
@@ -0,0 +1,372 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from +// /chrome/browser/speech/extension_api +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#include "chromecast/browser/extensions/api/tts/tts_extension_api.h" + +#include <stddef.h> + +#include <memory> +#include <string> +#include <utility> + +#include "base/lazy_instance.h" +#include "base/values.h" +#include "chromecast/browser/extensions/api/tts/tts_engine_extension_api.h" +#include "chromecast/browser/extensions/api/tts/tts_engine_extension_observer.h" +#include "chromecast/browser/extensions/api/tts/tts_extension_api_constants.h" +#include "chromecast/browser/tts/tts_controller.h" +#include "extensions/browser/event_router.h" +#include "extensions/browser/extension_function_registry.h" +#include "ui/base/l10n/l10n_util.h" + +namespace constants = tts_extension_api_constants; + +namespace events { +const char kOnEvent[] = "tts.onEvent"; +}; // namespace events + +const char* TtsEventTypeToString(TtsEventType event_type) { + switch (event_type) { + case TTS_EVENT_START: + return constants::kEventTypeStart; + case TTS_EVENT_END: + return constants::kEventTypeEnd; + case TTS_EVENT_WORD: + return constants::kEventTypeWord; + case TTS_EVENT_SENTENCE: + return constants::kEventTypeSentence; + case TTS_EVENT_MARKER: + return constants::kEventTypeMarker; + case TTS_EVENT_INTERRUPTED: + return constants::kEventTypeInterrupted; + case TTS_EVENT_CANCELLED: + return constants::kEventTypeCancelled; + case TTS_EVENT_ERROR: + return constants::kEventTypeError; + case TTS_EVENT_PAUSE: + return constants::kEventTypePause; + case TTS_EVENT_RESUME: + return constants::kEventTypeResume; + default: + NOTREACHED(); + return constants::kEventTypeError; + } +} + +TtsEventType TtsEventTypeFromString(const std::string& str) { + if (str == constants::kEventTypeStart) + return TTS_EVENT_START; + if (str == constants::kEventTypeEnd) + return TTS_EVENT_END; + if (str == constants::kEventTypeWord) + return TTS_EVENT_WORD; + if (str == constants::kEventTypeSentence) + return TTS_EVENT_SENTENCE; + if (str == constants::kEventTypeMarker) + return TTS_EVENT_MARKER; + if (str == constants::kEventTypeInterrupted) + return TTS_EVENT_INTERRUPTED; + if (str == constants::kEventTypeCancelled) + return TTS_EVENT_CANCELLED; + if (str == constants::kEventTypeError) + return TTS_EVENT_ERROR; + if (str == constants::kEventTypePause) + return TTS_EVENT_PAUSE; + if (str == constants::kEventTypeResume) + return TTS_EVENT_RESUME; + + NOTREACHED(); + return TTS_EVENT_ERROR; +} + +namespace extensions { + +// One of these is constructed for each utterance, and deleted +// when the utterance gets any final event. +class TtsExtensionEventHandler : public UtteranceEventDelegate { + public: + explicit TtsExtensionEventHandler(const std::string& src_extension_id); + + void OnTtsEvent(Utterance* utterance, + TtsEventType event_type, + int char_index, + const std::string& error_message) override; + + private: + // The extension ID of the extension that called speak() and should + // receive events. + std::string src_extension_id_; +}; + +TtsExtensionEventHandler::TtsExtensionEventHandler( + const std::string& src_extension_id) + : src_extension_id_(src_extension_id) {} + +void TtsExtensionEventHandler::OnTtsEvent(Utterance* utterance, + TtsEventType event_type, + int char_index, + const std::string& error_message) { + if (utterance->src_id() < 0) { + if (utterance->finished()) + delete this; + return; + } + + const std::set<TtsEventType>& desired_event_types = + utterance->desired_event_types(); + if (desired_event_types.size() > 0 && + desired_event_types.find(event_type) == desired_event_types.end()) { + if (utterance->finished()) + delete this; + return; + } + + const char* event_type_string = TtsEventTypeToString(event_type); + std::unique_ptr<base::DictionaryValue> details(new base::DictionaryValue()); + if (char_index >= 0) + details->SetInteger(constants::kCharIndexKey, char_index); + details->SetString(constants::kEventTypeKey, event_type_string); + if (event_type == TTS_EVENT_ERROR) { + details->SetString(constants::kErrorMessageKey, error_message); + } + details->SetInteger(constants::kSrcIdKey, utterance->src_id()); + details->SetBoolean(constants::kIsFinalEventKey, utterance->finished()); + + std::unique_ptr<base::ListValue> arguments(new base::ListValue()); + arguments->Append(std::move(details)); + + auto event = std::make_unique<extensions::Event>( + ::extensions::events::TTS_ON_EVENT, ::events::kOnEvent, + std::move(arguments), utterance->browser_context()); + event->event_url = utterance->src_url(); + extensions::EventRouter::Get(utterance->browser_context()) + ->DispatchEventToExtension(src_extension_id_, std::move(event)); + + if (utterance->finished()) + delete this; +} + +ExtensionFunction::ResponseAction TtsSpeakFunction::Run() { + std::string text; + EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &text)); + if (text.size() > 32768) { + return RespondNow(Error(constants::kErrorUtteranceTooLong)); + } + + std::unique_ptr<base::DictionaryValue> options(new base::DictionaryValue()); + if (args_->GetSize() >= 2) { + base::DictionaryValue* temp_options = NULL; + if (args_->GetDictionary(1, &temp_options)) + options.reset(temp_options->DeepCopy()); + } + + std::string voice_name; + if (options->HasKey(constants::kVoiceNameKey)) { + EXTENSION_FUNCTION_VALIDATE( + options->GetString(constants::kVoiceNameKey, &voice_name)); + } + + std::string lang; + if (options->HasKey(constants::kLangKey)) + EXTENSION_FUNCTION_VALIDATE(options->GetString(constants::kLangKey, &lang)); + if (!lang.empty() && !l10n_util::IsValidLocaleSyntax(lang)) { + return RespondNow(Error(constants::kErrorInvalidLang)); + } + + std::string gender_str; + TtsGenderType gender; + if (options->HasKey(constants::kGenderKey)) + EXTENSION_FUNCTION_VALIDATE( + options->GetString(constants::kGenderKey, &gender_str)); + if (gender_str == constants::kGenderMale) { + gender = TTS_GENDER_MALE; + } else if (gender_str == constants::kGenderFemale) { + gender = TTS_GENDER_FEMALE; + } else if (gender_str.empty()) { + gender = TTS_GENDER_NONE; + } else { + return RespondNow(Error(constants::kErrorInvalidGender)); + } + + double rate = 1.0; + if (options->HasKey(constants::kRateKey)) { + EXTENSION_FUNCTION_VALIDATE(options->GetDouble(constants::kRateKey, &rate)); + if (rate < 0.1 || rate > 10.0) { + return RespondNow(Error(constants::kErrorInvalidRate)); + } + } + + double pitch = 1.0; + if (options->HasKey(constants::kPitchKey)) { + EXTENSION_FUNCTION_VALIDATE( + options->GetDouble(constants::kPitchKey, &pitch)); + if (pitch < 0.0 || pitch > 2.0) { + return RespondNow(Error(constants::kErrorInvalidPitch)); + } + } + + double volume = 1.0; + if (options->HasKey(constants::kVolumeKey)) { + EXTENSION_FUNCTION_VALIDATE( + options->GetDouble(constants::kVolumeKey, &volume)); + if (volume < 0.0 || volume > 1.0) { + return RespondNow(Error(constants::kErrorInvalidVolume)); + } + } + + bool can_enqueue = false; + if (options->HasKey(constants::kEnqueueKey)) { + EXTENSION_FUNCTION_VALIDATE( + options->GetBoolean(constants::kEnqueueKey, &can_enqueue)); + } + + std::set<TtsEventType> required_event_types; + if (options->HasKey(constants::kRequiredEventTypesKey)) { + base::ListValue* list; + EXTENSION_FUNCTION_VALIDATE( + options->GetList(constants::kRequiredEventTypesKey, &list)); + for (size_t i = 0; i < list->GetSize(); ++i) { + std::string event_type; + if (list->GetString(i, &event_type)) + required_event_types.insert(TtsEventTypeFromString(event_type.c_str())); + } + } + + std::set<TtsEventType> desired_event_types; + if (options->HasKey(constants::kDesiredEventTypesKey)) { + base::ListValue* list; + EXTENSION_FUNCTION_VALIDATE( + options->GetList(constants::kDesiredEventTypesKey, &list)); + for (size_t i = 0; i < list->GetSize(); ++i) { + std::string event_type; + if (list->GetString(i, &event_type)) + desired_event_types.insert(TtsEventTypeFromString(event_type.c_str())); + } + } + + std::string voice_extension_id; + if (options->HasKey(constants::kExtensionIdKey)) { + EXTENSION_FUNCTION_VALIDATE( + options->GetString(constants::kExtensionIdKey, &voice_extension_id)); + } + + int src_id = -1; + if (options->HasKey(constants::kSrcIdKey)) { + EXTENSION_FUNCTION_VALIDATE( + options->GetInteger(constants::kSrcIdKey, &src_id)); + } + + // If we got this far, the arguments were all in the valid format, so + // send the success response to the callback now - this ensures that + // the callback response always arrives before events, which makes + // the behavior more predictable and easier to write unit tests for too. + + Respond(OneArgument(std::make_unique<base::Value>(true))); + + Utterance* utterance = new Utterance(browser_context()); + utterance->set_text(text); + utterance->set_voice_name(voice_name); + utterance->set_src_id(src_id); + utterance->set_src_url(source_url()); + utterance->set_lang(lang); + utterance->set_gender(gender); + utterance->set_continuous_parameters(rate, pitch, volume); + utterance->set_can_enqueue(can_enqueue); + utterance->set_required_event_types(required_event_types); + utterance->set_desired_event_types(desired_event_types); + utterance->set_extension_id(voice_extension_id); + utterance->set_options(options.get()); + utterance->set_event_delegate(new TtsExtensionEventHandler(extension_id())); + + TtsController* controller = TtsController::GetInstance(); + controller->SpeakOrEnqueue(utterance); + return did_respond() ? AlreadyResponded() : RespondLater(); +} + +ExtensionFunction::ResponseAction TtsStopSpeakingFunction::Run() { + TtsController::GetInstance()->Stop(); + return RespondNow(NoArguments()); +} + +ExtensionFunction::ResponseAction TtsPauseFunction::Run() { + TtsController::GetInstance()->Pause(); + return RespondNow(NoArguments()); +} + +ExtensionFunction::ResponseAction TtsResumeFunction::Run() { + TtsController::GetInstance()->Resume(); + return RespondNow(NoArguments()); +} + +ExtensionFunction::ResponseAction TtsIsSpeakingFunction::Run() { + return RespondNow(OneArgument(std::make_unique<base::Value>( + TtsController::GetInstance()->IsSpeaking()))); +} + +ExtensionFunction::ResponseAction TtsGetVoicesFunction::Run() { + std::vector<VoiceData> voices; + TtsController::GetInstance()->GetVoices(browser_context(), &voices); + + auto result_voices = std::make_unique<base::ListValue>(); + for (size_t i = 0; i < voices.size(); ++i) { + const VoiceData& voice = voices[i]; + std::unique_ptr<base::DictionaryValue> result_voice( + new base::DictionaryValue()); + result_voice->SetString(constants::kVoiceNameKey, voice.name); + result_voice->SetBoolean(constants::kRemoteKey, voice.remote); + if (!voice.lang.empty()) + result_voice->SetString(constants::kLangKey, voice.lang); + if (voice.gender == TTS_GENDER_MALE) + result_voice->SetString(constants::kGenderKey, constants::kGenderMale); + else if (voice.gender == TTS_GENDER_FEMALE) + result_voice->SetString(constants::kGenderKey, constants::kGenderFemale); + if (!voice.extension_id.empty()) + result_voice->SetString(constants::kExtensionIdKey, voice.extension_id); + + auto event_types = std::make_unique<base::ListValue>(); + for (std::set<TtsEventType>::iterator iter = voice.events.begin(); + iter != voice.events.end(); ++iter) { + const char* event_name_constant = TtsEventTypeToString(*iter); + event_types->AppendString(event_name_constant); + } + result_voice->Set(constants::kEventTypesKey, std::move(event_types)); + + result_voices->Append(std::move(result_voice)); + } + + return RespondNow(OneArgument(std::move(result_voices))); +} + +TtsAPI::TtsAPI(content::BrowserContext* context) { + ExtensionFunctionRegistry& registry = + ExtensionFunctionRegistry::GetInstance(); + registry.RegisterFunction<ExtensionTtsEngineUpdateVoicesFunction>(); + registry.RegisterFunction<ExtensionTtsEngineSendTtsEventFunction>(); + registry.RegisterFunction<TtsGetVoicesFunction>(); + registry.RegisterFunction<TtsIsSpeakingFunction>(); + registry.RegisterFunction<TtsSpeakFunction>(); + registry.RegisterFunction<TtsStopSpeakingFunction>(); + registry.RegisterFunction<TtsPauseFunction>(); + registry.RegisterFunction<TtsResumeFunction>(); + + // Ensure we're observing newly added engines for the given context. + TtsEngineExtensionObserver::GetInstance(context); +} + +TtsAPI::~TtsAPI() {} + +static base::LazyInstance< + BrowserContextKeyedAPIFactory<TtsAPI>>::DestructorAtExit g_factory = + LAZY_INSTANCE_INITIALIZER; + +BrowserContextKeyedAPIFactory<TtsAPI>* TtsAPI::GetFactoryInstance() { + return g_factory.Pointer(); +} + +} // namespace extensions
diff --git a/chromecast/browser/extensions/api/tts/tts_extension_api.h b/chromecast/browser/extensions/api/tts/tts_extension_api.h new file mode 100644 index 0000000..5043f28 --- /dev/null +++ b/chromecast/browser/extensions/api/tts/tts_extension_api.h
@@ -0,0 +1,90 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from +// /chrome/browser/speech/extension_api +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#ifndef CHROMECAST_BROWSER_EXTENSIONS_API_TTS_TTS_EXTENSION_API_H_ +#define CHROMECAST_BROWSER_EXTENSIONS_API_TTS_TTS_EXTENSION_API_H_ + +#include <string> + +#include "chromecast/browser/tts/tts_controller.h" +#include "extensions/browser/browser_context_keyed_api_factory.h" +#include "extensions/browser/extension_function.h" + +namespace content { +class BrowserContext; +} + +const char* TtsEventTypeToString(TtsEventType event_type); +TtsEventType TtsEventTypeFromString(const std::string& str); + +namespace extensions { + +class TtsSpeakFunction : public UIThreadExtensionFunction { + private: + ~TtsSpeakFunction() override {} + + // UIThreadExtensionFunction: + ResponseAction Run() override; + DECLARE_EXTENSION_FUNCTION("tts.speak", TTS_SPEAK) +}; + +class TtsStopSpeakingFunction : public UIThreadExtensionFunction { + private: + ~TtsStopSpeakingFunction() override {} + ResponseAction Run() override; + DECLARE_EXTENSION_FUNCTION("tts.stop", TTS_STOP) +}; + +class TtsPauseFunction : public UIThreadExtensionFunction { + private: + ~TtsPauseFunction() override {} + ResponseAction Run() override; + DECLARE_EXTENSION_FUNCTION("tts.pause", TTS_PAUSE) +}; + +class TtsResumeFunction : public UIThreadExtensionFunction { + private: + ~TtsResumeFunction() override {} + ResponseAction Run() override; + DECLARE_EXTENSION_FUNCTION("tts.resume", TTS_RESUME) +}; + +class TtsIsSpeakingFunction : public UIThreadExtensionFunction { + private: + ~TtsIsSpeakingFunction() override {} + ResponseAction Run() override; + DECLARE_EXTENSION_FUNCTION("tts.isSpeaking", TTS_ISSPEAKING) +}; + +class TtsGetVoicesFunction : public UIThreadExtensionFunction { + private: + ~TtsGetVoicesFunction() override {} + ResponseAction Run() override; + DECLARE_EXTENSION_FUNCTION("tts.getVoices", TTS_GETVOICES) +}; + +class TtsAPI : public BrowserContextKeyedAPI { + public: + explicit TtsAPI(content::BrowserContext* context); + ~TtsAPI() override; + + // BrowserContextKeyedAPI implementation. + static BrowserContextKeyedAPIFactory<TtsAPI>* GetFactoryInstance(); + + private: + friend class BrowserContextKeyedAPIFactory<TtsAPI>; + + // BrowserContextKeyedAPI implementation. + static const char* service_name() { return "TtsAPI"; } + static const bool kServiceIsNULLWhileTesting = true; +}; + +} // namespace extensions + +#endif // CHROMECAST_BROWSER_EXTENSIONS_API_TTS_TTS_EXTENSION_API_H_
diff --git a/chromecast/browser/extensions/api/tts/tts_extension_api_constants.cc b/chromecast/browser/extensions/api/tts/tts_extension_api_constants.cc new file mode 100644 index 0000000..b24dd97 --- /dev/null +++ b/chromecast/browser/extensions/api/tts/tts_extension_api_constants.cc
@@ -0,0 +1,60 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from +// /chrome/browser/speech/extension_api +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#include "chromecast/browser/extensions/api/tts/tts_extension_api_constants.h" + +namespace tts_extension_api_constants { + +const char kCharIndexKey[] = "charIndex"; +const char kDesiredEventTypesKey[] = "desiredEventTypes"; +const char kEnqueueKey[] = "enqueue"; +const char kErrorMessageKey[] = "errorMessage"; +const char kEventTypeKey[] = "type"; +const char kEventTypesKey[] = "eventTypes"; +const char kExtensionIdKey[] = "extensionId"; +const char kGenderKey[] = "gender"; +const char kIsFinalEventKey[] = "isFinalEvent"; +const char kLangKey[] = "lang"; +const char kOnEventKey[] = "onEvent"; +const char kPitchKey[] = "pitch"; +const char kRateKey[] = "rate"; +const char kRemoteKey[] = "remote"; +const char kRequiredEventTypesKey[] = "requiredEventTypes"; +const char kSrcIdKey[] = "srcId"; +const char kVoiceNameKey[] = "voiceName"; +const char kVolumeKey[] = "volume"; + +const char kGenderFemale[] = "female"; +const char kGenderMale[] = "male"; + +const char kEventTypeCancelled[] = "cancelled"; +const char kEventTypeEnd[] = "end"; +const char kEventTypeError[] = "error"; +const char kEventTypeInterrupted[] = "interrupted"; +const char kEventTypeMarker[] = "marker"; +const char kEventTypePause[] = "pause"; +const char kEventTypeResume[] = "resume"; +const char kEventTypeSentence[] = "sentence"; +const char kEventTypeStart[] = "start"; +const char kEventTypeWord[] = "word"; + +const char kErrorExtensionIdMismatch[] = "Extension id mismatch."; +const char kErrorInvalidGender[] = "Invalid gender."; +const char kErrorInvalidLang[] = "Invalid lang."; +const char kErrorInvalidPitch[] = "Invalid pitch."; +const char kErrorInvalidRate[] = "Invalid rate."; +const char kErrorInvalidVolume[] = "Invalid volume."; +const char kErrorMissingPauseOrResume[] = + "A TTS engine extension should either listen for both onPause and onResume " + "events, or neither."; +const char kErrorUndeclaredEventType[] = + "Cannot send an event type that is not declared in the extension manifest."; +const char kErrorUtteranceTooLong[] = "Utterance length is too long."; + +} // namespace tts_extension_api_constants.
diff --git a/chromecast/browser/extensions/api/tts/tts_extension_api_constants.h b/chromecast/browser/extensions/api/tts/tts_extension_api_constants.h new file mode 100644 index 0000000..6e4f79f --- /dev/null +++ b/chromecast/browser/extensions/api/tts/tts_extension_api_constants.h
@@ -0,0 +1,63 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from +// /chrome/browser/speech/extension_api +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#ifndef CHROMECAST_BROWSER_EXTENSIONS_API_TTS_TTS_EXTENSION_API_CONSTANTS_H_ +#define CHROMECAST_BROWSER_EXTENSIONS_API_TTS_TTS_EXTENSION_API_CONSTANTS_H_ + +#include <string> + +#include "base/values.h" + +namespace tts_extension_api_constants { + +extern const char kCharIndexKey[]; +extern const char kDesiredEventTypesKey[]; +extern const char kEnqueueKey[]; +extern const char kErrorMessageKey[]; +extern const char kEventTypeKey[]; +extern const char kEventTypesKey[]; +extern const char kExtensionIdKey[]; +extern const char kGenderKey[]; +extern const char kIsFinalEventKey[]; +extern const char kLangKey[]; +extern const char kOnEventKey[]; +extern const char kPitchKey[]; +extern const char kRateKey[]; +extern const char kRemoteKey[]; +extern const char kRequiredEventTypesKey[]; +extern const char kSrcIdKey[]; +extern const char kVoiceNameKey[]; +extern const char kVolumeKey[]; + +extern const char kGenderFemale[]; +extern const char kGenderMale[]; + +extern const char kEventTypeCancelled[]; +extern const char kEventTypeEnd[]; +extern const char kEventTypeError[]; +extern const char kEventTypeInterrupted[]; +extern const char kEventTypeMarker[]; +extern const char kEventTypePause[]; +extern const char kEventTypeResume[]; +extern const char kEventTypeSentence[]; +extern const char kEventTypeStart[]; +extern const char kEventTypeWord[]; + +extern const char kErrorExtensionIdMismatch[]; +extern const char kErrorInvalidGender[]; +extern const char kErrorInvalidLang[]; +extern const char kErrorInvalidPitch[]; +extern const char kErrorInvalidRate[]; +extern const char kErrorInvalidVolume[]; +extern const char kErrorMissingPauseOrResume[]; +extern const char kErrorUndeclaredEventType[]; +extern const char kErrorUtteranceTooLong[]; + +} // namespace tts_extension_api_constants. +#endif // CHROMECAST_BROWSER_EXTENSIONS_API_TTS_TTS_EXTENSION_API_CONSTANTS_H_
diff --git a/chromecast/browser/extensions/cast_extension_system.cc b/chromecast/browser/extensions/cast_extension_system.cc index 08c6f791..2c531592 100644 --- a/chromecast/browser/extensions/cast_extension_system.cc +++ b/chromecast/browser/extensions/cast_extension_system.cc
@@ -11,6 +11,7 @@ #include "base/json/json_string_value_serializer.h" #include "base/memory/ptr_util.h" #include "base/strings/stringprintf.h" +#include "chromecast/browser/extensions/api/tts/tts_extension_api.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/notification_details.h" @@ -144,6 +145,9 @@ void CastExtensionSystem::Init() { extensions::ProcessManager::Get(browser_context_); + // Prime the tts extension API. + extensions::TtsAPI::GetFactoryInstance(); + // Inform the rest of the extensions system to start. ready_.Signal(); content::NotificationService::current()->Notify(
diff --git a/chromecast/browser/tts/tts_controller.h b/chromecast/browser/tts/tts_controller.h new file mode 100644 index 0000000..9e6b22f --- /dev/null +++ b/chromecast/browser/tts/tts_controller.h
@@ -0,0 +1,338 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from chrome/browser/speech. +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#ifndef CHROMECAST_BROWSER_TTS_TTS_CONTROLLER_H_ +#define CHROMECAST_BROWSER_TTS_TTS_CONTROLLER_H_ + +#include <memory> +#include <queue> +#include <set> +#include <string> +#include <vector> + +#include "base/memory/singleton.h" +#include "base/memory/weak_ptr.h" +#include "url/gurl.h" + +class Utterance; +class TtsPlatformImpl; + +namespace base { +class Value; +} + +namespace content { +class BrowserContext; +} + +// Events sent back from the TTS engine indicating the progress. +enum TtsEventType { + TTS_EVENT_START, + TTS_EVENT_END, + TTS_EVENT_WORD, + TTS_EVENT_SENTENCE, + TTS_EVENT_MARKER, + TTS_EVENT_INTERRUPTED, + TTS_EVENT_CANCELLED, + TTS_EVENT_ERROR, + TTS_EVENT_PAUSE, + TTS_EVENT_RESUME +}; + +enum TtsGenderType { TTS_GENDER_NONE, TTS_GENDER_MALE, TTS_GENDER_FEMALE }; + +// Returns true if this event type is one that indicates an utterance +// is finished and can be destroyed. +bool IsFinalTtsEventType(TtsEventType event_type); + +// The continuous parameters that apply to a given utterance. +struct UtteranceContinuousParameters { + UtteranceContinuousParameters(); + + double rate; + double pitch; + double volume; +}; + +// Information about one voice. +struct VoiceData { + VoiceData(); + VoiceData(const VoiceData& other); + ~VoiceData(); + + std::string name; + std::string lang; + TtsGenderType gender; + std::string extension_id; + std::set<TtsEventType> events; + + // If true, the synthesis engine is a remote network resource. + // It may be higher latency and may incur bandwidth costs. + bool remote; + + // If true, this is implemented by this platform's subclass of + // TtsPlatformImpl. If false, this is implemented by an extension. + bool native; + std::string native_voice_identifier; +}; + +// Interface that delegates TTS requests to user-installed extensions. +class TtsEngineDelegate { + public: + virtual ~TtsEngineDelegate() {} + + // Return a list of all available voices registered. + virtual void GetVoices(content::BrowserContext* browser_context, + std::vector<VoiceData>* out_voices) = 0; + + // Speak the given utterance by sending an event to the given TTS engine. + virtual void Speak(Utterance* utterance, const VoiceData& voice) = 0; + + // Stop speaking the given utterance by sending an event to the target + // associated with this utterance. + virtual void Stop(Utterance* utterance) = 0; + + // Pause in the middle of speaking this utterance. + virtual void Pause(Utterance* utterance) = 0; + + // Resume speaking this utterance. + virtual void Resume(Utterance* utterance) = 0; + + // Load the built-in component extension for ChromeOS. + virtual bool LoadBuiltInTtsExtension( + content::BrowserContext* browser_context) = 0; +}; + +// Class that wants to receive events on utterances. +class UtteranceEventDelegate { + public: + virtual ~UtteranceEventDelegate() {} + virtual void OnTtsEvent(Utterance* utterance, + TtsEventType event_type, + int char_index, + const std::string& error_message) = 0; +}; + +// Class that wants to be notified when the set of +// voices has changed. +class VoicesChangedDelegate { + public: + virtual ~VoicesChangedDelegate() {} + virtual void OnVoicesChanged() = 0; +}; + +// One speech utterance. +class Utterance { + public: + // Construct an utterance given a profile and a completion task to call + // when the utterance is done speaking. Before speaking this utterance, + // its other parameters like text, rate, pitch, etc. should all be set. + explicit Utterance(content::BrowserContext* browser_context); + ~Utterance(); + + // Sends an event to the delegate. If the event type is TTS_EVENT_END + // or TTS_EVENT_ERROR, deletes the utterance. If |char_index| is -1, + // uses the last good value. + void OnTtsEvent(TtsEventType event_type, + int char_index, + const std::string& error_message); + + // Finish an utterance without sending an event to the delegate. + void Finish(); + + // Getters and setters for the text to speak and other speech options. + void set_text(const std::string& text) { text_ = text; } + const std::string& text() const { return text_; } + + void set_options(const base::Value* options); + const base::Value* options() const { return options_.get(); } + + void set_src_id(int src_id) { src_id_ = src_id; } + int src_id() { return src_id_; } + + void set_src_url(const GURL& src_url) { src_url_ = src_url; } + const GURL& src_url() { return src_url_; } + + void set_voice_name(const std::string& voice_name) { + voice_name_ = voice_name; + } + const std::string& voice_name() const { return voice_name_; } + + void set_lang(const std::string& lang) { lang_ = lang; } + const std::string& lang() const { return lang_; } + + void set_gender(TtsGenderType gender) { gender_ = gender; } + TtsGenderType gender() const { return gender_; } + + void set_continuous_parameters(const double rate, + const double pitch, + const double volume) { + continuous_parameters_.rate = rate; + continuous_parameters_.pitch = pitch; + continuous_parameters_.volume = volume; + } + const UtteranceContinuousParameters& continuous_parameters() { + return continuous_parameters_; + } + + void set_can_enqueue(bool can_enqueue) { can_enqueue_ = can_enqueue; } + bool can_enqueue() const { return can_enqueue_; } + + void set_required_event_types(const std::set<TtsEventType>& types) { + required_event_types_ = types; + } + const std::set<TtsEventType>& required_event_types() const { + return required_event_types_; + } + + void set_desired_event_types(const std::set<TtsEventType>& types) { + desired_event_types_ = types; + } + const std::set<TtsEventType>& desired_event_types() const { + return desired_event_types_; + } + + const std::string& extension_id() const { return extension_id_; } + void set_extension_id(const std::string& extension_id) { + extension_id_ = extension_id; + } + + UtteranceEventDelegate* event_delegate() const { return event_delegate_; } + void set_event_delegate(UtteranceEventDelegate* event_delegate) { + event_delegate_ = event_delegate; + } + + // Getters and setters for internal state. + content::BrowserContext* browser_context() const { return browser_context_; } + int id() const { return id_; } + bool finished() const { return finished_; } + + private: + // The BrowserContext that initiated this utterance. + content::BrowserContext* browser_context_; + + // The extension ID of the extension providing TTS for this utterance, or + // empty if native TTS is being used. + std::string extension_id_; + + // The unique ID of this utterance, used to associate callback functions + // with utterances. + int id_; + + // The id of the next utterance, so we can associate requests with + // responses. + static int next_utterance_id_; + + // The text to speak. + std::string text_; + + // The full options arg passed to tts.speak, which may include fields + // other than the ones we explicitly parse, below. + std::unique_ptr<base::Value> options_; + + // The source extension's ID of this utterance, so that it can associate + // events with the appropriate callback. + int src_id_; + + // The URL of the page where the source extension called speak. + GURL src_url_; + + // The delegate to be called when an utterance event is fired. + UtteranceEventDelegate* event_delegate_; + + // The parsed options. + std::string voice_name_; + std::string lang_; + TtsGenderType gender_; + UtteranceContinuousParameters continuous_parameters_; + bool can_enqueue_; + std::set<TtsEventType> required_event_types_; + std::set<TtsEventType> desired_event_types_; + + // The index of the current char being spoken. + int char_index_; + + // True if this utterance received an event indicating it's done. + bool finished_; +}; + +// Singleton class that manages text-to-speech for the TTS and TTS engine +// extension APIs, maintaining a queue of pending utterances and keeping +// track of all state. +class TtsController { + public: + // Get the single instance of this class. + static TtsController* GetInstance(); + + // Returns true if we're currently speaking an utterance. + virtual bool IsSpeaking() = 0; + + // Speak the given utterance. If the utterance's can_enqueue flag is true + // and another utterance is in progress, adds it to the end of the queue. + // Otherwise, interrupts any current utterance and speaks this one + // immediately. + virtual void SpeakOrEnqueue(Utterance* utterance) = 0; + + // Stop all utterances and flush the queue. Implies leaving pause mode + // as well. + virtual void Stop() = 0; + + // Pause the speech queue. Some engines may support pausing in the middle + // of an utterance. + virtual void Pause() = 0; + + // Resume speaking. + virtual void Resume() = 0; + + // Handle events received from the speech engine. Events are forwarded to + // the callback function, and in addition, completion and error events + // trigger finishing the current utterance and starting the next one, if + // any. + virtual void OnTtsEvent(int utterance_id, + TtsEventType event_type, + int char_index, + const std::string& error_message) = 0; + + // Return a list of all available voices, including the native voice, + // if supported, and all voices registered by extensions. + virtual void GetVoices(content::BrowserContext* browser_context, + std::vector<VoiceData>* out_voices) = 0; + + // Called by the extension system or platform implementation when the + // list of voices may have changed and should be re-queried. + virtual void VoicesChanged() = 0; + + // Add a delegate that wants to be notified when the set of voices changes. + virtual void AddVoicesChangedDelegate(VoicesChangedDelegate* delegate) = 0; + + // Remove delegate that wants to be notified when the set of voices changes. + virtual void RemoveVoicesChangedDelegate(VoicesChangedDelegate* delegate) = 0; + + // Remove delegate that wants to be notified when an utterance fires an event. + // Note: this cancels speech from any utterance with this delegate, and + // removes any utterances with this delegate from the queue. + virtual void RemoveUtteranceEventDelegate( + UtteranceEventDelegate* delegate) = 0; + + // Set the delegate that processes TTS requests with user-installed + // extensions. + virtual void SetTtsEngineDelegate(TtsEngineDelegate* delegate) = 0; + + // Get the delegate that processes TTS requests with user-installed + // extensions. + virtual TtsEngineDelegate* GetTtsEngineDelegate() = 0; + + // For unit testing. + virtual void SetPlatformImpl(TtsPlatformImpl* platform_impl) = 0; + virtual int QueueSize() = 0; + + protected: + virtual ~TtsController() {} +}; + +#endif // CHROMECAST_BROWSER_TTS_TTS_CONTROLLER_H_
diff --git a/chromecast/browser/tts/tts_controller_impl.cc b/chromecast/browser/tts/tts_controller_impl.cc new file mode 100644 index 0000000..fb45ac9 --- /dev/null +++ b/chromecast/browser/tts/tts_controller_impl.cc
@@ -0,0 +1,614 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from chrome/browser/speech. +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#include "chromecast/browser/tts/tts_controller_impl.h" + +#include <stddef.h> + +#include <string> +#include <vector> + +#include "base/containers/queue.h" +#include "base/metrics/histogram_macros.h" +#include "base/metrics/user_metrics.h" +#include "base/values.h" +#include "build/build_config.h" +#include "chromecast/chromecast_buildflags.h" +#include "chromecast/browser/tts/tts_platform.h" +#include "third_party/blink/public/platform/web_speech_synthesis_constants.h" + +#if BUILDFLAG(ENABLE_CHROMECAST_EXTENSIONS) +#include "extensions/browser/extensions_browser_client.h" +#endif + +namespace { +// A value to be used to indicate that there is no char index available. +const int kInvalidCharIndex = -1; + +// Given a language/region code of the form 'fr-FR', returns just the basic +// language portion, e.g. 'fr'. +std::string TrimLanguageCode(const std::string& lang) { + if (lang.size() >= 5 && lang[2] == '-') + return lang.substr(0, 2); + else + return lang; +} + +// IMPORTANT! +// These values are written to logs. Do not renumber or delete +// existing items; add new entries to the end of the list. +enum class UMATextToSpeechEvent { + START = 0, + END = 1, + WORD = 2, + SENTENCE = 3, + MARKER = 4, + INTERRUPTED = 5, + CANCELLED = 6, + SPEECH_ERROR = 7, + PAUSE = 8, + RESUME = 9, + + // This must always be the last enum. It's okay for its value to + // increase, but none of the other enum values may change. + COUNT +}; + +} // namespace + +bool IsFinalTtsEventType(TtsEventType event_type) { + return (event_type == TTS_EVENT_END || event_type == TTS_EVENT_INTERRUPTED || + event_type == TTS_EVENT_CANCELLED || event_type == TTS_EVENT_ERROR); +} + +// +// UtteranceContinuousParameters +// + +UtteranceContinuousParameters::UtteranceContinuousParameters() + : rate(blink::SpeechSynthesisConstants::kDoublePrefNotSet), + pitch(blink::SpeechSynthesisConstants::kDoublePrefNotSet), + volume(blink::SpeechSynthesisConstants::kDoublePrefNotSet) {} + +// +// VoiceData +// + +VoiceData::VoiceData() + : gender(TTS_GENDER_NONE), remote(false), native(false) {} + +VoiceData::VoiceData(const VoiceData& other) = default; + +VoiceData::~VoiceData() {} + +// +// Utterance +// + +// static +int Utterance::next_utterance_id_ = 0; + +Utterance::Utterance(content::BrowserContext* browser_context) + : browser_context_(browser_context), + id_(next_utterance_id_++), + src_id_(-1), + gender_(TTS_GENDER_NONE), + can_enqueue_(false), + char_index_(0), + finished_(false) { + options_.reset(new base::DictionaryValue()); +} + +Utterance::~Utterance() { + // It's an error if an Utterance is destructed without being finished, + // unless |browser_context_| is nullptr because it's a unit test. + DCHECK(finished_ || !browser_context_); +} + +void Utterance::OnTtsEvent(TtsEventType event_type, + int char_index, + const std::string& error_message) { + if (char_index >= 0) + char_index_ = char_index; + if (IsFinalTtsEventType(event_type)) + finished_ = true; + + if (event_delegate_) + event_delegate_->OnTtsEvent(this, event_type, char_index, error_message); + if (finished_) + event_delegate_ = nullptr; +} + +void Utterance::Finish() { + finished_ = true; +} + +void Utterance::set_options(const base::Value* options) { + options_.reset(options->DeepCopy()); +} + +TtsController* TtsController::GetInstance() { + return TtsControllerImpl::GetInstance(); +} + +// +// TtsControllerImpl +// + +// static +TtsControllerImpl* TtsControllerImpl::GetInstance() { + return base::Singleton<TtsControllerImpl>::get(); +} + +TtsControllerImpl::TtsControllerImpl() + : current_utterance_(nullptr), + paused_(false), + platform_impl_(nullptr), + tts_engine_delegate_(nullptr) {} + +TtsControllerImpl::~TtsControllerImpl() { + if (current_utterance_) { + current_utterance_->Finish(); + delete current_utterance_; + } + + // Clear any queued utterances too. + ClearUtteranceQueue(false); // Don't sent events. +} + +void TtsControllerImpl::SpeakOrEnqueue(Utterance* utterance) { + // If we're paused and we get an utterance that can't be queued, + // flush the queue but stay in the paused state. + if (paused_ && !utterance->can_enqueue()) { + utterance_queue_.push(utterance); + Stop(); + paused_ = true; + return; + } + + if (paused_ || (IsSpeaking() && utterance->can_enqueue())) { + utterance_queue_.push(utterance); + } else { + Stop(); + SpeakNow(utterance); + } +} + +void TtsControllerImpl::SpeakNow(Utterance* utterance) { + // Ensure we have all built-in voices loaded. This is a no-op if already + // loaded. + bool loaded_built_in = + GetPlatformImpl()->LoadBuiltInTtsExtension(utterance->browser_context()); + + // Get all available voices and try to find a matching voice. + std::vector<VoiceData> voices; + GetVoices(utterance->browser_context(), &voices); + + // Get the best matching voice. If nothing matches, just set "native" + // to true because that might trigger deferred loading of native voices. + int index = GetMatchingVoice(utterance, voices); + VoiceData voice; + if (index >= 0) + voice = voices[index]; + else + voice.native = true; + + UpdateUtteranceDefaults(utterance); + + GetPlatformImpl()->WillSpeakUtteranceWithVoice(utterance, voice); + + base::RecordAction(base::UserMetricsAction("TextToSpeech.Speak")); + UMA_HISTOGRAM_COUNTS_100000("TextToSpeech.Utterance.TextLength", + utterance->text().size()); + UMA_HISTOGRAM_BOOLEAN("TextToSpeech.Utterance.FromExtensionAPI", + !utterance->src_url().is_empty()); + UMA_HISTOGRAM_BOOLEAN("TextToSpeech.Utterance.HasVoiceName", + !utterance->voice_name().empty()); + UMA_HISTOGRAM_BOOLEAN("TextToSpeech.Utterance.HasLang", + !utterance->lang().empty()); + UMA_HISTOGRAM_BOOLEAN("TextToSpeech.Utterance.HasGender", + utterance->gender() != TTS_GENDER_NONE); + UMA_HISTOGRAM_BOOLEAN("TextToSpeech.Utterance.HasRate", + utterance->continuous_parameters().rate != 1.0); + UMA_HISTOGRAM_BOOLEAN("TextToSpeech.Utterance.HasPitch", + utterance->continuous_parameters().pitch != 1.0); + UMA_HISTOGRAM_BOOLEAN("TextToSpeech.Utterance.HasVolume", + utterance->continuous_parameters().volume != 1.0); + UMA_HISTOGRAM_BOOLEAN("TextToSpeech.Utterance.Native", voice.native); + + if (!voice.native) { +#if !defined(OS_ANDROID) + DCHECK(!voice.extension_id.empty()); + current_utterance_ = utterance; + utterance->set_extension_id(voice.extension_id); + if (tts_engine_delegate_) + tts_engine_delegate_->Speak(utterance, voice); + bool sends_end_event = + voice.events.find(TTS_EVENT_END) != voice.events.end(); + if (!sends_end_event) { + utterance->Finish(); + delete utterance; + current_utterance_ = nullptr; + SpeakNextUtterance(); + } +#endif + } else { + // It's possible for certain platforms to send start events immediately + // during |speak|. + current_utterance_ = utterance; + GetPlatformImpl()->clear_error(); + bool success = GetPlatformImpl()->Speak(utterance->id(), utterance->text(), + utterance->lang(), voice, + utterance->continuous_parameters()); + if (!success) + current_utterance_ = nullptr; + + // If the native voice wasn't able to process this speech, see if + // the browser has built-in TTS that isn't loaded yet. + if (!success && loaded_built_in) { + utterance_queue_.push(utterance); + return; + } + + if (!success) { + utterance->OnTtsEvent(TTS_EVENT_ERROR, kInvalidCharIndex, + GetPlatformImpl()->error()); + delete utterance; + return; + } + } +} + +void TtsControllerImpl::Stop() { + base::RecordAction(base::UserMetricsAction("TextToSpeech.Stop")); + + paused_ = false; + if (current_utterance_ && !current_utterance_->extension_id().empty()) { + if (tts_engine_delegate_) + tts_engine_delegate_->Stop(current_utterance_); + } else { + GetPlatformImpl()->clear_error(); + GetPlatformImpl()->StopSpeaking(); + } + + if (current_utterance_) + current_utterance_->OnTtsEvent(TTS_EVENT_INTERRUPTED, kInvalidCharIndex, + std::string()); + FinishCurrentUtterance(); + ClearUtteranceQueue(true); // Send events. +} + +void TtsControllerImpl::Pause() { + base::RecordAction(base::UserMetricsAction("TextToSpeech.Pause")); + + paused_ = true; + if (current_utterance_ && !current_utterance_->extension_id().empty()) { + if (tts_engine_delegate_) + tts_engine_delegate_->Pause(current_utterance_); + } else if (current_utterance_) { + GetPlatformImpl()->clear_error(); + GetPlatformImpl()->Pause(); + } +} + +void TtsControllerImpl::Resume() { + base::RecordAction(base::UserMetricsAction("TextToSpeech.Resume")); + + paused_ = false; + if (current_utterance_ && !current_utterance_->extension_id().empty()) { + if (tts_engine_delegate_) + tts_engine_delegate_->Resume(current_utterance_); + } else if (current_utterance_) { + GetPlatformImpl()->clear_error(); + GetPlatformImpl()->Resume(); + } else { + SpeakNextUtterance(); + } +} + +void TtsControllerImpl::OnTtsEvent(int utterance_id, + TtsEventType event_type, + int char_index, + const std::string& error_message) { + // We may sometimes receive completion callbacks "late", after we've + // already finished the utterance (for example because another utterance + // interrupted or we got a call to Stop). This is normal and we can + // safely just ignore these events. + if (!current_utterance_ || utterance_id != current_utterance_->id()) { + return; + } + + UMATextToSpeechEvent metric; + switch (event_type) { + case TTS_EVENT_START: + metric = UMATextToSpeechEvent::START; + break; + case TTS_EVENT_END: + metric = UMATextToSpeechEvent::END; + break; + case TTS_EVENT_WORD: + metric = UMATextToSpeechEvent::WORD; + break; + case TTS_EVENT_SENTENCE: + metric = UMATextToSpeechEvent::SENTENCE; + break; + case TTS_EVENT_MARKER: + metric = UMATextToSpeechEvent::MARKER; + break; + case TTS_EVENT_INTERRUPTED: + metric = UMATextToSpeechEvent::INTERRUPTED; + break; + case TTS_EVENT_CANCELLED: + metric = UMATextToSpeechEvent::CANCELLED; + break; + case TTS_EVENT_ERROR: + metric = UMATextToSpeechEvent::SPEECH_ERROR; + break; + case TTS_EVENT_PAUSE: + metric = UMATextToSpeechEvent::PAUSE; + break; + case TTS_EVENT_RESUME: + metric = UMATextToSpeechEvent::RESUME; + break; + default: + NOTREACHED(); + return; + } + UMA_HISTOGRAM_ENUMERATION("TextToSpeech.Event", metric, + UMATextToSpeechEvent::COUNT); + + current_utterance_->OnTtsEvent(event_type, char_index, error_message); + if (current_utterance_->finished()) { + FinishCurrentUtterance(); + SpeakNextUtterance(); + } +} + +void TtsControllerImpl::GetVoices(content::BrowserContext* browser_context, + std::vector<VoiceData>* out_voices) { + TtsPlatformImpl* platform_impl = GetPlatformImpl(); + if (platform_impl) { + // Ensure we have all built-in voices loaded. This is a no-op if already + // loaded. + platform_impl->LoadBuiltInTtsExtension(browser_context); + if (platform_impl->PlatformImplAvailable()) + platform_impl->GetVoices(out_voices); + } + + if (browser_context && tts_engine_delegate_) + tts_engine_delegate_->GetVoices(browser_context, out_voices); +} + +bool TtsControllerImpl::IsSpeaking() { + return current_utterance_ != nullptr || GetPlatformImpl()->IsSpeaking(); +} + +void TtsControllerImpl::FinishCurrentUtterance() { + if (current_utterance_) { + if (!current_utterance_->finished()) + current_utterance_->OnTtsEvent(TTS_EVENT_INTERRUPTED, kInvalidCharIndex, + std::string()); + delete current_utterance_; + current_utterance_ = nullptr; + } +} + +void TtsControllerImpl::SpeakNextUtterance() { + if (paused_) + return; + + // Start speaking the next utterance in the queue. Keep trying in case + // one fails but there are still more in the queue to try. + while (!utterance_queue_.empty() && !current_utterance_) { + Utterance* utterance = utterance_queue_.front(); + utterance_queue_.pop(); + SpeakNow(utterance); + } +} + +void TtsControllerImpl::ClearUtteranceQueue(bool send_events) { + while (!utterance_queue_.empty()) { + Utterance* utterance = utterance_queue_.front(); + utterance_queue_.pop(); + if (send_events) + utterance->OnTtsEvent(TTS_EVENT_CANCELLED, kInvalidCharIndex, + std::string()); + else + utterance->Finish(); + delete utterance; + } +} + +void TtsControllerImpl::SetPlatformImpl(TtsPlatformImpl* platform_impl) { + platform_impl_ = platform_impl; +} + +int TtsControllerImpl::QueueSize() { + return static_cast<int>(utterance_queue_.size()); +} + +TtsPlatformImpl* TtsControllerImpl::GetPlatformImpl() { + if (!platform_impl_) + platform_impl_ = TtsPlatformImpl::GetInstance(); + return platform_impl_; +} + +std::string TtsControllerImpl::GetApplicationLocale() const { + // TODO(rdaum): Delegate back to the platform's mechaninism here. + // For Chrome, use g_browser_process as before. For cast, it's the system + // locale. Hardcoded to system locale for now +#if BUILDFLAG(ENABLE_CHROMECAST_EXTENSIONS) + return extensions::ExtensionsBrowserClient::Get()->GetApplicationLocale(); +#else + return "en-US"; +#endif +} + +int TtsControllerImpl::GetMatchingVoice(const Utterance* utterance, + std::vector<VoiceData>& voices) { + // Return the index of the voice that best match the utterance parameters. + // + // These criteria are considered mandatory - if they're specified, any voice + // that doesn't match is rejected. + // + // Extension ID + // Voice name + // + // The other criteria are scored based on how well they match, in + // this order of precedence: + // + // Utterange language (exact region preferred, then general language) + // App/system language (exact region preferred, then general language) + // Required event types + // Gender + + std::string app_lang = GetApplicationLocale(); + + // Start with a best score of -1, that way even if none of the criteria + // match, something will be returned if there are any voices. + int best_score = -1; + int best_score_index = -1; + for (size_t i = 0; i < voices.size(); ++i) { + const VoiceData& voice = voices[i]; + int score = 0; + + // If the extension ID is specified, check for an exact match. + if (!utterance->extension_id().empty() && + utterance->extension_id() != voice.extension_id) + continue; + + // If the voice name is specified, check for an exact match. + if (!utterance->voice_name().empty() && + voice.name != utterance->voice_name()) + continue; + + // Prefer the utterance language. + if (!voice.lang.empty() && !utterance->lang().empty()) { + // An exact language match is worth more than a partial match. + if (voice.lang == utterance->lang()) { + score += 32; + } else if (TrimLanguageCode(voice.lang) == + TrimLanguageCode(utterance->lang())) { + score += 16; + } + } + + // Prefer the system language after that. + if (!voice.lang.empty()) { + if (voice.lang == app_lang) + score += 8; + else if (TrimLanguageCode(voice.lang) == TrimLanguageCode(app_lang)) + score += 4; + } + + // Next, prefer required event types. + if (utterance->required_event_types().size() > 0) { + bool has_all_required_event_types = true; + for (std::set<TtsEventType>::const_iterator iter = + utterance->required_event_types().begin(); + iter != utterance->required_event_types().end(); ++iter) { + if (voice.events.find(*iter) == voice.events.end()) { + has_all_required_event_types = false; + break; + } + } + if (has_all_required_event_types) + score += 2; + } + + // Finally prefer the requested gender last. + if (voice.gender != TTS_GENDER_NONE && + utterance->gender() != TTS_GENDER_NONE && + voice.gender == utterance->gender()) { + score += 1; + } + + if (score > best_score) { + best_score = score; + best_score_index = i; + } + } + + return best_score_index; +} + +void TtsControllerImpl::UpdateUtteranceDefaults(Utterance* utterance) { + double rate = utterance->continuous_parameters().rate; + double pitch = utterance->continuous_parameters().pitch; + double volume = utterance->continuous_parameters().volume; + // Update pitch, rate and volume to defaults if not explicity set on + // this utterance. + if (rate == blink::SpeechSynthesisConstants::kDoublePrefNotSet) + rate = blink::SpeechSynthesisConstants::kDefaultTextToSpeechRate; + if (pitch == blink::SpeechSynthesisConstants::kDoublePrefNotSet) + pitch = blink::SpeechSynthesisConstants::kDefaultTextToSpeechPitch; + if (volume == blink::SpeechSynthesisConstants::kDoublePrefNotSet) + volume = blink::SpeechSynthesisConstants::kDefaultTextToSpeechVolume; + utterance->set_continuous_parameters(rate, pitch, volume); +} + +void TtsControllerImpl::VoicesChanged() { + // Existence of platform tts indicates explicit requests to tts. Since + // |VoicesChanged| can occur implicitly, only send if needed. + if (!platform_impl_) + return; + + for (std::set<VoicesChangedDelegate*>::iterator iter = + voices_changed_delegates_.begin(); + iter != voices_changed_delegates_.end(); ++iter) { + (*iter)->OnVoicesChanged(); + } +} + +void TtsControllerImpl::AddVoicesChangedDelegate( + VoicesChangedDelegate* delegate) { + voices_changed_delegates_.insert(delegate); +} + +void TtsControllerImpl::RemoveVoicesChangedDelegate( + VoicesChangedDelegate* delegate) { + voices_changed_delegates_.erase(delegate); +} + +void TtsControllerImpl::RemoveUtteranceEventDelegate( + UtteranceEventDelegate* delegate) { + // First clear any pending utterances with this delegate. + base::queue<Utterance*> old_queue = utterance_queue_; + utterance_queue_ = base::queue<Utterance*>(); + while (!old_queue.empty()) { + Utterance* utterance = old_queue.front(); + old_queue.pop(); + if (utterance->event_delegate() != delegate) + utterance_queue_.push(utterance); + else + delete utterance; + } + + if (current_utterance_ && current_utterance_->event_delegate() == delegate) { + current_utterance_->set_event_delegate(nullptr); + if (!current_utterance_->extension_id().empty()) { + if (tts_engine_delegate_) + tts_engine_delegate_->Stop(current_utterance_); + } else { + GetPlatformImpl()->clear_error(); + GetPlatformImpl()->StopSpeaking(); + } + + FinishCurrentUtterance(); + if (!paused_) + SpeakNextUtterance(); + } +} + +void TtsControllerImpl::SetTtsEngineDelegate(TtsEngineDelegate* delegate) { + tts_engine_delegate_ = delegate; +} + +TtsEngineDelegate* TtsControllerImpl::GetTtsEngineDelegate() { + return tts_engine_delegate_; +}
diff --git a/chromecast/browser/tts/tts_controller_impl.h b/chromecast/browser/tts/tts_controller_impl.h new file mode 100644 index 0000000..5046f84 --- /dev/null +++ b/chromecast/browser/tts/tts_controller_impl.h
@@ -0,0 +1,119 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from chrome/browser/speech. +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#ifndef CHROMECAST_BROWSER_TTS_TTS_CONTROLLER_IMPL_H_ +#define CHROMECAST_BROWSER_TTS_TTS_CONTROLLER_IMPL_H_ + +#include <memory> +#include <set> +#include <string> +#include <vector> + +#include "base/containers/queue.h" +#include "base/gtest_prod_util.h" +#include "base/macros.h" +#include "base/memory/singleton.h" +#include "chromecast/browser/tts/tts_controller.h" +#include "url/gurl.h" + +namespace content { +class BrowserContext; +} + +// Singleton class that manages text-to-speech for the TTS and TTS engine +// extension APIs, maintaining a queue of pending utterances and keeping +// track of all state. +class TtsControllerImpl : public TtsController { + public: + // Get the single instance of this class. + static TtsControllerImpl* GetInstance(); + + // TtsController methods + bool IsSpeaking() override; + void SpeakOrEnqueue(Utterance* utterance) override; + void Stop() override; + void Pause() override; + void Resume() override; + void OnTtsEvent(int utterance_id, + TtsEventType event_type, + int char_index, + const std::string& error_message) override; + void GetVoices(content::BrowserContext* browser_context, + std::vector<VoiceData>* out_voices) override; + void VoicesChanged() override; + void AddVoicesChangedDelegate(VoicesChangedDelegate* delegate) override; + void RemoveVoicesChangedDelegate(VoicesChangedDelegate* delegate) override; + void RemoveUtteranceEventDelegate(UtteranceEventDelegate* delegate) override; + void SetTtsEngineDelegate(TtsEngineDelegate* delegate) override; + TtsEngineDelegate* GetTtsEngineDelegate() override; + void SetPlatformImpl(TtsPlatformImpl* platform_impl) override; + int QueueSize() override; + + std::string GetApplicationLocale() const; + + protected: + TtsControllerImpl(); + ~TtsControllerImpl() override; + + private: + FRIEND_TEST_ALL_PREFIXES(TtsControllerTest, TestGetMatchingVoice); + FRIEND_TEST_ALL_PREFIXES(TtsControllerTest, + TestTtsControllerUtteranceDefaults); + + // Get the platform TTS implementation (or injected mock). + TtsPlatformImpl* GetPlatformImpl(); + + // Start speaking the given utterance. Will either take ownership of + // |utterance| or delete it if there's an error. Returns true on success. + void SpeakNow(Utterance* utterance); + + // Clear the utterance queue. If send_events is true, will send + // TTS_EVENT_CANCELLED events on each one. + void ClearUtteranceQueue(bool send_events); + + // Finalize and delete the current utterance. + void FinishCurrentUtterance(); + + // Start speaking the next utterance in the queue. + void SpeakNextUtterance(); + + // Given an utterance and a vector of voices, return the + // index of the voice that best matches the utterance. + int GetMatchingVoice(const Utterance* utterance, + std::vector<VoiceData>& voices); + + // Updates the utterance to have default values for rate, pitch, and + // volume if they have not yet been set. On Chrome OS, defaults are + // pulled from user prefs, and may not be the same as other platforms. + void UpdateUtteranceDefaults(Utterance* utterance); + + friend struct base::DefaultSingletonTraits<TtsControllerImpl>; + + // The current utterance being spoken. + Utterance* current_utterance_; + + // Whether the queue is paused or not. + bool paused_; + + // A queue of utterances to speak after the current one finishes. + base::queue<Utterance*> utterance_queue_; + + // A set of delegates that want to be notified when the voices change. + std::set<VoicesChangedDelegate*> voices_changed_delegates_; + + // A pointer to the platform implementation of text-to-speech, for + // dependency injection. + TtsPlatformImpl* platform_impl_; + + // The delegate that processes TTS requests with user-installed extensions. + TtsEngineDelegate* tts_engine_delegate_; + + DISALLOW_COPY_AND_ASSIGN(TtsControllerImpl); +}; + +#endif // CHROMECAST_BROWSER_TTS_TTS_CONTROLLER_IMPL_H_
diff --git a/chromecast/browser/tts/tts_controller_unittest.cc b/chromecast/browser/tts/tts_controller_unittest.cc new file mode 100644 index 0000000..85290f05 --- /dev/null +++ b/chromecast/browser/tts/tts_controller_unittest.cc
@@ -0,0 +1,195 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from chrome/browser/speech. +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +// Unit tests for the TTS Controller. + +#include "base/values.h" +#include "chromecast/browser/tts/tts_controller_impl.h" +#include "chromecast/browser/tts/tts_platform.h" +#include "components/prefs/pref_registry_simple.h" +#include "components/prefs/testing_pref_service.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "third_party/blink/public/platform/web_speech_synthesis_constants.h" + +class TtsControllerTest : public testing::Test {}; + +// Platform Tts implementation that does nothing. +class DummyTtsPlatformImpl : public TtsPlatformImpl { + public: + DummyTtsPlatformImpl() {} + ~DummyTtsPlatformImpl() override {} + bool PlatformImplAvailable() override { return true; } + bool Speak(int utterance_id, + const std::string& utterance, + const std::string& lang, + const VoiceData& voice, + const UtteranceContinuousParameters& params) override { + return true; + } + bool IsSpeaking() override { return false; } + bool StopSpeaking() override { return true; } + void Pause() override {} + void Resume() override {} + void GetVoices(std::vector<VoiceData>* out_voices) override {} + std::string error() override { return std::string(); } + void clear_error() override {} + void set_error(const std::string& error) override {} +}; + +// Subclass of TtsController with a public ctor and dtor. +class TestableTtsController : public TtsControllerImpl { + public: + TestableTtsController() {} + ~TestableTtsController() override {} +}; + +TEST_F(TtsControllerTest, TestTtsControllerShutdown) { + DummyTtsPlatformImpl platform_impl; + TestableTtsController* controller = new TestableTtsController(); + controller->SetPlatformImpl(&platform_impl); + + Utterance* utterance1 = new Utterance(nullptr); + utterance1->set_can_enqueue(true); + utterance1->set_src_id(1); + controller->SpeakOrEnqueue(utterance1); + + Utterance* utterance2 = new Utterance(nullptr); + utterance2->set_can_enqueue(true); + utterance2->set_src_id(2); + controller->SpeakOrEnqueue(utterance2); + + // Make sure that deleting the controller when there are pending + // utterances doesn't cause a crash. + delete controller; +} + +TEST_F(TtsControllerTest, TestGetMatchingVoice) { + TtsControllerImpl* tts_controller = TtsControllerImpl::GetInstance(); + + { + // Calling GetMatchingVoice with no voices returns -1. + Utterance utterance(nullptr); + std::vector<VoiceData> voices; + EXPECT_EQ(-1, tts_controller->GetMatchingVoice(&utterance, voices)); + } + + { + // Calling GetMatchingVoice with any voices returns the first one + // even if there are no criteria that match. + Utterance utterance(nullptr); + std::vector<VoiceData> voices; + voices.push_back(VoiceData()); + voices.push_back(VoiceData()); + EXPECT_EQ(0, tts_controller->GetMatchingVoice(&utterance, voices)); + } + + { + // If nothing else matches, the English voice is returned. + // (In tests the language will always be English.) + Utterance utterance(nullptr); + std::vector<VoiceData> voices; + VoiceData fr_voice; + fr_voice.lang = "fr"; + voices.push_back(fr_voice); + VoiceData en_voice; + en_voice.lang = "en"; + voices.push_back(en_voice); + VoiceData de_voice; + de_voice.lang = "de"; + voices.push_back(de_voice); + EXPECT_EQ(1, tts_controller->GetMatchingVoice(&utterance, voices)); + } + + { + // Check precedence of various matching criteria. + std::vector<VoiceData> voices; + VoiceData voice0; + voices.push_back(voice0); + VoiceData voice1; + voice1.gender = TTS_GENDER_FEMALE; + voices.push_back(voice1); + VoiceData voice2; + voice2.events.insert(TTS_EVENT_WORD); + voices.push_back(voice2); + VoiceData voice3; + voice3.lang = "de-DE"; + voices.push_back(voice3); + VoiceData voice4; + voice4.lang = "fr-CA"; + voices.push_back(voice4); + VoiceData voice5; + voice5.name = "Voice5"; + voices.push_back(voice5); + VoiceData voice6; + voice6.extension_id = "id6"; + voices.push_back(voice6); + + Utterance utterance(nullptr); + EXPECT_EQ(0, tts_controller->GetMatchingVoice(&utterance, voices)); + + utterance.set_gender(TTS_GENDER_FEMALE); + EXPECT_EQ(1, tts_controller->GetMatchingVoice(&utterance, voices)); + + std::set<TtsEventType> types; + types.insert(TTS_EVENT_WORD); + utterance.set_required_event_types(types); + EXPECT_EQ(2, tts_controller->GetMatchingVoice(&utterance, voices)); + + utterance.set_lang("de-DE"); + EXPECT_EQ(3, tts_controller->GetMatchingVoice(&utterance, voices)); + + utterance.set_lang("fr-FR"); + EXPECT_EQ(4, tts_controller->GetMatchingVoice(&utterance, voices)); + + utterance.set_voice_name("Voice5"); + EXPECT_EQ(5, tts_controller->GetMatchingVoice(&utterance, voices)); + + utterance.set_voice_name(""); + utterance.set_extension_id("id6"); + EXPECT_EQ(6, tts_controller->GetMatchingVoice(&utterance, voices)); + } +} + +#if defined(OS_CHROMEOS) +TEST_F(TtsControllerTest, TestTtsControllerUtteranceDefaults) { + std::unique_ptr<TestableTtsController> controller = + std::make_unique<TestableTtsController>(); + + std::unique_ptr<Utterance> utterance1 = std::make_unique<Utterance>(nullptr); + // Initialized to default (unset constant) values. + EXPECT_EQ(blink::SpeechSynthesisConstants::kDoublePrefNotSet, + utterance1->continuous_parameters().rate); + EXPECT_EQ(blink::SpeechSynthesisConstants::kDoublePrefNotSet, + utterance1->continuous_parameters().pitch); + EXPECT_EQ(blink::SpeechSynthesisConstants::kDoublePrefNotSet, + utterance1->continuous_parameters().volume); + + controller->UpdateUtteranceDefaults(utterance1.get()); + // Updated to global defaults. + EXPECT_EQ(blink::SpeechSynthesisConstants::kDefaultTextToSpeechRate, + utterance1->continuous_parameters().rate); + EXPECT_EQ(blink::SpeechSynthesisConstants::kDefaultTextToSpeechPitch, + utterance1->continuous_parameters().pitch); + EXPECT_EQ(blink::SpeechSynthesisConstants::kDefaultTextToSpeechVolume, + utterance1->continuous_parameters().volume); + + // Now we will set prefs and expect those to be used as defaults. + TestingPrefServiceSimple pref_service_; + pref_service_.registry()->RegisterDoublePref(prefs::kTextToSpeechRate, 1.5); + pref_service_.registry()->RegisterDoublePref(prefs::kTextToSpeechPitch, 2.0); + pref_service_.registry()->RegisterDoublePref(prefs::kTextToSpeechVolume, 0.5); + + controller->pref_service_for_testing_ = &pref_service_; + std::unique_ptr<Utterance> utterance2 = std::make_unique<Utterance>(nullptr); + controller->UpdateUtteranceDefaults(utterance2.get()); + // Updated to pref values. + EXPECT_EQ(1.5f, utterance2->continuous_parameters().rate); + EXPECT_EQ(2.0f, utterance2->continuous_parameters().pitch); + EXPECT_EQ(0.5f, utterance2->continuous_parameters().volume); +} +#endif // defined(OS_CHROMEOS)
diff --git a/chromecast/browser/tts/tts_message_filter.cc b/chromecast/browser/tts/tts_message_filter.cc new file mode 100644 index 0000000..fd48c194 --- /dev/null +++ b/chromecast/browser/tts/tts_message_filter.cc
@@ -0,0 +1,218 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from chrome/browser/speech. +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#include "chromecast/browser/tts/tts_message_filter.h" + +#include <stddef.h> + +#include "base/bind.h" +#include "base/logging.h" +#include "chromecast/common/tts_messages.h" +#include "content/public/browser/browser_context.h" +#include "content/public/browser/notification_service.h" +#include "content/public/browser/render_process_host.h" + +using content::BrowserThread; + +TtsMessageFilter::TtsMessageFilter(content::BrowserContext* browser_context) + : BrowserMessageFilter(TtsMsgStart), + browser_context_(browser_context), + valid_(true) { + CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + TtsController::GetInstance()->AddVoicesChangedDelegate(this); + + // TODO(rdaum): This appears to be unnecessary. Commented out for now, as + // cannot be ported cleanly to cast. + // TODO(dmazzoni): make it so that we can listen for a BrowserContext + // being destroyed rather than a Profile. http://crbug.com/444668 + // Profile* profile = Profile::FromBrowserContext(browser_context); + // notification_registrar_.Add(this, + // chrome::NOTIFICATION_PROFILE_DESTROYED, + // content::Source<Profile>(profile)); + + // Balanced in OnChannelClosingInUIThread() to keep the ref-count be non-zero + // until all pointers to this class are invalidated. + AddRef(); +} + +void TtsMessageFilter::OverrideThreadForMessage(const IPC::Message& message, + BrowserThread::ID* thread) { + switch (message.type()) { + case TtsHostMsg_InitializeVoiceList::ID: + case TtsHostMsg_Speak::ID: + case TtsHostMsg_Pause::ID: + case TtsHostMsg_Resume::ID: + case TtsHostMsg_Cancel::ID: + *thread = BrowserThread::UI; + break; + } +} + +bool TtsMessageFilter::OnMessageReceived(const IPC::Message& message) { + bool handled = true; + IPC_BEGIN_MESSAGE_MAP(TtsMessageFilter, message) + IPC_MESSAGE_HANDLER(TtsHostMsg_InitializeVoiceList, OnInitializeVoiceList) + IPC_MESSAGE_HANDLER(TtsHostMsg_Speak, OnSpeak) + IPC_MESSAGE_HANDLER(TtsHostMsg_Pause, OnPause) + IPC_MESSAGE_HANDLER(TtsHostMsg_Resume, OnResume) + IPC_MESSAGE_HANDLER(TtsHostMsg_Cancel, OnCancel) + IPC_MESSAGE_UNHANDLED(handled = false) + IPC_END_MESSAGE_MAP() + return handled; +} + +void TtsMessageFilter::OnChannelClosing() { + base::AutoLock lock(mutex_); + valid_ = false; + BrowserThread::PostTask( + BrowserThread::UI, FROM_HERE, + base::Bind(&TtsMessageFilter::OnChannelClosingInUIThread, this)); +} + +bool TtsMessageFilter::Valid() { + base::AutoLock lock(mutex_); + return valid_; +} + +void TtsMessageFilter::OnDestruct() const { + { + base::AutoLock lock(mutex_); + valid_ = false; + } + BrowserThread::DeleteOnUIThread::Destruct(this); +} + +TtsMessageFilter::~TtsMessageFilter() { + CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + Cleanup(); +} + +void TtsMessageFilter::OnInitializeVoiceList() { + CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + if (!browser_context_) + return; + + TtsController* tts_controller = TtsController::GetInstance(); + std::vector<VoiceData> voices; + tts_controller->GetVoices(browser_context_, &voices); + + std::vector<TtsVoice> out_voices; + out_voices.resize(voices.size()); + for (size_t i = 0; i < voices.size(); ++i) { + TtsVoice& out_voice = out_voices[i]; + out_voice.voice_uri = voices[i].name; + out_voice.name = voices[i].name; + out_voice.lang = voices[i].lang; + out_voice.local_service = !voices[i].remote; + out_voice.is_default = (i == 0); + } + Send(new TtsMsg_SetVoiceList(out_voices)); +} + +void TtsMessageFilter::OnSpeak(const TtsUtteranceRequest& request) { + CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + if (!browser_context_) + return; + + std::unique_ptr<Utterance> utterance(new Utterance(browser_context_)); + utterance->set_src_id(request.id); + utterance->set_text(request.text); + utterance->set_lang(request.lang); + utterance->set_voice_name(request.voice); + utterance->set_can_enqueue(true); + utterance->set_continuous_parameters(request.rate, request.pitch, + request.volume); + + utterance->set_event_delegate(this); + + TtsController::GetInstance()->SpeakOrEnqueue(utterance.release()); +} + +void TtsMessageFilter::OnPause() { + CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + TtsController::GetInstance()->Pause(); +} + +void TtsMessageFilter::OnResume() { + CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + TtsController::GetInstance()->Resume(); +} + +void TtsMessageFilter::OnCancel() { + CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + TtsController::GetInstance()->Stop(); +} + +void TtsMessageFilter::OnTtsEvent(Utterance* utterance, + TtsEventType event_type, + int char_index, + const std::string& error_message) { + if (!Valid()) + return; + + CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + switch (event_type) { + case TTS_EVENT_START: + Send(new TtsMsg_DidStartSpeaking(utterance->src_id())); + break; + case TTS_EVENT_END: + Send(new TtsMsg_DidFinishSpeaking(utterance->src_id())); + break; + case TTS_EVENT_WORD: + Send(new TtsMsg_WordBoundary(utterance->src_id(), char_index)); + break; + case TTS_EVENT_SENTENCE: + Send(new TtsMsg_SentenceBoundary(utterance->src_id(), char_index)); + break; + case TTS_EVENT_MARKER: + Send(new TtsMsg_MarkerEvent(utterance->src_id(), char_index)); + break; + case TTS_EVENT_INTERRUPTED: + Send(new TtsMsg_WasInterrupted(utterance->src_id())); + break; + case TTS_EVENT_CANCELLED: + Send(new TtsMsg_WasCancelled(utterance->src_id())); + break; + case TTS_EVENT_ERROR: + Send( + new TtsMsg_SpeakingErrorOccurred(utterance->src_id(), error_message)); + break; + case TTS_EVENT_PAUSE: + Send(new TtsMsg_DidPauseSpeaking(utterance->src_id())); + break; + case TTS_EVENT_RESUME: + Send(new TtsMsg_DidResumeSpeaking(utterance->src_id())); + break; + } +} + +void TtsMessageFilter::OnVoicesChanged() { + if (!Valid()) + return; + + CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + OnInitializeVoiceList(); +} + +void TtsMessageFilter::OnChannelClosingInUIThread() { + CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + Cleanup(); + Release(); // Balanced in TtsMessageFilter(). +} + +void TtsMessageFilter::Cleanup() { + TtsController::GetInstance()->RemoveVoicesChangedDelegate(this); + TtsController::GetInstance()->RemoveUtteranceEventDelegate(this); +} + +void TtsMessageFilter::Observe(int type, + const content::NotificationSource& source, + const content::NotificationDetails& details) { + browser_context_ = nullptr; + notification_registrar_.RemoveAll(); +}
diff --git a/chromecast/browser/tts/tts_message_filter.h b/chromecast/browser/tts/tts_message_filter.h new file mode 100644 index 0000000..4f3af30 --- /dev/null +++ b/chromecast/browser/tts/tts_message_filter.h
@@ -0,0 +1,83 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from chrome/browser/speech. +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#ifndef CHROMECAST_BROWSER_TTS_TTS_MESSAGE_FILTER_H_ +#define CHROMECAST_BROWSER_TTS_TTS_MESSAGE_FILTER_H_ + +#include "base/macros.h" +#include "base/memory/weak_ptr.h" +#include "base/synchronization/lock.h" +#include "chromecast/browser/tts/tts_controller.h" +#include "content/public/browser/browser_message_filter.h" +#include "content/public/browser/browser_thread.h" +#include "content/public/browser/notification_observer.h" +#include "content/public/browser/notification_registrar.h" + +namespace content { +class BrowserContext; +} + +struct TtsUtteranceRequest; + +class TtsMessageFilter : public content::BrowserMessageFilter, + public content::NotificationObserver, + public UtteranceEventDelegate, + public VoicesChangedDelegate { + public: + explicit TtsMessageFilter(content::BrowserContext* browser_context); + + // content::BrowserMessageFilter implementation. + void OverrideThreadForMessage(const IPC::Message& message, + content::BrowserThread::ID* thread) override; + bool OnMessageReceived(const IPC::Message& message) override; + void OnChannelClosing() override; + void OnDestruct() const override; + + // UtteranceEventDelegate implementation. + void OnTtsEvent(Utterance* utterance, + TtsEventType event_type, + int char_index, + const std::string& error_message) override; + + // VoicesChangedDelegate implementation. + void OnVoicesChanged() override; + + private: + friend class content::BrowserThread; + friend class base::DeleteHelper<TtsMessageFilter>; + + ~TtsMessageFilter() override; + + void OnInitializeVoiceList(); + void OnSpeak(const TtsUtteranceRequest& utterance); + void OnPause(); + void OnResume(); + void OnCancel(); + + void OnChannelClosingInUIThread(); + + void Cleanup(); + + // Thread-safe check to make sure this class is still valid and not + // about to be deleted. + bool Valid(); + + // content::NotificationObserver implementation. + void Observe(int type, + const content::NotificationSource& source, + const content::NotificationDetails& details) override; + + content::BrowserContext* browser_context_; + mutable base::Lock mutex_; + mutable bool valid_; + content::NotificationRegistrar notification_registrar_; + + DISALLOW_COPY_AND_ASSIGN(TtsMessageFilter); +}; + +#endif // CHROMECAST_BROWSER_TTS_TTS_MESSAGE_FILTER_H_
diff --git a/chromecast/browser/tts/tts_platform.cc b/chromecast/browser/tts/tts_platform.cc new file mode 100644 index 0000000..e9377789 --- /dev/null +++ b/chromecast/browser/tts/tts_platform.cc
@@ -0,0 +1,32 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from chrome/browser/speech. +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#include "chromecast/browser/tts/tts_platform.h" + +#include <string> + +bool TtsPlatformImpl::LoadBuiltInTtsExtension( + content::BrowserContext* browser_context) { + return false; +} + +std::string TtsPlatformImpl::error() { + return error_; +} + +void TtsPlatformImpl::clear_error() { + error_ = std::string(); +} + +void TtsPlatformImpl::set_error(const std::string& error) { + error_ = error; +} + +void TtsPlatformImpl::WillSpeakUtteranceWithVoice(const Utterance* utterance, + const VoiceData& voice_data) { +}
diff --git a/chromecast/browser/tts/tts_platform.h b/chromecast/browser/tts/tts_platform.h new file mode 100644 index 0000000..fa2631ca --- /dev/null +++ b/chromecast/browser/tts/tts_platform.h
@@ -0,0 +1,85 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from chrome/browser/speech. +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#ifndef CHROMECAST_BROWSER_TTS_TTS_PLATFORM_H_ +#define CHROMECAST_BROWSER_TTS_TTS_PLATFORM_H_ + +#include <string> + +#include "base/macros.h" +#include "chromecast/browser/tts/tts_controller.h" + +// Abstract class that defines the native platform TTS interface, +// subclassed by specific implementations on Win, Mac, etc. +class TtsPlatformImpl { + public: + static TtsPlatformImpl* GetInstance(); + + // Returns true if this platform implementation is supported and available. + virtual bool PlatformImplAvailable() = 0; + + // Some platforms may provide a built-in TTS extension. Returns true + // if the extension was not previously loaded and is now loading, and + // false if it's already loaded or if there's no extension to load. + // Will call TtsController::RetrySpeakingQueuedUtterances when + // the extension finishes loading. + virtual bool LoadBuiltInTtsExtension( + content::BrowserContext* browser_context); + + // Speak the given utterance with the given parameters if possible, + // and return true on success. Utterance will always be nonempty. + // If rate, pitch, or volume are -1.0, they will be ignored. + // + // The TtsController will only try to speak one utterance at + // a time. If it wants to interrupt speech, it will always call Stop + // before speaking again. + virtual bool Speak(int utterance_id, + const std::string& utterance, + const std::string& lang, + const VoiceData& voice, + const UtteranceContinuousParameters& params) = 0; + + // Stop speaking immediately and return true on success. + virtual bool StopSpeaking() = 0; + + // Returns whether any speech is on going. + virtual bool IsSpeaking() = 0; + + // Append information about voices provided by this platform implementation + // to |out_voices|. + virtual void GetVoices(std::vector<VoiceData>* out_voices) = 0; + + // Pause the current utterance, if any, until a call to Resume, + // Speak, or StopSpeaking. + virtual void Pause() = 0; + + // Resume speaking the current utterance, if it was paused. + virtual void Resume() = 0; + + // Allows the platform to monitor speech commands and the voices used + // for each one. + virtual void WillSpeakUtteranceWithVoice(const Utterance* utterance, + const VoiceData& voice_data); + + virtual std::string error(); + virtual void clear_error(); + virtual void set_error(const std::string& error); + + protected: + TtsPlatformImpl() {} + + // On some platforms this may be a leaky singleton - do not rely on the + // destructor being called! http://crbug.com/122026 + virtual ~TtsPlatformImpl() {} + + std::string error_; + + DISALLOW_COPY_AND_ASSIGN(TtsPlatformImpl); +}; + +#endif // CHROMECAST_BROWSER_TTS_TTS_PLATFORM_H_
diff --git a/chromecast/browser/tts/tts_platform_stub.cc b/chromecast/browser/tts/tts_platform_stub.cc new file mode 100644 index 0000000..4fd72ff --- /dev/null +++ b/chromecast/browser/tts/tts_platform_stub.cc
@@ -0,0 +1,85 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromecast/browser/tts/tts_controller.h" +#include "chromecast/browser/tts/tts_platform.h" + +namespace chromecast { + +// An implementaton of TtsPlaform for Cast that merely logs events. +class TtsPlatformImplStub : public TtsPlatformImpl { + public: + bool PlatformImplAvailable() override { return true; } + + bool Speak(int utterance_id, + const std::string& utterance, + const std::string& lang, + const VoiceData& voice, + const UtteranceContinuousParameters& params) override; + + bool StopSpeaking() override; + + void Pause() override; + + void Resume() override; + + bool IsSpeaking() override; + + void GetVoices(std::vector<VoiceData>* out_voices) override; + + // Get the single instance of this class. + static TtsPlatformImplStub* GetInstance(); + + private: + TtsPlatformImplStub() = default; + ~TtsPlatformImplStub() override = default; + + friend struct base::DefaultSingletonTraits<TtsPlatformImplStub>; + + DISALLOW_COPY_AND_ASSIGN(TtsPlatformImplStub); +}; + +bool TtsPlatformImplStub::Speak(int utterance_id, + const std::string& utterance, + const std::string& lang, + const VoiceData& voice, + const UtteranceContinuousParameters& params) { + LOG(INFO) << "Speak: " << utterance; + return true; +} + +bool TtsPlatformImplStub::StopSpeaking() { + LOG(INFO) << "StopSpeaking"; + return true; +} + +void TtsPlatformImplStub::Pause() { + LOG(INFO) << "Pause"; +} + +void TtsPlatformImplStub::Resume() { + LOG(INFO) << "Resume"; +} + +bool TtsPlatformImplStub::IsSpeaking() { + LOG(INFO) << "IsSpeaking"; + return false; +} + +void TtsPlatformImplStub::GetVoices(std::vector<VoiceData>* out_voices) { + LOG(INFO) << "GetVoices"; +} + +// static +TtsPlatformImplStub* TtsPlatformImplStub::GetInstance() { + return base::Singleton<TtsPlatformImplStub, base::LeakySingletonTraits< + TtsPlatformImplStub>>::get(); +} + +} // namespace chromecast + +// static +TtsPlatformImpl* TtsPlatformImpl::GetInstance() { + return chromecast::TtsPlatformImplStub::GetInstance(); +}
diff --git a/chromecast/common/BUILD.gn b/chromecast/common/BUILD.gn index 92ad341c..e949919f 100644 --- a/chromecast/common/BUILD.gn +++ b/chromecast/common/BUILD.gn
@@ -11,7 +11,12 @@ "cast_content_client.h", "cast_resource_delegate.cc", "cast_resource_delegate.h", + "common_message_generator.cc", + "common_message_generator.h", "global_descriptors.h", + "tts_messages.h", + "tts_utterance_request.cc", + "tts_utterance_request.h", ] deps = [ @@ -36,6 +41,8 @@ "extensions_api/cast_api_permissions.h", "extensions_api/cast_extension_messages.cc", "extensions_api/cast_extension_messages.h", + "extensions_api/tts/tts_engine_manifest_handler.cc", + "extensions_api/tts/tts_engine_manifest_handler.h", ] deps += [
diff --git a/chromecast/common/OWNERS b/chromecast/common/OWNERS index 08850f4..a3a5b25 100644 --- a/chromecast/common/OWNERS +++ b/chromecast/common/OWNERS
@@ -1,2 +1,4 @@ per-file *.mojom=set noparent per-file *.mojom=file://ipc/SECURITY_OWNERS +per-file *_messages*.h=set noparent +per-file *_messages*.h=file://ipc/SECURITY_OWNERS
diff --git a/chromecast/common/cast_extensions_client.cc b/chromecast/common/cast_extensions_client.cc index a2b8a3e..2136e16 100644 --- a/chromecast/common/cast_extensions_client.cc +++ b/chromecast/common/cast_extensions_client.cc
@@ -17,6 +17,7 @@ #include "chromecast/common/extensions_api/cast_manifest_features.h" #include "chromecast/common/extensions_api/cast_permission_features.h" #include "chromecast/common/extensions_api/generated_schemas.h" +#include "chromecast/common/extensions_api/tts/tts_engine_manifest_handler.h" #include "components/version_info/version_info.h" #include "content/public/common/user_agent.h" #include "extensions/common/api/generated_schemas.h" @@ -44,6 +45,7 @@ DCHECK(!ManifestHandler::IsRegistrationFinalized()); (new AutomationHandler)->Register(); // TODO(crbug/837773) De-dupe later. (new ContentScriptsHandler)->Register(); + (new TtsEngineManifestHandler)->Register(); } // TODO(jamescook): Refactor ChromePermissionsMessageProvider so we can share
diff --git a/chromecast/common/common_message_generator.cc b/chromecast/common/common_message_generator.cc new file mode 100644 index 0000000..016a179 --- /dev/null +++ b/chromecast/common/common_message_generator.cc
@@ -0,0 +1,33 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Get basic type definitions. +#define IPC_MESSAGE_IMPL +#include "chromecast/common/common_message_generator.h" + +// Generate constructors. +#include "ipc/struct_constructor_macros.h" +#include "chromecast/common/common_message_generator.h" + +// Generate destructors. +#include "ipc/struct_destructor_macros.h" +#include "chromecast/common/common_message_generator.h" + +// Generate param traits write methods. +#include "ipc/param_traits_write_macros.h" +namespace IPC { +#include "chromecast/common/common_message_generator.h" +} // namespace IPC + +// Generate param traits read methods. +#include "ipc/param_traits_read_macros.h" +namespace IPC { +#include "chromecast/common/common_message_generator.h" +} // namespace IPC + +// Generate param traits log methods. +#include "ipc/param_traits_log_macros.h" +namespace IPC { +#include "chromecast/common/common_message_generator.h" +} // namespace IPC
diff --git a/chromecast/common/common_message_generator.h b/chromecast/common/common_message_generator.h new file mode 100644 index 0000000..8260292 --- /dev/null +++ b/chromecast/common/common_message_generator.h
@@ -0,0 +1,11 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Multiply-included file, hence no include guard. + +#undef CHROMECAST_COMMON_TTS_MESSAGES_H_ +#include "chromecast/common/tts_messages.h" +#ifndef CHROMECAST_COMMON_TTS_MESSAGES_H_ +#error "Failed to include header chromecast/common/tts_messages.h" +#endif
diff --git a/chromecast/common/extensions_api/BUILD.gn b/chromecast/common/extensions_api/BUILD.gn index 092090d7..5d8ae36 100644 --- a/chromecast/common/extensions_api/BUILD.gn +++ b/chromecast/common/extensions_api/BUILD.gn
@@ -17,14 +17,25 @@ "braille_display_private.idl", "history.json", "identity.idl", + "i18n.json", ] + root_namespace = "extensions::cast::api::%(namespace)s" +extensions_api_uncompiled_sources = [ + "extension.json", +] + json_schema_api("api") { sources = schema_sources + uncompiled_sources = extensions_api_uncompiled_sources schemas = true bundle = true bundle_name = "Cast" + uncompiled_bundle_schema_sources = [ + "tts.json", + "tts_engine.json", + ] } json_schema_api("api_registration") {
diff --git a/chromecast/common/extensions_api/_api_features.json b/chromecast/common/extensions_api/_api_features.json index 0d4bbd06..bf33629 100644 --- a/chromecast/common/extensions_api/_api_features.json +++ b/chromecast/common/extensions_api/_api_features.json
@@ -21,6 +21,48 @@ "dependencies": ["permission:brailleDisplayPrivate"], "contexts": ["blessed_extension"] }, + "i18n": { + "channel": "stable", + "extension_types": ["extension", "legacy_packaged_app", "platform_app"], + "contexts": ["blessed_extension", "unblessed_extension", "content_script", + "lock_screen_extension"] + }, + "extension": { + "channel": "stable", + "extension_types": ["extension", "legacy_packaged_app"], + "contexts": ["blessed_extension"] + }, + "extension.getURL": { + "contexts": ["blessed_extension", "unblessed_extension", "content_script", "extension_service_worker"] + }, + "extension.getViews": [ + { + "channel": "stable", + "contexts": ["blessed_extension"], + "extension_types": ["extension", "legacy_packaged_app"] + }, + { + // TODO(yoz): Eliminate this usage. + "channel": "stable", + "contexts": ["blessed_extension"], + "extension_types": ["platform_app"], + "whitelist": [ + "A948368FC53BE437A55FEB414106E207925482F5" // File manager + ] + } + ], + "extension.inIncognitoContext": { + "contexts": ["blessed_extension", "unblessed_extension", "content_script"] + }, + "extension.lastError": { + "contexts": ["blessed_extension", "unblessed_extension", "content_script"] + }, + "extension.onRequest": { + "contexts": ["blessed_extension", "unblessed_extension", "content_script"] + }, + "extension.sendRequest": { + "contexts": ["blessed_extension", "unblessed_extension", "content_script"] + }, // Stub implementation of chrome.identity for app_shell. "identity": { "channel": "dev", @@ -43,5 +85,9 @@ "matches": [ "chrome://bookmarks/*" ] - }] + }], + "tts": { + "dependencies": ["permission:tts"], + "contexts": ["blessed_extension"] + } }
diff --git a/chromecast/common/extensions_api/_manifest_features.json b/chromecast/common/extensions_api/_manifest_features.json index 8606334f..6ce9486c 100644 --- a/chromecast/common/extensions_api/_manifest_features.json +++ b/chromecast/common/extensions_api/_manifest_features.json
@@ -19,5 +19,9 @@ "content_scripts": { "channel": "stable", "extension_types": ["extension", "legacy_packaged_app"] + }, + "tts_engine": { + "channel": "stable", + "extension_types": ["platform_app", "extension", "legacy_packaged_app"] } }
diff --git a/chromecast/common/extensions_api/_permission_features.json b/chromecast/common/extensions_api/_permission_features.json index 651e919..db0836d9 100644 --- a/chromecast/common/extensions_api/_permission_features.json +++ b/chromecast/common/extensions_api/_permission_features.json
@@ -15,5 +15,13 @@ "history": { "channel": "stable", "extension_types": ["extension", "legacy_packaged_app"] + }, + "tts": { + "channel": "stable", + "extension_types": ["extension", "legacy_packaged_app", "platform_app"] + }, + "ttsEngine": { + "channel": "stable", + "extension_types": ["extension", "legacy_packaged_app"] } }
diff --git a/chromecast/common/extensions_api/extension.json b/chromecast/common/extensions_api/extension.json new file mode 100644 index 0000000..2c706e0 --- /dev/null +++ b/chromecast/common/extensions_api/extension.json
@@ -0,0 +1,229 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +[ + { + "namespace": "extension", + "description": "The <code>chrome.extension</code> API has utilities that can be used by any extension page. It includes support for exchanging messages between an extension and its content scripts or between extensions, as described in detail in <a href='messaging'>Message Passing</a>.", + "compiler_options": { + "implemented_in": "chrome/browser/extensions/api/module/module.h" + }, + "properties": { + "lastError": { + "type": "object", + "optional": true, + "deprecated": "Please use $(ref:runtime.lastError).", + "description": "Set for the lifetime of a callback if an ansychronous extension api has resulted in an error. If no error has occured lastError will be <var>undefined</var>.", + "properties": { + "message": { "type": "string", "description": "Description of the error that has taken place." } + } + }, + "inIncognitoContext": { + "type": "boolean", + "optional": true, + "description": "True for content scripts running inside incognito tabs, and for extension pages running inside an incognito process. The latter only applies to extensions with 'split' incognito_behavior." + } + }, + "types": [ + { + "id": "ViewType", + "type": "string", + "enum": ["tab", "popup"], + "description": "The type of extension view." + } + ], + "functions": [ + { + "name": "sendRequest", + "nocompile": true, + "deprecated": "Please use $(ref:runtime.sendMessage).", + "type": "function", + "allowAmbiguousOptionalArguments": true, + "description": "Sends a single request to other listeners within the extension. Similar to $(ref:runtime.connect), but only sends a single request with an optional response. The $(ref:extension.onRequest) event is fired in each page of the extension.", + "parameters": [ + {"type": "string", "name": "extensionId", "optional": true, "description": "The extension ID of the extension you want to connect to. If omitted, default is your own extension."}, + { "type": "any", "name": "request" }, + { + "type": "function", + "name": "responseCallback", + "optional": true, + "parameters": [ + { + "name": "response", + "type": "any", + "description": "The JSON response object sent by the handler of the request. If an error occurs while connecting to the extension, the callback will be called with no arguments and $(ref:runtime.lastError) will be set to the error message." + } + ] + } + ] + }, + { + "name": "getURL", + "deprecated": "Please use $(ref:runtime.getURL).", + "nocompile": true, + "type": "function", + "description": "Converts a relative path within an extension install directory to a fully-qualified URL.", + "parameters": [ + { + "type": "string", + "name": "path", + "description": "A path to a resource within an extension expressed relative to its install directory." + } + ], + "returns": { + "type": "string", + "description": "The fully-qualified URL to the resource." + } + }, + { + "name": "getViews", + "nocompile": true, + "type": "function", + "description": "Returns an array of the JavaScript 'window' objects for each of the pages running inside the current extension.", + "parameters": [ + { + "type": "object", + "name": "fetchProperties", + "optional": true, + "properties": { + "type": { + "$ref": "ViewType", + "optional": true, + "description": "The type of view to get. If omitted, returns all views (including background pages and tabs). Valid values: 'tab', 'notification', 'popup'." + }, + "windowId": { + "type": "integer", + "optional": true, + "description": "The window to restrict the search to. If omitted, returns all views." + }, + "tabId": { + "type": "integer", + "optional":true, + "description": "Find a view according to a tab id. If this field is omitted, returns all views." + } + } + } + ], + "returns": { + "type": "array", + "description": "Array of global objects", + "items": { + "name": "viewGlobals", + "type": "object", + "isInstanceOf": "Window", + "additionalProperties": { "type": "any" } + } + } + }, + { + "name": "getBackgroundPage", + "nocompile": true, + "type": "function", + "description": "Returns the JavaScript 'window' object for the background page running inside the current extension. Returns null if the extension has no background page.", + "parameters": [], + "returns": { + "type": "object", + "optional": true, + "name": "backgroundPageGlobal", + "isInstanceOf": "Window", + "additionalProperties": { "type": "any" } + } + }, + { + "name": "getExtensionTabs", + "nocompile": true, + "deprecated": "Please use $(ref:extension.getViews) <code>{type: \"tab\"}</code>.", + "type": "function", + "maximumManifestVersion": 1, + "description": "Returns an array of the JavaScript 'window' objects for each of the tabs running inside the current extension. If <code>windowId</code> is specified, returns only the 'window' objects of tabs attached to the specified window.", + "parameters": [ + {"type": "integer", "name": "windowId", "optional": true} + ], + "returns": { + "type": "array", + "description": "Array of global window objects", + "items": { + "type": "object", + "name": "tabGlobals", + "isInstanceOf": "Window", + "additionalProperties": { "type": "any" } + } + } + }, + { + "name": "isAllowedIncognitoAccess", + "type": "function", + "description": "Retrieves the state of the extension's access to Incognito-mode (as determined by the user-controlled 'Allowed in Incognito' checkbox.", + "min_version": "12.0.706.0", + "parameters": [ + { + "type": "function", + "name": "callback", + "parameters": [ + { + "name": "isAllowedAccess", + "type": "boolean", + "description": "True if the extension has access to Incognito mode, false otherwise." + } + ] + } + ] + }, + { + "name": "isAllowedFileSchemeAccess", + "type": "function", + "description": "Retrieves the state of the extension's access to the 'file://' scheme (as determined by the user-controlled 'Allow access to File URLs' checkbox.", + "min_version": "12.0.706.0", + "parameters": [ + { + "type": "function", + "name": "callback", + "parameters": [ + { + "name": "isAllowedAccess", + "type": "boolean", + "description": "True if the extension can access the 'file://' scheme, false otherwise." + } + ] + } + ] + }, + { + "name": "setUpdateUrlData", + "type": "function", + "description": "Sets the value of the ap CGI parameter used in the extension's update URL. This value is ignored for extensions that are hosted in the Chrome Extension Gallery.", + "parameters": [ + {"type": "string", "name": "data", "maxLength": 1024} + ] + } + ], + "events": [ + { + "name": "onRequest", + "deprecated": "Please use $(ref:runtime.onMessage).", + "type": "function", + "options": { + "unmanaged": true + }, + "description": "Fired when a request is sent from either an extension process or a content script.", + "parameters": [ + {"name": "request", "type": "any", "optional": true, "description": "The request sent by the calling script."}, + {"name": "sender", "$ref": "runtime.MessageSender" }, + {"name": "sendResponse", "type": "function", "description": "Function to call (at most once) when you have a response. The argument should be any JSON-ifiable object, or undefined if there is no response. If you have more than one <code>onRequest</code> listener in the same document, then only one may send a response." } + ] + }, + { + "name": "onRequestExternal", + "deprecated": "Please use $(ref:runtime.onMessageExternal).", + "type": "function", + "description": "Fired when a request is sent from another extension.", + "parameters": [ + {"name": "request", "type": "any", "optional": true, "description": "The request sent by the calling script."}, + {"name": "sender", "$ref": "runtime.MessageSender" }, + {"name": "sendResponse", "type": "function", "description": "Function to call when you have a response. The argument should be any JSON-ifiable object, or undefined if there is no response." } + ] + } + ] + } +]
diff --git a/chromecast/common/extensions_api/i18n.json b/chromecast/common/extensions_api/i18n.json new file mode 100644 index 0000000..d9fc392 --- /dev/null +++ b/chromecast/common/extensions_api/i18n.json
@@ -0,0 +1,118 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +[ + { + "namespace": "i18n", + "description": "Use the <code>chrome.i18n</code> infrastructure to implement internationalization across your whole app or extension.", + "types": [ + { + "id": "LanguageCode", + "type": "string", + "description": "An ISO language code such as <code>en</code> or <code>fr</code>. For a complete list of languages supported by this method, see <a href='http://src.chromium.org/viewvc/chrome/trunk/src/third_party/cld/languages/internal/languages.cc'>kLanguageInfoTable</a>. For an unknown language, <code>und</code> will be returned, which means that [percentage] of the text is unknown to CLD" + } + ], + "functions": [ + { + "name": "getAcceptLanguages", + "type": "function", + "description": "Gets the accept-languages of the browser. This is different from the locale used by the browser; to get the locale, use $(ref:i18n.getUILanguage).", + "parameters": [ + { + "type": "function", + "name": "callback", + "parameters": [ + {"name": "languages", "type": "array", "items": {"$ref": "LanguageCode"}, "description": "Array of LanguageCode"} + ] + } + ] + }, + { + "name": "getMessage", + "nocompile": true, + "type": "function", + "description": "Gets the localized string for the specified message. If the message is missing, this method returns an empty string (''). If the format of the <code>getMessage()</code> call is wrong — for example, <em>messageName</em> is not a string or the <em>substitutions</em> array has more than 9 elements — this method returns <code>undefined</code>.", + "parameters": [ + { + "type": "string", + "name": "messageName", + "description": "The name of the message, as specified in the <a href='i18n-messages'><code>messages.json</code></a> file." + }, + { + "type": "any", + "name": "substitutions", + "optional": true, + "description": "Up to 9 substitution strings, if the message requires any." + } + ], + "returns": { + "type": "string", + "description": "Message localized for current locale." + } + }, + { + "name": "getUILanguage", + "type": "function", + "nocompile": true, + "description": "Gets the browser UI language of the browser. This is different from $(ref:i18n.getAcceptLanguages) which returns the preferred user languages.", + "parameters": [], + "returns": { + "type": "string", + "description": "The browser UI language code such as en-US or fr-FR." + } + }, + { + "name": "detectLanguage", + "type": "function", + "nocompile": true, + "description": "Detects the language of the provided text using CLD.", + "parameters": [ + { + "type": "string", + "name": "text", + "minimum": 0, + "description": "User input string to be translated." + }, + { + "type": "function", + "name": "callback", + "parameters": [ + { + "type": "object", + "name": "result", + "description": "LanguageDetectionResult object that holds detected langugae reliability and array of DetectedLanguage", + "properties": { + "isReliable": { "type": "boolean", "description": "CLD detected language reliability" }, + "languages": + { + "type": "array", + "description": "array of detectedLanguage", + "items": + { + "type": "object", + "description": "DetectedLanguage object that holds detected ISO language code and its percentage in the input string", + "properties": + { + "language": + { + "$ref": "LanguageCode" + }, + "percentage": + { + "type": "integer", + "description": "The percentage of the detected language" + } + } + } + } + } + } + ] + } + ] + } + ], + "events": [] + } +]
diff --git a/chromecast/common/extensions_api/tts.json b/chromecast/common/extensions_api/tts.json new file mode 100644 index 0000000..2bdd26ef0 --- /dev/null +++ b/chromecast/common/extensions_api/tts.json
@@ -0,0 +1,264 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +[ + { + "namespace": "tts", + "description": "Use the <code>chrome.tts</code> API to play synthesized text-to-speech (TTS). See also the related <a href='http://developer.chrome.com/extensions/ttsEngine'>ttsEngine</a> API, which allows an extension to implement a speech engine.", + "types": [ + { + "id": "EventType", + "type": "string", + "enum": ["start", "end", "word", "sentence", "marker", "interrupted", "cancelled", "error", "pause", "resume"] + }, + { + "id": "VoiceGender", + "type": "string", + "enum": ["male", "female"] + }, + { + "id": "TtsEvent", + "type": "object", + "description": "An event from the TTS engine to communicate the status of an utterance.", + "properties": { + "type": { + "$ref": "EventType", + "description": "The type can be 'start' as soon as speech has started, 'word' when a word boundary is reached, 'sentence' when a sentence boundary is reached, 'marker' when an SSML mark element is reached, 'end' when the end of the utterance is reached, 'interrupted' when the utterance is stopped or interrupted before reaching the end, 'cancelled' when it's removed from the queue before ever being synthesized, or 'error' when any other error occurs. When pausing speech, a 'pause' event is fired if a particular utterance is paused in the middle, and 'resume' if an utterance resumes speech. Note that pause and resume events may not fire if speech is paused in-between utterances." + }, + "charIndex": { + "type": "integer", + "optional": true, + "description": "The index of the current character in the utterance." + }, + "errorMessage": { + "type": "string", + "description": "The error description, if the event type is 'error'.", + "optional": true + }, + "srcId": { + "type": "number", + "description": "An ID unique to the calling function's context so that events can get routed back to the correct tts.speak call.", + "nodoc": true, + "optional": true + }, + "isFinalEvent": { + "type": "boolean", + "description": "True if this is the final event that will be sent to this handler.", + "nodoc": true, + "optional": true + } + } + }, + { + "id": "TtsVoice", + "type": "object", + "description": "A description of a voice available for speech synthesis.", + "properties": { + "voiceName": { + "type": "string", + "optional": true, + "description": "The name of the voice." + }, + "lang": { + "type": "string", + "optional": true, + "description": "The language that this voice supports, in the form <em>language</em>-<em>region</em>. Examples: 'en', 'en-US', 'en-GB', 'zh-CN'." + }, + "gender": { + "$ref": "VoiceGender", + "optional": true, + "description": "This voice's gender." + }, + "remote": { + "type": "boolean", + "optional": true, + "description": "If true, the synthesis engine is a remote network resource. It may be higher latency and may incur bandwidth costs." + }, + "extensionId": { + "type": "string", + "optional": true, + "description": "The ID of the extension providing this voice." + }, + "eventTypes": { + "type": "array", + "items": {"$ref": "EventType"}, + "optional": true, + "description": "All of the callback event types that this voice is capable of sending." + } + } + } + ], + "functions": [ + { + "name": "speak", + "type": "function", + "description": "Speaks text using a text-to-speech engine.", + "parameters": [ + { + "type": "string", + "name": "utterance", + "description": "The text to speak, either plain text or a complete, well-formed SSML document. Speech engines that do not support SSML will strip away the tags and speak the text. The maximum length of the text is 32,768 characters." + }, + { + "type": "object", + "name": "options", + "optional": true, + "description": "The speech options.", + "properties": { + "enqueue": { + "type": "boolean", + "optional": true, + "description": "If true, enqueues this utterance if TTS is already in progress. If false (the default), interrupts any current speech and flushes the speech queue before speaking this new utterance." + }, + "voiceName": { + "type": "string", + "optional": true, + "description": "The name of the voice to use for synthesis. If empty, uses any available voice." + }, + "extensionId": { + "type": "string", + "optional": true, + "description": "The extension ID of the speech engine to use, if known." + }, + "lang": { + "type": "string", + "optional": true, + "description": "The language to be used for synthesis, in the form <em>language</em>-<em>region</em>. Examples: 'en', 'en-US', 'en-GB', 'zh-CN'." + }, + "gender": { + "$ref": "VoiceGender", + "optional": true, + "description": "Gender of voice for synthesized speech." + }, + "rate": { + "type": "number", + "optional": true, + "minimum": 0.1, + "maximum": 10, + "description": "Speaking rate relative to the default rate for this voice. 1.0 is the default rate, normally around 180 to 220 words per minute. 2.0 is twice as fast, and 0.5 is half as fast. Values below 0.1 or above 10.0 are strictly disallowed, but many voices will constrain the minimum and maximum rates further—for example a particular voice may not actually speak faster than 3 times normal even if you specify a value larger than 3.0." + }, + "pitch": { + "type": "number", + "optional": true, + "minimum": 0, + "maximum": 2, + "description": "Speaking pitch between 0 and 2 inclusive, with 0 being lowest and 2 being highest. 1.0 corresponds to a voice's default pitch." + }, + "volume": { + "type": "number", + "optional": true, + "minimum": 0, + "maximum": 1, + "description": "Speaking volume between 0 and 1 inclusive, with 0 being lowest and 1 being highest, with a default of 1.0." + }, + "requiredEventTypes": { + "type": "array", + "items": {"type": "string"}, + "optional": true, + "description": "The TTS event types the voice must support." + }, + "desiredEventTypes": { + "type": "array", + "items": {"type": "string"}, + "optional": true, + "description": "The TTS event types that you are interested in listening to. If missing, all event types may be sent." + }, + "onEvent": { + "type": "function", + "optional": true, + "description": "This function is called with events that occur in the process of speaking the utterance.", + "parameters": [ + { + "name": "event", + "$ref": "TtsEvent", + "description": "The update event from the text-to-speech engine indicating the status of this utterance." + } + ] + } + } + }, + { + "type": "function", + "name": "callback", + "optional": true, + "description": "Called right away, before speech finishes. Check chrome.runtime.lastError to make sure there were no errors. Use options.onEvent to get more detailed feedback.", + "parameters": [] + } + ] + }, + { + "name": "stop", + "type": "function", + "description": "Stops any current speech and flushes the queue of any pending utterances. In addition, if speech was paused, it will now be un-paused for the next call to speak.", + "parameters": [] + }, + { + "name": "pause", + "type": "function", + "description": "Pauses speech synthesis, potentially in the middle of an utterance. A call to resume or stop will un-pause speech.", + "parameters": [] + }, + { + "name": "resume", + "type": "function", + "description": "If speech was paused, resumes speaking where it left off.", + "parameters": [] + }, + { + "name": "isSpeaking", + "type": "function", + "description": "Checks whether the engine is currently speaking. On Mac OS X, the result is true whenever the system speech engine is speaking, even if the speech wasn't initiated by Chrome.", + "parameters": [ + { + "type": "function", + "name": "callback", + "optional": true, + "parameters": [ + { + "name": "speaking", + "type": "boolean", + "description": "True if speaking, false otherwise." + } + ] + } + ] + }, + { + "name": "getVoices", + "type": "function", + "description": "Gets an array of all available voices.", + "parameters": [ + { + "type": "function", + "name": "callback", + "optional": true, + "parameters": [ + { + "type": "array", + "name": "voices", + "items": { "$ref": "TtsVoice" }, + "description": "Array of $(ref:tts.TtsVoice) objects representing the available voices for speech synthesis." + } + ] + } + ] + } + ], + "events": [ + { + "name": "onEvent", + "type": "function", + "nodoc": true, + "parameters": [ + { + "name": "event", + "$ref": "TtsEvent", + "description": "The event from the text-to-speech engine indicating the status of this utterance." + } + ], + "description": "Used to pass events back to the function calling speak()." + } + ] + } +]
diff --git a/chromecast/common/extensions_api/tts/tts_engine_manifest_handler.cc b/chromecast/common/extensions_api/tts/tts_engine_manifest_handler.cc new file mode 100644 index 0000000..78139c8 --- /dev/null +++ b/chromecast/common/extensions_api/tts/tts_engine_manifest_handler.cc
@@ -0,0 +1,157 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from +// /chrome/browser/speech/extension_api/ +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#include "chromecast/common/extensions_api/tts/tts_engine_manifest_handler.h" + +#include <stddef.h> + +#include <memory> + +#include "base/strings/string_number_conversions.h" +#include "base/strings/utf_string_conversions.h" +#include "base/values.h" +#include "extensions/common/error_utils.h" +#include "extensions/common/manifest.h" +#include "extensions/common/manifest_constants.h" +#include "ui/base/l10n/l10n_util.h" + +namespace extensions { + +namespace keys = manifest_keys; +namespace errors = manifest_errors; + +TtsVoice::TtsVoice() : remote(false) {} + +TtsVoice::TtsVoice(const TtsVoice& other) = default; + +TtsVoice::~TtsVoice() {} + +TtsVoices::TtsVoices() {} +TtsVoices::~TtsVoices() {} + +// static +bool TtsVoices::Parse(const base::ListValue* tts_voices, + TtsVoices* out_voices, + base::string16* error) { + for (size_t i = 0; i < tts_voices->GetSize(); i++) { + const base::DictionaryValue* one_tts_voice = nullptr; + if (!tts_voices->GetDictionary(i, &one_tts_voice)) { + *error = base::ASCIIToUTF16(errors::kInvalidTtsVoices); + return false; + } + + TtsVoice voice_data; + if (one_tts_voice->HasKey(keys::kTtsVoicesVoiceName)) { + if (!one_tts_voice->GetString(keys::kTtsVoicesVoiceName, + &voice_data.voice_name)) { + *error = base::ASCIIToUTF16(errors::kInvalidTtsVoicesVoiceName); + return false; + } + } + if (one_tts_voice->HasKey(keys::kTtsVoicesLang)) { + if (!one_tts_voice->GetString(keys::kTtsVoicesLang, &voice_data.lang) || + !l10n_util::IsValidLocaleSyntax(voice_data.lang)) { + *error = base::ASCIIToUTF16(errors::kInvalidTtsVoicesLang); + return false; + } + } + if (one_tts_voice->HasKey(keys::kTtsVoicesGender)) { + if (!one_tts_voice->GetString(keys::kTtsVoicesGender, + &voice_data.gender) || + (voice_data.gender != keys::kTtsGenderMale && + voice_data.gender != keys::kTtsGenderFemale)) { + *error = base::ASCIIToUTF16(errors::kInvalidTtsVoicesGender); + return false; + } + } + if (one_tts_voice->HasKey(keys::kTtsVoicesRemote)) { + if (!one_tts_voice->GetBoolean(keys::kTtsVoicesRemote, + &voice_data.remote)) { + *error = base::ASCIIToUTF16(errors::kInvalidTtsVoicesRemote); + return false; + } + } + if (one_tts_voice->HasKey(keys::kTtsVoicesEventTypes)) { + const base::ListValue* event_types_list; + if (!one_tts_voice->GetList(keys::kTtsVoicesEventTypes, + &event_types_list)) { + *error = base::ASCIIToUTF16(errors::kInvalidTtsVoicesEventTypes); + return false; + } + for (size_t i = 0; i < event_types_list->GetSize(); i++) { + std::string event_type; + if (!event_types_list->GetString(i, &event_type)) { + *error = base::ASCIIToUTF16(errors::kInvalidTtsVoicesEventTypes); + return false; + } + if (event_type != keys::kTtsVoicesEventTypeEnd && + event_type != keys::kTtsVoicesEventTypeError && + event_type != keys::kTtsVoicesEventTypeMarker && + event_type != keys::kTtsVoicesEventTypeSentence && + event_type != keys::kTtsVoicesEventTypeStart && + event_type != keys::kTtsVoicesEventTypeWord) { + *error = base::ASCIIToUTF16(errors::kInvalidTtsVoicesEventTypes); + return false; + } + if (voice_data.event_types.find(event_type) != + voice_data.event_types.end()) { + *error = base::ASCIIToUTF16(errors::kInvalidTtsVoicesEventTypes); + return false; + } + voice_data.event_types.insert(event_type); + } + } + out_voices->voices.push_back(voice_data); + } + return true; +} + +// static +const std::vector<TtsVoice>* TtsVoices::GetTtsVoices( + const Extension* extension) { + TtsVoices* info = + static_cast<TtsVoices*>(extension->GetManifestData(keys::kTtsVoices)); + return info ? &info->voices : nullptr; +} + +TtsEngineManifestHandler::TtsEngineManifestHandler() {} + +TtsEngineManifestHandler::~TtsEngineManifestHandler() {} + +bool TtsEngineManifestHandler::Parse(Extension* extension, + base::string16* error) { + auto info = std::make_unique<TtsVoices>(); + const base::DictionaryValue* tts_dict = nullptr; + if (!extension->manifest()->GetDictionary(keys::kTtsEngine, &tts_dict)) { + *error = base::ASCIIToUTF16(errors::kInvalidTts); + return false; + } + + if (!tts_dict->HasKey(keys::kTtsVoices)) + return true; + + const base::ListValue* tts_voices = nullptr; + if (!tts_dict->GetList(keys::kTtsVoices, &tts_voices)) { + *error = base::ASCIIToUTF16(errors::kInvalidTtsVoices); + return false; + } + + if (!TtsVoices::Parse(tts_voices, info.get(), error)) + return false; + + extension->SetManifestData(keys::kTtsVoices, std::move(info)); + return true; +} + +base::span<const char* const> TtsEngineManifestHandler::Keys() const { + static constexpr const char* kKeys[] = {keys::kTtsEngine}; + return kKeys; +} + +} // namespace extensions
diff --git a/chromecast/common/extensions_api/tts/tts_engine_manifest_handler.h b/chromecast/common/extensions_api/tts/tts_engine_manifest_handler.h new file mode 100644 index 0000000..285d5c7 --- /dev/null +++ b/chromecast/common/extensions_api/tts/tts_engine_manifest_handler.h
@@ -0,0 +1,63 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from +// /chrome/browser/speech/extension_api/ +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#ifndef CHROMECAST_COMMON_EXTENSIONS_API_TTS_TTS_ENGINE_MANIFEST_HANDLER_H_ +#define CHROMECAST_COMMON_EXTENSIONS_API_TTS_TTS_ENGINE_MANIFEST_HANDLER_H_ + +#include <set> +#include <string> +#include <vector> + +#include "base/macros.h" +#include "extensions/common/extension.h" +#include "extensions/common/manifest_handler.h" + +namespace extensions { + +struct TtsVoice { + TtsVoice(); + TtsVoice(const TtsVoice& other); + ~TtsVoice(); + + std::string voice_name; + std::string lang; + std::string gender; + bool remote; + std::set<std::string> event_types; +}; + +struct TtsVoices : public Extension::ManifestData { + TtsVoices(); + ~TtsVoices() override; + static bool Parse(const base::ListValue* tts_voices, + TtsVoices* out_voices, + base::string16* error); + + std::vector<extensions::TtsVoice> voices; + + static const std::vector<TtsVoice>* GetTtsVoices(const Extension* extension); +}; + +// Parses the "tts_engine" manifest key. +class TtsEngineManifestHandler : public ManifestHandler { + public: + TtsEngineManifestHandler(); + ~TtsEngineManifestHandler() override; + + bool Parse(Extension* extension, base::string16* error) override; + + private: + base::span<const char* const> Keys() const override; + + DISALLOW_COPY_AND_ASSIGN(TtsEngineManifestHandler); +}; + +} // namespace extensions + +#endif // CHROMECAST_COMMON_EXTENSIONS_API_TTS_TTS_ENGINE_MANIFEST_HANDLER_H_
diff --git a/chromecast/common/extensions_api/tts_engine.json b/chromecast/common/extensions_api/tts_engine.json new file mode 100644 index 0000000..34a0e870 --- /dev/null +++ b/chromecast/common/extensions_api/tts_engine.json
@@ -0,0 +1,133 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +[ + { + "namespace": "ttsEngine", + "description": "Use the <code>chrome.ttsEngine</code> API to implement a text-to-speech(TTS) engine using an extension. If your extension registers using this API, it will receive events containing an utterance to be spoken and other parameters when any extension or Chrome App uses the <a href='tts'>tts</a> API to generate speech. Your extension can then use any available web technology to synthesize and output the speech, and send events back to the calling function to report the status.", + "types": [ + { + "id": "VoiceGender", + "type": "string", + "enum": ["male", "female"] + } + ], + "functions": [ + { + "name": "updateVoices", + "type": "function", + "description": "Called by an engine to update its list of voices. This list overrides any voices declared in this extension's manifest.", + "parameters": [ + { + "type": "array", + "name": "voices", + "items": { "$ref": "tts.TtsVoice" }, + "description": "Array of $(ref:tts.TtsVoice) objects representing the available voices for speech synthesis." + } + ] + }, + { + "name": "sendTtsEvent", + "nodoc": true, + "type": "function", + "description": "Routes a TTS event from a speech engine to a client.", + "parameters": [ + { + "type": "integer", + "name": "requestId" + }, + { + "name": "event", + "$ref": "tts.TtsEvent", + "description": "The update event from the text-to-speech engine indicating the status of this utterance." + } + ] + } + ], + "events": [ + { + "name": "onSpeak", + "type": "function", + "description": "Called when the user makes a call to tts.speak() and one of the voices from this extension's manifest is the first to match the options object.", + "parameters": [ + { + "type": "string", + "name": "utterance", + "description": "The text to speak, specified as either plain text or an SSML document. If your engine does not support SSML, you should strip out all XML markup and synthesize only the underlying text content. The value of this parameter is guaranteed to be no more than 32,768 characters. If this engine does not support speaking that many characters at a time, the utterance should be split into smaller chunks and queued internally without returning an error." + }, + { + "type": "object", + "name": "options", + "description": "Options specified to the tts.speak() method.", + "properties": { + "voiceName": { + "type": "string", + "optional": true, + "description": "The name of the voice to use for synthesis." + }, + "lang": { + "type": "string", + "optional": true, + "description": "The language to be used for synthesis, in the form <em>language</em>-<em>region</em>. Examples: 'en', 'en-US', 'en-GB', 'zh-CN'." + }, + "gender": { + "$ref": "VoiceGender", + "optional": true, + "description": "Gender of voice for synthesized speech." + }, + "rate": { + "type": "number", + "optional": true, + "minimum": 0.1, + "maximum": 10.0, + "description": "Speaking rate relative to the default rate for this voice. 1.0 is the default rate, normally around 180 to 220 words per minute. 2.0 is twice as fast, and 0.5 is half as fast. This value is guaranteed to be between 0.1 and 10.0, inclusive. When a voice does not support this full range of rates, don't return an error. Instead, clip the rate to the range the voice supports." + }, + "pitch": { + "type": "number", + "optional": true, + "minimum": 0, + "maximum": 2, + "description": "Speaking pitch between 0 and 2 inclusive, with 0 being lowest and 2 being highest. 1.0 corresponds to this voice's default pitch." + }, + "volume": { + "type": "number", + "optional": true, + "minimum": 0, + "maximum": 1, + "description": "Speaking volume between 0 and 1 inclusive, with 0 being lowest and 1 being highest, with a default of 1.0." + } + } + }, + { + "name": "sendTtsEvent", + "type": "function", + "description": "Call this function with events that occur in the process of speaking the utterance.", + "parameters": [ + { + "name": "event", + "$ref": "tts.TtsEvent", + "description": "The event from the text-to-speech engine indicating the status of this utterance." + } + ] + } + ] + }, + { + "name": "onStop", + "type": "function", + "description": "Fired when a call is made to tts.stop and this extension may be in the middle of speaking. If an extension receives a call to onStop and speech is already stopped, it should do nothing (not raise an error). If speech is in the paused state, this should cancel the paused state." + }, + { + "name": "onPause", + "type": "function", + "description": "Optional: if an engine supports the pause event, it should pause the current utterance being spoken, if any, until it receives a resume event or stop event. Note that a stop event should also clear the paused state." + }, + { + "name": "onResume", + "type": "function", + "description": "Optional: if an engine supports the pause event, it should also support the resume event, to continue speaking the current utterance, if any. Note that a stop event should also clear the paused state." + } + ] + } +]
diff --git a/chromecast/common/tts_messages.h b/chromecast/common/tts_messages.h new file mode 100644 index 0000000..d761c3d --- /dev/null +++ b/chromecast/common/tts_messages.h
@@ -0,0 +1,68 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMECAST_COMMON_TTS_MESSAGES_H_ +#define CHROMECAST_COMMON_TTS_MESSAGES_H_ + +// PLEASE NOTE: this is a copy with modifications from chrome/common +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#include <vector> + +#include "chromecast/common/tts_utterance_request.h" +#include "ipc/ipc_message_macros.h" +#include "ipc/ipc_param_traits.h" + +#define IPC_MESSAGE_START TtsMsgStart + +IPC_STRUCT_TRAITS_BEGIN(TtsUtteranceRequest) + IPC_STRUCT_TRAITS_MEMBER(id) + IPC_STRUCT_TRAITS_MEMBER(text) + IPC_STRUCT_TRAITS_MEMBER(lang) + IPC_STRUCT_TRAITS_MEMBER(voice) + IPC_STRUCT_TRAITS_MEMBER(volume) + IPC_STRUCT_TRAITS_MEMBER(rate) + IPC_STRUCT_TRAITS_MEMBER(pitch) +IPC_STRUCT_TRAITS_END() + +IPC_STRUCT_TRAITS_BEGIN(TtsVoice) + IPC_STRUCT_TRAITS_MEMBER(voice_uri) + IPC_STRUCT_TRAITS_MEMBER(name) + IPC_STRUCT_TRAITS_MEMBER(lang) + IPC_STRUCT_TRAITS_MEMBER(local_service) + IPC_STRUCT_TRAITS_MEMBER(is_default) +IPC_STRUCT_TRAITS_END() + +// Renderer -> Browser messages. + +IPC_MESSAGE_CONTROL0(TtsHostMsg_InitializeVoiceList) +IPC_MESSAGE_CONTROL1(TtsHostMsg_Speak, TtsUtteranceRequest) +IPC_MESSAGE_CONTROL0(TtsHostMsg_Pause) +IPC_MESSAGE_CONTROL0(TtsHostMsg_Resume) +IPC_MESSAGE_CONTROL0(TtsHostMsg_Cancel) + +// Browser -> Renderer messages. + +IPC_MESSAGE_CONTROL1(TtsMsg_SetVoiceList, std::vector<TtsVoice>) +IPC_MESSAGE_CONTROL1(TtsMsg_DidStartSpeaking, int /* utterance id */) +IPC_MESSAGE_CONTROL1(TtsMsg_DidFinishSpeaking, int /* utterance id */) +IPC_MESSAGE_CONTROL1(TtsMsg_DidPauseSpeaking, int /* utterance id */) +IPC_MESSAGE_CONTROL1(TtsMsg_DidResumeSpeaking, int /* utterance id */) +IPC_MESSAGE_CONTROL2(TtsMsg_WordBoundary, + int /* utterance id */, + int /* char index */) +IPC_MESSAGE_CONTROL2(TtsMsg_SentenceBoundary, + int /* utterance id */, + int /* char index */) +IPC_MESSAGE_CONTROL2(TtsMsg_MarkerEvent, + int /* utterance id */, + int /* char index */) +IPC_MESSAGE_CONTROL1(TtsMsg_WasInterrupted, int /* utterance id */) +IPC_MESSAGE_CONTROL1(TtsMsg_WasCancelled, int /* utterance id */) +IPC_MESSAGE_CONTROL2(TtsMsg_SpeakingErrorOccurred, + int /* utterance id */, + std::string /* error message */) + +#endif // CHROMECAST_COMMON_TTS_MESSAGES_H_
diff --git a/chromecast/common/tts_utterance_request.cc b/chromecast/common/tts_utterance_request.cc new file mode 100644 index 0000000..e453616 --- /dev/null +++ b/chromecast/common/tts_utterance_request.cc
@@ -0,0 +1,20 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// PLEASE NOTE: this is a copy with modifications from chrome/common +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#include "chromecast/common/tts_utterance_request.h" + +TtsUtteranceRequest::TtsUtteranceRequest() + : id(0), volume(1.0), rate(1.0), pitch(1.0) {} + +TtsUtteranceRequest::~TtsUtteranceRequest() {} + +TtsVoice::TtsVoice() : local_service(true), is_default(false) {} + +TtsVoice::TtsVoice(const TtsVoice& other) = default; + +TtsVoice::~TtsVoice() {}
diff --git a/chromecast/common/tts_utterance_request.h b/chromecast/common/tts_utterance_request.h new file mode 100644 index 0000000..44b6f37 --- /dev/null +++ b/chromecast/common/tts_utterance_request.h
@@ -0,0 +1,41 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMECAST_COMMON_TTS_UTTERANCE_REQUEST_H_ +#define CHROMECAST_COMMON_TTS_UTTERANCE_REQUEST_H_ + +// PLEASE NOTE: this is a copy with modifications from chrome/common +// It is temporary until a refactoring to move the chrome TTS implementation up +// into components and extensions/components can be completed. + +#include <vector> + +#include "base/strings/string16.h" + +struct TtsUtteranceRequest { + TtsUtteranceRequest(); + ~TtsUtteranceRequest(); + + int id; + std::string text; + std::string lang; + std::string voice; + float volume; + float rate; + float pitch; +}; + +struct TtsVoice { + TtsVoice(); + TtsVoice(const TtsVoice& other); + ~TtsVoice(); + + std::string voice_uri; + std::string name; + std::string lang; + bool local_service; + bool is_default; +}; + +#endif // CHROMECAST_COMMON_TTS_UTTERANCE_REQUEST_H_
diff --git a/chromecast/media/cma/backend/android/BUILD.gn b/chromecast/media/cma/backend/android/BUILD.gn index 63f7929..15f06856 100644 --- a/chromecast/media/cma/backend/android/BUILD.gn +++ b/chromecast/media/cma/backend/android/BUILD.gn
@@ -73,8 +73,4 @@ "//third_party/android_tools:android_support_annotations_java", "//third_party/android_tools:android_support_v13_java", ] - - if (enable_volume_tables_access) { - deps += [ "//chromecast/internal/android/prebuilt/things:support_lib_java" ] - } }
diff --git a/chromecast/media/cma/backend/android/java/src/org/chromium/chromecast/cma/backend/android/VolumeMap.java b/chromecast/media/cma/backend/android/java/src/org/chromium/chromecast/cma/backend/android/VolumeMap.java index 9f39b12..42287f9 100644 --- a/chromecast/media/cma/backend/android/java/src/org/chromium/chromecast/cma/backend/android/VolumeMap.java +++ b/chromecast/media/cma/backend/android/java/src/org/chromium/chromecast/cma/backend/android/VolumeMap.java
@@ -11,8 +11,6 @@ import android.os.Build; import android.util.SparseIntArray; -import com.google.android.things.audio.VolumeTableReader; - import org.chromium.base.ContextUtils; import org.chromium.base.Log; import org.chromium.base.annotations.CalledByNative; @@ -28,6 +26,8 @@ public final class VolumeMap { private static final String TAG = "VolumeMap"; + private static final int DEVICE_TYPE = AudioDeviceInfo.TYPE_BUILTIN_SPEAKER; + private static AudioManager sAudioManager = null; // Mapping from Android's stream_type to Cast's AudioContentType (used for callback). @@ -66,6 +66,29 @@ return ANDROID_TYPE_TO_CAST_TYPE_MAP.keyAt(i); } + // Returns the current volume in dB for the given stream type and volume index. + private static float getStreamVolumeDB(int streamType, int idx) { + float db = 0; + if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O_MR1) { + // API is hidden, use reflection. + try { + db = (float) getAudioManager() + .getClass() + .getMethod("getStreamVolumeDb", int.class, int.class, int.class) + .invoke(sAudioManager, streamType, idx, DEVICE_TYPE); + } catch (Exception e) { + Log.e(TAG, "Can not call AudioManager.getStreamVolumeDb():", e); + } + // TODO(ckuiper): when Android P becomes available add something like this to call the + // AudioManager.getStreamVolumeDb() directly as it is public in P. + // } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + // db = sAudioManager.getStreamVolumeDb(); + } else { + Log.e(TAG, "Unsupported Android SDK version:" + Build.VERSION.SDK_INT); + } + return db; + } + /** * Logs the dB value at each discrete Android volume index for the given cast type. * Note that this is not identical to the volume table, which may contain a different number @@ -75,10 +98,9 @@ static void dumpVolumeTables(int castType) { int streamType = getStreamType(castType); int maxIndex = MAX_VOLUME_INDEX.get(streamType); - int deviceType = AudioDeviceInfo.TYPE_BUILTIN_SPEAKER; Log.i(TAG, "Volume points for stream " + streamType + " (maxIndex=" + maxIndex + "):"); for (int idx = 0; idx <= maxIndex; idx++) { - float db = VolumeTableReader.getStreamVolumeDB(streamType, idx, deviceType); + float db = getStreamVolumeDB(streamType, idx); float level = (float) idx / (float) maxIndex; Log.i(TAG, " " + idx + "(" + level + ") -> " + db); } @@ -92,8 +114,7 @@ level = Math.min(1.0f, Math.max(0.0f, level)); int streamType = getStreamType(castType); int volumeIndex = Math.round(level * (float) MAX_VOLUME_INDEX.get(streamType)); - int deviceType = AudioDeviceInfo.TYPE_BUILTIN_SPEAKER; - return VolumeTableReader.getStreamVolumeDB(streamType, volumeIndex, deviceType); + return getStreamVolumeDB(streamType, volumeIndex); } @CalledByNative @@ -103,11 +124,10 @@ static float dbFsToVolume(int castType, float db) { int streamType = getStreamType(castType); int maxIndex = MAX_VOLUME_INDEX.get(streamType); - int deviceType = AudioDeviceInfo.TYPE_BUILTIN_SPEAKER; - float dbMin = VolumeTableReader.getStreamVolumeDB(streamType, 0, deviceType); + float dbMin = getStreamVolumeDB(streamType, 0); if (db <= dbMin) return 0.0f; - float dbMax = VolumeTableReader.getStreamVolumeDB(streamType, maxIndex, deviceType); + float dbMax = getStreamVolumeDB(streamType, maxIndex); if (db >= dbMax) return 1.0f; // There are only a few volume index steps, so simply loop through them @@ -117,7 +137,7 @@ int idx = 1; for (; idx <= maxIndex; idx++) { dbLeft = dbRight; - dbRight = VolumeTableReader.getStreamVolumeDB(streamType, idx, deviceType); + dbRight = getStreamVolumeDB(streamType, idx); if (db <= dbRight) { break; }
diff --git a/chromecast/renderer/BUILD.gn b/chromecast/renderer/BUILD.gn index d16e3a10..53ea6ab 100644 --- a/chromecast/renderer/BUILD.gn +++ b/chromecast/renderer/BUILD.gn
@@ -30,6 +30,8 @@ "cast_content_renderer_client.h", "cast_render_frame_action_deferrer.cc", "cast_render_frame_action_deferrer.h", + "tts_dispatcher.cc", + "tts_dispatcher.h", ] public_deps = [ @@ -48,6 +50,7 @@ "//base", "//chromecast:chromecast_buildflags", "//chromecast/base", + "//chromecast/common", "//chromecast/common/media", "//chromecast/common/mojom", "//chromecast/media", @@ -79,10 +82,10 @@ if (enable_chromecast_extensions) { sources += [ - "cast_extensions_renderer_client.cc", - "cast_extensions_renderer_client.h", "cast_extensions_dispatcher_delegate.cc", "cast_extensions_dispatcher_delegate.g", + "cast_extensions_renderer_client.cc", + "cast_extensions_renderer_client.h", "extensions/automation_ax_tree_wrapper.cc", "extensions/automation_ax_tree_wrapper.h", "extensions/automation_internal_custom_bindings.cc",
diff --git a/chromecast/renderer/cast_content_renderer_client.cc b/chromecast/renderer/cast_content_renderer_client.cc index c4a51d7..4e4ecd0 100644 --- a/chromecast/renderer/cast_content_renderer_client.cc +++ b/chromecast/renderer/cast_content_renderer_client.cc
@@ -16,6 +16,7 @@ #include "chromecast/renderer/cast_render_frame_action_deferrer.h" #include "chromecast/renderer/media/key_systems_cast.h" #include "chromecast/renderer/media/media_caps_observer_impl.h" +#include "chromecast/renderer/tts_dispatcher.h" #include "components/network_hints/renderer/prescient_networking_dispatcher.h" #include "content/public/common/content_switches.h" #include "content/public/common/service_names.mojom.h" @@ -308,5 +309,11 @@ supported_bitstream_audio_codecs_ = codecs; } +std::unique_ptr<blink::WebSpeechSynthesizer> +CastContentRendererClient::OverrideSpeechSynthesizer( + blink::WebSpeechSynthesizerClient* client) { + return std::make_unique<TtsDispatcher>(client); +} + } // namespace shell } // namespace chromecast
diff --git a/chromecast/renderer/cast_content_renderer_client.h b/chromecast/renderer/cast_content_renderer_client.h index 5195053..a05c7c6a 100644 --- a/chromecast/renderer/cast_content_renderer_client.h +++ b/chromecast/renderer/cast_content_renderer_client.h
@@ -72,6 +72,8 @@ const base::Closure& closure) override; bool AllowIdleMediaSuspend() override; void SetRuntimeFeaturesDefaultsBeforeBlinkInitialization() override; + std::unique_ptr<blink::WebSpeechSynthesizer> OverrideSpeechSynthesizer( + blink::WebSpeechSynthesizerClient* client) override; protected: CastContentRendererClient();
diff --git a/chromecast/renderer/resources/extensions/tts_custom_bindings.js b/chromecast/renderer/resources/extensions/tts_custom_bindings.js new file mode 100644 index 0000000..1402d35 --- /dev/null +++ b/chromecast/renderer/resources/extensions/tts_custom_bindings.js
@@ -0,0 +1,62 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Custom binding for the tts API. + +var binding = apiBridge || require('binding').Binding.create('tts'); + +var idGenerator = requireNative('id_generator'); +var sendRequest = bindingUtil ? + $Function.bind(bindingUtil.sendRequest, bindingUtil) : + require('sendRequest').sendRequest; +var lazyBG = requireNative('lazy_background_page'); + +binding.registerCustomHook(function(api) { + var apiFunctions = api.apiFunctions; + var tts = api.compiledApi; + var handlers = {}; + + function ttsEventListener(event) { + var eventHandler = handlers[event.srcId]; + if (eventHandler) { + eventHandler({ + type: event.type, + charIndex: event.charIndex, + errorMessage: event.errorMessage + }); + if (event.isFinalEvent) { + delete handlers[event.srcId]; + // Balanced in 'speak' handler. + lazyBG.DecrementKeepaliveCount(); + } + } + } + + // This file will get run if an extension needs the ttsEngine permission, but + // it doesn't necessarily have the tts permission. If it doesn't, trying to + // add a listener to chrome.tts.onEvent will fail. + // See http://crbug.com/122474. + try { + tts.onEvent.addListener(ttsEventListener); + } catch (e) {} + + apiFunctions.setHandleRequest('speak', function() { + var args = $Array.from(arguments); + if (args.length > 1 && args[1] && args[1].onEvent) { + var id = idGenerator.GetNextId(); + args[1].srcId = id; + handlers[id] = args[1].onEvent; + // Keep the page alive until the event finishes. + // Balanced in eventHandler. + lazyBG.IncrementKeepaliveCount(); + } + sendRequest('tts.speak', args, + bindingUtil ? undefined : this.definition.parameters, + undefined); + return id; + }); +}); + +if (!apiBridge) + exports.$set('binding', binding.generate());
diff --git a/chromecast/renderer/resources/extensions/tts_engine_custom_bindings.js b/chromecast/renderer/resources/extensions/tts_engine_custom_bindings.js new file mode 100644 index 0000000..2b4a9a7d --- /dev/null +++ b/chromecast/renderer/resources/extensions/tts_engine_custom_bindings.js
@@ -0,0 +1,23 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Custom binding for the ttsEngine API. + +var binding = apiBridge || require('binding').Binding.create('ttsEngine'); +var registerArgumentMassager = bindingUtil ? + $Function.bind(bindingUtil.registerEventArgumentMassager, bindingUtil) : + require('event_bindings').registerArgumentMassager; + +registerArgumentMassager('ttsEngine.onSpeak', function(args, dispatch) { + var text = args[0]; + var options = args[1]; + var requestId = args[2]; + var sendTtsEvent = function(event) { + chrome.ttsEngine.sendTtsEvent(requestId, event); + }; + dispatch([text, options, sendTtsEvent]); +}); + +if (!apiBridge) + exports.$set('binding', binding.generate());
diff --git a/chromecast/renderer/resources/extensions_renderer_resources.grd b/chromecast/renderer/resources/extensions_renderer_resources.grd index 17bc2fbd..6f9d76c5 100644 --- a/chromecast/renderer/resources/extensions_renderer_resources.grd +++ b/chromecast/renderer/resources/extensions_renderer_resources.grd
@@ -12,6 +12,8 @@ <include name="IDR_AUTOMATION_CUSTOM_BINDINGS_JS" file="extensions\automation_custom_bindings.js" type="BINDATA" /> <include name="IDR_AUTOMATION_EVENT_JS" file="extensions\automation\automation_event.js" type="BINDATA" /> <include name="IDR_AUTOMATION_NODE_JS" file="extensions\automation\automation_node.js" type="BINDATA" /> + <include name="IDR_TTS_CUSTOM_BINDINGS_JS" file="extensions\tts_custom_bindings.js" type="BINDATA" /> + <include name="IDR_TTS_ENGINE_CUSTOM_BINDINGS_JS" file="extensions\tts_engine_custom_bindings.js" type="BINDATA" /> </includes> </release> </grit>
diff --git a/chromecast/renderer/tts_dispatcher.cc b/chromecast/renderer/tts_dispatcher.cc new file mode 100644 index 0000000..b7f2ae96 --- /dev/null +++ b/chromecast/renderer/tts_dispatcher.cc
@@ -0,0 +1,203 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Note: this is a copy from chrome/renderer with modifications +// necessary to compile in chromecast. +// TODO(rdaum): internal b/74442017 move to components/ & extensions/components + +#include "chromecast/renderer/tts_dispatcher.h" + +#include <stddef.h> + +#include "base/strings/utf_string_conversions.h" +#include "chromecast/common/tts_messages.h" +#include "chromecast/common/tts_utterance_request.h" +#include "content/public/renderer/render_thread.h" +#include "third_party/blink/public/platform/web_speech_synthesis_utterance.h" +#include "third_party/blink/public/platform/web_speech_synthesis_voice.h" +#include "third_party/blink/public/platform/web_string.h" +#include "third_party/blink/public/platform/web_vector.h" + +using content::RenderThread; +using blink::WebSpeechSynthesizerClient; +using blink::WebSpeechSynthesisUtterance; +using blink::WebSpeechSynthesisVoice; +using blink::WebString; +using blink::WebVector; + +int TtsDispatcher::next_utterance_id_ = 1; + +TtsDispatcher::TtsDispatcher(WebSpeechSynthesizerClient* client) + : synthesizer_client_(client) { + RenderThread::Get()->AddObserver(this); +} + +TtsDispatcher::~TtsDispatcher() { + RenderThread::Get()->RemoveObserver(this); +} + +bool TtsDispatcher::OnControlMessageReceived(const IPC::Message& message) { + IPC_BEGIN_MESSAGE_MAP(TtsDispatcher, message) + IPC_MESSAGE_HANDLER(TtsMsg_SetVoiceList, OnSetVoiceList) + IPC_MESSAGE_HANDLER(TtsMsg_DidStartSpeaking, OnDidStartSpeaking) + IPC_MESSAGE_HANDLER(TtsMsg_DidFinishSpeaking, OnDidFinishSpeaking) + IPC_MESSAGE_HANDLER(TtsMsg_DidPauseSpeaking, OnDidPauseSpeaking) + IPC_MESSAGE_HANDLER(TtsMsg_DidResumeSpeaking, OnDidResumeSpeaking) + IPC_MESSAGE_HANDLER(TtsMsg_WordBoundary, OnWordBoundary) + IPC_MESSAGE_HANDLER(TtsMsg_SentenceBoundary, OnSentenceBoundary) + IPC_MESSAGE_HANDLER(TtsMsg_MarkerEvent, OnMarkerEvent) + IPC_MESSAGE_HANDLER(TtsMsg_WasInterrupted, OnWasInterrupted) + IPC_MESSAGE_HANDLER(TtsMsg_WasCancelled, OnWasCancelled) + IPC_MESSAGE_HANDLER(TtsMsg_SpeakingErrorOccurred, OnSpeakingErrorOccurred) + IPC_END_MESSAGE_MAP() + + // Always return false because there may be multiple TtsDispatchers + // and we want them all to have a chance to handle this message. + return false; +} + +void TtsDispatcher::UpdateVoiceList() { + RenderThread::Get()->Send(new TtsHostMsg_InitializeVoiceList()); +} + +void TtsDispatcher::Speak(const WebSpeechSynthesisUtterance& web_utterance) { + int id = next_utterance_id_++; + + utterance_id_map_[id] = web_utterance; + + TtsUtteranceRequest utterance; + utterance.id = id; + utterance.text = web_utterance.GetText().Utf8(); + utterance.lang = web_utterance.Lang().Utf8(); + utterance.voice = web_utterance.Voice().Utf8(); + utterance.volume = web_utterance.Volume(); + utterance.rate = web_utterance.Rate(); + utterance.pitch = web_utterance.Pitch(); + RenderThread::Get()->Send(new TtsHostMsg_Speak(utterance)); +} + +void TtsDispatcher::Pause() { + RenderThread::Get()->Send(new TtsHostMsg_Pause()); +} + +void TtsDispatcher::Resume() { + RenderThread::Get()->Send(new TtsHostMsg_Resume()); +} + +void TtsDispatcher::Cancel() { + RenderThread::Get()->Send(new TtsHostMsg_Cancel()); +} + +WebSpeechSynthesisUtterance TtsDispatcher::FindUtterance(int utterance_id) { + const auto iter = utterance_id_map_.find(utterance_id); + if (iter == utterance_id_map_.end()) + return WebSpeechSynthesisUtterance(); + return iter->second; +} + +void TtsDispatcher::OnSetVoiceList(const std::vector<TtsVoice>& voices) { + WebVector<WebSpeechSynthesisVoice> out_voices(voices.size()); + for (size_t i = 0; i < voices.size(); ++i) { + out_voices[i] = WebSpeechSynthesisVoice(); + out_voices[i].SetVoiceURI(WebString::FromUTF8(voices[i].voice_uri)); + out_voices[i].SetName(WebString::FromUTF8(voices[i].name)); + out_voices[i].SetLanguage(WebString::FromUTF8(voices[i].lang)); + out_voices[i].SetIsLocalService(voices[i].local_service); + out_voices[i].SetIsDefault(voices[i].is_default); + } + synthesizer_client_->SetVoiceList(out_voices); +} + +void TtsDispatcher::OnDidStartSpeaking(int utterance_id) { + if (utterance_id_map_.find(utterance_id) == utterance_id_map_.end()) + return; + + WebSpeechSynthesisUtterance utterance = FindUtterance(utterance_id); + if (utterance.IsNull()) + return; + + synthesizer_client_->DidStartSpeaking(utterance); +} + +void TtsDispatcher::OnDidFinishSpeaking(int utterance_id) { + WebSpeechSynthesisUtterance utterance = FindUtterance(utterance_id); + if (utterance.IsNull()) + return; + + synthesizer_client_->DidFinishSpeaking(utterance); + utterance_id_map_.erase(utterance_id); +} + +void TtsDispatcher::OnDidPauseSpeaking(int utterance_id) { + WebSpeechSynthesisUtterance utterance = FindUtterance(utterance_id); + if (utterance.IsNull()) + return; + + synthesizer_client_->DidPauseSpeaking(utterance); +} + +void TtsDispatcher::OnDidResumeSpeaking(int utterance_id) { + WebSpeechSynthesisUtterance utterance = FindUtterance(utterance_id); + if (utterance.IsNull()) + return; + + synthesizer_client_->DidResumeSpeaking(utterance); +} + +void TtsDispatcher::OnWordBoundary(int utterance_id, int char_index) { + CHECK(char_index >= 0); + + WebSpeechSynthesisUtterance utterance = FindUtterance(utterance_id); + if (utterance.IsNull()) + return; + + synthesizer_client_->WordBoundaryEventOccurred( + utterance, static_cast<unsigned>(char_index)); +} + +void TtsDispatcher::OnSentenceBoundary(int utterance_id, int char_index) { + CHECK(char_index >= 0); + + WebSpeechSynthesisUtterance utterance = FindUtterance(utterance_id); + if (utterance.IsNull()) + return; + + synthesizer_client_->SentenceBoundaryEventOccurred( + utterance, static_cast<unsigned>(char_index)); +} + +void TtsDispatcher::OnMarkerEvent(int utterance_id, int char_index) { + // Not supported yet. +} + +void TtsDispatcher::OnWasInterrupted(int utterance_id) { + WebSpeechSynthesisUtterance utterance = FindUtterance(utterance_id); + if (utterance.IsNull()) + return; + + // The web speech API doesn't support "interrupted". + synthesizer_client_->DidFinishSpeaking(utterance); + utterance_id_map_.erase(utterance_id); +} + +void TtsDispatcher::OnWasCancelled(int utterance_id) { + WebSpeechSynthesisUtterance utterance = FindUtterance(utterance_id); + if (utterance.IsNull()) + return; + + // The web speech API doesn't support "cancelled". + synthesizer_client_->DidFinishSpeaking(utterance); + utterance_id_map_.erase(utterance_id); +} + +void TtsDispatcher::OnSpeakingErrorOccurred(int utterance_id, + const std::string& error_message) { + WebSpeechSynthesisUtterance utterance = FindUtterance(utterance_id); + if (utterance.IsNull()) + return; + + // The web speech API doesn't support an error message. + synthesizer_client_->SpeakingErrorOccurred(utterance); + utterance_id_map_.erase(utterance_id); +}
diff --git a/chromecast/renderer/tts_dispatcher.h b/chromecast/renderer/tts_dispatcher.h new file mode 100644 index 0000000..856c3a7 --- /dev/null +++ b/chromecast/renderer/tts_dispatcher.h
@@ -0,0 +1,79 @@ +// Copyright (c) 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMECAST_RENDERER_TTS_DISPATCHER_H_ +#define CHROMECAST_RENDERER_TTS_DISPATCHER_H_ + +// Note: this is a copy from chrome/renderer with modifications +// necessary to compile in chromecast. +// TODO(rdaum): internal b/74442017 move to components/ & extensions/components + +#include <map> +#include <vector> + +#include "base/compiler_specific.h" +#include "base/macros.h" +#include "content/public/renderer/render_thread_observer.h" +#include "third_party/blink/public/platform/web_speech_synthesizer.h" +#include "third_party/blink/public/platform/web_speech_synthesizer_client.h" + +namespace IPC { +class Message; +} + +struct TtsVoice; + +// TtsDispatcher is a delegate for methods used by Blink for speech synthesis +// APIs. It's the complement of TtsDispatcherHost (owned by RenderViewHost). +// Each TtsDispatcher is owned by the WebSpeechSynthesizerClient in Blink; +// it registers itself to listen to IPC upon construction and unregisters +// itself when deleted. There can be multiple TtsDispatchers alive at once, +// so each one routes IPC messages to its WebSpeechSynthesizerClient only if +// the utterance id (which is globally unique) matches. +class TtsDispatcher : public blink::WebSpeechSynthesizer, + public content::RenderThreadObserver { + public: + explicit TtsDispatcher(blink::WebSpeechSynthesizerClient* client); + ~TtsDispatcher() override; + + private: + // RenderThreadObserver override. + bool OnControlMessageReceived(const IPC::Message& message) override; + + // blink::WebSpeechSynthesizer implementation. + void UpdateVoiceList() override; + void Speak(const blink::WebSpeechSynthesisUtterance& utterance) override; + void Pause() override; + void Resume() override; + void Cancel() override; + + blink::WebSpeechSynthesisUtterance FindUtterance(int utterance_id); + + void OnSetVoiceList(const std::vector<TtsVoice>& voices); + void OnDidStartSpeaking(int utterance_id); + void OnDidFinishSpeaking(int utterance_id); + void OnDidPauseSpeaking(int utterance_id); + void OnDidResumeSpeaking(int utterance_id); + void OnWordBoundary(int utterance_id, int char_index); + void OnSentenceBoundary(int utterance_id, int char_index); + void OnMarkerEvent(int utterance_id, int char_index); + void OnWasInterrupted(int utterance_id); + void OnWasCancelled(int utterance_id); + void OnSpeakingErrorOccurred(int utterance_id, + const std::string& error_message); + + // The WebKit client class that we use to send events back to the JS world. + // Weak reference, this will be valid as long as this object exists. + blink::WebSpeechSynthesizerClient* synthesizer_client_; + + // Next utterance id, used to map response IPCs to utterance objects. + static int next_utterance_id_; + + // Map from id to utterance objects. + std::map<int, blink::WebSpeechSynthesisUtterance> utterance_id_map_; + + DISALLOW_COPY_AND_ASSIGN(TtsDispatcher); +}; + +#endif // CHROMECAST_RENDERER_TTS_DISPATCHER_H_
diff --git a/chromeos/BUILD.gn b/chromeos/BUILD.gn index 3267c4d..0a822155 100644 --- a/chromeos/BUILD.gn +++ b/chromeos/BUILD.gn
@@ -800,6 +800,38 @@ generate_vm_runner_script("cros_vm_launcher") { generated_script = "$root_build_dir/bin/launch_cros_vm" } + + # The sanity test's actual binary is baked into the vm image. All we need to + # do is build the test wrapper and build our own browser to push to the VM + # before testing it. + generate_vm_runner_script("cros_vm_sanity_test_wrapper") { + test_exe = "$root_out_dir/cros_vm_sanity_test" + generated_script = "$root_build_dir/bin/run_cros_vm_sanity_test" + + # The sanity test needs to strip down Chrome and its deps to fit it into + # the VM. It does so by using binutils in the toolchain. So signal that we + # need the toolchain in the data. + need_toolchain = true + } + group("cros_vm_sanity_test") { + testonly = true + write_runtime_deps = "$root_out_dir/cros_vm_sanity_test.runtime_deps" + data_deps = [ + "//:chromiumos_preflight", # Builds the browser. + ":cros_vm_sanity_test_wrapper", # Builds the test wrapper. + ] + + # The following dependencies are needed to deploy chrome to the VM. See the + # link for the full list: + # https://codesearch.chromium.org/chromium/src/third_party/chromite/lib/chrome_util.py?l=341 + data_deps += [ "//chrome:xdg_mime" ] + + # TODO(bpastene): Figure out what's generating resources/chromeos/ and + # declare it as a dep instead of adding the dir directly. + data = [ + "$root_out_dir/resources/chromeos/", + ] + } } fuzzer_test("variable_expander_fuzzer") {
diff --git a/chromeos/printing/printer_configuration.cc b/chromeos/printing/printer_configuration.cc index 35ce83e3..cff07381 100644 --- a/chromeos/printing/printer_configuration.cc +++ b/chromeos/printing/printer_configuration.cc
@@ -157,6 +157,21 @@ return PrinterProtocol::kUnknown; } +bool Printer::HasNetworkProtocol() const { + Printer::PrinterProtocol current_protocol = GetProtocol(); + switch (current_protocol) { + case PrinterProtocol::kIpp: + case PrinterProtocol::kIpps: + case PrinterProtocol::kHttp: + case PrinterProtocol::kHttps: + case PrinterProtocol::kSocket: + case PrinterProtocol::kLpd: + return true; + default: + return false; + } +} + std::string Printer::UriForCups() const { if (!effective_uri_.empty()) { return effective_uri_;
diff --git a/chromeos/printing/printer_configuration.h b/chromeos/printing/printer_configuration.h index 3576ab67..8d227e19 100644 --- a/chromeos/printing/printer_configuration.h +++ b/chromeos/printing/printer_configuration.h
@@ -162,6 +162,11 @@ // Returns the printer protocol the printer is configured with. Printer::PrinterProtocol GetProtocol() const; + // Returns true if the current protocol of the printer is one of the following + // "network protocols": + // [kIpp, kIpps, kHttp, kHttps, kSocket, kLpd] + bool HasNetworkProtocol() const; + Source source() const { return source_; } void set_source(const Source source) { source_ = source; }
diff --git a/chromeos/services/secure_channel/BUILD.gn b/chromeos/services/secure_channel/BUILD.gn index 4b7729bb..fa3d328 100644 --- a/chromeos/services/secure_channel/BUILD.gn +++ b/chromeos/services/secure_channel/BUILD.gn
@@ -8,6 +8,8 @@ sources = [ "connect_to_device_operation.h", "connect_to_device_operation_base.h", + "connect_to_device_operation_factory.h", + "connect_to_device_operation_factory_base.h", "pending_connection_request.h", "pending_connection_request_base.h", "pending_connection_request_delegate.cc", @@ -28,6 +30,8 @@ sources = [ "fake_connect_to_device_operation.cc", "fake_connect_to_device_operation.h", + "fake_connect_to_device_operation_factory.cc", + "fake_connect_to_device_operation_factory.h", "fake_connection_delegate.cc", "fake_connection_delegate.h", "fake_pending_connection_request.cc", @@ -48,6 +52,7 @@ sources = [ "connect_to_device_operation_base_unittest.cc", + "connect_to_device_operation_factory_base_unittest.cc", "pending_connection_request_base_unittest.cc", ]
diff --git a/chromeos/services/secure_channel/connect_to_device_operation_factory.h b/chromeos/services/secure_channel/connect_to_device_operation_factory.h new file mode 100644 index 0000000..4af2333 --- /dev/null +++ b/chromeos/services/secure_channel/connect_to_device_operation_factory.h
@@ -0,0 +1,40 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMEOS_SERVICES_SECURE_CHANNEL_CONNECT_TO_DEVICE_OPERATION_FACTORY_H_ +#define CHROMEOS_SERVICES_SECURE_CHANNEL_CONNECT_TO_DEVICE_OPERATION_FACTORY_H_ + +#include "base/callback_forward.h" +#include "base/macros.h" +#include "chromeos/services/secure_channel/connect_to_device_operation.h" + +namespace chromeos { + +namespace secure_channel { + +// Factory for creating ConnectToDeviceOperation instances. +template <typename FailureDetailType> +class ConnectToDeviceOperationFactory { + public: + virtual ~ConnectToDeviceOperationFactory() = default; + + virtual std::unique_ptr<ConnectToDeviceOperation<FailureDetailType>> + CreateOperation( + typename ConnectToDeviceOperation< + FailureDetailType>::ConnectionSuccessCallback success_callback, + typename ConnectToDeviceOperation< + FailureDetailType>::ConnectionFailedCallback failure_callback) = 0; + + protected: + ConnectToDeviceOperationFactory() = default; + + private: + DISALLOW_COPY_AND_ASSIGN(ConnectToDeviceOperationFactory); +}; + +} // namespace secure_channel + +} // namespace chromeos + +#endif // CHROMEOS_SERVICES_SECURE_CHANNEL_CONNECT_TO_DEVICE_OPERATION_FACTORY_H_
diff --git a/chromeos/services/secure_channel/connect_to_device_operation_factory_base.h b/chromeos/services/secure_channel/connect_to_device_operation_factory_base.h new file mode 100644 index 0000000..156f1cd --- /dev/null +++ b/chromeos/services/secure_channel/connect_to_device_operation_factory_base.h
@@ -0,0 +1,83 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMEOS_SERVICES_SECURE_CHANNEL_CONNECT_TO_DEVICE_OPERATION_FACTORY_BASE_H_ +#define CHROMEOS_SERVICES_SECURE_CHANNEL_CONNECT_TO_DEVICE_OPERATION_FACTORY_BASE_H_ + +#include "base/bind.h" +#include "base/callback_forward.h" +#include "base/logging.h" +#include "base/macros.h" +#include "base/memory/weak_ptr.h" +#include "chromeos/services/secure_channel/connect_to_device_operation_factory.h" +#include "components/cryptauth/remote_device.h" + +namespace chromeos { + +namespace secure_channel { + +// ConnectToDeviceOperationFactory implementation, which ensures that only one +// operation can be active at a time. +template <typename FailureDetailType> +class ConnectToDeviceOperationFactoryBase + : public ConnectToDeviceOperationFactory<FailureDetailType> { + public: + ~ConnectToDeviceOperationFactoryBase() override = default; + + protected: + ConnectToDeviceOperationFactoryBase( + const cryptauth::RemoteDevice& device_to_connect_to) + : device_to_connect_to_(device_to_connect_to), weak_ptr_factory_(this) {} + + // Derived types should overload this function, passing the provided + // parameters to the constructor of a type derived from + // ConnectToDeviceOperationBase. + virtual std::unique_ptr<ConnectToDeviceOperation<FailureDetailType>> + PerformCreateOperation( + typename ConnectToDeviceOperation< + FailureDetailType>::ConnectionSuccessCallback success_callback, + typename ConnectToDeviceOperation< + FailureDetailType>::ConnectionFailedCallback failure_callback, + const cryptauth::RemoteDevice& device_to_connect_to, + base::OnceClosure destructor_callback) = 0; + + private: + // ConnectToDeviceOperationFactory<FailureDetailType>: + std::unique_ptr<ConnectToDeviceOperation<FailureDetailType>> CreateOperation( + typename ConnectToDeviceOperation< + FailureDetailType>::ConnectionSuccessCallback success_callback, + typename ConnectToDeviceOperation<FailureDetailType>:: + ConnectionFailedCallback failure_callback) override { + if (is_last_operation_active_) { + PA_LOG(ERROR) << "ConnectToDeviceOperationFactoryBase::CreateOperation():" + << " Requested new operation before the previous one was " + << "finished."; + NOTREACHED(); + return nullptr; + } + + is_last_operation_active_ = true; + return PerformCreateOperation( + std::move(success_callback), std::move(failure_callback), + device_to_connect_to_, + base::BindOnce(&ConnectToDeviceOperationFactoryBase< + FailureDetailType>::OnPreviousOperationDeleted, + weak_ptr_factory_.GetWeakPtr())); + } + + void OnPreviousOperationDeleted() { is_last_operation_active_ = false; } + + const cryptauth::RemoteDevice device_to_connect_to_; + bool is_last_operation_active_ = false; + + base::WeakPtrFactory<ConnectToDeviceOperationFactoryBase> weak_ptr_factory_; + + DISALLOW_COPY_AND_ASSIGN(ConnectToDeviceOperationFactoryBase); +}; + +} // namespace secure_channel + +} // namespace chromeos + +#endif // CHROMEOS_SERVICES_SECURE_CHANNEL_CONNECT_TO_DEVICE_OPERATION_FACTORY_BASE_H_
diff --git a/chromeos/services/secure_channel/connect_to_device_operation_factory_base_unittest.cc b/chromeos/services/secure_channel/connect_to_device_operation_factory_base_unittest.cc new file mode 100644 index 0000000..dcdab53 --- /dev/null +++ b/chromeos/services/secure_channel/connect_to_device_operation_factory_base_unittest.cc
@@ -0,0 +1,144 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/services/secure_channel/connect_to_device_operation_factory_base.h" + +#include <memory> + +#include "base/bind_helpers.h" +#include "base/test/gtest_util.h" +#include "chromeos/services/secure_channel/fake_connect_to_device_operation.h" +#include "components/cryptauth/remote_device_test_util.h" +#include "components/cryptauth/secure_channel.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace chromeos { + +namespace secure_channel { + +namespace { + +// Since ConnectToDeviceOperationFactoryBase is templatized, a concrete +// implementation is needed for its test. +class TestConnectToDeviceOperationFactory + : public ConnectToDeviceOperationFactoryBase<std::string> { + public: + TestConnectToDeviceOperationFactory( + const cryptauth::RemoteDevice& device_to_connect_to) + : ConnectToDeviceOperationFactoryBase<std::string>(device_to_connect_to), + remote_device_(device_to_connect_to) {} + + ~TestConnectToDeviceOperationFactory() override = default; + + void InvokePendingDestructorCallback() { + EXPECT_TRUE(last_destructor_callback_); + std::move(last_destructor_callback_).Run(); + } + + // ConnectToDeviceOperationFactoryBase<std::string>: + std::unique_ptr<ConnectToDeviceOperation<std::string>> PerformCreateOperation( + typename ConnectToDeviceOperation<std::string>::ConnectionSuccessCallback + success_callback, + typename ConnectToDeviceOperation<std::string>::ConnectionFailedCallback + failure_callback, + const cryptauth::RemoteDevice& device_to_connect_to, + base::OnceClosure destructor_callback) override { + // The previous destructor callback should have been invoked by the time + // this function runs. + EXPECT_FALSE(last_destructor_callback_); + last_destructor_callback_ = std::move(destructor_callback); + + EXPECT_EQ(remote_device_, device_to_connect_to); + + return std::make_unique<FakeConnectToDeviceOperation>( + std::move(success_callback), std::move(failure_callback)); + } + + private: + const cryptauth::RemoteDevice remote_device_; + + base::OnceClosure last_destructor_callback_; +}; + +} // namespace + +class SecureChannelConnectToDeviceOperationFactoryBaseTest + : public testing::Test { + protected: + SecureChannelConnectToDeviceOperationFactoryBaseTest() + : test_device_(cryptauth::CreateRemoteDeviceForTest()) {} + + ~SecureChannelConnectToDeviceOperationFactoryBaseTest() override = default; + + void SetUp() override { + test_factory_ = + std::make_unique<TestConnectToDeviceOperationFactory>(test_device_); + } + + std::unique_ptr<ConnectToDeviceOperation<std::string>> CallCreateOperation() { + // Use a pointer to ConnectToDeviceOperationFactory, since + // ConnectToDeviceOperationFactoryBase makes CreateOperation private. + ConnectToDeviceOperationFactory<std::string>* factory = test_factory_.get(); + return factory->CreateOperation(base::DoNothing() /* success_callback */, + base::DoNothing() /* failure_callback */); + } + + void FinishActiveOperation( + std::unique_ptr<ConnectToDeviceOperation<std::string>> + operation_to_finish) { + EXPECT_TRUE(operation_to_finish); + + // Use a pointer to FakeConnectToDeviceOperation, since + // ConnectToDeviceOperation makes OnSuccessfulConnectionAttempt() protected. + FakeConnectToDeviceOperation* operation = + static_cast<FakeConnectToDeviceOperation*>(operation_to_finish.get()); + operation->OnFailedConnectionAttempt( + "arbitraryFailureDetail" /* failure_detail */); + + test_factory_->InvokePendingDestructorCallback(); + } + + private: + const cryptauth::RemoteDevice test_device_; + + std::unique_ptr<TestConnectToDeviceOperationFactory> test_factory_; + + DISALLOW_COPY_AND_ASSIGN( + SecureChannelConnectToDeviceOperationFactoryBaseTest); +}; + +TEST_F(SecureChannelConnectToDeviceOperationFactoryBaseTest, + UseFactoryCorrectly) { + auto operation1 = CallCreateOperation(); + EXPECT_TRUE(operation1); + + // Invoke the destructor callback and try again. + FinishActiveOperation(std::move(operation1)); + auto operation2 = CallCreateOperation(); + EXPECT_TRUE(operation2); + + // Invoke the destructor callback and try again. + FinishActiveOperation(std::move(operation2)); + auto operation3 = CallCreateOperation(); + EXPECT_TRUE(operation3); + + FinishActiveOperation(std::move(operation3)); +} + +TEST_F(SecureChannelConnectToDeviceOperationFactoryBaseTest, + UseFactoryIncorrectly) { + // First operation should always complete successfully. + auto operation = CallCreateOperation(); + EXPECT_TRUE(operation); + + // The first operation's destructor callback has not yet been invoked, so + // creating another should fail. + EXPECT_DCHECK_DEATH(CallCreateOperation()); + + FinishActiveOperation(std::move(operation)); +} + +} // namespace secure_channel + +} // namespace chromeos
diff --git a/chromeos/services/secure_channel/fake_connect_to_device_operation_factory.cc b/chromeos/services/secure_channel/fake_connect_to_device_operation_factory.cc new file mode 100644 index 0000000..d9ea21d2 --- /dev/null +++ b/chromeos/services/secure_channel/fake_connect_to_device_operation_factory.cc
@@ -0,0 +1,34 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chromeos/services/secure_channel/fake_connect_to_device_operation_factory.h" + +#include "chromeos/services/secure_channel/fake_connect_to_device_operation.h" + +namespace chromeos { + +namespace secure_channel { + +FakeConnectToDeviceOperationFactory::FakeConnectToDeviceOperationFactory() = + default; + +FakeConnectToDeviceOperationFactory::~FakeConnectToDeviceOperationFactory() = + default; + +std::unique_ptr<ConnectToDeviceOperation<std::string>> +FakeConnectToDeviceOperationFactory::CreateOperation( + ConnectToDeviceOperation<std::string>::ConnectionSuccessCallback + success_callback, + ConnectToDeviceOperation<std::string>::ConnectionFailedCallback + failure_callback) { + auto instance = std::make_unique<FakeConnectToDeviceOperation>( + std::move(success_callback), std::move(failure_callback)); + last_created_instance_ = instance.get(); + ++num_instances_created_; + return instance; +} + +} // namespace secure_channel + +} // namespace chromeos
diff --git a/chromeos/services/secure_channel/fake_connect_to_device_operation_factory.h b/chromeos/services/secure_channel/fake_connect_to_device_operation_factory.h new file mode 100644 index 0000000..ba3bd3b --- /dev/null +++ b/chromeos/services/secure_channel/fake_connect_to_device_operation_factory.h
@@ -0,0 +1,52 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROMEOS_SERVICES_SECURE_CHANNEL_FAKE_CONNECT_TO_DEVICE_OPERATION_FACTORY_H_ +#define CHROMEOS_SERVICES_SECURE_CHANNEL_FAKE_CONNECT_TO_DEVICE_OPERATION_FACTORY_H_ + +#include <string> + +#include "base/callback_forward.h" +#include "base/macros.h" +#include "chromeos/services/secure_channel/connect_to_device_operation_factory.h" + +namespace chromeos { + +namespace secure_channel { + +class FakeConnectToDeviceOperation; + +// Fake ConnectToDeviceOperationFactory implementation, whose FailureDetailType +// is std::string. +class FakeConnectToDeviceOperationFactory + : public ConnectToDeviceOperationFactory<std::string> { + public: + FakeConnectToDeviceOperationFactory(); + ~FakeConnectToDeviceOperationFactory() override; + + FakeConnectToDeviceOperation* last_created_instance() { + return last_created_instance_; + } + + size_t num_instances_created() { return num_instances_created_; } + + // ConnectToDeviceOperationFactory<std::string>: + std::unique_ptr<ConnectToDeviceOperation<std::string>> CreateOperation( + ConnectToDeviceOperation<std::string>::ConnectionSuccessCallback + success_callback, + ConnectToDeviceOperation<std::string>::ConnectionFailedCallback + failure_callback) override; + + private: + FakeConnectToDeviceOperation* last_created_instance_ = nullptr; + size_t num_instances_created_ = 0u; + + DISALLOW_COPY_AND_ASSIGN(FakeConnectToDeviceOperationFactory); +}; + +} // namespace secure_channel + +} // namespace chromeos + +#endif // CHROMEOS_SERVICES_SECURE_CHANNEL_FAKE_CONNECT_TO_DEVICE_OPERATION_FACTORY_H_
diff --git a/components/certificate_transparency/OWNERS b/components/certificate_transparency/OWNERS index 009e29e..768b046e 100644 --- a/components/certificate_transparency/OWNERS +++ b/components/certificate_transparency/OWNERS
@@ -1,5 +1,11 @@ -eranm@chromium.org +# Primary rsleevi@chromium.org +# Secondary +file://net/OWNERS + +# Emeritus +eranm@chromium.org + # TEAM: net-dev@chromium.org # COMPONENT: Internals>Network>CertTrans
diff --git a/components/crash/content/app/crash_reporter_client.cc b/components/crash/content/app/crash_reporter_client.cc index 4ec26a2..464fe2ef 100644 --- a/components/crash/content/app/crash_reporter_client.cc +++ b/components/crash/content/app/crash_reporter_client.cc
@@ -93,9 +93,9 @@ const char** version) { } -void CrashReporterClient::GetProductNameAndVersion(const char** product_name, - const char** version, - const char** channel) {} +void CrashReporterClient::GetProductNameAndVersion(std::string* product_name, + std::string* version, + std::string* channel) {} base::FilePath CrashReporterClient::GetReporterLogFilename() { return base::FilePath();
diff --git a/components/crash/content/app/crash_reporter_client.h b/components/crash/content/app/crash_reporter_client.h index 94cdee5..e6a09126 100644 --- a/components/crash/content/app/crash_reporter_client.h +++ b/components/crash/content/app/crash_reporter_client.h
@@ -98,9 +98,9 @@ // Linux-ish breakpad clients have transitioned to crashpad. virtual void GetProductNameAndVersion(const char** product_name, const char** version); - virtual void GetProductNameAndVersion(const char** product_name, - const char** version, - const char** channel); + virtual void GetProductNameAndVersion(std::string* product_name, + std::string* version, + std::string* channel); virtual base::FilePath GetReporterLogFilename();
diff --git a/components/crash/content/app/crashpad_linux.cc b/components/crash/content/app/crashpad_linux.cc index 8c72ac8..7a2b668 100644 --- a/components/crash/content/app/crashpad_linux.cc +++ b/components/crash/content/app/crashpad_linux.cc
@@ -11,6 +11,7 @@ #include <algorithm> +#include "base/environment.h" #include "base/files/file_util.h" #include "base/files/scoped_file.h" #include "base/logging.h" @@ -124,6 +125,26 @@ namespace crash_reporter { namespace internal { +bool SetLdLibraryPath(const base::FilePath& lib_path) { +#if defined(OS_ANDROID) && defined(COMPONENT_BUILD) + std::string library_path(lib_path.value()); + + static constexpr char kLibraryPathVar[] = "LD_LIBRARY_PATH"; + std::unique_ptr<base::Environment> env(base::Environment::Create()); + std::string old_path; + if (env->GetVar(kLibraryPathVar, &old_path)) { + library_path.push_back(':'); + library_path.append(old_path); + } + + if (!env->SetVar(kLibraryPathVar, library_path)) { + return false; + } +#endif + + return true; +} + bool BuildHandlerArgs(base::FilePath* handler_path, base::FilePath* database_path, base::FilePath* metrics_path, @@ -139,25 +160,40 @@ DCHECK(false); return false; } +#if defined(OS_ANDROID) + // There is not any normal way to package native executables in an Android + // APK. The Crashpad handler is packaged like a loadable module, which + // Android's APK installer expects to be named like a shared library, but it + // is in fact a standalone executable. + *handler_path = exe_dir.Append("libcrashpad_handler.so"); +#else *handler_path = exe_dir.Append("crashpad_handler"); +#endif + + static bool env_setup = SetLdLibraryPath(exe_dir); + if (!env_setup) { + return false; + } CrashReporterClient* crash_reporter_client = GetCrashReporterClient(); crash_reporter_client->GetCrashDumpLocation(database_path); crash_reporter_client->GetCrashMetricsLocation(metrics_path); -#if defined(GOOGLE_CHROME_BUILD) && defined(OFFICIAL_BUILD) +// TODO(jperaza): Set URL for Android when Crashpad takes over report upload. +#if defined(GOOGLE_CHROME_BUILD) && defined(OFFICIAL_BUILD) && \ + !defined(OS_ANDROID) *url = "https://clients2.google.com/cr/report"; #else *url = std::string(); #endif - const char* product_name; - const char* product_version; - const char* channel; + std::string product_name; + std::string product_version; + std::string channel; crash_reporter_client->GetProductNameAndVersion(&product_name, &product_version, &channel); - (*process_annotations)["prod"] = std::string(product_name); - (*process_annotations)["ver"] = std::string(product_version); + (*process_annotations)["prod"] = product_name; + (*process_annotations)["ver"] = product_version; #if defined(GOOGLE_CHROME_BUILD) // Empty means stable. @@ -165,9 +201,8 @@ #else const bool allow_empty_channel = false; #endif - std::string channel_string(channel); - if (allow_empty_channel || !channel_string.empty()) { - (*process_annotations)["channel"] = channel_string; + if (allow_empty_channel || !channel.empty()) { + (*process_annotations)["channel"] = channel; } #if defined(OS_ANDROID)
diff --git a/components/crash/content/browser/crash_handler_host_linux.cc b/components/crash/content/browser/crash_handler_host_linux.cc index 7f6e2ba..57f710a 100644 --- a/components/crash/content/browser/crash_handler_host_linux.cc +++ b/components/crash/content/browser/crash_handler_host_linux.cc
@@ -516,6 +516,15 @@ return instance; } +int CrashHandlerHost::GetDeathSignalSocket() { + static bool initialized = BrowserThread::PostTask( + BrowserThread::IO, FROM_HERE, + base::BindOnce(&CrashHandlerHost::Init, base::Unretained(this))); + DCHECK(initialized); + + return process_socket_.get(); +} + CrashHandlerHost::~CrashHandlerHost() = default; CrashHandlerHost::CrashHandlerHost() @@ -538,10 +547,6 @@ static const int on = 1; CHECK_EQ(0, setsockopt(browser_socket_.get(), SOL_SOCKET, SO_PASSCRED, &on, sizeof(on))); - - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::BindOnce(&CrashHandlerHost::Init, base::Unretained(this))); } void CrashHandlerHost::Init() {
diff --git a/components/crash/content/browser/crash_handler_host_linux.h b/components/crash/content/browser/crash_handler_host_linux.h index b18c7372..958f4fa82 100644 --- a/components/crash/content/browser/crash_handler_host_linux.h +++ b/components/crash/content/browser/crash_handler_host_linux.h
@@ -139,7 +139,7 @@ // Get the file descriptor which processes should be given in order to signal // crashes to the browser. - int GetDeathSignalSocket() const { return process_socket_.get(); } + int GetDeathSignalSocket(); protected: ~CrashHandlerHost() override;
diff --git a/components/cryptauth/BUILD.gn b/components/cryptauth/BUILD.gn index 5d0f41ed..e65ae51 100644 --- a/components/cryptauth/BUILD.gn +++ b/components/cryptauth/BUILD.gn
@@ -85,6 +85,7 @@ "software_feature_manager.h", "software_feature_manager_impl.cc", "software_feature_manager_impl.h", + "software_feature_state.h", "switches.cc", "switches.h", "sync_scheduler.cc",
diff --git a/components/cryptauth/cryptauth_device_manager_impl.cc b/components/cryptauth/cryptauth_device_manager_impl.cc index 82f85d1..cc07d6f 100644 --- a/components/cryptauth/cryptauth_device_manager_impl.cc +++ b/components/cryptauth/cryptauth_device_manager_impl.cc
@@ -12,10 +12,12 @@ #include "base/base64url.h" #include "base/memory/ptr_util.h" +#include "base/metrics/histogram_macros.h" #include "base/strings/string_number_conversions.h" #include "chromeos/components/proximity_auth/logging/logging.h" #include "components/cryptauth/cryptauth_client.h" #include "components/cryptauth/pref_names.h" +#include "components/cryptauth/software_feature_state.h" #include "components/cryptauth/sync_scheduler_impl.h" #include "components/prefs/pref_registry_simple.h" #include "components/prefs/pref_service.h" @@ -50,16 +52,15 @@ const char kExternalDeviceKeyBeaconSeeds[] = "beacon_seeds"; const char kExternalDeviceKeyArcPlusPlus[] = "arc_plus_plus"; const char kExternalDeviceKeyPixelPhone[] = "pixel_phone"; -const char kExternalDeviceKeySupportedSoftwareFeatures[] = - "supported_software_features"; -const char kExternalDeviceKeyEnabledSoftwareFeatures[] = - "enabled_software_features"; // Keys for ExternalDeviceInfo's BeaconSeed. const char kExternalDeviceKeyBeaconSeedData[] = "beacon_seed_data"; const char kExternalDeviceKeyBeaconSeedStartMs[] = "beacon_seed_start_ms"; const char kExternalDeviceKeyBeaconSeedEndMs[] = "beacon_seed_end_ms"; +// Keys specific to the dictionary which stores ExternalDeviceInfo info. +const char kDictionaryKeySoftwareFeatures[] = "software_features"; + // Converts BeaconSeed protos to a list value that can be stored in user prefs. std::unique_ptr<base::ListValue> BeaconSeedsToListValue( const google::protobuf::RepeatedPtrField<BeaconSeed>& seeds) { @@ -100,14 +101,46 @@ return list; } -// Converts SoftwareFeature protos to a list value that can be stored in user -// prefs. -std::unique_ptr<base::ListValue> SoftwareFeaturesToListValue( - const google::protobuf::RepeatedField<int>& software_features) { - std::unique_ptr<base::ListValue> list = std::make_unique<base::ListValue>(); - for (auto software_feature : software_features) - list->AppendInteger(software_feature); - return list; +void RecordDeviceSyncSoftwareFeaturesResult(bool success) { + UMA_HISTOGRAM_BOOLEAN("CryptAuth.DeviceSyncSoftwareFeaturesResult", success); +} + +// Converts supported and enabled SoftwareFeature protos to a single dictionary +// value that can be stored in user prefs. +std::unique_ptr<base::DictionaryValue> +SupportedAndEnabledSoftwareFeaturesToDictionaryValue( + const google::protobuf::RepeatedField<int>& supported_software_features, + const google::protobuf::RepeatedField<int>& enabled_software_features) { + std::unique_ptr<base::DictionaryValue> dictionary = + std::make_unique<base::DictionaryValue>(); + + for (const auto& supported_software_feature : supported_software_features) { + dictionary->SetInteger(std::to_string(supported_software_feature), + static_cast<int>(SoftwareFeatureState::kSupported)); + } + + for (const auto& enabled_software_feature : enabled_software_features) { + std::string software_feature_key = std::to_string(enabled_software_feature); + + int software_feature_state; + if (!dictionary->GetInteger(software_feature_key, + &software_feature_state) || + static_cast<SoftwareFeatureState>(software_feature_state) != + SoftwareFeatureState::kSupported) { + PA_LOG(ERROR) << "A feature is marked as enabled but not as supported: " + << software_feature_key; + RecordDeviceSyncSoftwareFeaturesResult(false /* success */); + + continue; + } else { + RecordDeviceSyncSoftwareFeaturesResult(true /* success */); + } + + dictionary->SetInteger(software_feature_key, + static_cast<int>(SoftwareFeatureState::kEnabled)); + } + + return dictionary; } // Converts an unlock key proto to a dictionary that can be stored in user @@ -181,12 +214,10 @@ dictionary->SetBoolean(kExternalDeviceKeyPixelPhone, device.pixel_phone()); } - dictionary->Set( - kExternalDeviceKeySupportedSoftwareFeatures, - SoftwareFeaturesToListValue(device.supported_software_features())); - dictionary->Set( - kExternalDeviceKeyEnabledSoftwareFeatures, - SoftwareFeaturesToListValue(device.enabled_software_features())); + dictionary->Set(kDictionaryKeySoftwareFeatures, + SupportedAndEnabledSoftwareFeaturesToDictionaryValue( + device.supported_software_features(), + device.enabled_software_features())); return dictionary; } @@ -238,34 +269,26 @@ } void AddSoftwareFeaturesToExternalDevice( - const base::DictionaryValue& dictionary, - const std::string& software_feature_dictionary_key, + const base::DictionaryValue& software_features_dictionary, ExternalDeviceInfo* external_device) { - DCHECK(software_feature_dictionary_key == - kExternalDeviceKeySupportedSoftwareFeatures || - software_feature_dictionary_key == - kExternalDeviceKeyEnabledSoftwareFeatures); - - const base::ListValue* software_features; - if (!dictionary.GetList(software_feature_dictionary_key, &software_features)) - return; - - for (size_t i = 0; i < software_features->GetSize(); i++) { - int software_feature; - if (!software_features->GetInteger(i, &software_feature) || - !SoftwareFeature_IsValid(software_feature)) { + for (const auto& it : software_features_dictionary.DictItems()) { + int software_feature_state; + if (!it.second.GetAsInteger(&software_feature_state)) { PA_LOG(WARNING) << "Unable to retrieve SoftwareFeature; skipping."; continue; } - if (software_feature_dictionary_key == - kExternalDeviceKeySupportedSoftwareFeatures) { - external_device->add_supported_software_features( - static_cast<SoftwareFeature>(software_feature)); - } else if (software_feature_dictionary_key == - kExternalDeviceKeyEnabledSoftwareFeatures) { - external_device->add_enabled_software_features( - static_cast<SoftwareFeature>(software_feature)); + SoftwareFeature software_feature = + static_cast<SoftwareFeature>(std::stoi(it.first)); + switch (static_cast<SoftwareFeatureState>(software_feature_state)) { + case SoftwareFeatureState::kEnabled: + external_device->add_enabled_software_features(software_feature); + FALLTHROUGH; + case SoftwareFeatureState::kSupported: + external_device->add_supported_software_features(software_feature); + break; + default: + break; } } } @@ -346,9 +369,8 @@ external_device->set_device_type(static_cast<DeviceType>(device_type)); } - const base::ListValue* beacon_seeds = nullptr; - dictionary.GetList(kExternalDeviceKeyBeaconSeeds, &beacon_seeds); - if (beacon_seeds) + const base::ListValue* beacon_seeds; + if (dictionary.GetList(kExternalDeviceKeyBeaconSeeds, &beacon_seeds)) AddBeaconSeedsToExternalDevice(*beacon_seeds, external_device); bool arc_plus_plus; @@ -359,10 +381,12 @@ if (dictionary.GetBoolean(kExternalDeviceKeyPixelPhone, &pixel_phone)) external_device->set_pixel_phone(pixel_phone); - AddSoftwareFeaturesToExternalDevice( - dictionary, kExternalDeviceKeySupportedSoftwareFeatures, external_device); - AddSoftwareFeaturesToExternalDevice( - dictionary, kExternalDeviceKeyEnabledSoftwareFeatures, external_device); + const base::DictionaryValue* software_features_dictionary; + if (dictionary.GetDictionary(kDictionaryKeySoftwareFeatures, + &software_features_dictionary)) { + AddSoftwareFeaturesToExternalDevice(*software_features_dictionary, + external_device); + } return true; }
diff --git a/components/cryptauth/cryptauth_device_manager_impl_unittest.cc b/components/cryptauth/cryptauth_device_manager_impl_unittest.cc index 8b498ae..432a24ea 100644 --- a/components/cryptauth/cryptauth_device_manager_impl_unittest.cc +++ b/components/cryptauth/cryptauth_device_manager_impl_unittest.cc
@@ -20,6 +20,7 @@ #include "components/cryptauth/mock_cryptauth_client.h" #include "components/cryptauth/mock_sync_scheduler.h" #include "components/cryptauth/pref_names.h" +#include "components/cryptauth/software_feature_state.h" #include "components/prefs/scoped_user_pref_update.h" #include "components/prefs/testing_pref_service.h" #include "net/traffic_annotation/network_traffic_annotation_test_helper.h" @@ -309,39 +310,48 @@ EXPECT_FALSE(expected_device.has_pixel_phone()); } - const base::ListValue* supported_software_features_from_prefs; - if (device_dictionary->GetList("supported_software_features", - &supported_software_features_from_prefs)) { + const base::DictionaryValue* software_features_from_prefs; + if (device_dictionary->GetDictionary("software_features", + &software_features_from_prefs)) { + std::vector<SoftwareFeature> supported_software_features; + std::vector<SoftwareFeature> enabled_software_features; + + for (const auto& it : software_features_from_prefs->DictItems()) { + int software_feature_state; + ASSERT_TRUE(it.second.GetAsInteger(&software_feature_state)); + + SoftwareFeature software_feature = + static_cast<SoftwareFeature>(std::stoi(it.first)); + switch (static_cast<SoftwareFeatureState>(software_feature_state)) { + case SoftwareFeatureState::kEnabled: + enabled_software_features.push_back(software_feature); + FALLTHROUGH; + case SoftwareFeatureState::kSupported: + supported_software_features.push_back(software_feature); + break; + default: + break; + } + } + ASSERT_EQ(static_cast<size_t>( expected_device.supported_software_features_size()), - supported_software_features_from_prefs->GetSize()); - for (size_t i = 0; i < supported_software_features_from_prefs->GetSize(); - i++) { - int supported_software_feature; - ASSERT_TRUE(supported_software_features_from_prefs->GetInteger( - i, &supported_software_feature)); - EXPECT_EQ(expected_device.supported_software_features(i), - supported_software_feature); + supported_software_features.size()); + ASSERT_EQ( + static_cast<size_t>(expected_device.enabled_software_features_size()), + enabled_software_features.size()); + for (auto supported_software_feature : + expected_device.supported_software_features()) { + EXPECT_TRUE(base::ContainsValue(supported_software_features, + supported_software_feature)); + } + for (auto enabled_software_feature : + expected_device.enabled_software_features()) { + EXPECT_TRUE(base::ContainsValue(enabled_software_features, + enabled_software_feature)); } } else { EXPECT_FALSE(expected_device.supported_software_features_size()); - } - - const base::ListValue* enabled_software_features_from_prefs; - if (device_dictionary->GetList("enabled_software_features", - &enabled_software_features_from_prefs)) { - ASSERT_EQ( - static_cast<size_t>(expected_device.enabled_software_features_size()), - enabled_software_features_from_prefs->GetSize()); - for (size_t i = 0; i < enabled_software_features_from_prefs->GetSize(); - i++) { - int enabled_software_feature; - ASSERT_TRUE(enabled_software_features_from_prefs->GetInteger( - i, &enabled_software_feature)); - EXPECT_EQ(expected_device.enabled_software_features(i), - enabled_software_feature); - } - } else { EXPECT_FALSE(expected_device.enabled_software_features_size()); } } @@ -485,10 +495,8 @@ device_dictionary->SetBoolean("mobile_hotspot_supported", kStoredMobileHotspotSupported); device_dictionary->Set("beacon_seeds", std::make_unique<base::ListValue>()); - device_dictionary->Set("supported_software_features", - std::make_unique<base::ListValue>()); - device_dictionary->Set("enabled_software_features", - std::make_unique<base::ListValue>()); + device_dictionary->Set("software_features", + std::make_unique<base::DictionaryValue>()); { ListPrefUpdate update(&pref_service_, prefs::kCryptAuthDeviceSyncUnlockKeys);
diff --git a/components/cryptauth/software_feature_state.h b/components/cryptauth/software_feature_state.h new file mode 100644 index 0000000..bd21b37b --- /dev/null +++ b/components/cryptauth/software_feature_state.h
@@ -0,0 +1,18 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_CRYPTAUTH_SOFTWARE_FEATURE_STATE_H_ +#define COMPONENTS_CRYPTAUTH_SOFTWARE_FEATURE_STATE_H_ + +namespace cryptauth { + +enum class SoftwareFeatureState { + kNotSupported = 0, + kSupported = 1, + kEnabled = 2 +}; + +} // namespace cryptauth + +#endif // COMPONENTS_CRYPTAUTH_SOFTWARE_FEATURE_STATE_H_ \ No newline at end of file
diff --git a/components/mirroring/browser/cast_remoting_sender.cc b/components/mirroring/browser/cast_remoting_sender.cc index 63f3557..dcb057a 100644 --- a/components/mirroring/browser/cast_remoting_sender.cc +++ b/components/mirroring/browser/cast_remoting_sender.cc
@@ -382,8 +382,7 @@ } else { next_frame_data_.resize(size); data_pipe_reader_->Read( - reinterpret_cast<uint8_t*>(base::string_as_array(&next_frame_data_)), - size, + reinterpret_cast<uint8_t*>(base::data(next_frame_data_)), size, base::BindOnce(&CastRemotingSender::OnFrameRead, base::Unretained(this))); }
diff --git a/components/mirroring/service/session.cc b/components/mirroring/service/session.cc index a3f101f..f5870e1 100644 --- a/components/mirroring/service/session.cc +++ b/components/mirroring/service/session.cc
@@ -88,8 +88,7 @@ // Generates a string with cryptographically secure random bytes. std::string MakeRandomString(size_t length) { std::string result(length, ' '); - DCHECK_EQ(length, result.size()); - crypto::RandBytes(base::string_as_array(&result), length); + crypto::RandBytes(base::data(result), length); return result; }
diff --git a/components/omnibox_strings.grdp b/components/omnibox_strings.grdp index 5ff8bbb..5721efc 100644 --- a/components/omnibox_strings.grdp +++ b/components/omnibox_strings.grdp
@@ -41,7 +41,7 @@ </message> </if> <message name="IDS_OMNIBOX_TAB_SUGGEST_HINT" desc="The text prefixing a suggestion description to say that this suggestion will switch to another tab."> - Switch to tab + Switch to this tab </message> <message name="IDS_PHYSICAL_WEB_OVERFLOW_DESCRIPTION" desc="The description in the omnibox dropdown indicating that multiple nearby devices are broadcasting URLs."> Physical Web suggestions
diff --git a/components/sync/base/unique_position.cc b/components/sync/base/unique_position.cc index 3e802e82..aeb64d8 100644 --- a/components/sync/base/unique_position.cc +++ b/components/sync/base/unique_position.cc
@@ -64,8 +64,7 @@ un_gzipped.resize(uncompressed_len); int result = uncompress( - reinterpret_cast<Bytef*>(base::string_as_array(&un_gzipped)), - &uncompressed_len, + reinterpret_cast<Bytef*>(base::data(un_gzipped)), &uncompressed_len, reinterpret_cast<const Bytef*>(proto.compressed_value().data()), proto.compressed_value().size()); if (result != Z_OK) {
diff --git a/components/update_client/url_fetcher_downloader.cc b/components/update_client/url_fetcher_downloader.cc index 7db726b4..d181daa 100644 --- a/components/update_client/url_fetcher_downloader.cc +++ b/components/update_client/url_fetcher_downloader.cc
@@ -142,6 +142,7 @@ net::LOAD_DO_NOT_SAVE_COOKIES | net::LOAD_DISABLE_CACHE); url_fetcher_->SetAutomaticallyRetryOn5xx(false); + url_fetcher_->SetAutomaticallyRetryOnNetworkChanges(3); url_fetcher_->SaveResponseToFileAtPath( response, base::CreateSequencedTaskRunnerWithTraits(kTaskTraits)); data_use_measurement::DataUseUserData::AttachToFetcher(
diff --git a/components/update_client/utils.cc b/components/update_client/utils.cc index 19b93a0..1213c1f 100644 --- a/components/update_client/utils.cc +++ b/components/update_client/utils.cc
@@ -86,6 +86,7 @@ net::LOAD_DO_NOT_SAVE_COOKIES | net::LOAD_DISABLE_CACHE); url_fetcher->SetAutomaticallyRetryOn5xx(false); + url_fetcher->SetAutomaticallyRetryOnNetworkChanges(3); for (const auto& header : protocol_request_extra_headers) url_fetcher->AddExtraRequestHeader(base::StringPrintf( "%s: %s", header.first.c_str(), header.second.c_str()));
diff --git a/components/viz/client/hit_test_data_provider_surface_layer.cc b/components/viz/client/hit_test_data_provider_surface_layer.cc index acea52c..acac0aa 100644 --- a/components/viz/client/hit_test_data_provider_surface_layer.cc +++ b/components/viz/client/hit_test_data_provider_surface_layer.cc
@@ -75,7 +75,7 @@ const auto* surface_layer = static_cast<const cc::SurfaceLayerImpl*>(layer); - if (!surface_layer->hit_testable()) { + if (!surface_layer->surface_hit_testable()) { overlapping_region.Union(cc::MathUtil::MapEnclosingClippedRect( layer->ScreenSpaceTransform(), gfx::Rect(surface_layer->bounds()))); continue;
diff --git a/components/viz/client/hit_test_data_provider_surface_layer_unittest.cc b/components/viz/client/hit_test_data_provider_surface_layer_unittest.cc index c92968d9..672651c 100644 --- a/components/viz/client/hit_test_data_provider_surface_layer_unittest.cc +++ b/components/viz/client/hit_test_data_provider_surface_layer_unittest.cc
@@ -73,12 +73,12 @@ rotate.Rotate(45); surface_child1->test_properties()->transform = rotate; surface_child1->SetDrawsContent(true); - surface_child1->SetHitTestable(true); + surface_child1->SetSurfaceHitTestable(true); surface_child2->SetPosition(gfx::PointF(450, 300)); surface_child2->SetBounds(gfx::Size(100, 100)); surface_child2->SetDrawsContent(true); - surface_child2->SetHitTestable(true); + surface_child2->SetSurfaceHitTestable(true); overlapping_layer->SetPosition(gfx::PointF(500, 350)); overlapping_layer->SetBounds(gfx::Size(200, 200));
diff --git a/components/viz/common/BUILD.gn b/components/viz/common/BUILD.gn index cdf8bcb..2bfc1cd 100644 --- a/components/viz/common/BUILD.gn +++ b/components/viz/common/BUILD.gn
@@ -181,6 +181,15 @@ deps += [ "//gpu/vulkan" ] } + if (is_win) { + sources += [ + "display/use_layered_window.cc", + "display/use_layered_window.h", + ] + + deps += [ "//ui/base" ] + } + public_deps = [ ":resource_format", "//gpu/command_buffer/client",
diff --git a/components/viz/common/display/use_layered_window.cc b/components/viz/common/display/use_layered_window.cc new file mode 100644 index 0000000..15521e26 --- /dev/null +++ b/components/viz/common/display/use_layered_window.cc
@@ -0,0 +1,17 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/viz/common/display/use_layered_window.h" + +#include "base/win/windows_version.h" +#include "ui/base/win/internal_constants.h" + +namespace viz { + +bool NeedsToUseLayerWindow(HWND hwnd) { + return base::win::GetVersion() <= base::win::VERSION_WIN7 && + GetProp(hwnd, ui::kWindowTranslucent); +} + +} // namespace viz
diff --git a/components/viz/common/display/use_layered_window.h b/components/viz/common/display/use_layered_window.h new file mode 100644 index 0000000..b297a17 --- /dev/null +++ b/components/viz/common/display/use_layered_window.h
@@ -0,0 +1,23 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_VIZ_COMMON_DISPLAY_USE_LAYERED_WINDOW_H_ +#define COMPONENTS_VIZ_COMMON_DISPLAY_USE_LAYERED_WINDOW_H_ + +#include <windows.h> + +#include "components/viz/common/viz_common_export.h" + +namespace viz { + +// Layered windows are a legacy way of supporting transparency for HWNDs. With +// Desktop Window Manager (DWM) HWNDs support transparency natively. DWM is +// always enabled on Windows 8 and later. However, for Windows 7 (and earlier) +// DWM might be disabled and layered windows are necessary to guarantee the HWND +// will support transparency. +VIZ_COMMON_EXPORT bool NeedsToUseLayerWindow(HWND hwnd); + +} // namespace viz + +#endif // COMPONENTS_VIZ_COMMON_DISPLAY_USE_LAYERED_WINDOW_H_
diff --git a/components/viz/common/features.cc b/components/viz/common/features.cc index 0355086..745c26bb 100644 --- a/components/viz/common/features.cc +++ b/components/viz/common/features.cc
@@ -40,6 +40,14 @@ const base::Feature kEnableVizHitTestSurfaceLayer{ "VizHitTestSurfaceLayer", base::FEATURE_DISABLED_BY_DEFAULT}; +// Use the SkiaRenderer. +const base::Feature kUseSkiaDeferredDisplayList{ + "UseSkiaDeferredDisplayList", base::FEATURE_DISABLED_BY_DEFAULT}; + +// Use the Skia deferred display list. +const base::Feature kUseSkiaRenderer{"UseSkiaRenderer", + base::FEATURE_DISABLED_BY_DEFAULT}; + bool IsSurfaceSynchronizationEnabled() { auto* command_line = base::CommandLine::ForCurrentProcess(); return base::FeatureList::IsEnabled(kEnableSurfaceSynchronization) || @@ -75,4 +83,14 @@ return base::FeatureList::IsEnabled(kEnableDrawOcclusion); } +bool IsUsingSkiaRenderer() { + return base::FeatureList::IsEnabled(kUseSkiaRenderer); +} + +bool IsUsingSkiaDeferredDisplayList() { + return IsUsingSkiaRenderer() && + base::FeatureList::IsEnabled(kUseSkiaDeferredDisplayList) && + base::FeatureList::IsEnabled(kVizDisplayCompositor); +} + } // namespace features
diff --git a/components/viz/common/features.h b/components/viz/common/features.h index b7eaf7f3..f5f21df 100644 --- a/components/viz/common/features.h +++ b/components/viz/common/features.h
@@ -16,6 +16,8 @@ VIZ_COMMON_EXPORT extern const base::Feature kEnableInvariantsViolationLogging; VIZ_COMMON_EXPORT extern const base::Feature kEnableVizHitTestDrawQuad; VIZ_COMMON_EXPORT extern const base::Feature kEnableVizHitTestSurfaceLayer; +VIZ_COMMON_EXPORT extern const base::Feature kUseSkiaDeferredDisplayList; +VIZ_COMMON_EXPORT extern const base::Feature kUseSkiaRenderer; VIZ_COMMON_EXPORT extern const base::Feature kVizDisplayCompositor; VIZ_COMMON_EXPORT bool IsDrawOcclusionEnabled(); @@ -24,6 +26,8 @@ VIZ_COMMON_EXPORT bool IsVizHitTestingDrawQuadEnabled(); VIZ_COMMON_EXPORT bool IsVizHitTestingEnabled(); VIZ_COMMON_EXPORT bool IsVizHitTestingSurfaceLayerEnabled(); +VIZ_COMMON_EXPORT bool IsUsingSkiaDeferredDisplayList(); +VIZ_COMMON_EXPORT bool IsUsingSkiaRenderer(); } // namespace features
diff --git a/components/viz/host/BUILD.gn b/components/viz/host/BUILD.gn index d52ccab..b1c6811 100644 --- a/components/viz/host/BUILD.gn +++ b/components/viz/host/BUILD.gn
@@ -21,6 +21,13 @@ "viz_host_export.h", ] + if (is_win) { + sources += [ + "layered_window_updater_impl.cc", + "layered_window_updater_impl.h", + ] + } + deps = [ "//base", "//components/viz/common",
diff --git a/components/viz/host/DEPS b/components/viz/host/DEPS index a54c1c58..038ef55 100644 --- a/components/viz/host/DEPS +++ b/components/viz/host/DEPS
@@ -12,6 +12,8 @@ "+services/viz/privileged/interfaces", "+services/viz/public/interfaces", "+services/viz/public/interfaces/hit_test", + "+skia", + "+third_party/skia", ] specific_include_rules = {
diff --git a/components/viz/host/layered_window_updater_impl.cc b/components/viz/host/layered_window_updater_impl.cc new file mode 100644 index 0000000..d3a49ed8 --- /dev/null +++ b/components/viz/host/layered_window_updater_impl.cc
@@ -0,0 +1,79 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/viz/host/layered_window_updater_impl.h" + +#include "base/memory/shared_memory.h" +#include "components/viz/common/resources/resource_format.h" +#include "components/viz/common/resources/resource_sizes.h" +#include "mojo/public/cpp/system/platform_handle.h" +#include "skia/ext/platform_canvas.h" +#include "skia/ext/skia_utils_win.h" +#include "third_party/skia/include/core/SkCanvas.h" + +namespace viz { + +LayeredWindowUpdaterImpl::LayeredWindowUpdaterImpl( + HWND hwnd, + mojom::LayeredWindowUpdaterRequest request) + : hwnd_(hwnd), binding_(this, std::move(request)) {} + +LayeredWindowUpdaterImpl::~LayeredWindowUpdaterImpl() = default; + +void LayeredWindowUpdaterImpl::OnAllocatedSharedMemory( + const gfx::Size& pixel_size, + mojo::ScopedSharedBufferHandle scoped_buffer_handle) { + canvas_.reset(); + + // Make sure |pixel_size| is sane. + size_t expected_bytes; + bool size_result = ResourceSizes::MaybeSizeInBytes( + pixel_size, ResourceFormat::RGBA_8888, &expected_bytes); + if (!size_result) + return; + + base::SharedMemoryHandle shm_handle; + MojoResult unwrap_result = mojo::UnwrapSharedMemoryHandle( + std::move(scoped_buffer_handle), &shm_handle, nullptr, nullptr); + if (unwrap_result != MOJO_RESULT_OK) + return; + + // The SkCanvas maps shared memory on creation and unmaps on destruction. + canvas_ = skia::CreatePlatformCanvasWithSharedSection( + pixel_size.width(), pixel_size.height(), true, shm_handle.GetHandle(), + skia::RETURN_NULL_ON_FAILURE); + + shm_handle.Close(); +} + +void LayeredWindowUpdaterImpl::Draw(DrawCallback draw_callback) { + TRACE_EVENT0("viz", "LayeredWindowUpdaterImpl::Draw"); + + if (!canvas_) { + std::move(draw_callback).Run(); + return; + } + + // Set WS_EX_LAYERED extended window style if not already set. + DWORD style = GetWindowLong(hwnd_, GWL_EXSTYLE); + DCHECK(!(style & WS_EX_COMPOSITED)); + if (!(style & WS_EX_LAYERED)) + SetWindowLong(hwnd_, GWL_EXSTYLE, style | WS_EX_LAYERED); + + // Draw to the HWND. If |canvas_| size doesn't match HWND size then it will be + // clipped or guttered accordingly. + RECT wr; + GetWindowRect(hwnd_, &wr); + SIZE size = {wr.right - wr.left, wr.bottom - wr.top}; + POINT position = {wr.left, wr.top}; + POINT zero = {0, 0}; + BLENDFUNCTION blend = {AC_SRC_OVER, 0x00, 0xFF, AC_SRC_ALPHA}; + HDC dib_dc = skia::GetNativeDrawingContext(canvas_.get()); + UpdateLayeredWindow(hwnd_, nullptr, &position, &size, dib_dc, &zero, + RGB(0xFF, 0xFF, 0xFF), &blend, ULW_ALPHA); + + std::move(draw_callback).Run(); +} + +} // namespace viz
diff --git a/components/viz/host/layered_window_updater_impl.h b/components/viz/host/layered_window_updater_impl.h new file mode 100644 index 0000000..93c52d2b --- /dev/null +++ b/components/viz/host/layered_window_updater_impl.h
@@ -0,0 +1,48 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_VIZ_HOST_LAYERED_WINDOW_UPDATER_IMPL_H_ +#define COMPONENTS_VIZ_HOST_LAYERED_WINDOW_UPDATER_IMPL_H_ + +#include <windows.h> + +#include <memory> + +#include "base/macros.h" +#include "components/viz/host/viz_host_export.h" +#include "mojo/public/cpp/bindings/binding.h" +#include "services/viz/privileged/interfaces/compositing/layered_window_updater.mojom.h" +#include "ui/gfx/geometry/size.h" + +class SkCanvas; + +namespace viz { + +// Makes layered window drawing syscalls. Updates a layered window from shared +// memory backing buffer that was drawn into by the GPU process. This is +// required as UpdateLayeredWindow() syscall is blocked by the GPU sandbox. +class VIZ_HOST_EXPORT LayeredWindowUpdaterImpl + : public mojom::LayeredWindowUpdater { + public: + LayeredWindowUpdaterImpl(HWND hwnd, + mojom::LayeredWindowUpdaterRequest request); + ~LayeredWindowUpdaterImpl() override; + + // mojom::LayeredWindowUpdater implementation. + void OnAllocatedSharedMemory( + const gfx::Size& pixel_size, + mojo::ScopedSharedBufferHandle scoped_buffer_handle) override; + void Draw(DrawCallback draw_callback) override; + + private: + const HWND hwnd_; + mojo::Binding<mojom::LayeredWindowUpdater> binding_; + std::unique_ptr<SkCanvas> canvas_; + + DISALLOW_COPY_AND_ASSIGN(LayeredWindowUpdaterImpl); +}; + +} // namespace viz + +#endif // COMPONENTS_VIZ_HOST_LAYERED_WINDOW_UPDATER_IMPL_H_
diff --git a/components/viz/host/renderer_settings_creation.cc b/components/viz/host/renderer_settings_creation.cc index 0a147ee..1c93bcc 100644 --- a/components/viz/host/renderer_settings_creation.cc +++ b/components/viz/host/renderer_settings_creation.cc
@@ -57,10 +57,9 @@ renderer_settings.enable_draw_occlusion = features::IsDrawOcclusionEnabled(); renderer_settings.allow_antialiasing = !command_line->HasSwitch(switches::kDisableCompositedAntialiasing); - renderer_settings.use_skia_renderer = - command_line->HasSwitch(switches::kUseSkiaRenderer); + renderer_settings.use_skia_renderer = features::IsUsingSkiaRenderer(); renderer_settings.use_skia_deferred_display_list = - command_line->HasSwitch(switches::kUseSkiaDeferredDisplayList); + features::IsUsingSkiaDeferredDisplayList(); #if defined(OS_MACOSX) renderer_settings.allow_overlays = ui::RemoteLayerAPISupported() &&
diff --git a/components/viz/service/display_embedder/display_provider.h b/components/viz/service/display_embedder/display_provider.h index eaae5ac..12fa614 100644 --- a/components/viz/service/display_embedder/display_provider.h +++ b/components/viz/service/display_embedder/display_provider.h
@@ -8,6 +8,7 @@ #include <memory> #include "gpu/ipc/common/surface_handle.h" +#include "services/viz/privileged/interfaces/compositing/display_private.mojom.h" namespace viz { @@ -29,6 +30,7 @@ const FrameSinkId& frame_sink_id, gpu::SurfaceHandle surface_handle, bool gpu_compositing, + mojom::DisplayClient* display_client, ExternalBeginFrameControllerImpl* external_begin_frame_controller, const RendererSettings& renderer_settings, std::unique_ptr<SyntheticBeginFrameSource>* out_begin_frame_source) = 0;
diff --git a/components/viz/service/display_embedder/gpu_display_provider.cc b/components/viz/service/display_embedder/gpu_display_provider.cc index 937c07a..3da085b 100644 --- a/components/viz/service/display_embedder/gpu_display_provider.cc +++ b/components/viz/service/display_embedder/gpu_display_provider.cc
@@ -92,6 +92,7 @@ const FrameSinkId& frame_sink_id, gpu::SurfaceHandle surface_handle, bool gpu_compositing, + mojom::DisplayClient* display_client, ExternalBeginFrameControllerImpl* external_begin_frame_controller, const RendererSettings& renderer_settings, std::unique_ptr<SyntheticBeginFrameSource>* out_begin_frame_source) { @@ -114,7 +115,7 @@ if (!gpu_compositing) { output_surface = std::make_unique<SoftwareOutputSurface>( - CreateSoftwareOutputDeviceForPlatform(surface_handle)); + CreateSoftwareOutputDeviceForPlatform(surface_handle, display_client)); } else if (renderer_settings.use_skia_renderer && renderer_settings.use_skia_deferred_display_list) { #if defined(OS_MACOSX) || defined(OS_WIN) @@ -201,12 +202,14 @@ std::unique_ptr<SoftwareOutputDevice> GpuDisplayProvider::CreateSoftwareOutputDeviceForPlatform( - gpu::SurfaceHandle surface_handle) { + gpu::SurfaceHandle surface_handle, + mojom::DisplayClient* display_client) { if (headless_) return std::make_unique<SoftwareOutputDevice>(); #if defined(OS_WIN) - return CreateSoftwareOutputDeviceWin(surface_handle, &output_device_backing_); + return CreateSoftwareOutputDeviceWinGpu( + surface_handle, &output_device_backing_, display_client); #elif defined(OS_MACOSX) return std::make_unique<SoftwareOutputDeviceMac>(task_runner_); #elif defined(OS_ANDROID)
diff --git a/components/viz/service/display_embedder/gpu_display_provider.h b/components/viz/service/display_embedder/gpu_display_provider.h index 1e95004..f714ee18 100644 --- a/components/viz/service/display_embedder/gpu_display_provider.h +++ b/components/viz/service/display_embedder/gpu_display_provider.h
@@ -51,6 +51,7 @@ const FrameSinkId& frame_sink_id, gpu::SurfaceHandle surface_handle, bool gpu_compositing, + mojom::DisplayClient* display_client, ExternalBeginFrameControllerImpl* external_begin_frame_controller, const RendererSettings& renderer_settings, std::unique_ptr<SyntheticBeginFrameSource>* out_begin_frame_source) @@ -58,7 +59,8 @@ private: std::unique_ptr<SoftwareOutputDevice> CreateSoftwareOutputDeviceForPlatform( - gpu::SurfaceHandle surface_handle); + gpu::SurfaceHandle surface_handle, + mojom::DisplayClient* display_client); const uint32_t restart_id_; GpuServiceImpl* const gpu_service_impl_;
diff --git a/components/viz/service/display_embedder/software_output_device_win.cc b/components/viz/service/display_embedder/software_output_device_win.cc index 97063b5..7d0e5f2 100644 --- a/components/viz/service/display_embedder/software_output_device_win.cc +++ b/components/viz/service/display_embedder/software_output_device_win.cc
@@ -6,28 +6,20 @@ #include "base/memory/shared_memory.h" #include "base/threading/thread_checker.h" -#include "base/win/windows_version.h" +#include "components/viz/common/display/use_layered_window.h" +#include "components/viz/common/resources/resource_sizes.h" #include "components/viz/service/display_embedder/output_device_backing.h" +#include "mojo/public/cpp/system/platform_handle.h" +#include "services/viz/privileged/interfaces/compositing/layered_window_updater.mojom.h" #include "skia/ext/platform_canvas.h" #include "skia/ext/skia_utils_win.h" #include "third_party/skia/include/core/SkCanvas.h" -#include "ui/base/win/internal_constants.h" #include "ui/gfx/gdi_util.h" #include "ui/gfx/skia_util.h" namespace viz { namespace { -bool NeedsToUseLayerWindow(HWND hwnd) { - // Layered windows are a legacy way of supporting transparency for HWNDs. With - // Desktop Window Manager (DWM) HWNDs support transparency natively. DWM is - // always enabled on Windows 8 and later. However, for Windows 7 (and earlier) - // DWM might be disabled and layered windows are necessary to guarantee the - // HWND will support transparency. - return base::win::GetVersion() <= base::win::VERSION_WIN7 && - GetProp(hwnd, ui::kWindowTranslucent); -} - // Shared base class for Windows SoftwareOutputDevice implementations. class SoftwareOutputDeviceWinBase : public SoftwareOutputDevice { public: @@ -228,9 +220,121 @@ RGB(0xFF, 0xFF, 0xFF), &blend, ULW_ALPHA); } +// SoftwareOutputDevice implementation that uses layered window API to draw +// indirectly. Since UpdateLayeredWindow() is blocked by the GPU sandbox an +// implementation of mojom::LayeredWindowUpdater in the browser process handles +// calling UpdateLayeredWindow. Pixel backing is in SharedMemory so no copying +// between processes is required. +class SoftwareOutputDeviceWinProxy : public SoftwareOutputDeviceWinBase { + public: + SoftwareOutputDeviceWinProxy( + HWND hwnd, + mojom::LayeredWindowUpdaterPtr layered_window_updater); + ~SoftwareOutputDeviceWinProxy() override = default; + + // SoftwareOutputDevice implementation. + void OnSwapBuffers(base::OnceClosure swap_ack_callback) override; + + // SoftwareOutputDeviceWinBase implementation. + void ResizeDelegated() override; + SkCanvas* BeginPaintDelegated() override; + void EndPaintDelegated(const gfx::Rect& rect) override; + + private: + // Runs |swap_ack_callback_| after draw has happened. + void DrawAck(); + + mojom::LayeredWindowUpdaterPtr layered_window_updater_; + + std::unique_ptr<SkCanvas> canvas_; + bool waiting_on_draw_ack_ = false; + base::OnceClosure swap_ack_callback_; + + DISALLOW_COPY_AND_ASSIGN(SoftwareOutputDeviceWinProxy); +}; + +SoftwareOutputDeviceWinProxy::SoftwareOutputDeviceWinProxy( + HWND hwnd, + mojom::LayeredWindowUpdaterPtr layered_window_updater) + : SoftwareOutputDeviceWinBase(hwnd), + layered_window_updater_(std::move(layered_window_updater)) { + DCHECK(layered_window_updater_.is_bound()); +} + +void SoftwareOutputDeviceWinProxy::OnSwapBuffers( + base::OnceClosure swap_ack_callback) { + DCHECK(swap_ack_callback_.is_null()); + + // We aren't waiting on DrawAck() and can immediately run the callback. + if (!waiting_on_draw_ack_) { + task_runner_->PostTask(FROM_HERE, std::move(swap_ack_callback)); + return; + } + + swap_ack_callback_ = std::move(swap_ack_callback); +} + +void SoftwareOutputDeviceWinProxy::ResizeDelegated() { + canvas_.reset(); + + size_t required_bytes; + if (!ResourceSizes::MaybeSizeInBytes( + viewport_pixel_size_, ResourceFormat::RGBA_8888, &required_bytes)) { + DLOG(ERROR) << "Invalid viewport size " << viewport_pixel_size_.ToString(); + return; + } + + base::SharedMemory shm; + if (!shm.CreateAnonymous(required_bytes)) { + DLOG(ERROR) << "Failed to allocate " << required_bytes << " bytes"; + return; + } + + // The SkCanvas maps shared memory on creation and unmaps on destruction. + canvas_ = skia::CreatePlatformCanvasWithSharedSection( + viewport_pixel_size_.width(), viewport_pixel_size_.height(), true, + shm.handle().GetHandle(), skia::CRASH_ON_FAILURE); + + // Transfer handle ownership to the browser process. + mojo::ScopedSharedBufferHandle scoped_handle = mojo::WrapSharedMemoryHandle( + shm.TakeHandle(), required_bytes, + mojo::UnwrappedSharedMemoryHandleProtection::kReadWrite); + + layered_window_updater_->OnAllocatedSharedMemory(viewport_pixel_size_, + std::move(scoped_handle)); +} + +SkCanvas* SoftwareOutputDeviceWinProxy::BeginPaintDelegated() { + return canvas_.get(); +} + +void SoftwareOutputDeviceWinProxy::EndPaintDelegated( + const gfx::Rect& damage_rect) { + DCHECK(!waiting_on_draw_ack_); + + if (!canvas_) + return; + + layered_window_updater_->Draw(base::BindOnce( + &SoftwareOutputDeviceWinProxy::DrawAck, base::Unretained(this))); + waiting_on_draw_ack_ = true; + + TRACE_EVENT_ASYNC_BEGIN0("viz", "SoftwareOutputDeviceWinProxy::Draw", this); +} + +void SoftwareOutputDeviceWinProxy::DrawAck() { + DCHECK(waiting_on_draw_ack_); + DCHECK(!swap_ack_callback_.is_null()); + + TRACE_EVENT_ASYNC_END0("viz", "SoftwareOutputDeviceWinProxy::Draw", this); + + waiting_on_draw_ack_ = false; + std::move(swap_ack_callback_).Run(); +} + } // namespace -std::unique_ptr<SoftwareOutputDevice> CreateSoftwareOutputDeviceWin( +std::unique_ptr<SoftwareOutputDevice> CreateSoftwareOutputDeviceWinBrowser( HWND hwnd, OutputDeviceBacking* backing) { if (NeedsToUseLayerWindow(hwnd)) @@ -239,4 +343,24 @@ return std::make_unique<SoftwareOutputDeviceWinDirect>(hwnd, backing); } +std::unique_ptr<SoftwareOutputDevice> CreateSoftwareOutputDeviceWinGpu( + HWND hwnd, + OutputDeviceBacking* backing, + mojom::DisplayClient* display_client) { + if (NeedsToUseLayerWindow(hwnd)) { + DCHECK(display_client); + + // Setup mojom::LayeredWindowUpdater implementation in the browser process + // to draw to the HWND. + mojom::LayeredWindowUpdaterPtr layered_window_updater; + display_client->CreateLayeredWindowUpdater( + mojo::MakeRequest(&layered_window_updater)); + + return std::make_unique<SoftwareOutputDeviceWinProxy>( + hwnd, std::move(layered_window_updater)); + } + + return std::make_unique<SoftwareOutputDeviceWinDirect>(hwnd, backing); +} + } // namespace viz
diff --git a/components/viz/service/display_embedder/software_output_device_win.h b/components/viz/service/display_embedder/software_output_device_win.h index 76357c2..aa2dd64 100644 --- a/components/viz/service/display_embedder/software_output_device_win.h +++ b/components/viz/service/display_embedder/software_output_device_win.h
@@ -11,14 +11,23 @@ #include "components/viz/service/display/software_output_device.h" #include "components/viz/service/viz_service_export.h" +#include "services/viz/privileged/interfaces/compositing/display_private.mojom.h" namespace viz { class OutputDeviceBacking; -// Creates an appropriate SoftwareOutputDevice implementation. +// Creates an appropriate SoftwareOutputDevice implementation for the browser +// process. VIZ_SERVICE_EXPORT std::unique_ptr<SoftwareOutputDevice> -CreateSoftwareOutputDeviceWin(HWND hwnd, OutputDeviceBacking* backing); +CreateSoftwareOutputDeviceWinBrowser(HWND hwnd, OutputDeviceBacking* backing); + +// Creates an appropriate SoftwareOutputDevice implementation for the GPU +// process. +VIZ_SERVICE_EXPORT std::unique_ptr<SoftwareOutputDevice> +CreateSoftwareOutputDeviceWinGpu(HWND hwnd, + OutputDeviceBacking* backing, + mojom::DisplayClient* display_client); } // namespace viz
diff --git a/components/viz/service/frame_sinks/frame_sink_manager_impl.cc b/components/viz/service/frame_sinks/frame_sink_manager_impl.cc index e706f2a..77f4e2e 100644 --- a/components/viz/service/frame_sinks/frame_sink_manager_impl.cc +++ b/components/viz/service/frame_sinks/frame_sink_manager_impl.cc
@@ -144,11 +144,13 @@ std::move(params->external_begin_frame_controller_client))); } + mojom::DisplayClientPtr display_client(std::move(params->display_client)); + std::unique_ptr<SyntheticBeginFrameSource> begin_frame_source; auto display = display_provider_->CreateDisplay( params->frame_sink_id, params->widget, params->gpu_compositing, - external_begin_frame_controller.get(), params->renderer_settings, - &begin_frame_source); + display_client.get(), external_begin_frame_controller.get(), + params->renderer_settings, &begin_frame_source); // Creating display failed. Drop the CompositorFrameSink message pipes here // and let host send a new request, potential with a different compositing @@ -164,8 +166,7 @@ std::move(params->compositor_frame_sink), mojom::CompositorFrameSinkClientPtr( std::move(params->compositor_frame_sink_client)), - std::move(params->display_private), - mojom::DisplayClientPtr(std::move(params->display_client))); + std::move(params->display_private), std::move(display_client)); } void FrameSinkManagerImpl::CreateCompositorFrameSink(
diff --git a/components/viz/test/mock_display_client.h b/components/viz/test/mock_display_client.h index 606c560..2433288 100644 --- a/components/viz/test/mock_display_client.h +++ b/components/viz/test/mock_display_client.h
@@ -22,6 +22,8 @@ MOCK_METHOD1(OnDisplayReceivedCALayerParams, void(const gfx::CALayerParams&)); MOCK_METHOD1(DidSwapAfterSnapshotRequestReceived, void(const std::vector<ui::LatencyInfo>&)); + MOCK_METHOD1(CreateLayeredWindowUpdater, + void(mojom::LayeredWindowUpdaterRequest)); private: mojo::Binding<mojom::DisplayClient> binding_;
diff --git a/components/viz/test/test_display_provider.cc b/components/viz/test/test_display_provider.cc index 68cc935..ecec8d1 100644 --- a/components/viz/test/test_display_provider.cc +++ b/components/viz/test/test_display_provider.cc
@@ -20,6 +20,7 @@ const FrameSinkId& frame_sink_id, gpu::SurfaceHandle surface_handle, bool gpu_compositing, + mojom::DisplayClient* display_client, ExternalBeginFrameControllerImpl* external_begin_frame_controller, const RendererSettings& renderer_settings, std::unique_ptr<SyntheticBeginFrameSource>* out_begin_frame_source) {
diff --git a/components/viz/test/test_display_provider.h b/components/viz/test/test_display_provider.h index 632faea..bde1b28 100644 --- a/components/viz/test/test_display_provider.h +++ b/components/viz/test/test_display_provider.h
@@ -24,6 +24,7 @@ const FrameSinkId& frame_sink_id, gpu::SurfaceHandle surface_handle, bool gpu_compositing, + mojom::DisplayClient* display_client, ExternalBeginFrameControllerImpl* external_begin_frame_controller, const RendererSettings& renderer_settings, std::unique_ptr<SyntheticBeginFrameSource>* out_begin_frame_source)
diff --git a/content/browser/OWNERS b/content/browser/OWNERS index c78c8ce..76478df 100644 --- a/content/browser/OWNERS +++ b/content/browser/OWNERS
@@ -31,5 +31,5 @@ # LevelDBWrapperImpl used in LocalStorage per-file leveldb_wrapper_impl*=mek@chromium.org -per-file leveldb_wrapper_impl*=michaeln@chromium.org +per-file leveldb_wrapper_impl*=dmurph@chromium.org per-file leveldb_wrapper_impl*=pwnall@chromium.org
diff --git a/content/browser/appcache/OWNERS b/content/browser/appcache/OWNERS index 21ddbb85..db1043c 100644 --- a/content/browser/appcache/OWNERS +++ b/content/browser/appcache/OWNERS
@@ -1,8 +1,5 @@ pwnall@chromium.org jsbell@chromium.org -# OOO until this comment is removed. -michaeln@chromium.org - # TEAM: storage-dev@chromium.org # COMPONENT: Blink>Storage>AppCache
diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc index 08c8529..61b2e9b 100644 --- a/content/browser/browser_main_loop.cc +++ b/content/browser/browser_main_loop.cc
@@ -597,7 +597,8 @@ command_line->GetSwitchValueASCII(switches::kDisableFeatures)); } -#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) +#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \ + defined(OS_ANDROID) // We use quite a few file descriptors for our IPC as well as disk the disk // cache,and the default limit on the Mac is low (256), so bump it up. @@ -605,8 +606,9 @@ // Low soft limits combined with liberal use of file descriptors means power // users can easily hit this limit with many open tabs. Bump up the limit to // an arbitrarily high number. See https://crbug.com/539567 - base::SetFdLimit(8192); -#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) + base::IncreaseFdLimitTo(8192); +#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) || + // defined(OS_ANDROID) #if defined(OS_WIN) net::EnsureWinsockInit();
diff --git a/content/browser/browser_side_navigation_browsertest.cc b/content/browser/browser_side_navigation_browsertest.cc index 1931019..7ea1f1b 100644 --- a/content/browser/browser_side_navigation_browsertest.cc +++ b/content/browser/browser_side_navigation_browsertest.cc
@@ -18,7 +18,6 @@ #include "content/public/browser/browser_thread.h" #include "content/public/browser/navigation_controller.h" #include "content/public/browser/notification_types.h" -#include "content/public/browser/resource_dispatcher_host_delegate.h" #include "content/public/browser/web_contents.h" #include "content/public/common/browser_side_navigation_policy.h" #include "content/public/common/content_features.h" @@ -44,22 +43,6 @@ namespace content { -namespace { - -class RequestBlockingResourceDispatcherHostDelegate - : public ResourceDispatcherHostDelegate { - public: - // ResourceDispatcherHostDelegate implementation: - bool ShouldBeginRequest(const std::string& method, - const GURL& url, - ResourceType resource_type, - ResourceContext* resource_context) override { - return false; - } -}; - -} // namespace - // Test with BrowserSideNavigation enabled (aka PlzNavigate). // If you don't need a custom embedded test server, please use the next class // below (BrowserSideNavigationBrowserTest), it will automatically start the @@ -719,41 +702,4 @@ } } -// Requests not allowed by a ResourceDispatcherHostDelegate must be aborted. -IN_PROC_BROWSER_TEST_F(BrowserSideNavigationBrowserTest, - RequestBlockedByResourceDispatcherHostDelegate) { - // The Network Service doesn't use a ResourceDispatcherHost. A request can't - // be canceled by a ResourceDispatcherHostDelegate. - if (base::FeatureList::IsEnabled(network::features::kNetworkService)) - return; - - // Add a ResourceDispatcherHost blocking every requests. - RequestBlockingResourceDispatcherHostDelegate delegate; - base::RunLoop loop; - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::BindOnce( - [](base::OnceClosure resume, - ResourceDispatcherHostDelegate* delegate) { - ResourceDispatcherHost::Get()->SetDelegate(delegate); - std::move(resume).Run(); - }, - loop.QuitClosure(), &delegate)); - loop.Run(); - - // Navigate somewhere. The navigation will be aborted. - GURL simple_url(embedded_test_server()->GetURL("/simple_page.html")); - TestNavigationManager manager(shell()->web_contents(), simple_url); - NavigationHandleObserver handle_observer(shell()->web_contents(), simple_url); - shell()->LoadURL(simple_url); - - EXPECT_TRUE(manager.WaitForRequestStart()); - EXPECT_FALSE(manager.WaitForResponse()); - manager.WaitForNavigationFinished(); - - EXPECT_FALSE(handle_observer.has_committed()); - EXPECT_TRUE(handle_observer.is_error()); - EXPECT_EQ(net::ERR_ABORTED, handle_observer.net_error_code()); -} - } // namespace content
diff --git a/content/browser/browsing_data/OWNERS b/content/browser/browsing_data/OWNERS index 8d413bc7..4b224ec 100644 --- a/content/browser/browsing_data/OWNERS +++ b/content/browser/browsing_data/OWNERS
@@ -1,7 +1,7 @@ bauerb@chromium.org dullweber@chromium.org markusheintz@chromium.org -michaeln@chromium.org +jsbell@chromium.org msramek@chromium.org # COMPONENT: Privacy
diff --git a/content/browser/cache_storage/OWNERS b/content/browser/cache_storage/OWNERS index b78333e..f802dd1 100644 --- a/content/browser/cache_storage/OWNERS +++ b/content/browser/cache_storage/OWNERS
@@ -1,4 +1,3 @@ -michaeln@chromium.org nhiroki@chromium.org jkarlin@chromium.org jsbell@chromium.org
diff --git a/content/browser/compositor/gpu_process_transport_factory.cc b/content/browser/compositor/gpu_process_transport_factory.cc index 70d1bf8..845dc8f8 100644 --- a/content/browser/compositor/gpu_process_transport_factory.cc +++ b/content/browser/compositor/gpu_process_transport_factory.cc
@@ -244,7 +244,7 @@ DCHECK_CURRENTLY_ON(BrowserThread::UI); #if defined(OS_WIN) - return CreateSoftwareOutputDeviceWin(widget, software_backing_.get()); + return CreateSoftwareOutputDeviceWinBrowser(widget, software_backing_.get()); #elif defined(USE_OZONE) ui::SurfaceFactoryOzone* factory = ui::OzonePlatform::GetInstance()->GetSurfaceFactoryOzone();
diff --git a/content/browser/compositor/in_process_display_client.cc b/content/browser/compositor/in_process_display_client.cc index 67609e1d..3190c0d 100644 --- a/content/browser/compositor/in_process_display_client.cc +++ b/content/browser/compositor/in_process_display_client.cc
@@ -10,11 +10,19 @@ #include "ui/accelerated_widget_mac/ca_layer_frame_sink.h" #endif +#if defined(OS_WIN) +#include <windows.h> + +#include "components/viz/common/display/use_layered_window.h" +#include "components/viz/host/layered_window_updater_impl.h" +#include "ui/base/win/internal_constants.h" +#endif + namespace content { InProcessDisplayClient::InProcessDisplayClient(gfx::AcceleratedWidget widget) : binding_(this) { -#if defined(OS_MACOSX) +#if defined(OS_MACOSX) || defined(OS_WIN) widget_ = widget; #endif } @@ -47,4 +55,19 @@ RenderWidgetHostImpl::OnGpuSwapBuffersCompleted(latency_info); } +void InProcessDisplayClient::CreateLayeredWindowUpdater( + viz::mojom::LayeredWindowUpdaterRequest request) { +#if defined(OS_WIN) + if (!viz::NeedsToUseLayerWindow(widget_)) { + DLOG(ERROR) << "HWND shouldn't be using a layered window"; + return; + } + + layered_window_updater_ = std::make_unique<viz::LayeredWindowUpdaterImpl>( + widget_, std::move(request)); +#else +// This should never happen on non-Windows platforms. +#endif +} + } // namespace content
diff --git a/content/browser/compositor/in_process_display_client.h b/content/browser/compositor/in_process_display_client.h index 607ab6b..baa83594 100644 --- a/content/browser/compositor/in_process_display_client.h +++ b/content/browser/compositor/in_process_display_client.h
@@ -5,19 +5,26 @@ #ifndef CONTENT_BROWSER_COMPOSITOR_IN_PROCESS_DISPLAY_CLIENT_H_ #define CONTENT_BROWSER_COMPOSITOR_IN_PROCESS_DISPLAY_CLIENT_H_ +#include <memory> +#include <vector> + #include "base/single_thread_task_runner.h" #include "build/build_config.h" #include "mojo/public/cpp/bindings/binding.h" #include "services/viz/privileged/interfaces/compositing/display_private.mojom.h" #include "ui/gfx/native_widget_types.h" +namespace viz { +class LayeredWindowUpdaterImpl; +} + namespace content { // A DisplayClient that can be used to display received // gfx::CALayerParams in a CALayer tree in this process. class InProcessDisplayClient : public viz::mojom::DisplayClient { public: - InProcessDisplayClient(gfx::AcceleratedWidget widget); + explicit InProcessDisplayClient(gfx::AcceleratedWidget widget); ~InProcessDisplayClient() override; viz::mojom::DisplayClientPtr GetBoundPtr( @@ -29,11 +36,17 @@ const gfx::CALayerParams& ca_layer_params) override; void DidSwapAfterSnapshotRequestReceived( const std::vector<ui::LatencyInfo>& latency_info) override; + void CreateLayeredWindowUpdater( + viz::mojom::LayeredWindowUpdaterRequest request) override; mojo::Binding<viz::mojom::DisplayClient> binding_; -#if defined(OS_MACOSX) +#if defined(OS_MACOSX) || defined(OS_WIN) gfx::AcceleratedWidget widget_; #endif + +#if defined(OS_WIN) + std::unique_ptr<viz::LayeredWindowUpdaterImpl> layered_window_updater_; +#endif }; } // namespace content
diff --git a/content/browser/dom_storage/OWNERS b/content/browser/dom_storage/OWNERS index 1e82b96..19d6324e 100644 --- a/content/browser/dom_storage/OWNERS +++ b/content/browser/dom_storage/OWNERS
@@ -1,8 +1,5 @@ dmurph@chromium.org mek@chromium.org -# OOO until this comment is removed. -michaeln@chromium.org - # TEAM: storage-dev@chromium.org # COMPONENT: Blink>Storage>DOMStorage
diff --git a/content/browser/fileapi/OWNERS b/content/browser/fileapi/OWNERS index c72d620..b295e07 100644 --- a/content/browser/fileapi/OWNERS +++ b/content/browser/fileapi/OWNERS
@@ -1,5 +1,5 @@ jsbell@chromium.org -michaeln@chromium.org +mek@chromium.org pwnall@chromium.org jianli@chromium.org tzik@chromium.org
diff --git a/content/browser/find_request_manager.cc b/content/browser/find_request_manager.cc index 07f9094..c2f2acb6 100644 --- a/content/browser/find_request_manager.cc +++ b/content/browser/find_request_manager.cc
@@ -451,15 +451,18 @@ // frame) from the point (x, y), defined in find-in-page coordinates. for (WebContentsImpl* contents : contents_->GetWebContentsAndAllInner()) { for (FrameTreeNode* node : contents->GetFrameTree()->Nodes()) { - RenderFrameHost* rfh = node->current_frame_host(); + RenderFrameHostImpl* rfh = node->current_frame_host(); if (!CheckFrame(rfh) || !rfh->IsRenderFrameLive()) continue; activate_.pending_replies.insert(rfh); - rfh->Send(new FrameMsg_GetNearestFindResult(rfh->GetRoutingID(), - activate_.current_request_id, - activate_.x, activate_.y)); + // Lifetime of FindRequestManager > RenderFrameHost > Mojo connection, + // so it's safe to bind |this| and |rfh|. + rfh->GetFindInPage()->GetNearestFindResult( + gfx::PointF(activate_.x, activate_.y), + base::BindOnce(&FindRequestManager::OnGetNearestFindResultReply, + base::Unretained(this), rfh, current_session_id_)); } } }
diff --git a/content/browser/find_request_manager.h b/content/browser/find_request_manager.h index c3ef888..466ba70 100644 --- a/content/browser/find_request_manager.h +++ b/content/browser/find_request_manager.h
@@ -68,9 +68,9 @@ void ActivateNearestFindResult(float x, float y); // Called when a reply is received from a frame in response to the - // GetNearestFindResult IPC. + // GetNearestFindResult mojo call. void OnGetNearestFindResultReply(RenderFrameHost* rfh, - int nearest_find_result_request_id, + int request_id, float distance); // Requests the rects of the current find matches from the renderer process.
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc index 116a4d9d..a2d3837e5 100644 --- a/content/browser/frame_host/render_frame_host_impl.cc +++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -3318,8 +3318,7 @@ SpeechRecognitionDispatcherHost::Create, GetProcess()->GetID(), routing_id_, base::WrapRefCounted( - GetProcess()->GetStoragePartition()->GetURLRequestContext()), - weak_ptr_factory_.GetWeakPtr()), + GetProcess()->GetStoragePartition()->GetURLRequestContext())), BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)); if (base::FeatureList::IsEnabled(network::features::kNetworkService)) {
diff --git a/content/browser/gpu/compositor_util.cc b/content/browser/gpu/compositor_util.cc index aa25eeb..4613f10 100644 --- a/content/browser/gpu/compositor_util.cc +++ b/content/browser/gpu/compositor_util.cc
@@ -180,6 +180,12 @@ !base::FeatureList::IsEnabled(features::kVizDisplayCompositor), "Viz service display compositor is not enabled by default.", false, false}, + {"skia_renderer", gpu::kGpuFeatureStatusEnabled, + !features::IsUsingSkiaRenderer(), + "Skia renderer is not used by default.", false, false}, + {"skia_deferred_display_list", gpu::kGpuFeatureStatusEnabled, + !features::IsUsingSkiaDeferredDisplayList(), + "Skia deferred display list is not used by default.", false, false}, }; DCHECK(index < arraysize(kGpuFeatureData)); *eof = (index == arraysize(kGpuFeatureData) - 1); @@ -241,6 +247,14 @@ if (base::FeatureList::IsEnabled(features::kVizDisplayCompositor)) status += "_on"; } + if (gpu_feature_data.name == "skia_renderer") { + if (features::IsUsingSkiaRenderer()) + status += "_on"; + } + if (gpu_feature_data.name == "skia_deferred_display_list") { + if (features::IsUsingSkiaDeferredDisplayList()) + status += "_on"; + } } feature_status_dict->SetString(gpu_feature_data.name, status); }
diff --git a/content/browser/indexed_db/OWNERS b/content/browser/indexed_db/OWNERS index 11e923c..5a42cf0e 100644 --- a/content/browser/indexed_db/OWNERS +++ b/content/browser/indexed_db/OWNERS
@@ -2,8 +2,5 @@ cmumford@chromium.org dmurph@chromium.org -# Secondary: only if other OWNERS are unavailable and something is urgent. -michaeln@chromium.org - # TEAM: storage-dev@chromium.org # COMPONENT: Blink>Storage>IndexedDB
diff --git a/content/browser/indexed_db/indexed_db_backing_store.cc b/content/browser/indexed_db/indexed_db_backing_store.cc index e85ee47..949576e 100644 --- a/content/browser/indexed_db/indexed_db_backing_store.cc +++ b/content/browser/indexed_db/indexed_db_backing_store.cc
@@ -887,8 +887,7 @@ bool success = false; if (file.IsValid()) { std::string input_js(file_size, '\0'); - if (file_size == - file.Read(0, base::string_as_array(&input_js), file_size)) { + if (file_size == file.Read(0, base::data(input_js), file_size)) { base::JSONReader reader; std::unique_ptr<base::DictionaryValue> val( base::DictionaryValue::From(reader.ReadToValue(input_js)));
diff --git a/content/browser/keyboard_lock_browsertest.cc b/content/browser/keyboard_lock_browsertest.cc index b619fad..93fa941 100644 --- a/content/browser/keyboard_lock_browsertest.cc +++ b/content/browser/keyboard_lock_browsertest.cc
@@ -658,7 +658,18 @@ IN_PROC_BROWSER_TEST_F(KeyboardLockDisabledBrowserTest, NoKeyboardLockWhenDisabled) { ASSERT_TRUE(NavigateToURL(shell(), https_fullscreen_frame())); - ASSERT_FALSE(KeyboardLockApiExists()); + ASSERT_TRUE(KeyboardLockApiExists()); + + // KeyboardLockServiceImpl returns success from the RequestKeyboardLock() + // call when the Chrome side of the feature is disabled. This prevents + // problems running the WebKit layout tests. + bool result = false; + ASSERT_TRUE(ExecuteScriptAndExtractBool(web_contents()->GetMainFrame(), + kKeyboardLockMethodCallWithAllKeys, + &result)); + ASSERT_TRUE(result); + + ASSERT_FALSE(web_contents()->GetKeyboardLockWidget()); } IN_PROC_BROWSER_TEST_F(KeyboardLockBrowserTest,
diff --git a/content/browser/loader/mojo_async_resource_handler_unittest.cc b/content/browser/loader/mojo_async_resource_handler_unittest.cc index b71fba4b..2c862755 100644 --- a/content/browser/loader/mojo_async_resource_handler_unittest.cc +++ b/content/browser/loader/mojo_async_resource_handler_unittest.cc
@@ -105,14 +105,6 @@ TestResourceDispatcherHostDelegate() = default; ~TestResourceDispatcherHostDelegate() override = default; - bool ShouldBeginRequest(const std::string& method, - const GURL& url, - ResourceType resource_type, - ResourceContext* resource_context) override { - ADD_FAILURE() << "ShouldBeginRequest should not be called."; - return false; - } - void RequestBeginning( net::URLRequest* request, ResourceContext* resource_context,
diff --git a/content/browser/loader/resource_dispatcher_host_impl.cc b/content/browser/loader/resource_dispatcher_host_impl.cc index 9164766a..2c3f09a 100644 --- a/content/browser/loader/resource_dispatcher_host_impl.cc +++ b/content/browser/loader/resource_dispatcher_host_impl.cc
@@ -332,7 +332,7 @@ create_download_handler_intercept_(download_handler_intercept), main_thread_task_runner_(base::ThreadTaskRunnerHandle::Get()), io_thread_task_runner_(io_thread_runner), - weak_ptr_factory_(this) { + weak_factory_on_io_(this) { DCHECK(main_thread_task_runner_->BelongsToCurrentThread()); DCHECK(!g_resource_dispatcher_host); g_resource_dispatcher_host = this; @@ -548,7 +548,7 @@ ResourceRequestInfoImpl* resource_request_info = ResourceRequestInfoImpl::ForRequest(request); DCHECK(resource_request_info); - bool is_main_frame = + bool is_request_for_main_frame = resource_request_info->GetResourceType() == RESOURCE_TYPE_MAIN_FRAME; GlobalRequestID request_id = resource_request_info->GetGlobalRequestID(); @@ -557,7 +557,8 @@ scoped_refptr<LoginDelegate> login_delegate = GetContentClient()->browser()->CreateLoginDelegate( auth_info, resource_request_info->GetWebContentsGetterForRequest(), - is_main_frame, url, resource_request_info->first_auth_attempt(), + is_request_for_main_frame, url, + resource_request_info->first_auth_attempt(), base::BindOnce(&ResourceDispatcherHostImpl::RunAuthRequiredCallback, base::Unretained(this), request_id)); @@ -689,6 +690,10 @@ is_shutdown_ = true; + // Explicitly invalidate while on the IO thread, where the associated WeakPtrs + // are used. + weak_factory_on_io_.InvalidateWeakPtrs(); + pending_loaders_.clear(); // Make sure we shutdown the timer now, otherwise by the time our destructor @@ -917,11 +922,9 @@ static_cast<ResourceType>(request_data.resource_type), &resource_context, &request_context); - // Allow the observer to block/handle the request. - if (delegate_ && !delegate_->ShouldBeginRequest( - request_data.method, request_data.url, - static_cast<ResourceType>(request_data.resource_type), - resource_context)) { + // All PREFETCH requests should be GETs, but be defensive about it. + if (request_data.resource_type == RESOURCE_TYPE_PREFETCH && + request_data.method != "GET") { AbortRequestBeforeItStarts(requester_info->filter(), request_id, std::move(url_loader_client)); return; @@ -1586,10 +1589,7 @@ !policy->IsWebSafeScheme(info.common_params.url.scheme()) && !is_external_protocol; - if (is_shutdown_ || non_web_url_in_guest || - (delegate_ && !delegate_->ShouldBeginRequest( - info.common_params.method, info.common_params.url, - resource_type, resource_context))) { + if (is_shutdown_ || non_web_url_in_guest) { url_loader_client->OnComplete( network::URLLoaderCompletionStatus(net::ERR_ABORTED)); return; @@ -2117,7 +2117,7 @@ FROM_HERE, base::BindOnce(UpdateLoadStateOnUI, loader_delegate_, std::move(infos)), base::BindOnce(&ResourceDispatcherHostImpl::AckUpdateLoadInfo, - weak_ptr_factory_.GetWeakPtr())); + weak_factory_on_io_.GetWeakPtr())); } void ResourceDispatcherHostImpl::AckUpdateLoadInfo() {
diff --git a/content/browser/loader/resource_dispatcher_host_impl.h b/content/browser/loader/resource_dispatcher_host_impl.h index 628c2f1..a50eedf 100644 --- a/content/browser/loader/resource_dispatcher_host_impl.h +++ b/content/browser/loader/resource_dispatcher_host_impl.h
@@ -762,7 +762,9 @@ // Task runner for the IO thead. scoped_refptr<base::SingleThreadTaskRunner> io_thread_task_runner_; - base::WeakPtrFactory<ResourceDispatcherHostImpl> weak_ptr_factory_; + // Used on the IO thread to allow PostTaskAndReply replies to the IO thread + // to be abandoned if they run after OnShutdown(). + base::WeakPtrFactory<ResourceDispatcherHostImpl> weak_factory_on_io_; DISALLOW_COPY_AND_ASSIGN(ResourceDispatcherHostImpl); };
diff --git a/content/browser/loader/url_loader_factory_impl_unittest.cc b/content/browser/loader/url_loader_factory_impl_unittest.cc index c3ec651..e6ede61 100644 --- a/content/browser/loader/url_loader_factory_impl_unittest.cc +++ b/content/browser/loader/url_loader_factory_impl_unittest.cc
@@ -60,20 +60,6 @@ constexpr int kChildId = 99; -class RejectingResourceDispatcherHostDelegate final - : public ResourceDispatcherHostDelegate { - public: - RejectingResourceDispatcherHostDelegate() {} - bool ShouldBeginRequest(const std::string& method, - const GURL& url, - ResourceType resource_type, - ResourceContext* resource_context) override { - return false; - } - - DISALLOW_COPY_AND_ASSIGN(RejectingResourceDispatcherHostDelegate); -}; - // The test parameter is the number of bytes allocated for the buffer in the // data pipe, for testing the case where the allocated size is smaller than the // size the mime sniffer *implicitly* requires. @@ -309,11 +295,13 @@ // This test tests a case where resource loading is cancelled before started. TEST_P(URLLoaderFactoryImplTest, ShouldNotRequestURL) { network::mojom::URLLoaderPtr loader; - RejectingResourceDispatcherHostDelegate rdh_delegate; - rdh_.SetDelegate(&rdh_delegate); network::ResourceRequest request; network::TestURLLoaderClient client; - request.url = GURL("http://localhost/"); + + // Child processes cannot request URLs with pseudo schemes like "about", + // except for about:blank. See ChildProcessSecurityPolicyImpl::CanRequestURL + // for details. + request.url = GURL("about:version"); request.method = "GET"; // |resource_type| can't be a frame type. It is because when PlzNavigate is // enabled, the url scheme of frame type requests from the renderer process @@ -327,7 +315,6 @@ net::MutableNetworkTrafficAnnotationTag(TRAFFIC_ANNOTATION_FOR_TESTS)); client.RunUntilComplete(); - rdh_.SetDelegate(nullptr); ASSERT_FALSE(client.has_received_response()); ASSERT_FALSE(client.response_body().is_valid());
diff --git a/content/browser/network_service_client.cc b/content/browser/network_service_client.cc index 640e9f6c..08fdcd4 100644 --- a/content/browser/network_service_client.cc +++ b/content/browser/network_service_client.cc
@@ -161,7 +161,7 @@ network::mojom::AuthChallengeResponderPtr auth_challenge_responder, ResourceRequestInfo::WebContentsGetter web_contents_getter, scoped_refptr<net::AuthChallengeInfo> auth_info, - bool is_main_frame, + bool is_request_for_main_frame, uint32_t process_id, uint32_t routing_id, uint32_t request_id, @@ -169,7 +169,7 @@ bool first_auth_attempt) : auth_challenge_responder_(std::move(auth_challenge_responder)), auth_info_(auth_info), - is_main_frame_(is_main_frame), + is_request_for_main_frame_(is_request_for_main_frame), url_(url), first_auth_attempt_(first_auth_attempt), web_contents_getter_(web_contents_getter) { @@ -226,8 +226,8 @@ void CreateLoginDelegate() { DCHECK_CURRENTLY_ON(BrowserThread::IO); login_delegate_ = GetContentClient()->browser()->CreateLoginDelegate( - auth_info_.get(), web_contents_getter_, is_main_frame_, url_, - first_auth_attempt_, + auth_info_.get(), web_contents_getter_, is_request_for_main_frame_, + url_, first_auth_attempt_, base::BindOnce(&LoginHandlerDelegate::RunAuthCredentials, base::Unretained(this))); @@ -255,7 +255,7 @@ network::mojom::AuthChallengeResponderPtr auth_challenge_responder_; scoped_refptr<net::AuthChallengeInfo> auth_info_; - bool is_main_frame_; + bool is_request_for_main_frame_; GURL url_; bool first_auth_attempt_; ResourceRequestInfo::WebContentsGetter web_contents_getter_; @@ -297,12 +297,13 @@ return; } - bool is_main_frame = + bool is_request_for_main_frame = static_cast<ResourceType>(resource_type) == RESOURCE_TYPE_MAIN_FRAME; - new LoginHandlerDelegate( - std::move(auth_challenge_responder), std::move(web_contents_getter), - auth_info, is_main_frame, process_id, routing_id, request_id, url, - first_auth_attempt); // deletes self + new LoginHandlerDelegate(std::move(auth_challenge_responder), + std::move(web_contents_getter), auth_info, + is_request_for_main_frame, process_id, routing_id, + request_id, url, + first_auth_attempt); // deletes self } void NetworkServiceClient::OnCertificateRequested(
diff --git a/content/browser/renderer_host/OWNERS b/content/browser/renderer_host/OWNERS index 18de8a6..d671fbd 100644 --- a/content/browser/renderer_host/OWNERS +++ b/content/browser/renderer_host/OWNERS
@@ -23,9 +23,8 @@ per-file *delegated_frame*=fsamuel@chromium.org # WebSQL -per-file database_*=jsbell@chromium.org -per-file database_*=michaeln@chromium.org -per-file database_*=pwnall@chromium.org +per-file web_database_*=jsbell@chromium.org +per-file web_database_*=pwnall@chromium.org # Embedded Frame Sinks (eg. Offscreen Canvas) per-file embedded_frame_sink*.*=xlai@chromium.org
diff --git a/content/browser/renderer_host/input/mouse_wheel_event_queue.cc b/content/browser/renderer_host/input/mouse_wheel_event_queue.cc index c8163c19..1ca3ac2 100644 --- a/content/browser/renderer_host/input/mouse_wheel_event_queue.cc +++ b/content/browser/renderer_host/input/mouse_wheel_event_queue.cc
@@ -74,6 +74,38 @@ LOCAL_HISTOGRAM_COUNTS_100("Renderer.WheelQueueSize", wheel_queue_.size()); } +bool MouseWheelEventQueue::CanGenerateGestureScroll( + InputEventAckState ack_result) const { + if (ack_result == INPUT_EVENT_ACK_STATE_CONSUMED) { + TRACE_EVENT_INSTANT0("input", "Wheel Event Consumed", + TRACE_EVENT_SCOPE_THREAD); + return false; + } + + if (!ui::WebInputEventTraits::CanCauseScroll( + event_sent_for_gesture_ack_->event)) { + TRACE_EVENT_INSTANT0("input", "Wheel Event Cannot Cause Scroll", + TRACE_EVENT_SCOPE_THREAD); + return false; + } + + if (event_sent_for_gesture_ack_->event.resending_plugin_id != -1) { + TRACE_EVENT_INSTANT0("input", "Wheel Event Resending Plugin Id Is Not -1", + TRACE_EVENT_SCOPE_THREAD); + return false; + } + + if (scrolling_device_ != blink::kWebGestureDeviceUninitialized && + scrolling_device_ != blink::kWebGestureDeviceTouchpad) { + TRACE_EVENT_INSTANT0("input", + "Autoscroll or Touchscreen Scroll In Progress", + TRACE_EVENT_SCOPE_THREAD); + return false; + } + + return true; +} + void MouseWheelEventQueue::ProcessMouseWheelAck( InputEventAckSource ack_source, InputEventAckState ack_result, @@ -87,12 +119,7 @@ ack_result); // If event wasn't consumed then generate a gesture scroll for it. - if (ack_result != INPUT_EVENT_ACK_STATE_CONSUMED && - ui::WebInputEventTraits::CanCauseScroll( - event_sent_for_gesture_ack_->event) && - event_sent_for_gesture_ack_->event.resending_plugin_id == -1 && - (scrolling_device_ == blink::kWebGestureDeviceUninitialized || - scrolling_device_ == blink::kWebGestureDeviceTouchpad)) { + if (CanGenerateGestureScroll(ack_result)) { WebGestureEvent scroll_update( WebInputEvent::kGestureScrollUpdate, WebInputEvent::kNoModifiers, event_sent_for_gesture_ack_->event.TimeStamp(),
diff --git a/content/browser/renderer_host/input/mouse_wheel_event_queue.h b/content/browser/renderer_host/input/mouse_wheel_event_queue.h index 106f166..3a00818 100644 --- a/content/browser/renderer_host/input/mouse_wheel_event_queue.h +++ b/content/browser/renderer_host/input/mouse_wheel_event_queue.h
@@ -82,6 +82,10 @@ bool synthetic); void RecordLatchingUmaMetric(bool latched); + // True if gesture scroll events can be generated for the wheel event sent for + // ack. + bool CanGenerateGestureScroll(InputEventAckState ack_result) const; + MouseWheelEventQueueClient* client_; base::circular_deque<std::unique_ptr<QueuedWebMouseWheelEvent>> wheel_queue_;
diff --git a/content/browser/renderer_host/input/mouse_wheel_phase_handler.cc b/content/browser/renderer_host/input/mouse_wheel_phase_handler.cc index fa7f5a4..d1daf8e 100644 --- a/content/browser/renderer_host/input/mouse_wheel_phase_handler.cc +++ b/content/browser/renderer_host/input/mouse_wheel_phase_handler.cc
@@ -4,6 +4,7 @@ #include "content/browser/renderer_host/input/mouse_wheel_phase_handler.h" +#include "base/trace_event/trace_event.h" #include "content/browser/renderer_host/render_widget_host_impl.h" #include "content/browser/renderer_host/render_widget_host_input_event_router.h" #include "content/browser/renderer_host/render_widget_host_view_base.h" @@ -23,6 +24,11 @@ bool has_phase = mouse_wheel_event.phase != blink::WebMouseWheelEvent::kPhaseNone || mouse_wheel_event.momentum_phase != blink::WebMouseWheelEvent::kPhaseNone; + TRACE_EVENT2("input", + "MouseWheelPhaseHandler::AddPhaseIfNeededAndScheduleEndEvent", + "has_phase", has_phase, "touchpad_scroll_phase_state", + touchpad_scroll_phase_state_); + if (has_phase) { if (mouse_wheel_event.phase == blink::WebMouseWheelEvent::kPhaseEnded) { // Don't send the wheel end event immediately, start a timer instead to @@ -94,16 +100,25 @@ if (!mouse_wheel_end_dispatch_timer_.IsRunning()) return; + TRACE_EVENT_INSTANT0("input", "MouseWheelPhaseHandler Dispatched", + TRACE_EVENT_SCOPE_THREAD); base::Closure task = mouse_wheel_end_dispatch_timer_.user_task(); mouse_wheel_end_dispatch_timer_.Stop(); std::move(task).Run(); } void MouseWheelPhaseHandler::IgnorePendingWheelEndEvent() { + if (!mouse_wheel_end_dispatch_timer_.IsRunning()) + return; + + TRACE_EVENT_INSTANT0("input", "MouseWheelPhaseHandler Ignored", + TRACE_EVENT_SCOPE_THREAD); mouse_wheel_end_dispatch_timer_.Stop(); } void MouseWheelPhaseHandler::ResetTouchpadScrollSequence() { + TRACE_EVENT_INSTANT0("input", "MouseWheelPhaseHandler Reset", + TRACE_EVENT_SCOPE_THREAD); touchpad_scroll_phase_state_ = TOUCHPAD_SCROLL_STATE_UNKNOWN; } @@ -117,6 +132,8 @@ bool should_route_event = widget_host->delegate() && widget_host->delegate()->GetInputEventRouter(); + TRACE_EVENT_INSTANT0("input", "MouseWheelPhaseHandler Sent touchpad end", + TRACE_EVENT_SCOPE_THREAD); SendSyntheticWheelEventWithPhaseEnded(should_route_event); } @@ -131,11 +148,15 @@ DispatchPendingWheelEndEvent(); } + TRACE_EVENT_INSTANT0("input", "MouseWheelPhaseHandler May Begin", + TRACE_EVENT_SCOPE_THREAD); touchpad_scroll_phase_state_ = TOUCHPAD_SCROLL_MAY_BEGIN; } void MouseWheelPhaseHandler::SendSyntheticWheelEventWithPhaseEnded( bool should_route_event) { + TRACE_EVENT0("input", + "MouseWheelPhaseHandler::SendSyntheticWheelEventWithPhaseEnded"); DCHECK(host_view_->wheel_scroll_latching_enabled()); last_mouse_wheel_event_.SetTimeStamp(ui::EventTimeForNow()); last_mouse_wheel_event_.delta_x = 0; @@ -164,6 +185,8 @@ void MouseWheelPhaseHandler::ScheduleMouseWheelEndDispatching( bool should_route_event, const base::TimeDelta timeout) { + TRACE_EVENT_INSTANT0("input", "MouseWheelPhaseHandler timer started", + TRACE_EVENT_SCOPE_THREAD); mouse_wheel_end_dispatch_timer_.Start( FROM_HERE, timeout, base::Bind(&MouseWheelPhaseHandler::SendSyntheticWheelEventWithPhaseEnded,
diff --git a/content/browser/renderer_host/pepper/pepper_external_file_ref_backend.cc b/content/browser/renderer_host/pepper/pepper_external_file_ref_backend.cc index cdc4ab29..980a179 100644 --- a/content/browser/renderer_host/pepper/pepper_external_file_ref_backend.cc +++ b/content/browser/renderer_host/pepper/pepper_external_file_ref_backend.cc
@@ -7,6 +7,7 @@ #include <string.h> #include "base/files/file_path.h" +#include "base/files/file_util.h" #include "base/files/file_util_proxy.h" #include "base/task_scheduler/post_task.h" #include "content/browser/child_process_security_policy_impl.h" @@ -20,6 +21,18 @@ namespace content { +namespace { + +base::File::Error CallTouchFile(const base::FilePath& path, + PP_Time last_access_time, + PP_Time last_modified_time) { + bool result = base::TouchFile(path, ppapi::PPTimeToTime(last_access_time), + ppapi::PPTimeToTime(last_modified_time)); + return result ? base::File::FILE_OK : base::File::FILE_ERROR_FAILED; +} + +} // namespace + PepperExternalFileRefBackend::PepperExternalFileRefBackend( ppapi::host::PpapiHost* host, int render_process_id, @@ -46,9 +59,9 @@ PP_Time last_access_time, PP_Time last_modified_time) { IPC::Message reply_msg = PpapiPluginMsg_FileRef_TouchReply(); - base::FileUtilProxy::Touch( - task_runner_.get(), path_, ppapi::PPTimeToTime(last_access_time), - ppapi::PPTimeToTime(last_modified_time), + base::PostTaskAndReplyWithResult( + task_runner_.get(), FROM_HERE, + BindOnce(&CallTouchFile, path_, last_access_time, last_modified_time), base::BindOnce(&PepperExternalFileRefBackend::DidFinish, weak_factory_.GetWeakPtr(), reply_context, reply_msg)); return PP_OK_COMPLETIONPENDING;
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc index cd23f7b..98526cf 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -2753,7 +2753,6 @@ switches::kUseGL, switches::kUseGpuInTests, switches::kUseMobileUserAgent, - switches::kUseSkiaRenderer, switches::kV, switches::kVideoThreads, switches::kVideoUnderflowThresholdMs,
diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc index 8309ff8..43383c4 100644 --- a/content/browser/renderer_host/render_view_host_impl.cc +++ b/content/browser/renderer_host/render_view_host_impl.cc
@@ -50,7 +50,6 @@ #include "content/common/inter_process_time_ticks_converter.h" #include "content/common/render_message_filter.mojom.h" #include "content/common/renderer.mojom.h" -#include "content/common/speech_recognition_messages.h" #include "content/common/swapped_out_messages.h" #include "content/common/view_messages.h" #include "content/public/browser/ax_event_notification_details.h"
diff --git a/content/browser/resources/appcache/OWNERS b/content/browser/resources/appcache/OWNERS index 3dbb5c2..7afe42b 100644 --- a/content/browser/resources/appcache/OWNERS +++ b/content/browser/resources/appcache/OWNERS
@@ -1,8 +1,5 @@ jsbell@chromium.org pwnall@chromium.org -# OOO until this comment is removed. -michaeln@chromium.org - # TEAM: storage-dev@chromium.org # COMPONENT: Blink>Storage>AppCache
diff --git a/content/browser/resources/gpu/info_view.js b/content/browser/resources/gpu/info_view.js index b38c7e3a..76abb93 100644 --- a/content/browser/resources/gpu/info_view.js +++ b/content/browser/resources/gpu/info_view.js
@@ -236,6 +236,8 @@ 'vpx_decode': 'VPx Video Decode', 'webgl2': 'WebGL2', 'viz_display_compositor': 'Viz Service Display Compositor', + 'skia_renderer': 'Skia Renderer', + 'skia_deferred_display_list': 'Skia Deferred Display List', }; var statusMap = {
diff --git a/content/browser/service_worker/OWNERS b/content/browser/service_worker/OWNERS index c19a256..a0d91810 100644 --- a/content/browser/service_worker/OWNERS +++ b/content/browser/service_worker/OWNERS
@@ -15,7 +15,6 @@ horo@chromium.org kinuko@chromium.org mek@chromium.org -michaeln@chromium.org nhiroki@chromium.org shimazu@chromium.org
diff --git a/content/browser/speech/speech_recognition_dispatcher_host.cc b/content/browser/speech/speech_recognition_dispatcher_host.cc index d0ec9372..f52749c 100644 --- a/content/browser/speech/speech_recognition_dispatcher_host.cc +++ b/content/browser/speech/speech_recognition_dispatcher_host.cc
@@ -15,7 +15,6 @@ #include "content/browser/frame_host/render_frame_host_manager.h" #include "content/browser/speech/speech_recognition_manager_impl.h" #include "content/browser/web_contents/web_contents_impl.h" -#include "content/common/speech_recognition_messages.h" #include "content/public/browser/browser_context.h" #include "content/public/browser/render_frame_host.h" #include "content/public/browser/speech_recognition_manager_delegate.h" @@ -29,12 +28,10 @@ SpeechRecognitionDispatcherHost::SpeechRecognitionDispatcherHost( int render_process_id, int render_frame_id, - scoped_refptr<net::URLRequestContextGetter> context_getter, - base::WeakPtr<IPC::Sender> sender) + scoped_refptr<net::URLRequestContextGetter> context_getter) : render_process_id_(render_process_id), render_frame_id_(render_frame_id), context_getter_(std::move(context_getter)), - sender_(std::move(sender)), weak_factory_(this) { // Do not add any non-trivial initialization here, instead do it lazily when // required (e.g. see the method |SpeechRecognitionManager::GetInstance()|) or @@ -46,12 +43,11 @@ int render_process_id, int render_frame_id, scoped_refptr<net::URLRequestContextGetter> context_getter, - base::WeakPtr<IPC::Sender> sender, mojom::SpeechRecognizerRequest request) { - mojo::MakeStrongBinding(std::make_unique<SpeechRecognitionDispatcherHost>( - render_process_id, render_frame_id, - std::move(context_getter), std::move(sender)), - std::move(request)); + mojo::MakeStrongBinding( + std::make_unique<SpeechRecognitionDispatcherHost>( + render_process_id, render_frame_id, std::move(context_getter)), + std::move(request)); } SpeechRecognitionDispatcherHost::~SpeechRecognitionDispatcherHost() {} @@ -63,9 +59,7 @@ // -------- mojom::SpeechRecognizer interface implementation ------------------ -// TODO(adithyas): Posting a task on the UI thread (and subsequently the IO -// thread) could result in a race. See https://crbug.com/836870 for details. -void SpeechRecognitionDispatcherHost::StartRequest( +void SpeechRecognitionDispatcherHost::Start( mojom::StartSpeechRecognitionRequestParamsPtr params) { DCHECK_CURRENTLY_ON(BrowserThread::IO); @@ -86,109 +80,6 @@ std::move(params))); } -void SpeechRecognitionDispatcherHost::AbortRequest(int32_t request_id) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - - int session_id = SpeechRecognitionManager::GetInstance()->GetSession( - render_process_id_, render_frame_id_, request_id); - - // The renderer might provide an invalid |request_id| if the session was not - // started as expected, e.g., due to unsatisfied security requirements. - if (session_id != SpeechRecognitionManager::kSessionIDInvalid) - SpeechRecognitionManager::GetInstance()->AbortSession(session_id); -} - -void SpeechRecognitionDispatcherHost::AbortAllRequests() { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - - SpeechRecognitionManager::GetInstance()->AbortAllSessionsForRenderFrame( - render_process_id_, render_frame_id_); -} - -void SpeechRecognitionDispatcherHost::StopCaptureRequest(int32_t request_id) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - - int session_id = SpeechRecognitionManager::GetInstance()->GetSession( - render_process_id_, render_frame_id_, request_id); - - // The renderer might provide an invalid |request_id| if the session was not - // started as expected, e.g., due to unsatisfied security requirements. - if (session_id != SpeechRecognitionManager::kSessionIDInvalid) { - SpeechRecognitionManager::GetInstance()->StopAudioCaptureForSession( - session_id); - } -} - -// -------- SpeechRecognitionEventListener interface implementation ----------- - -void SpeechRecognitionDispatcherHost::OnRecognitionStart(int session_id) { - const SpeechRecognitionSessionContext& context = - SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id); - Send(new SpeechRecognitionMsg_Started(context.render_frame_id, - context.request_id)); -} - -void SpeechRecognitionDispatcherHost::OnAudioStart(int session_id) { - const SpeechRecognitionSessionContext& context = - SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id); - Send(new SpeechRecognitionMsg_AudioStarted(context.render_frame_id, - context.request_id)); -} - -void SpeechRecognitionDispatcherHost::OnSoundStart(int session_id) { - const SpeechRecognitionSessionContext& context = - SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id); - Send(new SpeechRecognitionMsg_SoundStarted(context.render_frame_id, - context.request_id)); -} - -void SpeechRecognitionDispatcherHost::OnSoundEnd(int session_id) { - const SpeechRecognitionSessionContext& context = - SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id); - Send(new SpeechRecognitionMsg_SoundEnded(context.render_frame_id, - context.request_id)); -} - -void SpeechRecognitionDispatcherHost::OnAudioEnd(int session_id) { - const SpeechRecognitionSessionContext& context = - SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id); - Send(new SpeechRecognitionMsg_AudioEnded(context.render_frame_id, - context.request_id)); -} - -void SpeechRecognitionDispatcherHost::OnRecognitionEnd(int session_id) { - const SpeechRecognitionSessionContext& context = - SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id); - Send(new SpeechRecognitionMsg_Ended(context.render_frame_id, - context.request_id)); -} - -void SpeechRecognitionDispatcherHost::OnRecognitionResults( - int session_id, - const SpeechRecognitionResults& results) { - const SpeechRecognitionSessionContext& context = - SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id); - Send(new SpeechRecognitionMsg_ResultRetrieved(context.render_frame_id, - context.request_id, results)); -} - -void SpeechRecognitionDispatcherHost::OnRecognitionError( - int session_id, - const SpeechRecognitionError& error) { - const SpeechRecognitionSessionContext& context = - SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id); - Send(new SpeechRecognitionMsg_ErrorOccurred(context.render_frame_id, - context.request_id, error)); -} - -// The events below are currently not used by speech JS APIs implementation. -void SpeechRecognitionDispatcherHost::OnAudioLevelsChange(int session_id, - float volume, - float noise_volume) {} - -void SpeechRecognitionDispatcherHost::OnEnvironmentEstimationComplete( - int session_id) {} - // static void SpeechRecognitionDispatcherHost::StartRequestOnUI( base::WeakPtr<SpeechRecognitionDispatcherHost> @@ -263,7 +154,9 @@ context.render_frame_id = render_frame_id_; context.embedder_render_process_id = embedder_render_process_id; context.embedder_render_frame_id = embedder_render_frame_id; - context.request_id = params->request_id; + + auto session = + std::make_unique<SpeechRecognitionSession>(std::move(params->client)); SpeechRecognitionSessionConfig config; config.language = params->language; @@ -275,20 +168,85 @@ config.filter_profanities = filter_profanities; config.continuous = params->continuous; config.interim_results = params->interim_results; - config.event_listener = AsWeakPtr(); + config.event_listener = session->AsWeakPtr(); int session_id = SpeechRecognitionManager::GetInstance()->CreateSession(config); DCHECK_NE(session_id, SpeechRecognitionManager::kSessionIDInvalid); + session->SetSessionId(session_id); + mojo::MakeStrongBinding(std::move(session), + std::move(params->session_request)); + SpeechRecognitionManager::GetInstance()->StartSession(session_id); } -void SpeechRecognitionDispatcherHost::Send(IPC::Message* message) { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - // The weak ptr must only be accessed on the UI thread. - BrowserThread::PostTask( - BrowserThread::UI, FROM_HERE, - base::BindOnce(base::IgnoreResult(&IPC::Sender::Send), sender_, message)); +// ---------------------- SpeechRecognizerSession ----------------------------- + +SpeechRecognitionSession::SpeechRecognitionSession( + mojom::SpeechRecognitionSessionClientPtrInfo client_ptr_info) + : session_id_(SpeechRecognitionManager::kSessionIDInvalid), + client_(std::move(client_ptr_info)), + weak_factory_(this) {} + +SpeechRecognitionSession::~SpeechRecognitionSession() = default; + +base::WeakPtr<SpeechRecognitionSession> SpeechRecognitionSession::AsWeakPtr() { + return weak_factory_.GetWeakPtr(); +} + +void SpeechRecognitionSession::Abort() { + SpeechRecognitionManager::GetInstance()->AbortSession(session_id_); +} + +void SpeechRecognitionSession::StopCapture() { + SpeechRecognitionManager::GetInstance()->StopAudioCaptureForSession( + session_id_); +} + +// -------- SpeechRecognitionEventListener interface implementation ----------- + +void SpeechRecognitionSession::OnRecognitionStart(int session_id) { + client_->Started(); +} + +void SpeechRecognitionSession::OnAudioStart(int session_id) { + client_->AudioStarted(); +} + +void SpeechRecognitionSession::OnSoundStart(int session_id) { + client_->SoundStarted(); +} + +void SpeechRecognitionSession::OnSoundEnd(int session_id) { + client_->SoundEnded(); +} + +void SpeechRecognitionSession::OnAudioEnd(int session_id) { + client_->AudioEnded(); +} + +void SpeechRecognitionSession::OnRecognitionEnd(int session_id) { + client_->Ended(); +} + +void SpeechRecognitionSession::OnRecognitionResults( + int session_id, + const SpeechRecognitionResults& results) { + client_->ResultRetrieved(results); +} + +void SpeechRecognitionSession::OnRecognitionError( + int session_id, + const SpeechRecognitionError& error) { + client_->ErrorOccurred(error); +} + +// The events below are currently not used by speech JS APIs implementation. +void SpeechRecognitionSession::OnAudioLevelsChange(int session_id, + float volume, + float noise_volume) {} + +void SpeechRecognitionSession::OnEnvironmentEstimationComplete(int session_id) { } } // namespace content
diff --git a/content/browser/speech/speech_recognition_dispatcher_host.h b/content/browser/speech/speech_recognition_dispatcher_host.h index 0ef24e0..bce40c3 100644 --- a/content/browser/speech/speech_recognition_dispatcher_host.h +++ b/content/browser/speech/speech_recognition_dispatcher_host.h
@@ -14,43 +14,75 @@ #include "content/public/browser/browser_message_filter.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/speech_recognition_event_listener.h" +#include "mojo/public/cpp/bindings/binding.h" #include "net/url_request/url_request_context_getter.h" namespace content { +class SpeechRecognitionSession; class SpeechRecognitionManager; -// SpeechRecognitionDispatcherHost is a delegate for Speech API messages used by -// RenderMessageFilter. Basically it acts as a proxy, relaying the events coming -// from the SpeechRecognitionManager to IPC messages (and vice versa). -// It's the complement of SpeechRecognitionDispatcher (owned by RenderFrame). +// SpeechRecognitionDispatcherHost is an implementation of the SpeechRecognizer +// interface that allows a RenderFrame to start a speech recognition session +// in the browser process, by communicating with SpeechRecognitionManager. class CONTENT_EXPORT SpeechRecognitionDispatcherHost - : public mojom::SpeechRecognizer, - public SpeechRecognitionEventListener { + : public mojom::SpeechRecognizer { public: SpeechRecognitionDispatcherHost( int render_process_id, int render_frame_id, - scoped_refptr<net::URLRequestContextGetter> context_getter, - // WeakPtr can only be used on the UI thread. - base::WeakPtr<IPC::Sender> sender); + scoped_refptr<net::URLRequestContextGetter> context_getter); ~SpeechRecognitionDispatcherHost() override; static void Create(int render_process_id, int render_frame_id, scoped_refptr<net::URLRequestContextGetter> context_getter, - base::WeakPtr<IPC::Sender>, mojom::SpeechRecognizerRequest request); base::WeakPtr<SpeechRecognitionDispatcherHost> AsWeakPtr(); // mojom::SpeechRecognizer implementation - void StartRequest( - mojom::StartSpeechRecognitionRequestParamsPtr params) override; - // TODO(adithyas): Once we convert browser -> renderer messages to mojo - // (https://crbug.com/781655) and replace |request_id| with a mojo - // InterfacePtr, we shouldn't need AbortRequest and AbortAllRequests. - void AbortRequest(int32_t request_id) override; - void AbortAllRequests() override; - void StopCaptureRequest(int32_t request_id) override; + void Start(mojom::StartSpeechRecognitionRequestParamsPtr params) override; + + private: + static void StartRequestOnUI( + base::WeakPtr<SpeechRecognitionDispatcherHost> + speech_recognition_dispatcher_host, + int render_process_id, + int render_frame_id, + mojom::StartSpeechRecognitionRequestParamsPtr params); + void StartSessionOnIO(mojom::StartSpeechRecognitionRequestParamsPtr params, + int embedder_render_process_id, + int embedder_render_frame_id, + bool filter_profanities); + + const int render_process_id_; + const int render_frame_id_; + scoped_refptr<net::URLRequestContextGetter> context_getter_; + + // Used for posting asynchronous tasks (on the IO thread) without worrying + // about this class being destroyed in the meanwhile (due to browser shutdown) + // since tasks pending on a destroyed WeakPtr are automatically discarded. + base::WeakPtrFactory<SpeechRecognitionDispatcherHost> weak_factory_; + + DISALLOW_COPY_AND_ASSIGN(SpeechRecognitionDispatcherHost); +}; + +// SpeechRecognitionSession implements the mojom::SpeechRecognitionSession +// interface for a particular session. It also acts as a proxy for events sent +// from SpeechRecognitionManager, and forwards the events to the renderer using +// a SpeechRecognitionSessionClientPtr (that is passed from the render process). +class SpeechRecognitionSession : public mojom::SpeechRecognitionSession, + public SpeechRecognitionEventListener { + public: + explicit SpeechRecognitionSession( + mojom::SpeechRecognitionSessionClientPtrInfo client_ptr_info); + ~SpeechRecognitionSession() override; + base::WeakPtr<SpeechRecognitionSession> AsWeakPtr(); + + void SetSessionId(int session_id) { session_id_ = session_id; } + + // mojom::SpeechRecognitionSession implementation. + void Abort() override; + void StopCapture() override; // SpeechRecognitionEventListener methods. void OnRecognitionStart(int session_id) override; @@ -69,36 +101,10 @@ float noise_volume) override; private: - friend class base::DeleteHelper<SpeechRecognitionDispatcherHost>; - friend class BrowserThread; + int session_id_; + mojom::SpeechRecognitionSessionClientPtr client_; - static void StartRequestOnUI( - base::WeakPtr<SpeechRecognitionDispatcherHost> - speech_recognition_dispatcher_host, - int render_process_id, - int render_frame_id, - mojom::StartSpeechRecognitionRequestParamsPtr params); - void StartSessionOnIO(mojom::StartSpeechRecognitionRequestParamsPtr params, - int embedder_render_process_id, - int embedder_render_frame_id, - bool filter_profanities); - // Sends the given message on the UI thread. Can be called from the IO thread. - void Send(IPC::Message* message); - - int render_process_id_; - int render_frame_id_; - scoped_refptr<net::URLRequestContextGetter> context_getter_; - - // sender_ can only be accessed on the UI thread. To send messages from the IO - // thread, use SpeechRecognitionDispatcherHost::Send. - base::WeakPtr<IPC::Sender> sender_; - - // Used for posting asynchronous tasks (on the IO thread) without worrying - // about this class being destroyed in the meanwhile (due to browser shutdown) - // since tasks pending on a destroyed WeakPtr are automatically discarded. - base::WeakPtrFactory<SpeechRecognitionDispatcherHost> weak_factory_; - - DISALLOW_COPY_AND_ASSIGN(SpeechRecognitionDispatcherHost); + base::WeakPtrFactory<SpeechRecognitionSession> weak_factory_; }; } // namespace content
diff --git a/content/browser/speech/speech_recognition_manager_impl.cc b/content/browser/speech/speech_recognition_manager_impl.cc index c35af5fa..e04810d 100644 --- a/content/browser/speech/speech_recognition_manager_impl.cc +++ b/content/browser/speech/speech_recognition_manager_impl.cc
@@ -346,7 +346,7 @@ if (ask_user) { SpeechRecognitionSessionContext& context = session->context; context.label = media_stream_manager_->MakeMediaAccessRequest( - context.render_process_id, context.render_frame_id, context.request_id, + context.render_process_id, context.render_frame_id, session_id, StreamControls(true, false), context.security_origin, base::BindOnce( &SpeechRecognitionManagerImpl::MediaRequestPermissionCallback, @@ -589,26 +589,6 @@ EVENT_RECOGNITION_ENDED)); } -int SpeechRecognitionManagerImpl::GetSession(int render_process_id, - int render_frame_id, - int request_id) const { - DCHECK_CURRENTLY_ON(BrowserThread::IO); - auto iter = std::find_if( - sessions_.begin(), sessions_.end(), - [render_process_id, render_frame_id, request_id]( - const std::pair<int, std::unique_ptr<Session>>& session_pair) { - const SpeechRecognitionSessionContext& context = - session_pair.second->context; - return context.render_process_id == render_process_id && - context.render_frame_id == render_frame_id && - context.request_id == request_id; - }); - if (iter == sessions_.end()) - return kSessionIDInvalid; - - return iter->first; -} - SpeechRecognitionSessionContext SpeechRecognitionManagerImpl::GetSessionContext(int session_id) const { return GetSession(session_id)->context;
diff --git a/content/browser/speech/speech_recognition_manager_impl.h b/content/browser/speech/speech_recognition_manager_impl.h index 2c1f65a..cf4468d 100644 --- a/content/browser/speech/speech_recognition_manager_impl.h +++ b/content/browser/speech/speech_recognition_manager_impl.h
@@ -67,9 +67,6 @@ int session_id) const override; SpeechRecognitionSessionContext GetSessionContext( int session_id) const override; - int GetSession(int render_process_id, - int render_frame_id, - int request_id) const override; // SpeechRecognitionEventListener methods. void OnRecognitionStart(int session_id) override;
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc index d3c63fc..03ec3aa 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc
@@ -836,10 +836,6 @@ OnBrowserPluginMessage(render_frame_host, message)) #endif -#if defined(OS_ANDROID) - IPC_MESSAGE_HANDLER(FrameHostMsg_GetNearestFindResult_Reply, - OnGetNearestFindResultReply) -#endif IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() @@ -4342,13 +4338,6 @@ } #if defined(OS_ANDROID) -void WebContentsImpl::OnGetNearestFindResultReply(RenderFrameHostImpl* source, - int request_id, - float distance) { - GetOrCreateFindRequestManager()->OnGetNearestFindResultReply( - source, request_id, distance); -} - void WebContentsImpl::OnOpenDateTimeDialog( RenderViewHostImpl* source, const ViewHostMsg_DateTimeDialogValue_Params& value) {
diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h index f154b33..68ac3543 100644 --- a/content/browser/web_contents/web_contents_impl.h +++ b/content/browser/web_contents/web_contents_impl.h
@@ -1155,9 +1155,6 @@ int active_match_ordinal, bool final_update); #if defined(OS_ANDROID) - void OnGetNearestFindResultReply(RenderFrameHostImpl* source, - int request_id, - float distance); void OnOpenDateTimeDialog( RenderViewHostImpl* source, const ViewHostMsg_DateTimeDialogValue_Params& value);
diff --git a/content/browser/webauth/authenticator_impl.cc b/content/browser/webauth/authenticator_impl.cc index 4083268b..18e39f7 100644 --- a/content/browser/webauth/authenticator_impl.cc +++ b/content/browser/webauth/authenticator_impl.cc
@@ -608,18 +608,19 @@ FilterCredentialList(std::move(options->allow_credentials)); // There are two different descriptions of what should happen when - // "allowCredentials" is empty. + // "allowCredentials" is empty for U2F. // a) WebAuthN 6.2.3 step 6[1] implies "NotAllowedError". // b) CTAP step 7.2 step 2[2] says the device should error out with // "CTAP2_ERR_OPTION_NOT_SUPPORTED". This also resolves to "NotAllowedError". // The behavior in both cases is consistent with the current implementation. - // TODO(crbug.com/831712): When CTAP2 authenticators are supported, this check - // should be enforced by handlers in fido/device on a per-device basis. + // When CTAP2 is enabled, however, this check is done by handlers in + // fido/device on a per-device basis. // [1] https://w3c.github.io/webauthn/#authenticatorgetassertion // [2] // https://fidoalliance.org/specs/fido-v2.0-ps-20170927/fido-client-to-authenticator-protocol-v2.0-ps-20170927.html - if (handles.empty()) { + if (!base::FeatureList::IsEnabled(features::kWebAuthCtap2) && + handles.empty()) { InvokeCallbackAndCleanup( std::move(callback), webauth::mojom::AuthenticatorStatus::EMPTY_ALLOW_CREDENTIALS, nullptr);
diff --git a/content/browser/webauth/authenticator_impl_unittest.cc b/content/browser/webauth/authenticator_impl_unittest.cc index ef94cef..d537b1f 100644 --- a/content/browser/webauth/authenticator_impl_unittest.cc +++ b/content/browser/webauth/authenticator_impl_unittest.cc
@@ -791,6 +791,42 @@ EXPECT_EQ(AuthenticatorStatus::NOT_ALLOWED_ERROR, callback_receiver.status()); } +TEST_F(AuthenticatorImplTest, Ctap2AcceptsEmptyAllowCredentials) { + base::test::ScopedFeatureList scoped_feature_list; + scoped_feature_list.InitAndEnableFeature(features::kWebAuthCtap2); + + SimulateNavigation(GURL(kTestOrigin1)); + PublicKeyCredentialRequestOptionsPtr options = + GetTestPublicKeyCredentialRequestOptions(); + options->allow_credentials.clear(); + TestGetAssertionCallback callback_receiver; + + // Set up service_manager::Connector for tests. + auto fake_hid_manager = std::make_unique<device::FakeHidManager>(); + service_manager::mojom::ConnectorRequest request; + auto connector = service_manager::Connector::Create(&request); + + // Set up a timer for testing. + auto task_runner = base::MakeRefCounted<base::TestMockTimeTaskRunner>( + base::Time::Now(), base::TimeTicks::Now()); + auto timer = + std::make_unique<base::OneShotTimer>(task_runner->GetMockTickClock()); + timer->SetTaskRunner(task_runner); + AuthenticatorPtr authenticator = + ConnectToAuthenticator(connector.get(), std::move(timer)); + + device::test::ScopedVirtualFidoDevice virtual_device; + authenticator->GetAssertion(std::move(options), callback_receiver.callback()); + + // Trigger timer. + base::RunLoop().RunUntilIdle(); + task_runner->FastForwardBy(base::TimeDelta::FromMinutes(1)); + callback_receiver.WaitForCallback(); + // Doesn't error out with EMPTY_ALLOW_CREDENTIALS but continues to a + // NOT_ALLOWED_ERROR. + EXPECT_EQ(AuthenticatorStatus::NOT_ALLOWED_ERROR, callback_receiver.status()); +} + TEST_F(AuthenticatorImplTest, GetAssertionWithEmptyAllowCredentials) { device::test::ScopedVirtualFidoDevice scoped_virtual_device; TestServiceManagerContext service_manager_context;
diff --git a/content/browser/webauth/webauth_browsertest.cc b/content/browser/webauth/webauth_browsertest.cc index b86f292e..59b558ff 100644 --- a/content/browser/webauth/webauth_browsertest.cc +++ b/content/browser/webauth/webauth_browsertest.cc
@@ -311,7 +311,8 @@ std::move(rp), std::move(user), kTestChallenge, std::move(parameters), base::TimeDelta::FromSeconds(30), std::vector<webauth::mojom::PublicKeyCredentialDescriptorPtr>(), - nullptr, webauth::mojom::AttestationConveyancePreference::NONE); + nullptr, webauth::mojom::AttestationConveyancePreference::NONE, + nullptr); return mojo_options; } @@ -333,8 +334,8 @@ auto mojo_options = webauth::mojom::PublicKeyCredentialRequestOptions::New( kTestChallenge, base::TimeDelta::FromSeconds(30), "acme.com", std::move(credentials), - webauth::mojom::UserVerificationRequirement::PREFERRED, base::nullopt); - + webauth::mojom::UserVerificationRequirement::PREFERRED, base::nullopt, + std::vector<webauth::mojom::CableAuthenticationPtr>()); return mojo_options; }
diff --git a/content/child/OWNERS b/content/child/OWNERS index e9510bd4..5d33001f 100644 --- a/content/child/OWNERS +++ b/content/child/OWNERS
@@ -1,12 +1 @@ haraken@chromium.org - -# AppCache -per-file appcache*=michaeln@chromium.org - -# WebSQL -per-file database_*=jsbell@chromium.org -per-file database_*=michaeln@chromium.org -per-file db_*=jsbell@chromium.org -per-file db_*=michaeln@chromium.org -per-file web_database_*=jsbell@chromium.org -per-file web_database_*=michaeln@chromium.org
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc index 7ad0ae2..80229237 100644 --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc
@@ -192,10 +192,6 @@ if (command_line.HasSwitch(switches::kReducedReferrerGranularity)) WebRuntimeFeatures::EnableReducedReferrerGranularity(true); - WebRuntimeFeatures::EnableRootLayerScrolling( - base::FeatureList::IsEnabled(features::kRootLayerScrolling) || - enableExperimentalWebPlatformFeatures); - if (command_line.HasSwitch(switches::kDisablePermissionsAPI)) WebRuntimeFeatures::EnablePermissionsAPI(false);
diff --git a/content/common/BUILD.gn b/content/common/BUILD.gn index 308ef6e..e167401 100644 --- a/content/common/BUILD.gn +++ b/content/common/BUILD.gn
@@ -277,7 +277,6 @@ "service_worker/service_worker_utils.h", "single_request_url_loader_factory.cc", "single_request_url_loader_factory.h", - "speech_recognition_messages.h", "swapped_out_messages.cc", "swapped_out_messages.h", "task_scheduler.cc",
diff --git a/content/common/cache_storage/OWNERS b/content/common/cache_storage/OWNERS index d55e59d6..5e0c72b 100644 --- a/content/common/cache_storage/OWNERS +++ b/content/common/cache_storage/OWNERS
@@ -1,4 +1,3 @@ -michaeln@chromium.org nhiroki@chromium.org jkarlin@chromium.org jsbell@chromium.org
diff --git a/content/common/content_message_generator.h b/content/common/content_message_generator.h index e59bfde9..491063d674 100644 --- a/content/common/content_message_generator.h +++ b/content/common/content_message_generator.h
@@ -89,11 +89,6 @@ #error \ "Failed to include content/common/service_worker/service_worker_messages.h" #endif -#undef CONTENT_COMMON_SPEECH_RECOGNITION_MESSAGES_H_ -#include "content/common/speech_recognition_messages.h" -#ifndef CONTENT_COMMON_SPEECH_RECOGNITION_MESSAGES_H_ -#error "Failed to include content/common/speech_recognition_messages.h" -#endif #undef CONTENT_COMMON_TEXT_INPUT_CLIENT_MESSAGES_H_ #include "content/common/text_input_client_messages.h" #ifndef CONTENT_COMMON_TEXT_INPUT_CLIENT_MESSAGES_H_
diff --git a/content/common/dom_storage/OWNERS b/content/common/dom_storage/OWNERS index 39d4614..74dc2f9 100644 --- a/content/common/dom_storage/OWNERS +++ b/content/common/dom_storage/OWNERS
@@ -1,9 +1,6 @@ dmurph@chromium.org mek@chromium.org -# OOO until this comment is removed. -michaeln@chromium.org - per-file *_messages*.h=set noparent per-file *_messages*.h=file://ipc/SECURITY_OWNERS
diff --git a/content/common/fileapi/OWNERS b/content/common/fileapi/OWNERS index 77d0e9d..3a69eb7d 100644 --- a/content/common/fileapi/OWNERS +++ b/content/common/fileapi/OWNERS
@@ -1,4 +1,4 @@ -michaeln@chromium.org +mek@chromium.org jianli@chromium.org tzik@chromium.org nhiroki@chromium.org
diff --git a/content/common/frame_messages.h b/content/common/frame_messages.h index 4e3fb98..104b7314 100644 --- a/content/common/frame_messages.h +++ b/content/common/frame_messages.h
@@ -1773,14 +1773,6 @@ #endif -#if defined(OS_ANDROID) -// Response to FrameMsg_GetNearestFindResult. |distance| is the distance to the -// nearest find result in the sending frame. -IPC_MESSAGE_ROUTED2(FrameHostMsg_GetNearestFindResult_Reply, - int /* nfr_request_id */, - float /* distance */) -#endif - // Adding a new message? Stick to the sort order above: first platform // independent FrameMsg, then ifdefs for platform specific FrameMsg, then // platform independent FrameHostMsg, then ifdefs for platform specific
diff --git a/content/common/speech_recognition_messages.h b/content/common/speech_recognition_messages.h deleted file mode 100644 index 1606bb549..0000000 --- a/content/common/speech_recognition_messages.h +++ /dev/null
@@ -1,65 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CONTENT_COMMON_SPEECH_RECOGNITION_MESSAGES_H_ -#define CONTENT_COMMON_SPEECH_RECOGNITION_MESSAGES_H_ - -#include <stdint.h> - -#include <string> - -#include "content/public/common/speech_recognition_error.h" -#include "content/public/common/speech_recognition_grammar.h" -#include "content/public/common/speech_recognition_result.h" -#include "ipc/ipc_message_macros.h" -#include "ipc/ipc_param_traits.h" -#include "ui/gfx/geometry/rect.h" - -#define IPC_MESSAGE_START SpeechRecognitionMsgStart - -IPC_ENUM_TRAITS_MAX_VALUE(content::SpeechAudioErrorDetails, - content::SPEECH_AUDIO_ERROR_DETAILS_LAST) -IPC_ENUM_TRAITS_MAX_VALUE(content::SpeechRecognitionErrorCode, - content::SPEECH_RECOGNITION_ERROR_LAST) - -IPC_STRUCT_TRAITS_BEGIN(content::SpeechRecognitionError) - IPC_STRUCT_TRAITS_MEMBER(code) - IPC_STRUCT_TRAITS_MEMBER(details) -IPC_STRUCT_TRAITS_END() - -IPC_STRUCT_TRAITS_BEGIN(content::SpeechRecognitionHypothesis) - IPC_STRUCT_TRAITS_MEMBER(utterance) - IPC_STRUCT_TRAITS_MEMBER(confidence) -IPC_STRUCT_TRAITS_END() - -IPC_STRUCT_TRAITS_BEGIN(content::SpeechRecognitionResult) - IPC_STRUCT_TRAITS_MEMBER(is_provisional) - IPC_STRUCT_TRAITS_MEMBER(hypotheses) -IPC_STRUCT_TRAITS_END() - -// Browser -> Renderer messages. - -// The messages below follow exactly the same semantic of the corresponding -// events defined in content/public/browser/speech_recognition_event_listener.h. -IPC_MESSAGE_ROUTED2(SpeechRecognitionMsg_ResultRetrieved, - int /* request_id */, - content::SpeechRecognitionResults /* results */) - -IPC_MESSAGE_ROUTED2(SpeechRecognitionMsg_ErrorOccurred, - int /* request_id */, - content::SpeechRecognitionError /* error */) - -IPC_MESSAGE_ROUTED1(SpeechRecognitionMsg_Started, int /* request_id */) - -IPC_MESSAGE_ROUTED1(SpeechRecognitionMsg_AudioStarted, int /* request_id */) - -IPC_MESSAGE_ROUTED1(SpeechRecognitionMsg_SoundStarted, int /* request_id */) - -IPC_MESSAGE_ROUTED1(SpeechRecognitionMsg_SoundEnded, int /* request_id */) - -IPC_MESSAGE_ROUTED1(SpeechRecognitionMsg_AudioEnded, int /* request_id */) - -IPC_MESSAGE_ROUTED1(SpeechRecognitionMsg_Ended, int /* request_id */) - -#endif // CONTENT_COMMON_SPEECH_RECOGNITION_MESSAGES_H_
diff --git a/content/common/speech_recognizer.mojom b/content/common/speech_recognizer.mojom index 59fd97c2..f790d4c 100644 --- a/content/common/speech_recognizer.mojom +++ b/content/common/speech_recognizer.mojom
@@ -5,12 +5,20 @@ module content.mojom; import "content/public/common/speech_recognition_grammar.mojom"; +import "content/public/common/speech_recognition_result.mojom"; +import "content/public/common/speech_recognition_error.mojom"; import "url/mojom/origin.mojom"; -// Used to start a speech recognition session. +// Created by the renderer and sent to the browser to start a speech recognition +// session. struct StartSpeechRecognitionRequestParams { - // Unique ID associated with the JS object making the calls. - int32 request_id; + // Used to create a connection with a SpeechRecognitionSession implementation + // that will be created when the session is created. + SpeechRecognitionSession& session_request; + + // Used by the browser to communicate with a SpeechRecognitionSessionClient + // implementation created for the new session. + SpeechRecognitionSessionClient client; // Language to use for speech recognition. string language; @@ -31,26 +39,57 @@ bool interim_results; }; -// API for the renderer process to send speech recognition JS API messages to -// the browser process. -// TODO(adithyas): Remove |request_id|. +// API for the renderer process to start a speech recognition session in the +// browser process. interface SpeechRecognizer { // Requests the speech recognition service to start speech recognition. - StartRequest(StartSpeechRecognitionRequestParams params); + Start(StartSpeechRecognitionRequestParams params); +}; - // Requests the speech recognition service to abort speech recognition on - // behalf of the given |request_id|. If there are no sessions associated with - // the |request_id| in the render view, this call does nothing. - AbortRequest(int32 request_id); +// API for the renderer process to stop or abort an existing speech recognition +// session. An InterfaceRequest is sent to the browser process via +// SpeechRecognizer::Start, and is bound to an implementation there. +// SpeechRecognitionSession and SpeechRecognitionSessionClient are 1:1 with each +// other and with WebSpeechRecognitionHandle. +interface SpeechRecognitionSession { + // Requests the speech recognition service to abort speech recognition for the + // associated session. + Abort(); - // Requests the speech recognition service to abort all speech recognitions on - // behalf of the current frame. If speech recognition is not happening or is - // happening on behalf of some other render view, this call does nothing. - AbortAllRequests(); + // Requests the speech recognition service to stop audio capture for the + // associated session. + StopCapture(); +}; - // Requests the speech recognition service to stop audio capture on the - // current frame. Any audio recorded so far will be fed to the - // speech recognizer. If speech recognition is not happening or is happening - // on behalf of some other render view, this call does nothing. - StopCaptureRequest(int32 request_id); +// API for the browser process to communicate speech recognition related updates +// with renderer and cause events to be dispatched to the appropriate speech +// recognition handle. An InterfacePtr for each handle is sent to the browser +// process via SpeechRecognizer::Start. SpeechRecognitionSession and +// SpeechRecognitionSessionClient are 1:1 with each other and with +// WebSpeechRecognitionHandle. +interface SpeechRecognitionSessionClient { + // Called to dispatch the "result" event. + ResultRetrieved(array<content.mojom.SpeechRecognitionResult> results); + + // Called to dispatch the "nomatch" event if the error code passed is of types + // kNoMatch, otherwise dispatchers an "error" event. + ErrorOccurred(content.mojom.SpeechRecognitionError error); + + // Called to dispatch the "start" event. + Started(); + + // Called to dispatch the "audiostart" event. + AudioStarted(); + + // Called to dispatch the "soundstart" and "speechstart" events. + SoundStarted(); + + // Called to dispatch "soundend" and "speechend" events. + SoundEnded(); + + // Called to dispatch the "audioend" event. + AudioEnded(); + + // Called to dispatch the "end" event. + Ended(); };
diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc index 11f6ce0..2705d86f 100644 --- a/content/public/browser/content_browser_client.cc +++ b/content/public/browser/content_browser_client.cc
@@ -700,7 +700,7 @@ scoped_refptr<LoginDelegate> ContentBrowserClient::CreateLoginDelegate( net::AuthChallengeInfo* auth_info, content::ResourceRequestInfo::WebContentsGetter web_contents_getter, - bool is_main_frame, + bool is_request_for_main_frame, const GURL& url, bool first_auth_attempt, LoginAuthRequiredCallback auth_required_callback) {
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h index a23ce6d3..d6799f4 100644 --- a/content/public/browser/content_browser_client.h +++ b/content/public/browser/content_browser_client.h
@@ -1162,7 +1162,7 @@ virtual scoped_refptr<LoginDelegate> CreateLoginDelegate( net::AuthChallengeInfo* auth_info, content::ResourceRequestInfo::WebContentsGetter web_contents_getter, - bool is_main_frame, + bool is_request_for_main_frame, const GURL& url, bool first_auth_attempt, LoginAuthRequiredCallback auth_required_callback);
diff --git a/content/public/browser/resource_dispatcher_host_delegate.cc b/content/public/browser/resource_dispatcher_host_delegate.cc index 838ec2e1..ac7f3cb 100644 --- a/content/public/browser/resource_dispatcher_host_delegate.cc +++ b/content/public/browser/resource_dispatcher_host_delegate.cc
@@ -12,14 +12,6 @@ ResourceDispatcherHostDelegate::~ResourceDispatcherHostDelegate() {} -bool ResourceDispatcherHostDelegate::ShouldBeginRequest( - const std::string& method, - const GURL& url, - ResourceType resource_type, - ResourceContext* resource_context) { - return true; -} - void ResourceDispatcherHostDelegate::RequestBeginning( net::URLRequest* request, ResourceContext* resource_context,
diff --git a/content/public/browser/resource_dispatcher_host_delegate.h b/content/public/browser/resource_dispatcher_host_delegate.h index 8a11639..f0f9b73a 100644 --- a/content/public/browser/resource_dispatcher_host_delegate.h +++ b/content/public/browser/resource_dispatcher_host_delegate.h
@@ -37,12 +37,6 @@ public: virtual ~ResourceDispatcherHostDelegate(); - // Called when a request begins. Return false to abort the request. - virtual bool ShouldBeginRequest(const std::string& method, - const GURL& url, - ResourceType resource_type, - ResourceContext* resource_context); - // Called after ShouldBeginRequest to allow the embedder to add resource // throttles. virtual void RequestBeginning(
diff --git a/content/public/browser/speech_recognition_manager.h b/content/public/browser/speech_recognition_manager.h index 8c6040e..10f82b91 100644 --- a/content/public/browser/speech_recognition_manager.h +++ b/content/public/browser/speech_recognition_manager.h
@@ -65,12 +65,6 @@ virtual SpeechRecognitionSessionContext GetSessionContext( int session_id) const = 0; - // Looks up an existing session from the context tuple - // {render_process_id, render_frame_id, request_id}. - virtual int GetSession(int render_process_id, - int render_frame_id, - int request_id) const = 0; - protected: virtual ~SpeechRecognitionManager() {}
diff --git a/content/public/browser/speech_recognition_session_context.cc b/content/public/browser/speech_recognition_session_context.cc index ebcb190..fa196e357 100644 --- a/content/public/browser/speech_recognition_session_context.cc +++ b/content/public/browser/speech_recognition_session_context.cc
@@ -12,8 +12,7 @@ : render_process_id(0), render_frame_id(MSG_ROUTING_NONE), embedder_render_process_id(0), - embedder_render_frame_id(MSG_ROUTING_NONE), - request_id(0) {} + embedder_render_frame_id(MSG_ROUTING_NONE) {} SpeechRecognitionSessionContext::SpeechRecognitionSessionContext( const SpeechRecognitionSessionContext& other) = default;
diff --git a/content/public/browser/speech_recognition_session_context.h b/content/public/browser/speech_recognition_session_context.h index d11eddb..1575e5a8 100644 --- a/content/public/browser/speech_recognition_session_context.h +++ b/content/public/browser/speech_recognition_session_context.h
@@ -35,9 +35,6 @@ int embedder_render_process_id; int embedder_render_frame_id; - // The request id provided by the originating SpeechRecognitionDispatcher. - int request_id; - // Origin that is requesting recognition, for prompting security notifications // to the user. url::Origin security_origin;
diff --git a/content/public/common/BUILD.gn b/content/public/common/BUILD.gn index 9ff58a8..6faef43 100644 --- a/content/public/common/BUILD.gn +++ b/content/public/common/BUILD.gn
@@ -366,7 +366,9 @@ "push_messaging_status.mojom", "resource_load_info.mojom", "resource_usage_reporter.mojom", + "speech_recognition_error.mojom", "speech_recognition_grammar.mojom", + "speech_recognition_result.mojom", "transferrable_url_loader.mojom", "webplugininfo.mojom", "window_container_type.mojom",
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc index ef198b7..07984170 100644 --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc
@@ -311,10 +311,6 @@ const base::Feature kResourceLoadScheduler{"ResourceLoadScheduler", base::FEATURE_DISABLED_BY_DEFAULT}; -// Use common overflow scroll mechanism for frames. See http://crbug.com/417782. -const base::Feature kRootLayerScrolling{"RootLayerScrolling", - base::FEATURE_ENABLED_BY_DEFAULT}; - // Run video capture service in the Browser process as opposed to a dedicated // utility process const base::Feature kRunVideoCaptureServiceInBrowserProcess{
diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h index 40e7183..d5c75ae 100644 --- a/content/public/common/content_features.h +++ b/content/public/common/content_features.h
@@ -75,7 +75,6 @@ CONTENT_EXPORT extern const base::Feature kRequireCSSExtensionForFile; CONTENT_EXPORT extern const base::Feature kResamplingInputEvents; CONTENT_EXPORT extern const base::Feature kResourceLoadScheduler; -CONTENT_EXPORT extern const base::Feature kRootLayerScrolling; CONTENT_EXPORT extern const base::Feature kRunVideoCaptureServiceInBrowserProcess; CONTENT_EXPORT extern const base::Feature kScrollAnchoring;
diff --git a/content/public/common/speech_recognition_error.h b/content/public/common/speech_recognition_error.h index 7456a43..34aa16d 100644 --- a/content/public/common/speech_recognition_error.h +++ b/content/public/common/speech_recognition_error.h
@@ -5,6 +5,8 @@ #ifndef CONTENT_PUBLIC_COMMON_SPEECH_RECOGNITION_ERROR_H_ #define CONTENT_PUBLIC_COMMON_SPEECH_RECOGNITION_ERROR_H_ +#include "content/common/content_export.h" + namespace content { // A Java counterpart will be generated for this enum.
diff --git a/content/public/common/speech_recognition_error.mojom b/content/public/common/speech_recognition_error.mojom new file mode 100644 index 0000000..31f28a4 --- /dev/null +++ b/content/public/common/speech_recognition_error.mojom
@@ -0,0 +1,34 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +module content.mojom; + +// TODO(adithyas): Update users of content::SpeechRecognitionErrorCode to use +// this instead, then remove content::SpeechRecognitionErrorCode. +enum SpeechRecognitionErrorCode { + kNone, + kNoSpeech, + kAborted, + kAudioCapture, + kNetwork, + kNotAllowed, + kServiceNotAllowed, + kBadGrammar, + kLanguageNotSupported, + kNoMatch +}; + +// TODO(adithyas): Update users of content::SpeechAudioErrorDetails to use +// this instead, then remove content::SpeechAudioErrorDetails. +enum SpeechAudioErrorDetails { + kNone, + kNoMic +}; + +// TODO(adithyas): Update users of content::SpeechRecognitionError to use +// this instead, then remove content::SpeechRecognitionError. +struct SpeechRecognitionError { + content.mojom.SpeechRecognitionErrorCode code; + content.mojom.SpeechAudioErrorDetails details; +};
diff --git a/content/public/common/speech_recognition_error.typemap b/content/public/common/speech_recognition_error.typemap new file mode 100644 index 0000000..4b99fa73 --- /dev/null +++ b/content/public/common/speech_recognition_error.typemap
@@ -0,0 +1,14 @@ +# Copyright 2018 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +mojom = "//content/public/common/speech_recognition_error.mojom" +public_headers = [ "//content/public/common/speech_recognition_error.h" ] +traits_headers = + [ "//content/public/common/speech_recognition_error_struct_traits.h" ] +sources = [ + "//content/public/common/speech_recognition_error_struct_traits.cc", +] +deps = [] +type_mappings = + [ "content.mojom.SpeechRecognitionError=content::SpeechRecognitionError" ]
diff --git a/content/public/common/speech_recognition_error_struct_traits.cc b/content/public/common/speech_recognition_error_struct_traits.cc new file mode 100644 index 0000000..1972063 --- /dev/null +++ b/content/public/common/speech_recognition_error_struct_traits.cc
@@ -0,0 +1,22 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/public/common/speech_recognition_error_struct_traits.h" + +namespace mojo { + +bool StructTraits<content::mojom::SpeechRecognitionErrorDataView, + content::SpeechRecognitionError>:: + Read(content::mojom::SpeechRecognitionErrorDataView data, + content::SpeechRecognitionError* out) { + if (!data.ReadCode(&out->code)) { + return false; + } + if (!data.ReadDetails(&out->details)) { + return false; + } + return true; +} + +} // namespace mojo
diff --git a/content/public/common/speech_recognition_error_struct_traits.h b/content/public/common/speech_recognition_error_struct_traits.h new file mode 100644 index 0000000..c863e5a6 --- /dev/null +++ b/content/public/common/speech_recognition_error_struct_traits.h
@@ -0,0 +1,152 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CONTENT_PUBLIC_COMMON_SPEECH_RECOGNITION_ERROR_STRUCT_TRAITS_H_ +#define CONTENT_PUBLIC_COMMON_SPEECH_RECOGNITION_ERROR_STRUCT_TRAITS_H_ + +#include "content/public/common/speech_recognition_error.h" +#include "content/public/common/speech_recognition_error.mojom.h" + +namespace mojo { + +template <> +struct EnumTraits<content::mojom::SpeechRecognitionErrorCode, + content::SpeechRecognitionErrorCode> { + static content::mojom::SpeechRecognitionErrorCode ToMojom( + content::SpeechRecognitionErrorCode input) { + switch (input) { + case content::SpeechRecognitionErrorCode::SPEECH_RECOGNITION_ERROR_NONE: + return content::mojom::SpeechRecognitionErrorCode::kNone; + case content::SpeechRecognitionErrorCode:: + SPEECH_RECOGNITION_ERROR_NO_SPEECH: + return content::mojom::SpeechRecognitionErrorCode::kNoSpeech; + case content::SpeechRecognitionErrorCode:: + SPEECH_RECOGNITION_ERROR_ABORTED: + return content::mojom::SpeechRecognitionErrorCode::kAborted; + case content::SpeechRecognitionErrorCode:: + SPEECH_RECOGNITION_ERROR_AUDIO_CAPTURE: + return content::mojom::SpeechRecognitionErrorCode::kAudioCapture; + case content::SpeechRecognitionErrorCode:: + SPEECH_RECOGNITION_ERROR_NETWORK: + return content::mojom::SpeechRecognitionErrorCode::kNetwork; + case content::SpeechRecognitionErrorCode:: + SPEECH_RECOGNITION_ERROR_NOT_ALLOWED: + return content::mojom::SpeechRecognitionErrorCode::kNotAllowed; + case content::SpeechRecognitionErrorCode:: + SPEECH_RECOGNITION_ERROR_SERVICE_NOT_ALLOWED: + return content::mojom::SpeechRecognitionErrorCode::kServiceNotAllowed; + case content::SpeechRecognitionErrorCode:: + SPEECH_RECOGNITION_ERROR_BAD_GRAMMAR: + return content::mojom::SpeechRecognitionErrorCode::kBadGrammar; + case content::SpeechRecognitionErrorCode:: + SPEECH_RECOGNITION_ERROR_LANGUAGE_NOT_SUPPORTED: + return content::mojom::SpeechRecognitionErrorCode:: + kLanguageNotSupported; + case content::SpeechRecognitionErrorCode:: + SPEECH_RECOGNITION_ERROR_NO_MATCH: + return content::mojom::SpeechRecognitionErrorCode::kNoMatch; + } + NOTREACHED(); + return content::mojom::SpeechRecognitionErrorCode::kNoMatch; + } + + static bool FromMojom(content::mojom::SpeechRecognitionErrorCode input, + content::SpeechRecognitionErrorCode* output) { + switch (input) { + case content::mojom::SpeechRecognitionErrorCode::kNone: + *output = + content::SpeechRecognitionErrorCode::SPEECH_RECOGNITION_ERROR_NONE; + return true; + case content::mojom::SpeechRecognitionErrorCode::kNoSpeech: + *output = content::SpeechRecognitionErrorCode:: + SPEECH_RECOGNITION_ERROR_NO_SPEECH; + return true; + case content::mojom::SpeechRecognitionErrorCode::kAborted: + *output = content::SpeechRecognitionErrorCode:: + SPEECH_RECOGNITION_ERROR_ABORTED; + return true; + case content::mojom::SpeechRecognitionErrorCode::kAudioCapture: + *output = content::SpeechRecognitionErrorCode:: + SPEECH_RECOGNITION_ERROR_AUDIO_CAPTURE; + return true; + case content::mojom::SpeechRecognitionErrorCode::kNetwork: + *output = content::SpeechRecognitionErrorCode:: + SPEECH_RECOGNITION_ERROR_NETWORK; + return true; + case content::mojom::SpeechRecognitionErrorCode::kNotAllowed: + *output = content::SpeechRecognitionErrorCode:: + SPEECH_RECOGNITION_ERROR_NOT_ALLOWED; + return true; + case content::mojom::SpeechRecognitionErrorCode::kServiceNotAllowed: + *output = content::SpeechRecognitionErrorCode:: + SPEECH_RECOGNITION_ERROR_SERVICE_NOT_ALLOWED; + return true; + case content::mojom::SpeechRecognitionErrorCode::kBadGrammar: + *output = content::SpeechRecognitionErrorCode:: + SPEECH_RECOGNITION_ERROR_BAD_GRAMMAR; + return true; + case content::mojom::SpeechRecognitionErrorCode::kLanguageNotSupported: + *output = content::SpeechRecognitionErrorCode:: + SPEECH_RECOGNITION_ERROR_LANGUAGE_NOT_SUPPORTED; + return true; + case content::mojom::SpeechRecognitionErrorCode::kNoMatch: + *output = content::SpeechRecognitionErrorCode:: + SPEECH_RECOGNITION_ERROR_NO_MATCH; + return true; + } + NOTREACHED(); + return false; + } +}; + +template <> +struct EnumTraits<content::mojom::SpeechAudioErrorDetails, + content::SpeechAudioErrorDetails> { + static content::mojom::SpeechAudioErrorDetails ToMojom( + content::SpeechAudioErrorDetails input) { + switch (input) { + case content::SpeechAudioErrorDetails::SPEECH_AUDIO_ERROR_DETAILS_NONE: + return content::mojom::SpeechAudioErrorDetails::kNone; + case content::SpeechAudioErrorDetails::SPEECH_AUDIO_ERROR_DETAILS_NO_MIC: + return content::mojom::SpeechAudioErrorDetails::kNoMic; + } + NOTREACHED(); + return content::mojom::SpeechAudioErrorDetails::kNoMic; + } + + static bool FromMojom(content::mojom::SpeechAudioErrorDetails input, + content::SpeechAudioErrorDetails* output) { + switch (input) { + case content::mojom::SpeechAudioErrorDetails::kNone: + *output = + content::SpeechAudioErrorDetails::SPEECH_AUDIO_ERROR_DETAILS_NONE; + return true; + case content::mojom::SpeechAudioErrorDetails::kNoMic: + *output = + content::SpeechAudioErrorDetails::SPEECH_AUDIO_ERROR_DETAILS_NO_MIC; + return true; + } + NOTREACHED(); + return false; + } +}; + +template <> +struct StructTraits<content::mojom::SpeechRecognitionErrorDataView, + content::SpeechRecognitionError> { + static content::SpeechRecognitionErrorCode code( + const content::SpeechRecognitionError& r) { + return r.code; + } + static content::SpeechAudioErrorDetails details( + const content::SpeechRecognitionError& r) { + return r.details; + } + static bool Read(content::mojom::SpeechRecognitionErrorDataView data, + content::SpeechRecognitionError* out); +}; + +} // namespace mojo + +#endif // CONTENT_PUBLIC_COMMON_SPEECH_RECOGNITION_ERROR_STRUCT_TRAITS_H_
diff --git a/content/public/common/speech_recognition_result.mojom b/content/public/common/speech_recognition_result.mojom new file mode 100644 index 0000000..8bc5b6c --- /dev/null +++ b/content/public/common/speech_recognition_result.mojom
@@ -0,0 +1,29 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +module content.mojom; + +import "mojo/public/mojom/base/string16.mojom"; + +// A single hypothesis indicating what the recognition service thinks a +// particular speech segment means. +struct SpeechRecognitionHypothesis { + // Transcript of spoken text. + mojo_base.mojom.String16 utterance; + + // A numeric estimate between 0 and 1 that represents how confident the + // recognition system is that the recognition is correct. + double confidence; +}; + +// Group of recognition hypotheses for a particular speech segment. +struct SpeechRecognitionResult { + // An N-best list of hypotheses. + array<content.mojom.SpeechRecognitionHypothesis> hypotheses; + + // False if this is the final time the speech service will return this + // particular result. If true, then this represents an interim result that + // could still be changed. + bool is_provisional; +};
diff --git a/content/public/common/speech_recognition_result.typemap b/content/public/common/speech_recognition_result.typemap new file mode 100644 index 0000000..ac03718 --- /dev/null +++ b/content/public/common/speech_recognition_result.typemap
@@ -0,0 +1,16 @@ +# Copyright 2018 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +mojom = "//content/public/common/speech_recognition_result.mojom" +public_headers = [ "//content/public/common/speech_recognition_result.h" ] +traits_headers = + [ "//content/public/common/speech_recognition_result_struct_traits.h" ] +sources = [ + "//content/public/common/speech_recognition_result_struct_traits.cc", +] +deps = [] +type_mappings = [ + "content.mojom.SpeechRecognitionHypothesis=content::SpeechRecognitionHypothesis", + "content.mojom.SpeechRecognitionResult=content::SpeechRecognitionResult", +]
diff --git a/content/public/common/speech_recognition_result_struct_traits.cc b/content/public/common/speech_recognition_result_struct_traits.cc new file mode 100644 index 0000000..1c1e06d --- /dev/null +++ b/content/public/common/speech_recognition_result_struct_traits.cc
@@ -0,0 +1,29 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "content/public/common/speech_recognition_result_struct_traits.h" + +namespace mojo { + +bool StructTraits<content::mojom::SpeechRecognitionHypothesisDataView, + content::SpeechRecognitionHypothesis>:: + Read(content::mojom::SpeechRecognitionHypothesisDataView data, + content::SpeechRecognitionHypothesis* out) { + if (!data.ReadUtterance(&out->utterance)) + return false; + out->confidence = data.confidence(); + return true; +} + +bool StructTraits<content::mojom::SpeechRecognitionResultDataView, + content::SpeechRecognitionResult>:: + Read(content::mojom::SpeechRecognitionResultDataView data, + content::SpeechRecognitionResult* out) { + if (!data.ReadHypotheses(&out->hypotheses)) + return false; + out->is_provisional = data.is_provisional(); + return true; +} + +} // namespace mojo
diff --git a/content/public/common/speech_recognition_result_struct_traits.h b/content/public/common/speech_recognition_result_struct_traits.h new file mode 100644 index 0000000..53b84eb --- /dev/null +++ b/content/public/common/speech_recognition_result_struct_traits.h
@@ -0,0 +1,47 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CONTENT_PUBLIC_COMMON_SPEECH_RECOGNITION_RESULT_STRUCT_TRAITS_H_ +#define CONTENT_PUBLIC_COMMON_SPEECH_RECOGNITION_RESULT_STRUCT_TRAITS_H_ + +#include "content/public/common/speech_recognition_result.h" +#include "content/public/common/speech_recognition_result.mojom.h" +#include "mojo/public/cpp/base/string16_mojom_traits.h" +#include "mojo/public/cpp/bindings/struct_traits.h" + +namespace mojo { + +template <> +struct StructTraits<content::mojom::SpeechRecognitionHypothesisDataView, + content::SpeechRecognitionHypothesis> { + static const base::string16& utterance( + const content::SpeechRecognitionHypothesis& r) { + return r.utterance; + } + static double confidence(const content::SpeechRecognitionHypothesis& r) { + return r.confidence; + } + static bool Read(content::mojom::SpeechRecognitionHypothesisDataView data, + content::SpeechRecognitionHypothesis* out); +}; + +template <> +struct StructTraits<content::mojom::SpeechRecognitionResultDataView, + content::SpeechRecognitionResult> { + static const std::vector<content::SpeechRecognitionHypothesis>& hypotheses( + const content::SpeechRecognitionResult& r) { + return r.hypotheses; + } + + static bool is_provisional(const content::SpeechRecognitionResult& r) { + return r.is_provisional; + } + + static bool Read(content::mojom::SpeechRecognitionResultDataView data, + content::SpeechRecognitionResult* out); +}; + +} // namespace mojo + +#endif // CONTENT_PUBLIC_COMMON_SPEECH_RECOGNITION_RESULT_STRUCT_TRAITS_H_
diff --git a/content/public/common/typemaps.gni b/content/public/common/typemaps.gni index fe6ebc0..18be5a4b 100644 --- a/content/public/common/typemaps.gni +++ b/content/public/common/typemaps.gni
@@ -8,5 +8,7 @@ "//content/public/common/referrer.typemap", "//content/public/common/resource_type.typemap", "//content/public/common/speech_recognition_grammar.typemap", + "//content/public/common/speech_recognition_result.typemap", + "//content/public/common/speech_recognition_error.typemap", "//content/public/common/webplugininfo.typemap", ]
diff --git a/content/public/test/fake_speech_recognition_manager.cc b/content/public/test/fake_speech_recognition_manager.cc index ac9fab7..daa1ff83 100644 --- a/content/public/test/fake_speech_recognition_manager.cc +++ b/content/public/test/fake_speech_recognition_manager.cc
@@ -122,14 +122,6 @@ did_cancel_all_ = true; } -int FakeSpeechRecognitionManager::GetSession(int render_process_id, - int render_frame_id, - int request_id) const { - return session_ctx_.render_process_id == render_process_id && - session_ctx_.render_frame_id == render_frame_id && - session_ctx_.request_id == request_id; -} - const SpeechRecognitionSessionConfig& FakeSpeechRecognitionManager::GetSessionConfig(int session_id) const { EXPECT_EQ(session_id, session_id_);
diff --git a/content/public/test/fake_speech_recognition_manager.h b/content/public/test/fake_speech_recognition_manager.h index 0481114..9b42cbe 100644 --- a/content/public/test/fake_speech_recognition_manager.h +++ b/content/public/test/fake_speech_recognition_manager.h
@@ -53,9 +53,6 @@ void StopAudioCaptureForSession(int session_id) override; void AbortAllSessionsForRenderFrame(int render_process_id, int render_frame_id) override; - int GetSession(int render_process_id, - int render_frame_id, - int request_id) const override; const SpeechRecognitionSessionConfig& GetSessionConfig( int session_id) const override; SpeechRecognitionSessionContext GetSessionContext(
diff --git a/content/renderer/appcache/OWNERS b/content/renderer/appcache/OWNERS index 21ddbb85..db1043c 100644 --- a/content/renderer/appcache/OWNERS +++ b/content/renderer/appcache/OWNERS
@@ -1,8 +1,5 @@ pwnall@chromium.org jsbell@chromium.org -# OOO until this comment is removed. -michaeln@chromium.org - # TEAM: storage-dev@chromium.org # COMPONENT: Blink>Storage>AppCache
diff --git a/content/renderer/cache_storage/OWNERS b/content/renderer/cache_storage/OWNERS index b78333e..f802dd1 100644 --- a/content/renderer/cache_storage/OWNERS +++ b/content/renderer/cache_storage/OWNERS
@@ -1,4 +1,3 @@ -michaeln@chromium.org nhiroki@chromium.org jkarlin@chromium.org jsbell@chromium.org
diff --git a/content/renderer/child_frame_compositing_helper.cc b/content/renderer/child_frame_compositing_helper.cc index 575b3839..392e95b 100644 --- a/content/renderer/child_frame_compositing_helper.cc +++ b/content/renderer/child_frame_compositing_helper.cc
@@ -82,7 +82,7 @@ surface_layer_ = cc::SurfaceLayer::Create(); surface_layer_->SetMasksToBounds(true); - surface_layer_->SetHitTestable(true); + surface_layer_->SetSurfaceHitTestable(true); surface_layer_->SetBackgroundColor(SK_ColorTRANSPARENT); surface_layer_->SetPrimarySurfaceId(surface_id, deadline);
diff --git a/content/renderer/dom_storage/OWNERS b/content/renderer/dom_storage/OWNERS index f3d5983..c41905d 100644 --- a/content/renderer/dom_storage/OWNERS +++ b/content/renderer/dom_storage/OWNERS
@@ -1,8 +1,5 @@ -michaeln@chromium.org mek@chromium.org -jsbell@chromium.org - -# Please include michaeln@ or mek@ if you make any functional/runtime changes. +dmurph@chromium.org # TEAM: storage-dev@chromium.org # COMPONENT: Blink>Storage>DOMStorage
diff --git a/content/renderer/fileapi/OWNERS b/content/renderer/fileapi/OWNERS index c72d620..df298d57 100644 --- a/content/renderer/fileapi/OWNERS +++ b/content/renderer/fileapi/OWNERS
@@ -1,5 +1,4 @@ jsbell@chromium.org -michaeln@chromium.org pwnall@chromium.org jianli@chromium.org tzik@chromium.org
diff --git a/content/renderer/media_recorder/audio_track_opus_encoder.cc b/content/renderer/media_recorder/audio_track_opus_encoder.cc index ae8b1d11..46fe61a9c 100644 --- a/content/renderer/media_recorder/audio_track_opus_encoder.cc +++ b/content/renderer/media_recorder/audio_track_opus_encoder.cc
@@ -47,8 +47,7 @@ data_out->resize(kOpusMaxDataBytes); const opus_int32 result = opus_encode_float( opus_encoder, data_in, num_samples, - reinterpret_cast<uint8_t*>(base::string_as_array(data_out)), - kOpusMaxDataBytes); + reinterpret_cast<uint8_t*>(base::data(*data_out)), kOpusMaxDataBytes); if (result > 1) { // TODO(ajose): Investigate improving this. http://crbug.com/547918
diff --git a/content/renderer/media_recorder/audio_track_pcm_encoder.cc b/content/renderer/media_recorder/audio_track_pcm_encoder.cc index 6bae562..cae7dd78 100644 --- a/content/renderer/media_recorder/audio_track_pcm_encoder.cc +++ b/content/renderer/media_recorder/audio_track_pcm_encoder.cc
@@ -42,7 +42,7 @@ std::unique_ptr<std::string> encoded_data_string(new std::string()); encoded_data_string->resize(input_bus->frames() * input_bus->channels() * sizeof(float)); - char* encoded_data_ptr = base::string_as_array(encoded_data_string.get()); + char* encoded_data_ptr = base::data(*encoded_data_string); input_bus->ToInterleaved<media::Float32SampleTypeTraits>( input_bus->frames(), reinterpret_cast<float*>(encoded_data_ptr));
diff --git a/content/renderer/media_recorder/audio_track_recorder_unittest.cc b/content/renderer/media_recorder/audio_track_recorder_unittest.cc index 4456840..0f3c0974 100644 --- a/content/renderer/media_recorder/audio_track_recorder_unittest.cc +++ b/content/renderer/media_recorder/audio_track_recorder_unittest.cc
@@ -193,11 +193,10 @@ // per buffer. EXPECT_EQ( kDefaultSampleRate * kOpusBufferDurationMs / 1000, - opus_decode_float(opus_decoder_, - reinterpret_cast<uint8_t*>( - base::string_as_array(encoded_data.get())), - encoded_data->size(), opus_buffer_.get(), - kFramesPerBuffer, 0)); + opus_decode_float( + opus_decoder_, + reinterpret_cast<uint8_t*>(base::data(*encoded_data)), + encoded_data->size(), opus_buffer_.get(), kFramesPerBuffer, 0)); } else if (codec_ == AudioTrackRecorder::CodecId::PCM) { // Manually confirm that we're getting the same data out as what we // generated from the sine wave.
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc index 35a455c8..ff988e7 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc
@@ -1766,8 +1766,6 @@ #if defined(OS_ANDROID) IPC_MESSAGE_HANDLER(FrameMsg_ActivateNearestFindResult, OnActivateNearestFindResult) - IPC_MESSAGE_HANDLER(FrameMsg_GetNearestFindResult, - OnGetNearestFindResult) #endif #if BUILDFLAG(USE_EXTERNAL_POPUP_MENU) @@ -6251,14 +6249,6 @@ SendFindReply(request_id, -1 /* number_of_matches */, ordinal, selection_rect, true /* final_update */); } - -void RenderFrameImpl::OnGetNearestFindResult(int nfr_request_id, - float x, - float y) { - float distance = frame_->DistanceToNearestFindMatch(WebFloatPoint(x, y)); - Send(new FrameHostMsg_GetNearestFindResult_Reply( - routing_id_, nfr_request_id, distance)); -} #endif void RenderFrameImpl::OnSetOverlayRoutingToken(
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h index e5dfeba..4be6916 100644 --- a/content/renderer/render_frame_impl.h +++ b/content/renderer/render_frame_impl.h
@@ -1054,7 +1054,6 @@ void OnMixedContentFound(const FrameMsg_MixedContentFound_Params& params); #if defined(OS_ANDROID) void OnActivateNearestFindResult(int request_id, float x, float y); - void OnGetNearestFindResult(int request_id, float x, float y); #endif void OnSetOverlayRoutingToken(const base::UnguessableToken& token); void OnNotifyUserActivation();
diff --git a/content/renderer/speech_recognition_dispatcher.cc b/content/renderer/speech_recognition_dispatcher.cc index 68ac752..56326454 100644 --- a/content/renderer/speech_recognition_dispatcher.cc +++ b/content/renderer/speech_recognition_dispatcher.cc
@@ -12,7 +12,6 @@ #include "base/strings/utf_string_conversions.h" #include "build/build_config.h" -#include "content/common/speech_recognition_messages.h" #include "content/public/common/service_names.mojom.h" #include "content/public/renderer/render_thread.h" #include "content/renderer/render_frame_impl.h" @@ -35,35 +34,19 @@ SpeechRecognitionDispatcher::SpeechRecognitionDispatcher( RenderFrame* render_frame) - : RenderFrameObserver(render_frame), next_id_(1) {} + : RenderFrameObserver(render_frame) {} SpeechRecognitionDispatcher::~SpeechRecognitionDispatcher() = default; -bool SpeechRecognitionDispatcher::OnMessageReceived( - const IPC::Message& message) { - bool handled = true; - IPC_BEGIN_MESSAGE_MAP(SpeechRecognitionDispatcher, message) - IPC_MESSAGE_HANDLER(SpeechRecognitionMsg_Started, OnRecognitionStarted) - IPC_MESSAGE_HANDLER(SpeechRecognitionMsg_AudioStarted, OnAudioStarted) - IPC_MESSAGE_HANDLER(SpeechRecognitionMsg_SoundStarted, OnSoundStarted) - IPC_MESSAGE_HANDLER(SpeechRecognitionMsg_SoundEnded, OnSoundEnded) - IPC_MESSAGE_HANDLER(SpeechRecognitionMsg_AudioEnded, OnAudioEnded) - IPC_MESSAGE_HANDLER(SpeechRecognitionMsg_ErrorOccurred, OnErrorOccurred) - IPC_MESSAGE_HANDLER(SpeechRecognitionMsg_Ended, OnRecognitionEnded) - IPC_MESSAGE_HANDLER(SpeechRecognitionMsg_ResultRetrieved, - OnResultsRetrieved) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - return handled; -} - void SpeechRecognitionDispatcher::OnDestruct() { delete this; } void SpeechRecognitionDispatcher::WasHidden() { #if defined(OS_ANDROID) && BUILDFLAG(ENABLE_WEBRTC) - GetSpeechRecognitionHost().AbortAllRequests(); + for (const auto& it : session_map_) { + it.second->Abort(); + } #endif } @@ -86,9 +69,24 @@ msg_params->continuous = params.Continuous(); msg_params->interim_results = params.InterimResults(); msg_params->origin = params.Origin(); - msg_params->request_id = GetOrCreateIDForHandle(handle); - GetSpeechRecognitionHost().StartRequest(std::move(msg_params)); + mojom::SpeechRecognitionSessionClientPtrInfo client_ptr_info; + mojom::SpeechRecognitionSessionClientRequest client_request = + mojo::MakeRequest(&client_ptr_info); + bindings_.AddBinding(std::make_unique<SpeechRecognitionSessionClientImpl>( + this, handle, recognizer_client_), + std::move(client_request)); + + mojom::SpeechRecognitionSessionPtr session_client; + mojom::SpeechRecognitionSessionRequest request = + mojo::MakeRequest(&session_client); + + AddHandle(handle, std::move(session_client)); + + msg_params->client = std::move(client_ptr_info); + msg_params->session_request = std::move(request); + + GetSpeechRecognitionHost().Start(std::move(msg_params)); } void SpeechRecognitionDispatcher::Stop( @@ -97,7 +95,7 @@ // Ignore a |stop| issued without a matching |start|. if (recognizer_client_ != recognizer_client || !HandleExists(handle)) return; - GetSpeechRecognitionHost().StopCaptureRequest(GetOrCreateIDForHandle(handle)); + GetSession(handle)->StopCapture(); } void SpeechRecognitionDispatcher::Abort( @@ -106,27 +104,7 @@ // Ignore an |abort| issued without a matching |start|. if (recognizer_client_ != recognizer_client || !HandleExists(handle)) return; - GetSpeechRecognitionHost().AbortRequest(GetOrCreateIDForHandle(handle)); -} - -void SpeechRecognitionDispatcher::OnRecognitionStarted(int request_id) { - recognizer_client_.DidStart(GetHandleFromID(request_id)); -} - -void SpeechRecognitionDispatcher::OnAudioStarted(int request_id) { - recognizer_client_.DidStartAudio(GetHandleFromID(request_id)); -} - -void SpeechRecognitionDispatcher::OnSoundStarted(int request_id) { - recognizer_client_.DidStartSound(GetHandleFromID(request_id)); -} - -void SpeechRecognitionDispatcher::OnSoundEnded(int request_id) { - recognizer_client_.DidEndSound(GetHandleFromID(request_id)); -} - -void SpeechRecognitionDispatcher::OnAudioEnded(int request_id) { - recognizer_client_.DidEndAudio(GetHandleFromID(request_id)); + GetSession(handle)->Abort(); } static WebSpeechRecognizerClient::ErrorCode WebKitErrorCode( @@ -159,39 +137,85 @@ return WebSpeechRecognizerClient::kOtherError; } -void SpeechRecognitionDispatcher::OnErrorOccurred( - int request_id, - const SpeechRecognitionError& error) { +void SpeechRecognitionDispatcher::AddHandle( + const blink::WebSpeechRecognitionHandle& handle, + mojom::SpeechRecognitionSessionPtr session) { + DCHECK(!HandleExists(handle)); + session_map_[handle] = std::move(session); +} + +bool SpeechRecognitionDispatcher::HandleExists( + const WebSpeechRecognitionHandle& handle) { + return session_map_.find(handle) != session_map_.end(); +} + +void SpeechRecognitionDispatcher::RemoveHandle( + const blink::WebSpeechRecognitionHandle& handle) { + session_map_.erase(handle); +} + +mojom::SpeechRecognitionSession* SpeechRecognitionDispatcher::GetSession( + const blink::WebSpeechRecognitionHandle& handle) { + DCHECK(HandleExists(handle)); + return session_map_[handle].get(); +} + +mojom::SpeechRecognizer& +SpeechRecognitionDispatcher::GetSpeechRecognitionHost() { + if (!speech_recognition_host_) { + render_frame()->GetRemoteInterfaces()->GetInterface( + mojo::MakeRequest(&speech_recognition_host_)); + } + return *speech_recognition_host_; +} + +// ------------ SpeechRecognitionSessionClientImpl +// ------------------------------------ + +SpeechRecognitionSessionClientImpl::SpeechRecognitionSessionClientImpl( + SpeechRecognitionDispatcher* dispatcher, + const blink::WebSpeechRecognitionHandle& handle, + const blink::WebSpeechRecognizerClient& client) + : parent_dispatcher_(dispatcher), handle_(handle), web_client_(client) {} + +void SpeechRecognitionSessionClientImpl::Started() { + web_client_.DidStart(handle_); +} + +void SpeechRecognitionSessionClientImpl::AudioStarted() { + web_client_.DidStartAudio(handle_); +} + +void SpeechRecognitionSessionClientImpl::SoundStarted() { + web_client_.DidStartSound(handle_); +} + +void SpeechRecognitionSessionClientImpl::SoundEnded() { + web_client_.DidEndSound(handle_); +} + +void SpeechRecognitionSessionClientImpl::AudioEnded() { + web_client_.DidEndAudio(handle_); +} + +void SpeechRecognitionSessionClientImpl::ErrorOccurred( + const content::SpeechRecognitionError& error) { if (error.code == SPEECH_RECOGNITION_ERROR_NO_MATCH) { - recognizer_client_.DidReceiveNoMatch(GetHandleFromID(request_id), - WebSpeechRecognitionResult()); + web_client_.DidReceiveNoMatch(handle_, WebSpeechRecognitionResult()); } else { - recognizer_client_.DidReceiveError(GetHandleFromID(request_id), - WebString(), // TODO(primiano): message? - WebKitErrorCode(error.code)); + web_client_.DidReceiveError(handle_, + WebString(), // TODO(primiano): message? + WebKitErrorCode(error.code)); } } -void SpeechRecognitionDispatcher::OnRecognitionEnded(int request_id) { - // TODO(tommi): It is possible that the handle isn't found in the array if - // the user just refreshed the page. It seems that we then get a notification - // for the previously loaded instance of the page. - auto iter = handle_map_.find(request_id); - if (iter == handle_map_.end()) { - DLOG(ERROR) << "OnRecognitionEnded called for a handle that doesn't exist"; - } else { - WebSpeechRecognitionHandle handle = iter->second; - // Note: we need to erase the handle from the map *before* calling didEnd. - // didEnd may call back synchronously to start a new recognition session, - // and we don't want to delete the handle from the map after that happens. - handle_map_.erase(request_id); - recognizer_client_.DidEnd(handle); - } +void SpeechRecognitionSessionClientImpl::Ended() { + parent_dispatcher_->RemoveHandle(handle_); + web_client_.DidEnd(handle_); } -void SpeechRecognitionDispatcher::OnResultsRetrieved( - int request_id, - const SpeechRecognitionResults& results) { +void SpeechRecognitionSessionClientImpl::ResultRetrieved( + const std::vector<content::SpeechRecognitionResult>& results) { size_t provisional_count = std::count_if(results.begin(), results.end(), [](const SpeechRecognitionResult& result) { @@ -218,54 +242,7 @@ webkit_result->Assign(transcripts, confidences, !result.is_provisional); } - recognizer_client_.DidReceiveResults(GetHandleFromID(request_id), final, - provisional); -} - -int SpeechRecognitionDispatcher::GetOrCreateIDForHandle( - const WebSpeechRecognitionHandle& handle) { - // Search first for an existing mapping. - auto iter = FindHandleInMap(handle); - if (iter != handle_map_.end()) - return iter->first; - - // If no existing mapping found, create a new one. - const int new_id = next_id_; - handle_map_[new_id] = handle; - ++next_id_; - return new_id; -} - -bool SpeechRecognitionDispatcher::HandleExists( - const WebSpeechRecognitionHandle& handle) { - return FindHandleInMap(handle) != handle_map_.end(); -} - -SpeechRecognitionDispatcher::HandleMap::iterator -SpeechRecognitionDispatcher::FindHandleInMap( - const blink::WebSpeechRecognitionHandle& handle) { - return std::find_if( - handle_map_.begin(), handle_map_.end(), - [handle](const std::pair<const int, blink::WebSpeechRecognitionHandle>& - mapping_pair) { - return mapping_pair.second.Equals(handle); - }); -} - -const WebSpeechRecognitionHandle& SpeechRecognitionDispatcher::GetHandleFromID( - int request_id) { - auto iter = handle_map_.find(request_id); - CHECK(iter != handle_map_.end()); - return iter->second; -} - -mojom::SpeechRecognizer& -SpeechRecognitionDispatcher::GetSpeechRecognitionHost() { - if (!speech_recognition_host_) { - render_frame()->GetRemoteInterfaces()->GetInterface( - mojo::MakeRequest(&speech_recognition_host_)); - } - return *speech_recognition_host_; + web_client_.DidReceiveResults(handle_, final, provisional); } } // namespace content
diff --git a/content/renderer/speech_recognition_dispatcher.h b/content/renderer/speech_recognition_dispatcher.h index 64ceda2..eb261b7 100644 --- a/content/renderer/speech_recognition_dispatcher.h +++ b/content/renderer/speech_recognition_dispatcher.h
@@ -12,6 +12,7 @@ #include "content/common/speech_recognizer.mojom.h" #include "content/public/common/speech_recognition_result.h" #include "content/public/renderer/render_frame_observer.h" +#include "mojo/public/cpp/bindings/strong_binding_set.h" #include "third_party/blink/public/web/web_speech_recognition_handle.h" #include "third_party/blink/public/web/web_speech_recognizer.h" #include "third_party/blink/public/web/web_speech_recognizer_client.h" @@ -21,7 +22,9 @@ // SpeechRecognitionDispatcher is a delegate for methods used by WebKit for // scripted JS speech APIs. It's the complement of -// SpeechRecognitionDispatcherHost (owned by RenderFrameHost). +// SpeechRecognitionDispatcherHost (owned by RenderFrameHost), and communicates +// with it using two mojo interfaces (SpeechRecognizer and +// SpeechRecognitionSession). class SpeechRecognitionDispatcher : public RenderFrameObserver, public blink::WebSpeechRecognizer { public: @@ -29,10 +32,7 @@ ~SpeechRecognitionDispatcher() override; private: - using HandleMap = std::map<int, blink::WebSpeechRecognitionHandle>; - // RenderFrameObserver implementation. - bool OnMessageReceived(const IPC::Message& message) override; void OnDestruct() override; void WasHidden() override; @@ -45,34 +45,74 @@ void Abort(const blink::WebSpeechRecognitionHandle&, const blink::WebSpeechRecognizerClient&) override; - void OnRecognitionStarted(int request_id); - void OnAudioStarted(int request_id); - void OnSoundStarted(int request_id); - void OnSoundEnded(int request_id); - void OnAudioEnded(int request_id); - void OnErrorOccurred(int request_id, const SpeechRecognitionError& error); - void OnRecognitionEnded(int request_id); - void OnResultsRetrieved(int request_id, - const SpeechRecognitionResults& result); - - int GetOrCreateIDForHandle(const blink::WebSpeechRecognitionHandle& handle); + // Methods to interact with |session_map_| + void AddHandle(const blink::WebSpeechRecognitionHandle& handle, + mojom::SpeechRecognitionSessionPtr session); bool HandleExists(const blink::WebSpeechRecognitionHandle& handle); - HandleMap::iterator FindHandleInMap( + void RemoveHandle(const blink::WebSpeechRecognitionHandle& handle); + mojom::SpeechRecognitionSession* GetSession( const blink::WebSpeechRecognitionHandle& handle); - const blink::WebSpeechRecognitionHandle& GetHandleFromID(int handle_id); mojom::SpeechRecognizer& GetSpeechRecognitionHost(); + // InterfacePtr used to communicate with SpeechRecognitionDispatcherHost to + // start a session for each WebSpeechRecognitionHandle. mojom::SpeechRecognizerPtr speech_recognition_host_; // The Blink client class that we use to send events back to the JS world. + // This is passed to each SpeechRecognitionSessionClientImpl instance. blink::WebSpeechRecognizerClient recognizer_client_; - // This maps between request id values and the Blink handle values. - HandleMap handle_map_; - int next_id_; + // Owns a SpeechRecognitionSessionClientImpl for each session created. The + // bindings are automatically cleaned up when the connection is closed by the + // browser process. We use mojo::StrongBindingSet instead of using + // mojo::MakeStrongBinding for each individual binding as + // SpeechRecognitionSessionClientImpl holds a pointer to its parent + // SpeechRecognitionDispatcher, and we need to clean up the + // SpeechRecognitionSessionClientImpl objects when |this| is deleted. + mojo::StrongBindingSet<mojom::SpeechRecognitionSessionClient> bindings_; + + // Owns a SpeechRecognitionSessionPtr per session created. Each + // WebSpeechRecognitionHandle has its own speech recognition session, and is + // used as a key for the map. + using SessionMap = std::map<blink::WebSpeechRecognitionHandle, + mojom::SpeechRecognitionSessionPtr>; + SessionMap session_map_; DISALLOW_COPY_AND_ASSIGN(SpeechRecognitionDispatcher); + friend class SpeechRecognitionSessionClientImpl; +}; + +// SpeechRecognitionSessionClientImpl is owned by SpeechRecognitionDispatcher +// and is cleaned up either when the end point is closed by the browser process, +// or if SpeechRecognitionDispatcher is deleted. +class SpeechRecognitionSessionClientImpl + : public mojom::SpeechRecognitionSessionClient { + public: + SpeechRecognitionSessionClientImpl( + SpeechRecognitionDispatcher* dispatcher, + const blink::WebSpeechRecognitionHandle& handle, + const blink::WebSpeechRecognizerClient& client); + ~SpeechRecognitionSessionClientImpl() override = default; + + // mojom::SpeechRecognitionSessionClient implementation + void Started() override; + void AudioStarted() override; + void SoundStarted() override; + void SoundEnded() override; + void AudioEnded() override; + void ErrorOccurred(const content::SpeechRecognitionError& error) override; + void Ended() override; + void ResultRetrieved( + const std::vector<content::SpeechRecognitionResult>& results) override; + + private: + // Not owned, |parent_dispatcher_| owns |this|. + SpeechRecognitionDispatcher* parent_dispatcher_; + // WebSpeechRecognitionHandle that this instance is associated with. + blink::WebSpeechRecognitionHandle handle_; + // The Blink client class that we use to send events back to the JS world. + blink::WebSpeechRecognizerClient web_client_; }; } // namespace content
diff --git a/content/shell/test_runner/resources/fonts/android_fallback_fonts.xml b/content/shell/test_runner/resources/fonts/android_fallback_fonts.xml index b867cf3a..deb434c 100644 --- a/content/shell/test_runner/resources/fonts/android_fallback_fonts.xml +++ b/content/shell/test_runner/resources/fonts/android_fallback_fonts.xml
@@ -32,7 +32,7 @@ </family> <family> <fileset> - <file>NotoSansCJKkr-Regular.otf</file> + <file>NotoSansCJKjp-Regular.otf</file> </fileset> </family> <family>
diff --git a/content/shell/test_runner/resources/fonts/android_main_fonts.xml b/content/shell/test_runner/resources/fonts/android_main_fonts.xml index 82fc8c93..7270306 100644 --- a/content/shell/test_runner/resources/fonts/android_main_fonts.xml +++ b/content/shell/test_runner/resources/fonts/android_main_fonts.xml
@@ -6,31 +6,34 @@ <name>sans</name> <name>sans serif</name> <name>sans-serif</name> + <name>Arimo</name> <name>Arial</name> <name>Helvetica</name> </nameset> <fileset> - <file>Arial.ttf</file> - <file>Arial_Bold.ttf</file> - <file>Arial_Italic.ttf</file> - <file>Arial_Bold_Italic.ttf</file> + <file>Arimo-Regular.ttf</file> + <file>Arimo-Bold.ttf</file> + <file>Arimo-Italic.ttf</file> + <file>Arimo-BoldItalic.ttf</file> </fileset> </family> <family> <nameset> <name>serif</name> + <name>Tinos</name> <name>Times</name> <name>Times New Roman</name> <name>Monaco</name> - <!-- Match Linux. See comments of SubpixelPositioning in fonts.conf --> + <!-- Match Linux. See comments of SubpixelPositioning in + base/test/fontconfig_util_linux.cc --> <name>SubpixelPositioning</name> </nameset> <fileset> - <file>Times_New_Roman.ttf</file> - <file>Times_New_Roman_Bold.ttf</file> - <file>Times_New_Roman_Italic.ttf</file> - <file>Times_New_Roman_Bold_Italic.ttf</file> + <file>Tinos-Regular.ttf</file> + <file>Tinos-Bold.ttf</file> + <file>Tinos-Italic.ttf</file> + <file>Tinos-BoldItalic.ttf</file> </fileset> </family> @@ -38,82 +41,41 @@ <nameset> <name>mono</name> <name>monospace</name> + <name>Cousine</name> <name>Courier</name> <name>Courier New</name> </nameset> <fileset> - <file>Courier_New.ttf</file> - <file>Courier_New_Bold.ttf</file> - <file>Courier_New_Italic.ttf</file> - <file>Courier_New_Bold_Italic.ttf</file> + <file>Cousine-Regular.ttf</file> + <file>Cousine-Bold.ttf</file> + <file>Cousine-Italic.ttf</file> + <file>Cousine-BoldItalic.ttf</file> </fileset> </family> <family> <nameset> - <name>cursive</name> - <name>Comic Sans MS</name> - </nameset> - <fileset> - <file>Comic_Sans_MS.ttf</file> - <file>Comic_Sans_MS_Bold.ttf</file> - </fileset> - </family> - - <family> - <nameset> - <name>fantasy</name> - <name>Impact</name> - </nameset> - <fileset> - <file>Impact.ttf</file> - </fileset> - </family> - - <family> - <nameset> + <name>Gelasio</name> <name>Georgia</name> </nameset> <fileset> - <file>Georgia.ttf</file> - <file>Georgia_Bold.ttf</file> - <file>Georgia_Italic.ttf</file> - <file>Georgia_Bold_Italic.ttf</file> + <file>Gelasio-Regular.ttf</file> + <file>Gelasio-Bold.ttf</file> + <file>Gelasio-Italic.ttf</file> + <file>Gelasio-BoldItalic.ttf</file> </fileset> </family> - <family> - <nameset> - <name>Trebuchet MS</name> - </nameset> - <fileset> - <file>Trebuchet_MS.ttf</file> - <file>Trebuchet_MS_Bold.ttf</file> - <file>Trebuchet_MS_Italic.ttf</file> - <file>Trebuchet_MS_Bold_Italic.ttf</file> - </fileset> - </family> - - <family> - <nameset> - <name>Verdana</name> - </nameset> - <fileset> - <file>Verdana.ttf</file> - <file>Verdana_Bold.ttf</file> - <file>Verdana_Italic.ttf</file> - <file>Verdana_Bold_Italic.ttf</file> - </fileset> - </family> <family> <nameset> <name>Ahem</name> - <!-- Match Linux. See comments of SubpixelPositioning in fonts.conf --> + <!-- Match Linux. See comments of SubpixelPositioning in + base/test/fontconfig_util_linux.cc --> <name>SubpixelPositioningAhem</name> </nameset> <fileset> - <file>AHEM____.TTF</file> + <file>Ahem.ttf</file> </fileset> </family>
diff --git a/content/test/gpu/generate_buildbot_json.py b/content/test/gpu/generate_buildbot_json.py index 89443f3..595cc4d 100755 --- a/content/test/gpu/generate_buildbot_json.py +++ b/content/test/gpu/generate_buildbot_json.py
@@ -272,7 +272,7 @@ 'GPU FYI Linux Builder (dbg)' : {}, 'GPU FYI Linux Ozone Builder' : {}, 'GPU FYI Linux dEQP Builder' : {}, -}, + }, 'testers': { 'Win7 FYI Release (NVIDIA)': { @@ -2437,6 +2437,36 @@ 'shards': 20, }, }, + 'viz_screenshot_sync': { + 'target_name': 'screenshot_sync', + 'args': [ + '--dont-restore-color-profile-after-test', + ], + 'extra_browser_args': [ + # This test confirms that GPU compositing is working with OOP-D. + '--enable-features=VizDisplayCompositor', + ], + 'tester_configs': [ + { + 'predicate': Predicates.DEFAULT, + 'disabled_instrumentation_types': ['tsan'], + 'os_types': ['win', 'linux'], + }, + ], + 'disabled_tester_configs': [ + { + 'names': [ + 'Linux FYI Ozone (Intel)', + # TODO(crbug.com/825906): Enable test on Win7 FYI bots when OOP-D + + # passthrough command decoder bug is fixed. + 'Win7 FYI Release (NVIDIA)', + 'Win7 FYI Release (AMD)', + 'Win7 FYI Debug (AMD)', + 'Win7 FYI x64 Release (NVIDIA)', + ], + }, + ], + }, } # These isolated tests don't use telemetry. They need to be placed in the
diff --git a/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py b/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py index dfd6705..427aacd92 100644 --- a/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py +++ b/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
@@ -603,11 +603,7 @@ ['mac', ('nvidia', 0xfe9)], bug=795052) # When these fail on this configuration, they fail multiple times in a row. - self.Fail('deqp/functional/gles3/shaderoperator/binary_operator_01.html', - ['mac', 'nvidia'], bug=756537) - self.Fail('deqp/functional/gles3/shaderoperator/common_functions.html', - ['mac', 'nvidia'], bug=756537) - self.Fail('deqp/functional/gles3/shaderoperator/unary_operator_01.html', + self.Fail('deqp/functional/gles3/shaderoperator/*', ['mac', 'nvidia'], bug=756537) # Mac AMD
diff --git a/content/test/layouttest_support.cc b/content/test/layouttest_support.cc index a30e214..e78dad7 100644 --- a/content/test/layouttest_support.cc +++ b/content/test/layouttest_support.cc
@@ -18,6 +18,7 @@ #include "build/build_config.h" #include "cc/base/switches.h" #include "cc/test/pixel_test_output_surface.h" +#include "components/viz/common/features.h" #include "components/viz/common/frame_sinks/copy_output_request.h" #include "components/viz/test/test_layer_tree_frame_sink.h" #include "content/browser/bluetooth/bluetooth_device_chooser_controller.h" @@ -348,8 +349,7 @@ // Keep texture sizes exactly matching the bounds of the RenderPass to avoid // floating point badness in texcoords. renderer_settings.dont_round_texture_sizes_for_pixel_tests = true; - renderer_settings.use_skia_renderer = - cmd->HasSwitch(switches::kUseSkiaRenderer); + renderer_settings.use_skia_renderer = features::IsUsingSkiaRenderer(); constexpr bool disable_display_vsync = false; constexpr double refresh_rate = 60.0;
diff --git a/crypto/sha2.cc b/crypto/sha2.cc index c4cdb87..aa1b6d0d 100644 --- a/crypto/sha2.cc +++ b/crypto/sha2.cc
@@ -21,7 +21,7 @@ std::string SHA256HashString(base::StringPiece str) { std::string output(kSHA256Length, 0); - SHA256HashString(str, base::string_as_array(&output), output.size()); + SHA256HashString(str, base::data(output), output.size()); return output; }
diff --git a/docs/speed/bot_health_sheriffing/bulk_ungroup.png b/docs/speed/bot_health_sheriffing/bulk_ungroup.png new file mode 100644 index 0000000..ee11b7e --- /dev/null +++ b/docs/speed/bot_health_sheriffing/bulk_ungroup.png Binary files differ
diff --git a/docs/speed/bot_health_sheriffing/change_group_name.png b/docs/speed/bot_health_sheriffing/change_group_name.png new file mode 100644 index 0000000..baa6e260 --- /dev/null +++ b/docs/speed/bot_health_sheriffing/change_group_name.png Binary files differ
diff --git a/docs/speed/bot_health_sheriffing/group_all.png b/docs/speed/bot_health_sheriffing/group_all.png new file mode 100644 index 0000000..135479c --- /dev/null +++ b/docs/speed/bot_health_sheriffing/group_all.png Binary files differ
diff --git a/docs/speed/bot_health_sheriffing/how_to_address_duplicate_alerts.md b/docs/speed/bot_health_sheriffing/how_to_address_duplicate_alerts.md new file mode 100644 index 0000000..758f5f6 --- /dev/null +++ b/docs/speed/bot_health_sheriffing/how_to_address_duplicate_alerts.md
@@ -0,0 +1,26 @@ +# How to address a new alert with the same root cause as an existing alert + +It's common when large problems arise for multiple alerts to fire due to the same underlying problem. Sheriff-o-matic does its best to automatically group these problems into a single alert, but sometimes it's unable to and we have to group the alerts together manually. This is important because it helps future sheriffs see at a glance the number of distinct problems. + +Unfortunately, there's no way to distinguish these duplicate alerts from new alerts without knowing the contents of those other alerts. If you're unsure about two particular alerts, don't hesitate to ask for help [on chat](https://hangouts.google.com/group/2GmiXjz55R2ixTXi1). + +## How to group duplicate alerts + +First, decide which of your duplicate alerts is going to be your "main" alert. If one of the alerts is already an alert group, use that alert. Otherwise, it doesn't matter which alert is picked. + +Next, select all of the other alerts that you want to merge into this main alert. If there are any existing alert groups among these other alerts, you need to click "Ungroup all" and check all of the boxes in the dialog to ensure that the alerts are out of their existing groups. + + + + + +Once you've ungrouped all the alerts being merged into the main alert and selected all alerts being merged, including your primary alert, click the "Group all" button at the top of the screen. + + + +If the alert group still has an auto-generated name, it's a good idea to give it a name that clarifies the problem. + + + +Lastly, it may be necessary to broaden the scope of the existing bug. If, for example, the previous alert had the name "system_health.common_desktop failing on Mac Retina Perf" and you merged in a duplicate alert on Mac Air Perf, you should change the bug and alert names to "system_health.common_desktop failing on multiple Mac builders" and simultaneously add a comment to the bug to the effect of "I'm broadening this bug because the issue is also causing failures on Mac Air Perf". +
diff --git a/docs/speed/bot_health_sheriffing/how_to_disable_a_story.md b/docs/speed/bot_health_sheriffing/how_to_disable_a_story.md new file mode 100644 index 0000000..1c2abc2b --- /dev/null +++ b/docs/speed/bot_health_sheriffing/how_to_disable_a_story.md Binary files differ
diff --git a/docs/speed/bot_health_sheriffing/how_to_snooze_an_alert.md b/docs/speed/bot_health_sheriffing/how_to_snooze_an_alert.md new file mode 100644 index 0000000..f19f58c --- /dev/null +++ b/docs/speed/bot_health_sheriffing/how_to_snooze_an_alert.md Binary files differ
diff --git a/docs/speed/bot_health_sheriffing/snooze_alert.png b/docs/speed/bot_health_sheriffing/snooze_alert.png new file mode 100644 index 0000000..9a58e9e --- /dev/null +++ b/docs/speed/bot_health_sheriffing/snooze_alert.png Binary files differ
diff --git a/docs/speed/bot_health_sheriffing/snooze_alert_dialog.png b/docs/speed/bot_health_sheriffing/snooze_alert_dialog.png new file mode 100644 index 0000000..991d212 --- /dev/null +++ b/docs/speed/bot_health_sheriffing/snooze_alert_dialog.png Binary files differ
diff --git a/docs/speed/bot_health_sheriffing/ungroup_all.png b/docs/speed/bot_health_sheriffing/ungroup_all.png new file mode 100644 index 0000000..021dac6 --- /dev/null +++ b/docs/speed/bot_health_sheriffing/ungroup_all.png Binary files differ
diff --git a/docs/speed/bot_health_sheriffing/what_test_is_failing.md b/docs/speed/bot_health_sheriffing/what_test_is_failing.md index 70d698a2..34317d4 100644 --- a/docs/speed/bot_health_sheriffing/what_test_is_failing.md +++ b/docs/speed/bot_health_sheriffing/what_test_is_failing.md
@@ -1,4 +1,4 @@ -# What story is failing? +# How to determine what story is failing The first step in addressing a test failure is to identify what stories are failing.
diff --git a/docs/testing/writing_layout_tests.md b/docs/testing/writing_layout_tests.md index 126707d..7d90642 100644 --- a/docs/testing/writing_layout_tests.md +++ b/docs/testing/writing_layout_tests.md
@@ -228,15 +228,24 @@ and [content/shell/test_runner/test_runner.cc](../../content/shell/test_runner/test_runner.cc). By skimming the `TestRunnerBindings::Install` method, we learn that the -testRunner API is presented by the `window.testRunner` and -`window.layoutTestsController` objects, which are synonyms. Reading the +testRunner API is presented by the `.testRunner` etc. objects. Reading the `TestRunnerBindings::GetObjectTemplateBuilder` method tells us what properties -are available on the `window.testRunner` object. +are available on the `testRunner` object. -*** aside -`window.testRunner` is the preferred way to access the `testRunner` APIs. -`window.layoutTestsController` is still supported because it is used by -3rd-party tests. +Another popular Blink-specific API 'internals' defined in +[third_party/blink/renderer/core/testing/internals.idl](../../third_party/blink/renderer/core/testing/internals.idl) +contains more direct access to blink internals. + +*** note +If possible, a test using blink-specific testing APIs should be written not to +depend on the APIs, so that it can also work directly in a browser. If the test +does need the APIs to work, it should still check if the API is available before +using the API. Note that though we omit the `window.` prefix when using the +APIs, we should use the qualified name in the `if` statement: +```javascript + if (window.testRunner) + testRunner.waitUntilDone(); +``` *** *** note @@ -250,7 +259,7 @@ See the [content/shell/test_runner/](../../content/shell/test_runner/) directory and [WebKit's LayoutTests guide](https://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree) -for other useful APIs. For example, `window.eventSender` +for other useful APIs. For example, `eventSender` ([content/shell/test_runner/event_sender.h](../../content/shell/test_runner/event_sender.h) and [content/shell/test_runner/event_sender.cc](../../content/shell/test_runner/event_sender.cc)) @@ -415,8 +424,8 @@ ## Pixel Tests -`testRunner` APIs such as `window.testRunner.dumpAsTextWithPixelResults()` and -`window.testRunner.dumpDragImage()` create an image result that is associated +`testRunner` APIs such as `testRunner.dumpAsTextWithPixelResults()` and +`testRunner.dumpDragImage()` create an image result that is associated with the test. The image result is compared against an image baseline, which is an `-expected.png` file associated with the test, and the test passes if the image result is identical to the baseline, according to a pixel-by-pixel @@ -444,7 +453,7 @@ pixel results. *** promo -When using `window.testRunner.dumpAsTextWithPixelResults()`, the image result +When using `testRunner.dumpAsTextWithPixelResults()`, the image result will always be 800x600px, because test pages are rendered in an 800x600px viewport. Pixel tests that do not specifically cover scrolling should fit in an 800x600px viewport without creating scrollbars. @@ -475,11 +484,12 @@ ### Tests that need to paint, raster, or draw a frame of intermediate output A layout test does not actually draw frames of output until the test exits. -Tests that need to generate a painted frame can use -`window.testRunner.displayAsyncThen`, which will run the machinery to put up a -frame, then call the passed callback. There is also a library at -`fast/repaint/resources/text-based-repaint.js` to help with writing paint -invalidation and repaint tests. +Tests that need to generate a painted frame can use `runAfterLayoutAndPaint()` +defined in [third_party/WebKit/LayoutTests/resources/run-after-layout-and-paint.js](../../third_party/WebKit/LayoutTests/resources/run-after-layout-and-paint.js) +which will run the machinery to put up a frame, then call the passed callback. +There is also a library at +[third_party/WebKit/LayoutTests/paint/invalidation/resources/text-based-repaint.js](../../third_party/WebKit/LayoutTests/paint/invalidation/resources/text-based-repaint.js) +to help with writing paint invalidation and repaint tests. ## Layout tree tests
diff --git a/extensions/browser/computed_hashes.cc b/extensions/browser/computed_hashes.cc index de77d45..cfe0a9e8 100644 --- a/extensions/browser/computed_hashes.cc +++ b/extensions/browser/computed_hashes.cc
@@ -187,7 +187,7 @@ hashes->push_back(std::string()); std::string* buffer = &(hashes->back()); buffer->resize(crypto::kSHA256Length); - hash->Finish(base::string_as_array(buffer), buffer->size()); + hash->Finish(base::data(*buffer), buffer->size()); // If |contents| is empty, then we want to just exit here. if (bytes_to_read == 0)
diff --git a/extensions/browser/content_hash_tree.cc b/extensions/browser/content_hash_tree.cc index e1298cf4..2e2180f 100644 --- a/extensions/browser/content_hash_tree.cc +++ b/extensions/browser/content_hash_tree.cc
@@ -41,8 +41,7 @@ ++i; } parent_nodes.push_back(std::string(crypto::kSHA256Length, 0)); - std::string* output = &(parent_nodes.back()); - hash->Finish(base::string_as_array(output), output->size()); + hash->Finish(base::data(parent_nodes.back()), crypto::kSHA256Length); } current_nodes.swap(parent_nodes); parent_nodes.clear();
diff --git a/extensions/browser/content_hash_tree_unittest.cc b/extensions/browser/content_hash_tree_unittest.cc index f9be82e..9f7281e 100644 --- a/extensions/browser/content_hash_tree_unittest.cc +++ b/extensions/browser/content_hash_tree_unittest.cc
@@ -43,7 +43,7 @@ std::unique_ptr<SecureHash> hash(SecureHash::Create(SecureHash::SHA256)); hash->Update(node1.data(), node1.size()); hash->Update(node2.data(), node2.size()); - hash->Finish(base::string_as_array(&expected), expected.size()); + hash->Finish(base::data(expected), expected.size()); EXPECT_EQ(expected, ComputeTreeHashRoot(nodes, 16)); }
diff --git a/extensions/browser/content_verify_job.cc b/extensions/browser/content_verify_job.cc index 6b8b36e..01cf9616 100644 --- a/extensions/browser/content_verify_job.cc +++ b/extensions/browser/content_verify_job.cc
@@ -169,7 +169,7 @@ current_hash_ = crypto::SecureHash::Create(crypto::SecureHash::SHA256); } std::string final(crypto::kSHA256Length, 0); - current_hash_->Finish(base::string_as_array(& final), final.size()); + current_hash_->Finish(base::data(final), final.size()); current_hash_.reset(); current_hash_byte_count_ = 0; @@ -220,7 +220,7 @@ if (!queue_.empty()) { std::string tmp; queue_.swap(tmp); - BytesReadImpl(tmp.size(), base::string_as_array(&tmp)); + BytesReadImpl(tmp.size(), base::data(tmp)); if (failed_) return; }
diff --git a/extensions/browser/content_verify_job_unittest.cc b/extensions/browser/content_verify_job_unittest.cc index 69a905b..07171f2 100644 --- a/extensions/browser/content_verify_job_unittest.cc +++ b/extensions/browser/content_verify_job_unittest.cc
@@ -97,7 +97,7 @@ std::string* resource_contents) { // Simulate serving |resource_contents| from |resource_path|. verify_job->BytesRead(resource_contents->size(), - base::string_as_array(resource_contents)); + base::data(*resource_contents)); verify_job->DoneReading(); };
diff --git a/extensions/browser/extension_protocols.cc b/extensions/browser/extension_protocols.cc index c162822d..543b08c 100644 --- a/extensions/browser/extension_protocols.cc +++ b/extensions/browser/extension_protocols.cc
@@ -262,7 +262,7 @@ // proceed; see crbug.com/703888. if (verify_job_.get()) { std::string tmp; - verify_job_->BytesRead(0, base::string_as_array(&tmp)); + verify_job_->BytesRead(0, base::data(tmp)); verify_job_->DoneReading(); } }
diff --git a/extensions/renderer/api/display_source/wifi_display/wifi_display_audio_encoder_lpcm.cc b/extensions/renderer/api/display_source/wifi_display/wifi_display_audio_encoder_lpcm.cc index da067e1d..e829736 100644 --- a/extensions/renderer/api/display_source/wifi_display/wifi_display_audio_encoder_lpcm.cc +++ b/extensions/renderer/api/display_source/wifi_display/wifi_display_audio_encoder_lpcm.cc
@@ -151,8 +151,7 @@ std::string data; int sample_count = fifo_bus_->channels() * fifo_bus_->frames(); data.resize(sample_count * sizeof(uint16_t)); - uint16_t* encoded_samples = - reinterpret_cast<uint16_t*>(base::string_as_array(&data)); + uint16_t* encoded_samples = reinterpret_cast<uint16_t*>(base::data(data)); fifo_bus_->ToInterleaved<media::SignedInt16SampleTypeTraits>( fifo_bus_->frames(), encoded_samples); for (int i = 0; i < sample_count; ++i)
diff --git a/gpu/BUILD.gn b/gpu/BUILD.gn index 2ab169a..ae54d72d 100644 --- a/gpu/BUILD.gn +++ b/gpu/BUILD.gn
@@ -247,6 +247,7 @@ "//base", "//base/test:test_support", "//base/third_party/dynamic_annotations", + "//cc/paint", "//components/viz/test:test_support", "//gpu/command_buffer/client:gles2_c_lib", "//gpu/command_buffer/client:gles2_implementation",
diff --git a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_textures.cc b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_textures.cc index e2267a7..492c4d18 100644 --- a/gpu/command_buffer/service/gles2_cmd_decoder_unittest_textures.cc +++ b/gpu/command_buffer/service/gles2_cmd_decoder_unittest_textures.cc
@@ -3647,13 +3647,14 @@ MOCK_METHOD1(CopyTexImage, bool(unsigned)); MOCK_METHOD3(CopyTexSubImage, bool(unsigned, const gfx::Point&, const gfx::Rect&)); - MOCK_METHOD6(ScheduleOverlayPlane, + MOCK_METHOD7(ScheduleOverlayPlane, bool(gfx::AcceleratedWidget, int, gfx::OverlayTransform, const gfx::Rect&, const gfx::RectF&, - bool)); + bool, + gfx::GpuFence* gpu_fence)); MOCK_METHOD1(SetColorSpace, void(const gfx::ColorSpace&)); MOCK_METHOD0(Flush, void()); MOCK_METHOD3(OnMemoryDump,
diff --git a/gpu/command_buffer/service/raster_decoder.cc b/gpu/command_buffer/service/raster_decoder.cc index 342dcf2b..6de44a8 100644 --- a/gpu/command_buffer/service/raster_decoder.cc +++ b/gpu/command_buffer/service/raster_decoder.cc
@@ -253,6 +253,22 @@ state_->RestoreUnpackState(); } +bool AllowedBetweenBeginEndRaster(CommandId command) { + switch (command) { + case kCreateTransferCacheEntryINTERNAL: + case kDeleteTransferCacheEntryINTERNAL: + case kEndRasterCHROMIUM: + case kFinish: + case kFlush: + case kGetError: + case kRasterCHROMIUM: + case kUnlockTransferCacheEntryINTERNAL: + return true; + default: + return false; + } +} + } // namespace class RasterDecoderImpl final : public RasterDecoder, @@ -1375,12 +1391,12 @@ const volatile CommandBufferEntry* cmd_data = static_cast<const volatile CommandBufferEntry*>(buffer); int process_pos = 0; - unsigned int command = 0; + CommandId command = static_cast<CommandId>(0); while (process_pos < num_entries && result == error::kNoError && commands_to_process_--) { const unsigned int size = cmd_data->value_header.size; - command = cmd_data->value_header.command; + command = static_cast<CommandId>(cmd_data->value_header.command); if (size == 0) { result = error::kInvalidSize; @@ -1401,6 +1417,17 @@ unsigned int command_index = command - kFirstRasterCommand; if (command_index < arraysize(command_info)) { const CommandInfo& info = command_info[command_index]; + if (sk_surface_) { + if (!AllowedBetweenBeginEndRaster(command)) { + LOCAL_SET_GL_ERROR( + GL_INVALID_OPERATION, GetCommandName(command), + "Unexpected command between BeginRasterCHROMIUM and " + "EndRasterCHROMIUM"); + process_pos += size; + cmd_data += size; + continue; + } + } unsigned int info_arg_count = static_cast<unsigned int>(info.arg_count); if ((info.arg_flags == cmd::kFixed && arg_count == info_arg_count) || (info.arg_flags == cmd::kAtLeastN && arg_count >= info_arg_count)) {
diff --git a/gpu/command_buffer/service/texture_definition.cc b/gpu/command_buffer/service/texture_definition.cc index d9576ea4..ee84cb4f 100644 --- a/gpu/command_buffer/service/texture_definition.cc +++ b/gpu/command_buffer/service/texture_definition.cc
@@ -45,7 +45,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) override; + bool enable_blend, + gfx::GpuFence* gpu_fence) override; void SetColorSpace(const gfx::ColorSpace& color_space) override {} void Flush() override {} void OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd, @@ -106,7 +107,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) { + bool enable_blend, + gfx::GpuFence* gpu_fence) { NOTREACHED(); return false; }
diff --git a/gpu/command_buffer/service/texture_manager_unittest.cc b/gpu/command_buffer/service/texture_manager_unittest.cc index eb19af6ca..3a0884b 100644 --- a/gpu/command_buffer/service/texture_manager_unittest.cc +++ b/gpu/command_buffer/service/texture_manager_unittest.cc
@@ -163,7 +163,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) override { + bool enable_blend, + gfx::GpuFence* gpu_fence) override { return false; } void SetColorSpace(const gfx::ColorSpace& color_space) override {}
diff --git a/gpu/command_buffer/tests/texture_image_factory.cc b/gpu/command_buffer/tests/texture_image_factory.cc index fe6ea03..9090e8f 100644 --- a/gpu/command_buffer/tests/texture_image_factory.cc +++ b/gpu/command_buffer/tests/texture_image_factory.cc
@@ -36,7 +36,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) override { + bool enable_blend, + gfx::GpuFence* gpu_fence) override { return false; } void SetColorSpace(const gfx::ColorSpace& color_space) override {}
diff --git a/gpu/config/gpu_info_collector_win.cc b/gpu/config/gpu_info_collector_win.cc index 7af001e..766fbb2 100644 --- a/gpu/config/gpu_info_collector_win.cc +++ b/gpu/config/gpu_info_collector_win.cc
@@ -420,7 +420,6 @@ break; } } - DCHECK(found_active); } } // anonymous namespace
diff --git a/gpu/ipc/client/DEPS b/gpu/ipc/client/DEPS index 864f2d1..1caa6b1 100644 --- a/gpu/ipc/client/DEPS +++ b/gpu/ipc/client/DEPS
@@ -11,6 +11,7 @@ "+components/viz/test/test_gpu_memory_buffer_manager.h", ], "raster_in_process_context_tests.cc": [ + "+cc/paint/color_space_transfer_cache_entry.h", "+components/viz/common/resources/resource_format.h", "+components/viz/common/resources/resource_format_utils.h", "+components/viz/test/test_gpu_memory_buffer_manager.h",
diff --git a/gpu/ipc/client/raster_in_process_context_tests.cc b/gpu/ipc/client/raster_in_process_context_tests.cc index 982b20c..44750405 100644 --- a/gpu/ipc/client/raster_in_process_context_tests.cc +++ b/gpu/ipc/client/raster_in_process_context_tests.cc
@@ -6,6 +6,7 @@ #include "base/threading/thread_task_runner_handle.h" #include "build/build_config.h" +#include "cc/paint/color_space_transfer_cache_entry.h" #include "components/viz/common/resources/resource_format.h" #include "components/viz/common/resources/resource_format_utils.h" #include "components/viz/test/test_gpu_memory_buffer_manager.h" @@ -153,4 +154,36 @@ EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), ri_->GetError()); } +TEST_F(RasterInProcessCommandBufferTest, + WhitelistBetweenBeginEndRasterCHROMIUM) { + // Check for GPU and driver support + if (!context_->GetCapabilities().supports_oop_raster) { + return; + } + + // Create texture and allocate storage. + GLuint texture_id = + ri_->CreateTexture(/*use_buffer=*/false, kBufferUsage, kResourceFormat); + ri_->TexStorage2D(texture_id, 1, kBufferSize.width(), kBufferSize.height()); + EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), ri_->GetError()); + + // Call BeginRasterCHROMIUM. + cc::RasterColorSpace color_space(gfx::ColorSpace::CreateSRGB(), 0); + ri_->BeginRasterCHROMIUM(texture_id, /*sk_color=*/0, /*msaa_sample_count=*/0, + /*can_use_lcd_text=*/false, + viz::ResourceFormatToClosestSkColorType( + /*gpu_compositing=*/true, kResourceFormat), + color_space); + EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), ri_->GetError()); + + // Should flag an error this command is not allowed between a Begin and + // EndRasterCHROMIUM. + ri_->CreateTexture(/*use_buffer=*/false, kBufferUsage, kResourceFormat); + EXPECT_EQ(static_cast<GLenum>(GL_INVALID_OPERATION), ri_->GetError()); + + // Confirm that we skip over without error. + ri_->EndRasterCHROMIUM(); + EXPECT_EQ(static_cast<GLenum>(GL_NO_ERROR), ri_->GetError()); +} + } // namespace gpu
diff --git a/gpu/ipc/service/BUILD.gn b/gpu/ipc/service/BUILD.gn index 7bd0fca..2b4f4c7 100644 --- a/gpu/ipc/service/BUILD.gn +++ b/gpu/ipc/service/BUILD.gn
@@ -48,6 +48,7 @@ } public_deps = [ "//base", + "//components/viz/common", "//ipc", "//ui/base", "//ui/display",
diff --git a/gpu/ipc/service/DEPS b/gpu/ipc/service/DEPS index d7b8d516..07174c2 100644 --- a/gpu/ipc/service/DEPS +++ b/gpu/ipc/service/DEPS
@@ -1,4 +1,5 @@ include_rules = [ + "+components/viz/common/features.h", "+third_party/skia", "+ui/accelerated_widget_mac", "+ui/base",
diff --git a/gpu/ipc/service/direct_composition_surface_win.cc b/gpu/ipc/service/direct_composition_surface_win.cc index 4d7d9d3..06535bf 100644 --- a/gpu/ipc/service/direct_composition_surface_win.cc +++ b/gpu/ipc/service/direct_composition_surface_win.cc
@@ -108,19 +108,14 @@ bool g_supports_scaled_overlays = true; -// This is the raw support info, which shouldn't depend on field trial state. +// This is the raw support info, which shouldn't depend on field trial state, or +// command line flags. bool HardwareSupportsOverlays() { if (!gl::GLSurfaceEGL::IsDirectCompositionSupported()) return false; - base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); - if (command_line->HasSwitch(switches::kEnableDirectCompositionLayers)) - return true; - if (command_line->HasSwitch(switches::kDisableDirectCompositionLayers)) - return false; - - // Before Windows 10 Anniversary Update (Redstone 1), overlay planes - // wouldn't be assigned to non-UWP apps. + // Before Windows 10 Anniversary Update (Redstone 1), overlay planes wouldn't + // be assigned to non-UWP apps. if (base::win::GetVersion() < base::win::VERSION_WIN10_RS1) return false; @@ -1023,7 +1018,8 @@ // much larger than its area on-screen. gfx::Rect bounds_rect = params.rect; - if (workarounds().disable_larger_than_screen_overlays) { + if (workarounds().disable_larger_than_screen_overlays && + !g_overlay_monitor_size.IsEmpty()) { // Because of the rounding when converting between pixels and DIPs, a // fullscreen video can become slightly larger than the monitor - e.g. on // a 3000x2000 monitor with a scale factor of 1.75 a 1920x1079 video can @@ -1216,20 +1212,24 @@ // static bool DirectCompositionSurfaceWin::AreOverlaysSupported() { - static bool initialized; - static bool overlays_supported; - if (initialized) - return overlays_supported; + static bool initialized = false; + static bool overlays_supported = false; - initialized = true; + if (!initialized) { + initialized = true; + overlays_supported = HardwareSupportsOverlays(); + UMA_HISTOGRAM_BOOLEAN("GPU.DirectComposition.OverlaysSupported", + overlays_supported); + } - overlays_supported = - HardwareSupportsOverlays() && - base::FeatureList::IsEnabled(switches::kDirectCompositionOverlays); + base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); + if (command_line->HasSwitch(switches::kDisableDirectCompositionLayers)) + return false; + if (command_line->HasSwitch(switches::kEnableDirectCompositionLayers)) + return true; - UMA_HISTOGRAM_BOOLEAN("GPU.DirectComposition.OverlaysSupported", - overlays_supported); - return overlays_supported; + return base::FeatureList::IsEnabled(switches::kDirectCompositionOverlays) && + overlays_supported; } void DirectCompositionSurfaceWin::EnableScaledOverlaysForTesting() {
diff --git a/gpu/ipc/service/image_transport_surface_win.cc b/gpu/ipc/service/image_transport_surface_win.cc index 3dd49be..18340921e 100644 --- a/gpu/ipc/service/image_transport_surface_win.cc +++ b/gpu/ipc/service/image_transport_surface_win.cc
@@ -7,6 +7,7 @@ #include <memory> #include "base/win/windows_version.h" +#include "components/viz/common/features.h" #include "gpu/command_buffer/service/gpu_preferences.h" #include "gpu/ipc/service/direct_composition_surface_win.h" #include "gpu/ipc/service/gpu_vsync_provider_win.h" @@ -24,6 +25,12 @@ namespace { bool IsGpuVSyncSignalSupported() { + // TODO(crbug.com/787814): D3DVsync needs to be rewritten to work with + // OOP-D. It's no longer requires any IPC, just an ExternalBeginFrameSource, + // so it should be much simpler. + if (base::FeatureList::IsEnabled(features::kVizDisplayCompositor)) + return false; + // TODO(stanisc): http://crbug.com/467617 Limit to Windows 8.1+ for now // because of locking issue caused by waiting for VSync on Win7 and Win 8.0. return base::win::GetVersion() >= base::win::VERSION_WIN8_1 &&
diff --git a/gpu/ipc/service/stream_texture_android.cc b/gpu/ipc/service/stream_texture_android.cc index 4e2e73b..03d32e7a 100644 --- a/gpu/ipc/service/stream_texture_android.cc +++ b/gpu/ipc/service/stream_texture_android.cc
@@ -237,7 +237,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) { + bool enable_blend, + gfx::GpuFence* gpu_fence) { NOTREACHED(); return false; }
diff --git a/gpu/ipc/service/stream_texture_android.h b/gpu/ipc/service/stream_texture_android.h index b3939b6..78aecbbf 100644 --- a/gpu/ipc/service/stream_texture_android.h +++ b/gpu/ipc/service/stream_texture_android.h
@@ -56,7 +56,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) override; + bool enable_blend, + gfx::GpuFence* gpu_fence) override; void SetColorSpace(const gfx::ColorSpace& color_space) override {} void Flush() override {} void OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd,
diff --git a/gpu/vulkan/vulkan_command_buffer.cc b/gpu/vulkan/vulkan_command_buffer.cc index 2519026..c2c8d1a 100644 --- a/gpu/vulkan/vulkan_command_buffer.cc +++ b/gpu/vulkan/vulkan_command_buffer.cc
@@ -78,6 +78,8 @@ VkSemaphore* wait_semaphores, uint32_t num_signal_semaphores, VkSemaphore* signal_semaphores) { + VkPipelineStageFlags wait_dst_stage_mask = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT; + DCHECK(primary_); VkSubmitInfo submit_info = {}; submit_info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; @@ -85,6 +87,7 @@ submit_info.pCommandBuffers = &command_buffer_; submit_info.waitSemaphoreCount = num_wait_semaphores; submit_info.pWaitSemaphores = wait_semaphores; + submit_info.pWaitDstStageMask = &wait_dst_stage_mask; submit_info.signalSemaphoreCount = num_signal_semaphores; submit_info.pSignalSemaphores = signal_semaphores;
diff --git a/gpu/vulkan/vulkan_render_pass.cc b/gpu/vulkan/vulkan_render_pass.cc index a3aeda2..bfae3ef 100644 --- a/gpu/vulkan/vulkan_render_pass.cc +++ b/gpu/vulkan/vulkan_render_pass.cc
@@ -297,7 +297,7 @@ switch (attachment_data.attachment_type) { case AttachmentType::ATTACHMENT_TYPE_SWAP_IMAGE: - image_view = swap_chain->GetImageView(n); + image_view = swap_chain->GetImageView(i); break; case AttachmentType::ATTACHMENT_TYPE_ATTACHMENT_VIEW: image_view = attachment_data.image_view;
diff --git a/gpu/vulkan/vulkan_surface.cc b/gpu/vulkan/vulkan_surface.cc index 4344362..6b1c233b 100644 --- a/gpu/vulkan/vulkan_surface.cc +++ b/gpu/vulkan/vulkan_surface.cc
@@ -72,6 +72,21 @@ #endif DCHECK_NE(static_cast<VkSurfaceKHR>(VK_NULL_HANDLE), surface_); + + VkBool32 present_support; + if (vkGetPhysicalDeviceSurfaceSupportKHR( + device_queue->GetVulkanPhysicalDevice(), + device_queue->GetVulkanQueueIndex(), surface_, + &present_support) != VK_SUCCESS) { + DLOG(ERROR) << "vkGetPhysicalDeviceSurfaceSupportKHR() failed: " + << result; + return false; + } + if (!present_support) { + DLOG(ERROR) << "Surface not supported by present queue."; + return false; + } + DCHECK(device_queue); device_queue_ = device_queue;
diff --git a/infra/config/branch/cq.cfg b/infra/config/branch/cq.cfg index fc54e79..96dcb9a5 100644 --- a/infra/config/branch/cq.cfg +++ b/infra/config/branch/cq.cfg
@@ -34,10 +34,13 @@ builders { name: "android_arm64_dbg_recipe" } builders { name: "android_cronet" } builders { name: "cast_shell_linux" } + builders { name: "chromeos-amd64-generic-rel" } + builders { name: "chromeos-daisy-rel" } builders { name: "chromium_presubmit" } builders { name: "fuchsia_arm64" } builders { name: "fuchsia_x64" } builders { name: "ios-simulator" } + builders { name: "linux-chromeos-rel" } builders { name: "linux-ozone-rel" } builders { name: "linux_chromium_compile_dbg_ng" } builders { name: "linux_chromium_asan_rel_ng" } @@ -52,7 +55,7 @@ name: "master.tryserver.chromium.android" builders { name: "android_clang_dbg_recipe" - equivalent_to { bucket: "luci.chromium.try" percentage: 0 } + equivalent_to { bucket: "luci.chromium.try" percentage: 10 } } builders { name: "android_compile_dbg" @@ -72,21 +75,6 @@ } } buckets { - name: "master.tryserver.chromium.chromiumos" - builders { - name: "chromeos-amd64-generic-rel" - equivalent_to { bucket: "luci.chromium.try" percentage: 100 } - } - builders { - name: "chromeos-daisy-rel" - equivalent_to { bucket: "luci.chromium.try" percentage: 100 } - } - builders { - name: "linux-chromeos-rel" - equivalent_to { bucket: "luci.chromium.try" percentage: 100 } - } - } - buckets { name: "master.tryserver.chromium.linux" builders { name: "linux_chromium_headless_rel"
diff --git a/infra/config/global/cr-buildbucket.cfg b/infra/config/global/cr-buildbucket.cfg index 318e450..0f5a17dd9 100644 --- a/infra/config/global/cr-buildbucket.cfg +++ b/infra/config/global/cr-buildbucket.cfg
@@ -580,6 +580,12 @@ } builders { + name: "Cast Android (dbg)" + mixins: "android-ci" + dimensions: "os:Ubuntu-14.04" + } + + builders { name: "Deterministic Android" mixins: "android-ci" recipe { @@ -1345,6 +1351,11 @@ name: "android_n5x_swarming_dbg" dimensions: "os:Ubuntu-14.04" } + builders { + mixins: "android-try" + name: "cast_shell_android" + dimensions: "os:Ubuntu-14.04" + } builders { mixins: "android-optional-gpu-try" name: "android_optional_gpu_tests_rel" } builders { mixins: "chromeos-try" name: "chromeos-amd64-generic-rel" }
diff --git a/infra/config/global/luci-milo.cfg b/infra/config/global/luci-milo.cfg index 03df720..9d28ad6 100644 --- a/infra/config/global/luci-milo.cfg +++ b/infra/config/global/luci-milo.cfg
@@ -335,7 +335,6 @@ short_name: "32" } builders { - name: "buildbot/chromium.win/Win x64 Builder" name: "buildbucket/luci.chromium.ci/Win x64 Builder" category: "chromium.win|release|builder" short_name: "64" @@ -353,13 +352,11 @@ short_name: "32" } builders { - name: "buildbot/chromium.win/Win 7 Tests x64 (1)" name: "buildbucket/luci.chromium.ci/Win 7 Tests x64 (1)" category: "chromium.win|release|tester" short_name: "64" } builders { - name: "buildbot/chromium.win/Win10 Tests x64" name: "buildbucket/luci.chromium.ci/Win10 Tests x64" category: "chromium.win|release|tester" short_name: "w10" @@ -370,13 +367,11 @@ short_name: "64" } builders { - name: "buildbot/chromium.win/Win Builder (dbg)" name: "buildbucket/luci.chromium.ci/Win Builder (dbg)" category: "chromium.win|debug|builder" short_name: "32" } builders { - name: "buildbot/chromium.win/Win7 Tests (dbg)(1)" name: "buildbucket/luci.chromium.ci/Win7 Tests (dbg)(1)" category: "chromium.win|debug|tester" short_name: "7" @@ -542,7 +537,6 @@ short_name: "ful" } builders { - name: "buildbot/chromium.chromiumos/linux-chromeos-rel" name: "buildbucket/luci.chromium.ci/linux-chromeos-rel" category: "chromium.chromiumos|default" short_name: "rel" @@ -553,13 +547,11 @@ short_name: "dbg" } builders { - name: "buildbot/chromium.chromiumos/chromeos-amd64-generic-rel" name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel" category: "chromium.chromiumos|simple|release" short_name: "x64" } builders { - name: "buildbot/chromium.chromiumos/chromeos-daisy-rel" name: "buildbucket/luci.chromium.ci/chromeos-daisy-rel" category: "chromium.chromiumos|simple|release" short_name: "dsy" @@ -585,31 +577,26 @@ short_name: "cro" } builders { - name: "buildbot/chromium.memory/Linux TSan Builder" name: "buildbucket/luci.chromium.ci/Linux TSan Builder" category: "chromium.memory|linux|TSan v2" short_name: "bld" } builders { - name: "buildbot/chromium.memory/Linux TSan Tests" name: "buildbucket/luci.chromium.ci/Linux TSan Tests" category: "chromium.memory|linux|TSan v2" short_name: "tst" } builders { - name: "buildbot/chromium.memory/Linux ASan LSan Builder" name: "buildbucket/luci.chromium.ci/Linux ASan LSan Builder" category: "chromium.memory|linux|asan lsan" short_name: "bld" } builders { - name: "buildbot/chromium.memory/Linux ASan LSan Tests (1)" name: "buildbucket/luci.chromium.ci/Linux ASan LSan Tests (1)" category: "chromium.memory|linux|asan lsan" short_name: "tst" } builders { - name: "buildbot/chromium.memory/Linux ASan Tests (sandboxed)" name: "buildbucket/luci.chromium.ci/Linux ASan Tests (sandboxed)" category: "chromium.memory|linux|asan lsan" short_name: "sbx" @@ -1610,36 +1597,6 @@ short_name: "(ಥ_ಥ)" } builders { - name: "buildbot/chromium.memory/Linux ASan LSan Builder" - category: "chromium.memory|asan|builder" - short_name: "bb" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ASan LSan Builder" - category: "chromium.memory|asan|builder" - short_name: "ci" - } - builders { - name: "buildbot/chromium.memory/Linux ASan LSan Tests (1)" - category: "chromium.memory|asan|tester" - short_name: "bb" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ASan LSan Tests (1)" - category: "chromium.memory|asan|tester" - short_name: "ci" - } - builders { - name: "buildbot/chromium.memory/Linux ASan Tests (sandboxed)" - category: "chromium.memory|asan|tester|sandbox" - short_name: "bb" - } - builders { - name: "buildbucket/luci.chromium.ci/Linux ASan Tests (sandboxed)" - category: "chromium.memory|asan|tester|sandbox" - short_name: "ci" - } - builders { name: "buildbot/chromium.fyi/Headless Linux (dbg)" category: "chromium.fyi|linux|debug" short_name: "bb" @@ -1739,36 +1696,6 @@ category: "android|builder|arm|tester|32" short_name: "bb" } - builders { - name: "buildbucket/luci.chromium.ci/linux-chromeos-rel" - category: "cros|rel" - short_name: "ᕕ(ᐛ)ᕗ" - } - builders { - name: "buildbot/chromium.chromiumos/linux-chromeos-rel" - category: "cros|rel" - short_name: "(ಥ_ಥ)" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-amd64-generic-rel" - category: "cros|simple|x64" - short_name: "ᕕ(ᐛ)ᕗ" - } - builders { - name: "buildbot/chromium.chromiumos/chromeos-amd64-generic-rel" - category: "cros|simple|x64" - short_name: "(ಥ_ಥ)" - } - builders { - name: "buildbucket/luci.chromium.ci/chromeos-daisy-rel" - category: "cros|simple|dsy" - short_name: "ᕕ(ᐛ)ᕗ" - } - builders { - name: "buildbot/chromium.chromiumos/chromeos-daisy-rel" - category: "cros|simple|dsy" - short_name: "(ಥ_ಥ)" - } include_experimental_builds: true } @@ -4135,11 +4062,9 @@ manifest_name: "REVISION" builders { name: "buildbot/tryserver.chromium.chromiumos/chromeos-amd64-generic-rel" - name: "buildbucket/luci.chromium.try/chromeos-amd64-generic-rel" } builders { name: "buildbot/tryserver.chromium.chromiumos/chromeos-daisy-rel" - name: "buildbucket/luci.chromium.try/chromeos-daisy-rel" } builders { name: "buildbot/tryserver.chromium.chromiumos/linux-chromeos-compile-dbg" @@ -4149,7 +4074,6 @@ } builders { name: "buildbot/tryserver.chromium.chromiumos/linux-chromeos-rel" - name: "buildbucket/luci.chromium.try/linux-chromeos-rel" } builder_view_only: true } @@ -4677,7 +4601,10 @@ name: "buildbucket/luci.chromium.try/cast_shell_linux" } builders { - name: "buildbucket/luci.chromium.try/chromeos_amd64-generic_chromium_compile_only_ng" + name: "buildbucket/luci.chromium.try/chromeos-amd64-generic-rel" + } + builders { + name: "buildbucket/luci.chromium.try/chromeos-daisy-rel" } builders { name: "buildbucket/luci.chromium.try/chromeos_amd64-generic_chromium_compile_only_ng" @@ -4719,6 +4646,9 @@ name: "buildbucket/luci.chromium.try/linux-blink-heap-verification-try" } builders { + name: "buildbucket/luci.chromium.try/linux-chromeos-rel" + } + builders { name: "buildbucket/luci.chromium.try/linux-jumbo-rel" } builders {
diff --git a/infra/config/global/luci-scheduler.cfg b/infra/config/global/luci-scheduler.cfg index b28700cd..bdc3035 100644 --- a/infra/config/global/luci-scheduler.cfg +++ b/infra/config/global/luci-scheduler.cfg
@@ -70,6 +70,7 @@ triggers: "Android x64 Builder (dbg)" triggers: "Android x86 Builder (dbg)" triggers: "android-kitkat-arm-rel" + triggers: "Cast Android (dbg)" triggers: "Deterministic Android" triggers: "Deterministic Android (dbg)" triggers: "Optional Android Release (Nexus 5X)" @@ -392,6 +393,16 @@ } job { + id: "Cast Android (dbg)" + acl_sets: "default" + buildbucket: { + server: "cr-buildbucket.appspot.com" + bucket: "luci.chromium.ci" + builder: "Cast Android (dbg)" + } +} + +job { id: "Deterministic Android" acl_sets: "default" buildbucket: {
diff --git a/ios/build/bots/chromium.fyi/ios-webview.json b/ios/build/bots/chromium.fyi/ios-webview.json index 32c14d1..94ce25d 100644 --- a/ios/build/bots/chromium.fyi/ios-webview.json +++ b/ios/build/bots/chromium.fyi/ios-webview.json
@@ -1,10 +1,11 @@ { "comments": [ - "Run web_view tests for 64-bit iOS 10.0 simulators on FYI ios-webview." + "Run tests on iOS11beta track on 64-bit iOS 11 simulators on FYI ios-webview." ], - "xcode build version": "9C40b", + "xcode build version": "9q1019a", "gn_args": [ "goma_dir=\"$(goma_dir)\"", + "additional_target_cpus=[\"x86\"]", "is_component_build=false", "is_debug=true", "symbol_level=1", @@ -14,107 +15,46 @@ ], "tests": [ { - "app": "ios_web_view_unittests", - "device type": "iPhone 5s", - "os": "10.0", - "xcode build version": "8A218a", - "comments": [ - "Xcode 8.0 requires Mac-10.11.5+ and we still have 10.10 bots" - ], - "dimensions": [ - { "os": "Mac-10.11.6", "pool": "Chrome" }, - { "os": "Mac-10.12", "pool": "Chrome" }, - { "os": "Mac-10.13", "pool": "Chrome" } - ] + "include": "common_tests.json", + "device type": "iPhone X", + "os": "11.4", + "host os": "Mac-10.13", + "xcode build version": "9q1019a" }, { - "app": "ios_web_view_inttests", - "device type": "iPhone 5s", - "os": "10.0", - "xcode build version": "8A218a", - "dimensions": [ - { "os": "Mac-10.11.6", "pool": "Chrome" }, - { "os": "Mac-10.12", "pool": "Chrome" }, - { "os": "Mac-10.13", "pool": "Chrome" } - ] + "include": "common_tests.json", + "device type": "iPad Air", + "os": "11.4", + "host os": "Mac-10.13", + "xcode build version": "9q1019a" }, { - "app": "ios_components_unittests", + "include": "common_tests.json", "device type": "iPhone 5s", - "os": "10.0", - "xcode build version": "8A218a", - "dimensions": [ - { "os": "Mac-10.11.6", "pool": "Chrome" }, - { "os": "Mac-10.12", "pool": "Chrome" }, - { "os": "Mac-10.13", "pool": "Chrome" } - ] + "os": "11.4", + "host os": "Mac-10.13", + "xcode build version": "9q1019a" }, { - "app": "components_unittests", - "device type": "iPhone 5s", - "os": "10.0", - "xcode build version": "8A218a", - "dimensions": [ - { "os": "Mac-10.11.6", "pool": "Chrome" }, - { "os": "Mac-10.12", "pool": "Chrome" }, - { "os": "Mac-10.13", "pool": "Chrome" } - ] + "include": "earl_grey_tests.json", + "device type": "iPhone X", + "os": "11.4", + "host os": "Mac-10.13", + "xcode build version": "9q1019a" }, { - "app": "net_unittests", - "device type": "iPhone 5s", - "os": "10.0", - "xcode build version": "8A218a", - "dimensions": [ - { "os": "Mac-10.11.6", "pool": "Chrome" }, - { "os": "Mac-10.12", "pool": "Chrome" }, - { "os": "Mac-10.13", "pool": "Chrome" } - ] + "include": "earl_grey_tests.json", + "device type": "iPad Air", + "os": "11.4", + "host os": "Mac-10.13", + "xcode build version": "9q1019a" }, { - "app": "ios_net_unittests", + "include": "earl_grey_tests.json", "device type": "iPhone 5s", - "os": "10.0", - "xcode build version": "8A218a", - "dimensions": [ - { "os": "Mac-10.11.6", "pool": "Chrome" }, - { "os": "Mac-10.12", "pool": "Chrome" }, - { "os": "Mac-10.13", "pool": "Chrome" } - ] - }, - { - "app": "ios_web_unittests", - "device type": "iPhone 5s", - "os": "10.0", - "xcode build version": "8A218a", - "dimensions": [ - { "os": "Mac-10.11.6", "pool": "Chrome" }, - { "os": "Mac-10.12", "pool": "Chrome" }, - { "os": "Mac-10.13", "pool": "Chrome" } - ] - }, - { - "app": "ios_web_inttests", - "device type": "iPhone 5s", - "os": "10.0", - "xcode build version": "8A218a", - "dimensions": [ - { "os": "Mac-10.11.6", "pool": "Chrome" }, - { "os": "Mac-10.12", "pool": "Chrome" }, - { "os": "Mac-10.13", "pool": "Chrome" } - ] - }, - { - "app": "ios_web_shell_egtests", - "xctest": true, - "device type": "iPhone 5s", - "os": "10.0", - "xcode build version": "8A218a", - "dimensions": [ - { "os": "Mac-10.11.6", "pool": "Chrome" }, - { "os": "Mac-10.12", "pool": "Chrome" }, - { "os": "Mac-10.13", "pool": "Chrome" } - ] + "os": "11.4", + "host os": "Mac-10.13", + "xcode build version": "9q1019a" } ] }
diff --git a/ios/chrome/app/strings/ios_strings.grd b/ios/chrome/app/strings/ios_strings.grd index 030eb4b..cd508eb 100644 --- a/ios/chrome/app/strings/ios_strings.grd +++ b/ios/chrome/app/strings/ios_strings.grd
@@ -1568,6 +1568,9 @@ <message name="IDS_IOS_TOOLBAR_CLOSE_MENU" desc="The accessibility label for the toolbar close settings menu button [iOS only]."> Close Menu </message> + <message name="IDS_IOS_TOOLBAR_SEARCH" desc="Label of the button allowing the user to focus the address bar when tapped. As usual, when the address bar is focused, the user can type a URL or a text to be searched on the internet. Read by Text-to-Speech." meaning="Search the internet. Read by Text-to-Speech."> + Search + </message> <message name="IDS_IOS_TOOLBAR_SETTINGS" desc="The accessibility label for the toolbar open settings menu button [iOS only]."> Menu </message>
diff --git a/ios/chrome/browser/about_flags.mm b/ios/chrome/browser/about_flags.mm index 25edfb1..cfec7066 100644 --- a/ios/chrome/browser/about_flags.mm +++ b/ios/chrome/browser/about_flags.mm
@@ -207,6 +207,9 @@ {"new-file-download", flag_descriptions::kNewFileDownloadName, flag_descriptions::kNewFileDownloadDescription, flags_ui::kOsIos, FEATURE_VALUE_TYPE(web::features::kNewFileDownload)}, + {"web-error-pages", flag_descriptions::kWebErrorPagesName, + flag_descriptions::kWebErrorPagesDescription, flags_ui::kOsIos, + FEATURE_VALUE_TYPE(web::features::kWebErrorPages)}, {"memex-tab-switcher", flag_descriptions::kMemexTabSwitcherName, flag_descriptions::kMemexTabSwitcherDescription, flags_ui::kOsIos, FEATURE_VALUE_TYPE(kMemexTabSwitcher)},
diff --git a/ios/chrome/browser/ios_chrome_flag_descriptions.cc b/ios/chrome/browser/ios_chrome_flag_descriptions.cc index b6c8cc4..c163514c 100644 --- a/ios/chrome/browser/ios_chrome_flag_descriptions.cc +++ b/ios/chrome/browser/ios_chrome_flag_descriptions.cc
@@ -179,6 +179,13 @@ "When enabled, uses new Download Manager UI and ios/web Download API as " "backend."; +const char kWebErrorPagesName[] = + "Present load errors in web contents area, instead of using " + "CRWNativeContent"; +const char kWebErrorPagesDescription[] = + "When enabled the error pages will load in web contents area, instead of " + "presenting CRWNativeContent. Does not have sensible UI changes."; + const char kShowAutofillTypePredictionsName[] = "Show Autofill predictions"; const char kShowAutofillTypePredictionsDescription[] = "Annotates web forms with Autofill field type predictions as placeholder "
diff --git a/ios/chrome/browser/ios_chrome_flag_descriptions.h b/ios/chrome/browser/ios_chrome_flag_descriptions.h index 836a5aa..a407e757 100644 --- a/ios/chrome/browser/ios_chrome_flag_descriptions.h +++ b/ios/chrome/browser/ios_chrome_flag_descriptions.h
@@ -150,6 +150,10 @@ extern const char kNewFileDownloadName[]; extern const char kNewFileDownloadDescription[]; +// Title and description for the flag to enable web based error pages. +extern const char kWebErrorPagesName[]; +extern const char kWebErrorPagesDescription[]; + // Title and description for the flag to enable annotating web forms with // Autofill field type predictions as placeholder. extern const char kShowAutofillTypePredictionsName[];
diff --git a/ios/chrome/browser/ui/popup_menu/popup_menu_view_controller.mm b/ios/chrome/browser/ui/popup_menu/popup_menu_view_controller.mm index 73af063b..b544baa 100644 --- a/ios/chrome/browser/ui/popup_menu/popup_menu_view_controller.mm +++ b/ios/chrome/browser/ui/popup_menu/popup_menu_view_controller.mm
@@ -7,6 +7,8 @@ #import "ios/chrome/browser/ui/commands/browser_commands.h" #import "ios/chrome/browser/ui/image_util/image_util.h" #import "ios/chrome/browser/ui/util/constraints_ui_util.h" +#include "ios/chrome/grit/ios_strings.h" +#include "ui/base/l10n/l10n_util.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." @@ -19,7 +21,7 @@ const CGFloat kBackgroundAlpha = 0.65; } // namespace -@interface PopupMenuViewController ()<UIGestureRecognizerDelegate> +@interface PopupMenuViewController () // Redefined as readwrite. @property(nonatomic, strong, readwrite) UIView* contentContainer; @end @@ -34,12 +36,20 @@ - (instancetype)init { self = [super initWithNibName:nil bundle:nil]; if (self) { + UIButton* closeButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [closeButton addTarget:self + action:@selector(dismissPopup) + forControlEvents:UIControlEventTouchUpInside]; + closeButton.accessibilityLabel = + l10n_util::GetNSString(IDS_IOS_TOOLBAR_CLOSE_MENU); + closeButton.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:closeButton]; + AddSameConstraints(self.view, closeButton); [self setUpContentContainer]; - UITapGestureRecognizer* gestureRecognizer = [[UITapGestureRecognizer alloc] - initWithTarget:self - action:@selector(touchOnScrim:)]; - gestureRecognizer.delegate = self; - [self.view addGestureRecognizer:gestureRecognizer]; + + self.view.accessibilityViewIsModal = YES; + UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, + closeButton); } return self; } @@ -91,18 +101,8 @@ } // Handler receiving the touch event on the background scrim. -- (void)touchOnScrim:(UITapGestureRecognizer*)recognizer { - if (recognizer.state == UIGestureRecognizerStateEnded) { - [self.commandHandler dismissPopupMenuAnimated:YES]; - } -} - -#pragma mark - UIGestureRecognizerDelegate - -- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer - shouldReceiveTouch:(UITouch*)touch { - // Only get the touch on the scrim. - return touch.view == self.view; +- (void)dismissPopup { + [self.commandHandler dismissPopupMenuAnimated:YES]; } @end
diff --git a/ios/chrome/browser/ui/toolbar/buttons/toolbar_button_factory.mm b/ios/chrome/browser/ui/toolbar/buttons/toolbar_button_factory.mm index 14cda68..8eb14b3 100644 --- a/ios/chrome/browser/ui/toolbar/buttons/toolbar_button_factory.mm +++ b/ios/chrome/browser/ui/toolbar/buttons/toolbar_button_factory.mm
@@ -419,6 +419,8 @@ [omniboxButton addTarget:self.dispatcher action:@selector(focusOmniboxFromSearchButton) forControlEvents:UIControlEventTouchUpInside]; + omniboxButton.accessibilityLabel = + l10n_util::GetNSString(IDS_IOS_TOOLBAR_SEARCH); omniboxButton.accessibilityIdentifier = kToolbarOmniboxButtonIdentifier; UIView* background = [[UIView alloc] init];
diff --git a/ios/web/web_state/http_auth_inttest.mm b/ios/web/web_state/http_auth_inttest.mm index 92cae78..91bc2c5 100644 --- a/ios/web/web_state/http_auth_inttest.mm +++ b/ios/web/web_state/http_auth_inttest.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. -#include <memory> - #include "base/strings/sys_string_conversions.h" -#include "base/test/ios/wait_util.h" -#import "ios/web/public/navigation_manager.h" -#import "ios/web/public/test/http_server/http_auth_response_provider.h" -#import "ios/web/public/test/http_server/http_server.h" -#include "ios/web/public/test/http_server/http_server_util.h" -#import "ios/web/test/web_int_test.h" +#include "base/strings/utf_string_conversions.h" +#import "ios/testing/wait_util.h" +#import "ios/web/public/test/fakes/test_web_state_delegate.h" +#import "ios/web/public/test/js_test_util.h" +#import "ios/web/public/test/navigation_test_util.h" +#import "ios/web/public/test/web_test_with_web_state.h" +#include "net/test/embedded_test_server/default_handlers.h" +#include "net/test/embedded_test_server/embedded_test_server.h" #import "testing/gtest_mac.h" #include "url/gurl.h" @@ -18,109 +18,99 @@ #error "This file requires ARC support." #endif +using testing::WaitUntilConditionOrTimeout; + namespace web { -using test::HttpServer; - // Test fixture for WebStateDelegate::OnAuthRequired integration tests. -class HttpAuthTest : public WebIntTest { +class HttpAuthTest : public WebTestWithWebState { protected: + void SetUp() override { + WebTestWithWebState::SetUp(); + web_state()->SetDelegate(&delegate_); + RegisterDefaultHandlers(&server_); + ASSERT_TRUE(server_.Start()); + } // Waits until WebStateDelegate::OnAuthRequired callback is called. - void WaitForOnAuthRequiredCallback() { - web_state_delegate_.ClearLastAuthenticationRequest(); - base::test::ios::WaitUntilCondition(^bool { - return web_state_delegate_.last_authentication_request(); + bool WaitForOnAuthRequiredCallback() WARN_UNUSED_RESULT { + delegate_.ClearLastAuthenticationRequest(); + return WaitUntilConditionOrTimeout(testing::kWaitForPageLoadTimeout, ^bool { + return delegate_.last_authentication_request(); }); } - - // Loads a page with URL and waits for OnAuthRequired callback. - void LoadUrlWithAuthChallenge(const GURL& url) { - NavigationManager::WebLoadParams params(url); - navigation_manager()->LoadURLWithParams(params); - WaitForOnAuthRequiredCallback(); - } - - // Authenticates and waits until the page finishes loading. - void Authenticate(NSString* username, NSString* password) { - ASSERT_TRUE(web_state()->IsLoading()); - auto* auth_request = web_state_delegate_.last_authentication_request(); - auth_request->auth_callback.Run(username, password); - base::test::ios::WaitUntilCondition(^bool { - return !web_state()->IsLoading(); - }); - } + net::EmbeddedTestServer server_; + TestWebStateDelegate delegate_; }; // Tests successful basic authentication. TEST_F(HttpAuthTest, SuccessfullBasicAuth) { // Load the page which requests basic HTTP authentication. - GURL url = HttpServer::MakeUrl("http://good-auth"); - test::SetUpHttpServer(std::make_unique<HttpAuthResponseProvider>( - url, "GoodRealm", "gooduser", "goodpass")); - LoadUrlWithAuthChallenge(url); + GURL url = server_.GetURL("/auth-basic?password=goodpass&realm=Realm1"); + test::LoadUrl(web_state(), url); + ASSERT_TRUE(WaitForOnAuthRequiredCallback()); // Verify that callback receives correct WebState. - auto* auth_request = web_state_delegate_.last_authentication_request(); + auto* auth_request = delegate_.last_authentication_request(); EXPECT_EQ(web_state(), auth_request->web_state); // Verify that callback receives correctly configured protection space. NSURLProtectionSpace* protection_space = auth_request->protection_space; - EXPECT_NSEQ(@"GoodRealm", protection_space.realm); + EXPECT_NSEQ(@"Realm1", protection_space.realm); EXPECT_FALSE(protection_space.receivesCredentialSecurely); EXPECT_FALSE([protection_space isProxy]); EXPECT_EQ(url.host(), base::SysNSStringToUTF8(protection_space.host)); - EXPECT_EQ( - base::checked_cast<uint16_t>(HttpServer::GetSharedInstance().GetPort()), - base::checked_cast<uint16_t>(protection_space.port)); + EXPECT_EQ(server_.port(), + base::checked_cast<uint16_t>(protection_space.port)); EXPECT_FALSE(protection_space.proxyType); EXPECT_NSEQ(NSURLProtectionSpaceHTTP, protection_space.protocol); EXPECT_NSEQ(NSURLAuthenticationMethodHTTPBasic, protection_space.authenticationMethod); // Make sure that authenticated page renders expected text. - Authenticate(@"gooduser", @"goodpass"); - id document_body = ExecuteJavaScript(@"document.body.innerHTML"); - EXPECT_EQ(HttpAuthResponseProvider::page_text(), - base::SysNSStringToUTF8(document_body)); + ASSERT_TRUE(web_state()->IsLoading()); + auth_request = delegate_.last_authentication_request(); + ASSERT_TRUE(auth_request); + auth_request->auth_callback.Run(@"me", @"goodpass"); + ASSERT_TRUE(WaitUntilConditionOrTimeout(testing::kWaitForPageLoadTimeout, ^{ + return web_state()->GetTitle() == base::ASCIIToUTF16("me/goodpass"); + })); } // Tests unsuccessful basic authentication. TEST_F(HttpAuthTest, UnsucessfulBasicAuth) { // Load the page which requests basic HTTP authentication. - GURL url = HttpServer::MakeUrl("http://bad-auth"); - test::SetUpHttpServer(std::make_unique<HttpAuthResponseProvider>( - url, "BadRealm", "baduser", "badpass")); - LoadUrlWithAuthChallenge(url); + GURL url = server_.GetURL("/auth-basic?password=goodpass&realm=Realm2"); + test::LoadUrl(web_state(), url); + ASSERT_TRUE(WaitForOnAuthRequiredCallback()); // Make sure that incorrect credentials request authentication again. - auto* auth_request = web_state_delegate_.last_authentication_request(); - auth_request->auth_callback.Run(@"gooduser", @"goodpass"); - WaitForOnAuthRequiredCallback(); + auto* auth_request = delegate_.last_authentication_request(); + auth_request->auth_callback.Run(@"me", @"badpass"); + ASSERT_TRUE(WaitForOnAuthRequiredCallback()); // Verify that callback receives correct WebState. - auth_request = web_state_delegate_.last_authentication_request(); + auth_request = delegate_.last_authentication_request(); EXPECT_EQ(web_state(), auth_request->web_state); // Verify that callback receives correctly configured protection space. NSURLProtectionSpace* protection_space = auth_request->protection_space; - EXPECT_NSEQ(@"BadRealm", protection_space.realm); + EXPECT_NSEQ(@"Realm2", protection_space.realm); EXPECT_FALSE(protection_space.receivesCredentialSecurely); EXPECT_FALSE([protection_space isProxy]); EXPECT_EQ(url.host(), base::SysNSStringToUTF8(protection_space.host)); - EXPECT_EQ( - base::checked_cast<uint16_t>(HttpServer::GetSharedInstance().GetPort()), - base::checked_cast<uint16_t>(protection_space.port)); + EXPECT_EQ(server_.port(), + base::checked_cast<uint16_t>(protection_space.port)); EXPECT_FALSE(protection_space.proxyType); EXPECT_NSEQ(NSURLProtectionSpaceHTTP, protection_space.protocol); EXPECT_NSEQ(NSURLAuthenticationMethodHTTPBasic, protection_space.authenticationMethod); - // Cancel authentication and make sure that the page is blank. - auth_request->auth_callback.Run(nil, nil); - base::test::ios::WaitUntilCondition(^bool { - return !web_state()->IsLoading(); - }); - EXPECT_FALSE(ExecuteJavaScript(@"window.document")); + // Cancel authentication and make sure that authentication is denied. + auth_request->auth_callback.Run(/*username=*/nil, /*password=*/nil); + ASSERT_TRUE(WaitUntilConditionOrTimeout(testing::kWaitForPageLoadTimeout, ^{ + return web_state()->GetTitle() == + base::ASCIIToUTF16("Denied: Missing Authorization Header"); + })); } } // web
diff --git a/ios/web/web_state/navigation_and_load_callbacks_inttest.mm b/ios/web/web_state/navigation_and_load_callbacks_inttest.mm index 90520ae..f0de8d4 100644 --- a/ios/web/web_state/navigation_and_load_callbacks_inttest.mm +++ b/ios/web/web_state/navigation_and_load_callbacks_inttest.mm
@@ -1343,14 +1343,8 @@ })); } -#if TARGET_IPHONE_SIMULATOR -#define MAYBE_StopFinishedNavigation StopFinishedNavigation -#else -#define MAYBE_StopFinishedNavigation DISABLED_StopFinishedNavigation -#endif // Tests stopping a finished navigation. PageLoaded is never called. -// TODO(crbug.com/812669): Re-enable this test on devices. -TEST_F(NavigationAndLoadCallbacksTest, MAYBE_StopFinishedNavigation) { +TEST_F(NavigationAndLoadCallbacksTest, StopFinishedNavigation) { GURL url = test_server_->GetURL("/exabyte_response"); NavigationContext* context = nullptr; @@ -1371,10 +1365,9 @@ web::test::LoadUrl(web_state(), url); - // Server does not stop responding until it's shut down. Let the server run - // to make web state finish the navigation. - EXPECT_FALSE(WaitUntilConditionOrTimeout(2.0, ^{ - return !web_state()->IsLoading(); + // Server will never stop responding. Wait until the navigation is committed. + EXPECT_FALSE(WaitUntilConditionOrTimeout(testing::kWaitForPageLoadTimeout, ^{ + return context && context->HasCommitted(); })); // Stop the loading.
diff --git a/ios/web_view/test/web_view_autofill_inttest.mm b/ios/web_view/test/web_view_autofill_inttest.mm index e39e102..a22eb38 100644 --- a/ios/web_view/test/web_view_autofill_inttest.mm +++ b/ios/web_view/test/web_view_autofill_inttest.mm
@@ -33,7 +33,8 @@ NSString* const kTestSubmitID = @"SubmitID"; NSString* const kTestFormHtml = [NSString stringWithFormat: - @"<form name='%@' id='%@'>" + // Direct form to about:blank to avoid unnecessary navigation. + @"<form action='about:blank' name='%@' id='%@'>" "<input type='text' name='%@' id='%@'/>" "<input type='submit' id='%@'/>" "</form>",
diff --git a/mash/simple_wm/simple_wm.cc b/mash/simple_wm/simple_wm.cc index 7c2e931..57b52cd8 100644 --- a/mash/simple_wm/simple_wm.cc +++ b/mash/simple_wm/simple_wm.cc
@@ -400,6 +400,7 @@ } void SimpleWM::OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, aura::Window* target) { // Don't care. }
diff --git a/mash/simple_wm/simple_wm.h b/mash/simple_wm/simple_wm.h index 742cc07..bc1de6d 100644 --- a/mash/simple_wm/simple_wm.h +++ b/mash/simple_wm/simple_wm.h
@@ -66,6 +66,7 @@ void OnLostConnection(aura::WindowTreeClient* client) override; void OnEmbedRootDestroyed(aura::WindowTreeHostMus* window_tree_host) override; void OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, aura::Window* target) override; aura::PropertyConverter* GetPropertyConverter() override;
diff --git a/media/cast/net/cast_transport_config.h b/media/cast/net/cast_transport_config.h index 81b7c65..e4cc313 100644 --- a/media/cast/net/cast_transport_config.h +++ b/media/cast/net/cast_transport_config.h
@@ -69,11 +69,10 @@ // Convenience accessors to data as an array of uint8_t elements. const uint8_t* bytes() const { - return reinterpret_cast<uint8_t*>( - base::string_as_array(const_cast<std::string*>(&data))); + return reinterpret_cast<const uint8_t*>(base::data(data)); } uint8_t* mutable_bytes() { - return reinterpret_cast<uint8_t*>(base::string_as_array(&data)); + return reinterpret_cast<uint8_t*>(base::data(data)); } // Copies all data members except |data| to |dest|.
diff --git a/media/cast/sender/audio_encoder.cc b/media/cast/sender/audio_encoder.cc index 05e368a0..3031912 100644 --- a/media/cast/sender/audio_encoder.cc +++ b/media/cast/sender/audio_encoder.cc
@@ -292,8 +292,7 @@ out->resize(kOpusMaxPayloadSize); const opus_int32 result = opus_encode_float( opus_encoder_, buffer_.get(), samples_per_frame_, - reinterpret_cast<uint8_t*>(base::string_as_array(out)), - kOpusMaxPayloadSize); + reinterpret_cast<uint8_t*>(base::data(*out)), kOpusMaxPayloadSize); if (result > 1) { out->resize(result); return true;
diff --git a/media/formats/mp4/mp4_stream_parser.cc b/media/formats/mp4/mp4_stream_parser.cc index df18d87..ee14479 100644 --- a/media/formats/mp4/mp4_stream_parser.cc +++ b/media/formats/mp4/mp4_stream_parser.cc
@@ -310,7 +310,6 @@ runs_.reset(); audio_track_ids_.clear(); video_track_ids_.clear(); - is_track_encrypted_.clear(); has_audio_ = false; has_video_ = false; @@ -469,7 +468,6 @@ return false; } bool is_track_encrypted = entry.sinf.info.track_encryption.is_encrypted; - is_track_encrypted_[audio_track_id] = is_track_encrypted; EncryptionScheme scheme = Unencrypted(); if (is_track_encrypted) { scheme = GetEncryptionScheme(entry.sinf); @@ -538,7 +536,6 @@ return false; } bool is_track_encrypted = entry.sinf.info.track_encryption.is_encrypted; - is_track_encrypted_[video_track_id] = is_track_encrypted; EncryptionScheme scheme = Unencrypted(); if (is_track_encrypted) { scheme = GetEncryptionScheme(entry.sinf);
diff --git a/media/formats/mp4/mp4_stream_parser.h b/media/formats/mp4/mp4_stream_parser.h index 1a757a6c..585a789 100644 --- a/media/formats/mp4/mp4_stream_parser.h +++ b/media/formats/mp4/mp4_stream_parser.h
@@ -140,7 +140,6 @@ const std::set<int> audio_object_types_; const bool has_sbr_; const bool has_flac_; - std::map<uint32_t, bool> is_track_encrypted_; // Tracks the number of MEDIA_LOGS for skipping empty trun samples. int num_empty_samples_skipped_;
diff --git a/media/gpu/android/avda_codec_image.cc b/media/gpu/android/avda_codec_image.cc index 66de3d4..7b94cc8 100644 --- a/media/gpu/android/avda_codec_image.cc +++ b/media/gpu/android/avda_codec_image.cc
@@ -81,7 +81,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) { + bool enable_blend, + gfx::GpuFence* gpu_fence) { // This should only be called when we're rendering to a SurfaceView. if (has_texture_owner_) { DVLOG(1) << "Invalid call to ScheduleOverlayPlane; this image is "
diff --git a/media/gpu/android/avda_codec_image.h b/media/gpu/android/avda_codec_image.h index 37071b08..2e210b7 100644 --- a/media/gpu/android/avda_codec_image.h +++ b/media/gpu/android/avda_codec_image.h
@@ -42,7 +42,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) override; + bool enable_blend, + gfx::GpuFence* gpu_fence) override; void SetColorSpace(const gfx::ColorSpace& color_space) override {} void Flush() override {} void OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd,
diff --git a/media/gpu/android/codec_image.cc b/media/gpu/android/codec_image.cc index face8a2..658edfc 100644 --- a/media/gpu/android/codec_image.cc +++ b/media/gpu/android/codec_image.cc
@@ -91,7 +91,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) { + bool enable_blend, + gfx::GpuFence* gpu_fence) { if (texture_owner_) { DVLOG(1) << "Invalid call to ScheduleOverlayPlane; this image is " "TextureOwner backed.";
diff --git a/media/gpu/android/codec_image.h b/media/gpu/android/codec_image.h index 2b35e7d..d1b6b5a 100644 --- a/media/gpu/android/codec_image.h +++ b/media/gpu/android/codec_image.h
@@ -47,7 +47,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) override; + bool enable_blend, + gfx::GpuFence* gpu_fence) override; void SetColorSpace(const gfx::ColorSpace& color_space) override {} void Flush() override {} void OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd,
diff --git a/media/gpu/android/codec_image_unittest.cc b/media/gpu/android/codec_image_unittest.cc index ccae01c..52855a3 100644 --- a/media/gpu/android/codec_image_unittest.cc +++ b/media/gpu/android/codec_image_unittest.cc
@@ -123,7 +123,7 @@ auto i = NewImage(kTextureOwner); ASSERT_FALSE(i->ScheduleOverlayPlane(gfx::AcceleratedWidget(), 0, gfx::OverlayTransform(), gfx::Rect(), - gfx::RectF(), true)); + gfx::RectF(), true, nullptr)); } TEST_F(CodecImageTest, CopyTexImageFailsIfTargetIsNotOES) { @@ -185,7 +185,7 @@ PromotionHintAggregator::Hint hint(gfx::Rect(1, 2, 3, 4), true); EXPECT_CALL(promotion_hint_receiver_, OnPromotionHint(hint)); i->ScheduleOverlayPlane(gfx::AcceleratedWidget(), 0, gfx::OverlayTransform(), - hint.screen_rect, gfx::RectF(), true); + hint.screen_rect, gfx::RectF(), true, nullptr); ASSERT_TRUE(i->was_rendered_to_front_buffer()); } @@ -281,12 +281,12 @@ EXPECT_CALL(promotion_hint_receiver_, OnPromotionHint(hint1)).Times(1); EXPECT_CALL(promotion_hint_receiver_, OnPromotionHint(hint2)).Times(1); i->ScheduleOverlayPlane(gfx::AcceleratedWidget(), 0, gfx::OverlayTransform(), - hint1.screen_rect, gfx::RectF(), true); + hint1.screen_rect, gfx::RectF(), true, nullptr); i->ScheduleOverlayPlane(gfx::AcceleratedWidget(), 0, gfx::OverlayTransform(), - hint1.screen_rect, gfx::RectF(), true); + hint1.screen_rect, gfx::RectF(), true, nullptr); // Sending a different rectangle should send another hint. i->ScheduleOverlayPlane(gfx::AcceleratedWidget(), 0, gfx::OverlayTransform(), - hint2.screen_rect, gfx::RectF(), true); + hint2.screen_rect, gfx::RectF(), true, nullptr); } } // namespace media
diff --git a/media/gpu/vt_video_decode_accelerator_mac.cc b/media/gpu/vt_video_decode_accelerator_mac.cc index e8260e9..1483979 100644 --- a/media/gpu/vt_video_decode_accelerator_mac.cc +++ b/media/gpu/vt_video_decode_accelerator_mac.cc
@@ -1007,12 +1007,17 @@ DVLOG(2) << __func__ << "(" << bitstream_id << ")"; DCHECK(gpu_task_runner_->BelongsToCurrentThread()); - if (!buffer || bitstream_id < 0) { + if (bitstream_id < 0) { DLOG(ERROR) << "Invalid bitstream, id: " << bitstream_id; NotifyError(INVALID_ARGUMENT, SFT_INVALID_STREAM); return; } + if (!buffer) { + client_->NotifyEndOfBitstreamBuffer(bitstream_id); + return; + } + DCHECK_EQ(0u, assigned_bitstream_ids_.count(bitstream_id)); assigned_bitstream_ids_.insert(bitstream_id);
diff --git a/media/gpu/windows/dxva_picture_buffer_win.cc b/media/gpu/windows/dxva_picture_buffer_win.cc index 4f867dc..0a3075e 100644 --- a/media/gpu/windows/dxva_picture_buffer_win.cc +++ b/media/gpu/windows/dxva_picture_buffer_win.cc
@@ -49,7 +49,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) override { + bool enable_blend, + gfx::GpuFence* gpu_fence) override { return false; } void SetColorSpace(const gfx::ColorSpace& color_space) override {}
diff --git a/media/gpu/windows/dxva_video_decode_accelerator_win.cc b/media/gpu/windows/dxva_video_decode_accelerator_win.cc index 7d036b2..bae5fd6 100644 --- a/media/gpu/windows/dxva_video_decode_accelerator_win.cc +++ b/media/gpu/windows/dxva_video_decode_accelerator_win.cc
@@ -1146,44 +1146,40 @@ return true; } -void DXVAVideoDecodeAccelerator::Decode( - const BitstreamBuffer& bitstream_buffer) { +void DXVAVideoDecodeAccelerator::Decode(const BitstreamBuffer& bitstream) { + Decode(bitstream.ToDecoderBuffer(), bitstream.id()); +} + +void DXVAVideoDecodeAccelerator::Decode(scoped_refptr<DecoderBuffer> buffer, + int32_t bitstream_id) { TRACE_EVENT0("media", "DXVAVideoDecodeAccelerator::Decode"); DCHECK(main_thread_task_runner_->BelongsToCurrentThread()); - // SharedMemory will take over the ownership of handle. - base::SharedMemory shm(bitstream_buffer.handle(), true); + RETURN_AND_NOTIFY_ON_FAILURE(bitstream_id >= 0, + "Invalid bitstream, id: " << bitstream_id, + INVALID_ARGUMENT, ); + + if (!buffer) { + if (client_) + client_->NotifyEndOfBitstreamBuffer(bitstream_id); + return; + } State state = GetState(); RETURN_AND_NOTIFY_ON_FAILURE( (state == kNormal || state == kStopped || state == kFlushing), "Invalid state: " << state, ILLEGAL_STATE, ); - if (bitstream_buffer.id() < 0) { - RETURN_AND_NOTIFY_ON_FAILURE( - false, "Invalid bitstream_buffer, id: " << bitstream_buffer.id(), - INVALID_ARGUMENT, ); - } - - if (bitstream_buffer.size() == 0) { - if (client_) - client_->NotifyEndOfBitstreamBuffer(bitstream_buffer.id()); - return; - } Microsoft::WRL::ComPtr<IMFSample> sample; - RETURN_AND_NOTIFY_ON_FAILURE(shm.Map(bitstream_buffer.size()), - "Failed in base::SharedMemory::Map", - PLATFORM_FAILURE, ); - sample = CreateInputSample( - reinterpret_cast<const uint8_t*>(shm.memory()), bitstream_buffer.size(), - std::min<uint32_t>(bitstream_buffer.size(), input_stream_info_.cbSize), + buffer->data(), buffer->data_size(), + std::min<uint32_t>(buffer->data_size(), input_stream_info_.cbSize), input_stream_info_.cbAlignment); RETURN_AND_NOTIFY_ON_FAILURE(sample.Get(), "Failed to create input sample", PLATFORM_FAILURE, ); RETURN_AND_NOTIFY_ON_HR_FAILURE( - sample->SetSampleTime(bitstream_buffer.id()), + sample->SetSampleTime(bitstream_id), "Failed to associate input buffer id with sample", PLATFORM_FAILURE, ); decoder_thread_task_runner_->PostTask(
diff --git a/media/gpu/windows/dxva_video_decode_accelerator_win.h b/media/gpu/windows/dxva_video_decode_accelerator_win.h index 8c4f4891..8593d72 100644 --- a/media/gpu/windows/dxva_video_decode_accelerator_win.h +++ b/media/gpu/windows/dxva_video_decode_accelerator_win.h
@@ -99,7 +99,9 @@ // VideoDecodeAccelerator implementation. bool Initialize(const Config& config, Client* client) override; - void Decode(const BitstreamBuffer& bitstream_buffer) override; + void Decode(const BitstreamBuffer& bitstream) override; + void Decode(scoped_refptr<DecoderBuffer> buffer, + int32_t bitstream_id) override; void AssignPictureBuffers(const std::vector<PictureBuffer>& buffers) override; void ReusePictureBuffer(int32_t picture_buffer_id) override; void Flush() override;
diff --git a/mojo/edk/BUILD.gn b/mojo/edk/BUILD.gn index b293722..c1e568c 100644 --- a/mojo/edk/BUILD.gn +++ b/mojo/edk/BUILD.gn
@@ -82,7 +82,6 @@ "system/platform_handle_dispatcher.h", "system/platform_shared_memory_mapping.h", "system/request_context.h", - "system/scoped_process_handle.h", "system/shared_buffer_dispatcher.h", "system/user_message_impl.h", ] @@ -123,7 +122,6 @@ "system/platform_handle_dispatcher.cc", "system/platform_shared_memory_mapping.cc", "system/request_context.cc", - "system/scoped_process_handle.cc", "system/shared_buffer_dispatcher.cc", "system/user_message_impl.cc", "system/watch.cc",
diff --git a/mojo/edk/embedder/platform_handle.cc b/mojo/edk/embedder/platform_handle.cc index f4eb0eb3..0599b59 100644 --- a/mojo/edk/embedder/platform_handle.cc +++ b/mojo/edk/embedder/platform_handle.cc
@@ -39,9 +39,7 @@ // * Set hSourceProcessHandle to the target process from the // call that created the handle. // * Set hSourceHandle to the duplicated handle to close. - // * Set lpTargetHandle [sic] to NULL. (N.B.: This appears to be a - // documentation bug; what matters is that hTargetProcessHandle is - // NULL.) + // * Set lpTargetHandle to NULL. // * Set dwOptions to DUPLICATE_CLOSE_SOURCE. // // [1] https://msdn.microsoft.com/en-us/library/windows/desktop/ms724251 @@ -49,9 +47,8 @@ // NOTE: It's possible for this operation to fail if the owning process // was terminated or is in the process of being terminated. Either way, // there is nothing we can reasonably do about failure, so we ignore it. - ::DuplicateHandle(owning_process, handle, NULL, &handle, 0, FALSE, - DUPLICATE_CLOSE_SOURCE); - ::CloseHandle(owning_process); + DuplicateHandle(owning_process, handle, NULL, &handle, 0, FALSE, + DUPLICATE_CLOSE_SOURCE); return; }
diff --git a/mojo/edk/system/broker_host.cc b/mojo/edk/system/broker_host.cc index 9238abc..aded3c8 100644 --- a/mojo/edk/system/broker_host.cc +++ b/mojo/edk/system/broker_host.cc
@@ -26,7 +26,7 @@ : process_error_callback_(process_error_callback) #if defined(OS_WIN) , - client_process_(ScopedProcessHandle::CloneFrom(client_process)) + client_process_(client_process) #endif { CHECK(platform_handle.is_valid()); @@ -52,7 +52,7 @@ std::vector<ScopedPlatformHandle>* handles) { #if defined(OS_WIN) if (!Channel::Message::RewriteHandles(base::GetCurrentProcessHandle(), - client_process_.get(), handles)) { + client_process_, handles)) { // NOTE: We only log an error here. We do not signal a logical error or // prevent any message from being sent. The client should handle unexpected // invalid handles appropriately.
diff --git a/mojo/edk/system/broker_host.h b/mojo/edk/system/broker_host.h index 483b0cc..aa12a848 100644 --- a/mojo/edk/system/broker_host.h +++ b/mojo/edk/system/broker_host.h
@@ -15,7 +15,6 @@ #include "mojo/edk/embedder/process_error_callback.h" #include "mojo/edk/embedder/scoped_platform_handle.h" #include "mojo/edk/system/channel.h" -#include "mojo/edk/system/scoped_process_handle.h" namespace mojo { namespace edk { @@ -56,7 +55,7 @@ const ProcessErrorCallback process_error_callback_; #if defined(OS_WIN) - ScopedProcessHandle client_process_; + base::ProcessHandle client_process_; #endif scoped_refptr<Channel> channel_;
diff --git a/mojo/edk/system/channel.cc b/mojo/edk/system/channel.cc index daabd48..41ff3ee 100644 --- a/mojo/edk/system/channel.cc +++ b/mojo/edk/system/channel.cc
@@ -476,14 +476,7 @@ &(*handles)[i].get().handle, 0, FALSE, DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE); if (result) { - if (to_process == base::GetCurrentProcessHandle()) { - (*handles)[i].get().owning_process = to_process; - } else { - // If this handle is bound for an external process, make sure it owns - // its own copy of the target process handle. - (*handles)[i].get().owning_process = - ScopedProcessHandle::CloneFrom(to_process).release(); - } + (*handles)[i].get().owning_process = to_process; } else { success = false;
diff --git a/mojo/edk/system/node_channel.cc b/mojo/edk/system/node_channel.cc index f8dca55..0c1ab87e 100644 --- a/mojo/edk/system/node_channel.cc +++ b/mojo/edk/system/node_channel.cc
@@ -232,24 +232,41 @@ process_error_callback_.Run("Received bad user message: " + error); } -void NodeChannel::SetRemoteProcessHandle(ScopedProcessHandle process_handle) { +void NodeChannel::SetRemoteProcessHandle(base::ProcessHandle process_handle) { DCHECK(io_task_runner_->RunsTasksInCurrentSequence()); base::AutoLock lock(remote_process_handle_lock_); - DCHECK(!remote_process_handle_.is_valid()); - CHECK_NE(remote_process_handle_.get(), base::GetCurrentProcessHandle()); - remote_process_handle_ = std::move(process_handle); + DCHECK_EQ(base::kNullProcessHandle, remote_process_handle_); + CHECK_NE(remote_process_handle_, base::GetCurrentProcessHandle()); + remote_process_handle_ = process_handle; +#if defined(OS_WIN) + DCHECK(!scoped_remote_process_handle_.is_valid()); + scoped_remote_process_handle_.reset(PlatformHandle(process_handle)); +#endif } bool NodeChannel::HasRemoteProcessHandle() { base::AutoLock lock(remote_process_handle_lock_); - return remote_process_handle_.is_valid(); + return remote_process_handle_ != base::kNullProcessHandle; } -ScopedProcessHandle NodeChannel::CloneRemoteProcessHandle() { +base::ProcessHandle NodeChannel::CopyRemoteProcessHandle() { base::AutoLock lock(remote_process_handle_lock_); - if (!remote_process_handle_.is_valid()) - return ScopedProcessHandle(); - return remote_process_handle_.Clone(); +#if defined(OS_WIN) + if (remote_process_handle_ != base::kNullProcessHandle) { + // Privileged nodes use this to pass their invitees' process handles to the + // broker on launch. + HANDLE handle = remote_process_handle_; + BOOL result = + DuplicateHandle(base::GetCurrentProcessHandle(), remote_process_handle_, + base::GetCurrentProcessHandle(), &handle, 0, FALSE, + DUPLICATE_SAME_ACCESS); + DPCHECK(result); + return handle; + } + return base::kNullProcessHandle; +#else + return remote_process_handle_; +#endif } void NodeChannel::SetRemoteNodeName(const ports::NodeName& name) { @@ -290,12 +307,11 @@ } void NodeChannel::AddBrokerClient(const ports::NodeName& client_name, - ScopedProcessHandle process_handle) { + base::ProcessHandle process_handle) { AddBrokerClientData* data; std::vector<ScopedPlatformHandle> handles; #if defined(OS_WIN) - handles.emplace_back( - ScopedPlatformHandle(PlatformHandle(process_handle.release()))); + handles.emplace_back(ScopedPlatformHandle(PlatformHandle(process_handle))); #endif Channel::MessagePtr message = CreateMessage(MessageType::ADD_BROKER_CLIENT, sizeof(AddBrokerClientData), @@ -303,7 +319,7 @@ message->SetHandles(std::move(handles)); data->client_name = client_name; #if !defined(OS_WIN) - data->process_handle = process_handle.get(); + data->process_handle = process_handle; data->padding = 0; #endif WriteChannelMessage(std::move(message)); @@ -485,13 +501,14 @@ // from a privileged descendant. { base::AutoLock lock(remote_process_handle_lock_); - if (!handles.empty() && remote_process_handle_.is_valid()) { + if (!handles.empty() && + remote_process_handle_ != base::kNullProcessHandle) { // Note that we explicitly mark the handles as being owned by the sending // process before rewriting them, in order to accommodate RewriteHandles' // internal sanity checks. for (auto& handle : handles) - handle.get().owning_process = remote_process_handle_.get(); - if (!Channel::Message::RewriteHandles(remote_process_handle_.get(), + handle.get().owning_process = remote_process_handle_; + if (!Channel::Message::RewriteHandles(remote_process_handle_, base::GetCurrentProcessHandle(), &handles)) { DLOG(ERROR) << "Received one or more invalid handles."; @@ -652,10 +669,7 @@ base::ProcessHandle from_process; { base::AutoLock lock(remote_process_handle_lock_); - // NOTE: It's safe to retain a weak reference to this process handle - // through the extent of this call because |this| is kept alive and - // |remote_process_handle_| is never reset once set. - from_process = remote_process_handle_.get(); + from_process = remote_process_handle_; } const RelayEventMessageData* data; if (GetMessagePayload(payload, payload_size, &data)) { @@ -786,7 +800,7 @@ base::ProcessHandle remote_process_handle; { base::AutoLock lock(remote_process_handle_lock_); - remote_process_handle = remote_process_handle_.get(); + remote_process_handle = remote_process_handle_; } PendingMessageQueue pending_writes; PendingRelayMessageQueue pending_relays; @@ -832,14 +846,17 @@ // here (they'll be unpacked and duplicated by the broker). if (message->has_handles()) { - base::AutoLock lock(remote_process_handle_lock_); + base::ProcessHandle remote_process_handle; + { + base::AutoLock lock(remote_process_handle_lock_); + remote_process_handle = remote_process_handle_; + } // Rewrite outgoing handles if we have a handle to the destination process. - if (remote_process_handle_.is_valid()) { + if (remote_process_handle != base::kNullProcessHandle) { std::vector<ScopedPlatformHandle> handles = message->TakeHandles(); if (!Channel::Message::RewriteHandles(base::GetCurrentProcessHandle(), - remote_process_handle_.get(), - &handles)) { + remote_process_handle, &handles)) { DLOG(ERROR) << "Failed to duplicate one or more outgoing handles."; } message->SetHandles(std::move(handles)); @@ -851,11 +868,16 @@ if (message->has_mach_ports()) { MachPortRelay* relay = delegate_->GetMachPortRelay(); if (relay) { - base::AutoLock lock(remote_process_handle_lock_); - DCHECK(remote_process_handle_.is_valid()); + base::ProcessHandle remote_process_handle; + { + base::AutoLock lock(remote_process_handle_lock_); + // Expect that the receiving node is a known process. + DCHECK(remote_process_handle_ != base::kNullProcessHandle); + remote_process_handle = remote_process_handle_; + } { base::AutoLock lock(pending_mach_messages_lock_); - if (relay->port_provider()->TaskForPid(remote_process_handle_.get()) == + if (relay->port_provider()->TaskForPid(remote_process_handle) == MACH_PORT_NULL) { // It is also possible for TaskForPid() to return MACH_PORT_NULL when // the process has started, then died. In that case, the queued @@ -866,7 +888,7 @@ } } - relay->SendPortsToProcess(message.get(), remote_process_handle_.get()); + relay->SendPortsToProcess(message.get(), remote_process_handle); } } #endif
diff --git a/mojo/edk/system/node_channel.h b/mojo/edk/system/node_channel.h index 7446ccd..864ed1c 100644 --- a/mojo/edk/system/node_channel.h +++ b/mojo/edk/system/node_channel.h
@@ -21,7 +21,6 @@ #include "mojo/edk/embedder/scoped_platform_handle.h" #include "mojo/edk/system/channel.h" #include "mojo/edk/system/ports/name.h" -#include "mojo/edk/system/scoped_process_handle.h" #if defined(OS_MACOSX) && !defined(OS_IOS) #include "mojo/edk/system/mach_port_relay.h" @@ -116,9 +115,12 @@ // Invokes the bad message callback for this channel, if any. void NotifyBadMessage(const std::string& error); - void SetRemoteProcessHandle(ScopedProcessHandle process_handle); + // Note: On Windows, we take ownership of the remote process handle. + void SetRemoteProcessHandle(base::ProcessHandle process_handle); bool HasRemoteProcessHandle(); - ScopedProcessHandle CloneRemoteProcessHandle(); + // Note: The returned |ProcessHandle| is owned by the caller and should be + // freed if necessary. + base::ProcessHandle CopyRemoteProcessHandle(); // Used for context in Delegate calls (via |from_node| arguments.) void SetRemoteNodeName(const ports::NodeName& name); @@ -131,7 +133,7 @@ const ports::NodeName& token, const ports::PortName& port_name); void AddBrokerClient(const ports::NodeName& client_name, - ScopedProcessHandle process_handle); + base::ProcessHandle process_handle); void BrokerClientAdded(const ports::NodeName& client_name, ScopedPlatformHandle broker_channel); void AcceptBrokerClient(const ports::NodeName& broker_name, @@ -198,7 +200,10 @@ ports::NodeName remote_node_name_; base::Lock remote_process_handle_lock_; - ScopedProcessHandle remote_process_handle_; + base::ProcessHandle remote_process_handle_ = base::kNullProcessHandle; +#if defined(OS_WIN) + ScopedPlatformHandle scoped_remote_process_handle_; +#endif #if defined(OS_MACOSX) && !defined(OS_IOS) base::Lock pending_mach_messages_lock_;
diff --git a/mojo/edk/system/node_controller.cc b/mojo/edk/system/node_controller.cc index 34e2d9cb..40005f4 100644 --- a/mojo/edk/system/node_controller.cc +++ b/mojo/edk/system/node_controller.cc
@@ -185,12 +185,22 @@ } } - ScopedProcessHandle scoped_target_process = - ScopedProcessHandle::CloneFrom(target_process); +#if defined(OS_WIN) + // On Windows, we need to duplicate the process handle because we have no + // control over its lifetime and it may become invalid by the time the posted + // task runs. + HANDLE dup_handle = INVALID_HANDLE_VALUE; + BOOL ok = ::DuplicateHandle(base::GetCurrentProcessHandle(), target_process, + base::GetCurrentProcessHandle(), &dup_handle, 0, + FALSE, DUPLICATE_SAME_ACCESS); + DPCHECK(ok); + target_process = dup_handle; +#endif + io_task_runner_->PostTask( FROM_HERE, base::BindOnce(&NodeController::SendBrokerClientInvitationOnIOThread, - base::Unretained(this), std::move(scoped_target_process), + base::Unretained(this), target_process, std::move(connection_params), temporary_node_name, process_error_callback)); } @@ -322,7 +332,7 @@ } void NodeController::SendBrokerClientInvitationOnIOThread( - ScopedProcessHandle target_process, + base::ProcessHandle target_process, ConnectionParams connection_params, ports::NodeName temporary_node_name, const ProcessErrorCallback& process_error_callback) { @@ -332,9 +342,9 @@ PlatformChannelPair node_channel; ScopedPlatformHandle server_handle = node_channel.PassServerHandle(); // BrokerHost owns itself. - BrokerHost* broker_host = new BrokerHost( - target_process.get(), connection_params.TakeChannelHandle(), - process_error_callback); + BrokerHost* broker_host = + new BrokerHost(target_process, connection_params.TakeChannelHandle(), + process_error_callback); bool channel_ok = broker_host->SendChannel(node_channel.PassClientHandle()); #if defined(OS_WIN) @@ -368,7 +378,7 @@ pending_invitations_.insert(std::make_pair(temporary_node_name, channel)); channel->SetRemoteNodeName(temporary_node_name); - channel->SetRemoteProcessHandle(std::move(target_process)); + channel->SetRemoteProcessHandle(target_process); channel->Start(); channel->AcceptInvitee(name_, temporary_node_name); @@ -786,7 +796,7 @@ scoped_refptr<NodeChannel> broker = GetBrokerChannel(); if (broker) { // Inform the broker of this new client. - broker->AddBrokerClient(invitee_name, channel->CloneRemoteProcessHandle()); + broker->AddBrokerClient(invitee_name, channel->CopyRemoteProcessHandle()); } else { // If we have no broker, either we need to wait for one, or we *are* the // broker. @@ -810,8 +820,11 @@ void NodeController::OnAddBrokerClient(const ports::NodeName& from_node, const ports::NodeName& client_name, base::ProcessHandle process_handle) { - ScopedProcessHandle scoped_process_handle(process_handle); - +#if defined(OS_WIN) + // Scoped handle to avoid leaks on error. + ScopedPlatformHandle scoped_process_handle = + ScopedPlatformHandle(PlatformHandle(process_handle)); +#endif scoped_refptr<NodeChannel> sender = GetPeerChannel(from_node); if (!sender) { DLOG(ERROR) << "Ignoring AddBrokerClient from unknown sender."; @@ -838,8 +851,10 @@ DLOG(ERROR) << "Broker rejecting client with invalid process handle."; return; } + client->SetRemoteProcessHandle(scoped_process_handle.release().handle); +#else + client->SetRemoteProcessHandle(process_handle); #endif - client->SetRemoteProcessHandle(std::move(scoped_process_handle)); AddPeer(client_name, client, true /* start_channel */); @@ -928,7 +943,7 @@ auto it = pending_invitations_.find(invitee_name); DCHECK(it != pending_invitations_.end()); broker->AddBrokerClient(invitee_name, - it->second->CloneRemoteProcessHandle()); + it->second->CopyRemoteProcessHandle()); pending_broker_clients.pop(); }
diff --git a/mojo/edk/system/node_controller.h b/mojo/edk/system/node_controller.h index b900c1e3..60279ca 100644 --- a/mojo/edk/system/node_controller.h +++ b/mojo/edk/system/node_controller.h
@@ -28,7 +28,6 @@ #include "mojo/edk/system/ports/name.h" #include "mojo/edk/system/ports/node.h" #include "mojo/edk/system/ports/node_delegate.h" -#include "mojo/edk/system/scoped_process_handle.h" #include "mojo/edk/system/system_impl_export.h" namespace base { @@ -160,7 +159,7 @@ }; void SendBrokerClientInvitationOnIOThread( - ScopedProcessHandle target_process, + base::ProcessHandle target_process, ConnectionParams connection_params, ports::NodeName token, const ProcessErrorCallback& process_error_callback);
diff --git a/mojo/edk/system/scoped_process_handle.cc b/mojo/edk/system/scoped_process_handle.cc deleted file mode 100644 index 43d719df..0000000 --- a/mojo/edk/system/scoped_process_handle.cc +++ /dev/null
@@ -1,45 +0,0 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "mojo/edk/system/scoped_process_handle.h" - -#include "build/build_config.h" - -#if defined(OS_WIN) -#include <windows.h> -#endif - -namespace mojo { -namespace edk { - -ScopedProcessHandle::ScopedProcessHandle() = default; - -ScopedProcessHandle::ScopedProcessHandle(base::ProcessHandle handle) - : handle_(handle) {} - -ScopedProcessHandle::ScopedProcessHandle(ScopedProcessHandle&&) = default; - -ScopedProcessHandle::~ScopedProcessHandle() = default; - -// static -ScopedProcessHandle ScopedProcessHandle::CloneFrom(base::ProcessHandle handle) { -#if defined(OS_WIN) - BOOL ok = ::DuplicateHandle(base::GetCurrentProcessHandle(), handle, - base::GetCurrentProcessHandle(), &handle, 0, - FALSE, DUPLICATE_SAME_ACCESS); - DCHECK(ok); -#endif - return ScopedProcessHandle(handle); -} - -ScopedProcessHandle& ScopedProcessHandle::operator=(ScopedProcessHandle&&) = - default; - -ScopedProcessHandle ScopedProcessHandle::Clone() const { - DCHECK(is_valid()); - return CloneFrom(get()); -} - -} // namespace edk -} // namespace mojo
diff --git a/mojo/edk/system/scoped_process_handle.h b/mojo/edk/system/scoped_process_handle.h deleted file mode 100644 index dbefdfe..0000000 --- a/mojo/edk/system/scoped_process_handle.h +++ /dev/null
@@ -1,81 +0,0 @@ -// Copyright 2018 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef MOJO_EDK_SYSTEM_SCOPED_PROCESS_HANDLE_H_ -#define MOJO_EDK_SYSTEM_SCOPED_PROCESS_HANDLE_H_ - -#include "base/macros.h" -#include "base/process/process_handle.h" -#include "build/build_config.h" - -#if defined(OS_WIN) -#include "base/win/scoped_handle.h" -#endif - -namespace mojo { -namespace edk { - -// Wraps a |base::ProcessHandle| with additional scoped lifetime semantics on -// applicable platforms. For platforms where process handles aren't ownable -// references, this is just a wrapper around |base::ProcessHandle|. -// -// This essentially exists to support passing around process handles internally -// in a generic way while also supporting Windows process handle ownership -// semantics. -class ScopedProcessHandle { - public: - ScopedProcessHandle(); - - // Assumes ownership of |handle|. - explicit ScopedProcessHandle(base::ProcessHandle handle); - - ScopedProcessHandle(ScopedProcessHandle&&); - - ~ScopedProcessHandle(); - - // Creates a new ScopedProcessHandle from a clone of |handle|. - static ScopedProcessHandle CloneFrom(base::ProcessHandle handle); - - ScopedProcessHandle& operator=(ScopedProcessHandle&&); - - bool is_valid() const { -#if defined(OS_WIN) - return handle_.IsValid(); -#else - return handle_ != base::kNullProcessHandle; -#endif - } - - base::ProcessHandle get() const { -#if defined(OS_WIN) - return handle_.Get(); -#else - return handle_; -#endif - } - - base::ProcessHandle release() { -#if defined(OS_WIN) - return handle_.Take(); -#else - return handle_; -#endif - } - - ScopedProcessHandle Clone() const; - - private: -#if defined(OS_WIN) - base::win::ScopedHandle handle_; -#else - base::ProcessHandle handle_ = base::kNullProcessHandle; -#endif - - DISALLOW_COPY_AND_ASSIGN(ScopedProcessHandle); -}; - -} // namespace edk -} // namespace mojo - -#endif // MOJO_EDK_SYSTEM_SCOPED_PROCESS_HANDLE_H_
diff --git a/net/disk_cache/disk_cache_perftest.cc b/net/disk_cache/disk_cache_perftest.cc index e020b5c5..0acf5b3 100644 --- a/net/disk_cache/disk_cache_perftest.cc +++ b/net/disk_cache/disk_cache_perftest.cc
@@ -52,9 +52,9 @@ // As of 2017-01-12, this is a typical per-tab limit on HTTP connections. const int kMaxParallelOperations = 10; -void MaybeSetFdLimit(unsigned int max_descriptors) { +void MaybeIncreaseFdLimitTo(unsigned int max_descriptors) { #if defined(OS_POSIX) && !defined(OS_FUCHSIA) - base::SetFdLimit(max_descriptors); + base::IncreaseFdLimitTo(max_descriptors); #endif } @@ -70,20 +70,11 @@ class DiskCachePerfTest : public DiskCacheTestWithCache { public: - DiskCachePerfTest() : saved_fd_limit_(base::GetMaxFds()) { - if (saved_fd_limit_ < kFdLimitForCacheTests) - MaybeSetFdLimit(kFdLimitForCacheTests); - } - - ~DiskCachePerfTest() override { - if (saved_fd_limit_ < kFdLimitForCacheTests) - MaybeSetFdLimit(saved_fd_limit_); - } + DiskCachePerfTest() { MaybeIncreaseFdLimitTo(kFdLimitForCacheTests); } const std::vector<TestEntry>& entries() const { return entries_; } protected: - // Helper methods for constructing tests. bool TimeWrites(); bool TimeReads(WhatToRead what_to_read, const char* timer_message); @@ -104,9 +95,6 @@ const size_t kFdLimitForCacheTests = 8192; std::vector<TestEntry> entries_; - - private: - const size_t saved_fd_limit_; }; class WriteHandler {
diff --git a/net/quic/chromium/quic_chromium_client_session.cc b/net/quic/chromium/quic_chromium_client_session.cc index 8259c43..39ccd374 100644 --- a/net/quic/chromium/quic_chromium_client_session.cc +++ b/net/quic/chromium/quic_chromium_client_session.cc
@@ -2775,9 +2775,9 @@ // The push promise is accepted, notify the push_delegate that a push // promise has been received. if (push_delegate_) { - GURL pushed_url = GetUrlFromHeaderBlock(headers); + std::string pushed_url = SpdyUtils::GetPromisedUrlFromHeaders(headers); push_delegate_->OnPush(std::make_unique<QuicServerPushHelper>( - weak_factory_.GetWeakPtr(), pushed_url), + weak_factory_.GetWeakPtr(), GURL(pushed_url)), net_log_); } if (headers_include_h2_stream_dependency_) {
diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket_impl.cc index 966861d8..833fd2e 100644 --- a/net/socket/ssl_client_socket_impl.cc +++ b/net/socket/ssl_client_socket_impl.cc
@@ -865,7 +865,7 @@ switch (ssl_config_.tls13_variant) { case kTLS13VariantDraft23: - SSL_set_tls13_variant(ssl_.get(), tls13_default); + SSL_set_tls13_variant(ssl_.get(), tls13_draft23); break; }
diff --git a/net/spdy/spdy_http_utils.cc b/net/spdy/spdy_http_utils.cc index 88b0c3d..246534c 100644 --- a/net/spdy/spdy_http_utils.cc +++ b/net/spdy/spdy_http_utils.cc
@@ -168,23 +168,4 @@ } } -GURL GetUrlFromHeaderBlock(const SpdyHeaderBlock& headers) { - SpdyHeaderBlock::const_iterator it = headers.find(kHttp2SchemeHeader); - if (it == headers.end()) - return GURL(); - std::string url = it->second.as_string(); - url.append("://"); - - it = headers.find(kHttp2AuthorityHeader); - if (it == headers.end()) - return GURL(); - url.append(it->second.as_string()); - - it = headers.find(kHttp2PathHeader); - if (it == headers.end()) - return GURL(); - url.append(it->second.as_string()); - return GURL(url); -} - } // namespace net
diff --git a/net/spdy/spdy_http_utils.h b/net/spdy/spdy_http_utils.h index d1fbf54086..09c0c6d7a 100644 --- a/net/spdy/spdy_http_utils.h +++ b/net/spdy/spdy_http_utils.h
@@ -45,10 +45,6 @@ const SpdyHeaderBlock& spdy_headers, HttpRequestHeaders* http_headers); -// Returns the URL associated with the |headers| by assembling the -// scheme, host and path from the protocol specific keys. -NET_EXPORT GURL GetUrlFromHeaderBlock(const SpdyHeaderBlock& headers); - NET_EXPORT SpdyPriority ConvertRequestPriorityToSpdyPriority(RequestPriority priority);
diff --git a/net/spdy/spdy_stream_test_util.cc b/net/spdy/spdy_stream_test_util.cc index e75149c..62b0214e 100644 --- a/net/spdy/spdy_stream_test_util.cc +++ b/net/spdy/spdy_stream_test_util.cc
@@ -97,8 +97,8 @@ size_t len = received_data_queue_.GetTotalSize(); std::string received_data(len, '\0'); if (len > 0) { - EXPECT_EQ(len, received_data_queue_.Dequeue( - base::string_as_array(&received_data), len)); + EXPECT_EQ(len, + received_data_queue_.Dequeue(base::data(received_data), len)); } return received_data; }
diff --git a/net/tools/cert_verify_tool/cert_verify_tool.cc b/net/tools/cert_verify_tool/cert_verify_tool.cc index 5be75021..7f331bc 100644 --- a/net/tools/cert_verify_tool/cert_verify_tool.cc +++ b/net/tools/cert_verify_tool/cert_verify_tool.cc
@@ -116,9 +116,13 @@ return true; // "skipping" is considered a successful return. } + base::FilePath dump_path; + if (!dump_prefix_path.empty()) + dump_path = dump_prefix_path.AddExtension("." + GetName() + ".pem"); + return VerifyUsingCertVerifyProc(proc_.get(), target_der_cert, hostname, intermediate_der_certs, root_der_certs, - crl_set, dump_prefix_path); + crl_set, dump_path); } private:
diff --git a/net/tools/cert_verify_tool/verify_using_cert_verify_proc.cc b/net/tools/cert_verify_tool/verify_using_cert_verify_proc.cc index a858091..d4086554 100644 --- a/net/tools/cert_verify_tool/verify_using_cert_verify_proc.cc +++ b/net/tools/cert_verify_tool/verify_using_cert_verify_proc.cc
@@ -115,7 +115,7 @@ const std::vector<CertInput>& intermediate_der_certs, const std::vector<CertInput>& root_der_certs, net::CRLSet* crl_set, - const base::FilePath& dump_prefix_path) { + const base::FilePath& dump_path) { std::cout << "NOTE: CertVerifyProc always uses OS trust settings (--roots are in " "addition).\n"; @@ -165,10 +165,8 @@ std::cout << "CertVerifyProc result: " << net::ErrorToShortString(rv) << "\n"; PrintCertVerifyResult(result); - if (!dump_prefix_path.empty() && result.verified_cert) { - if (!DumpX509CertificateChain(dump_prefix_path.AddExtension( - FILE_PATH_LITERAL(".CertVerifyProc.pem")), - result.verified_cert.get())) { + if (!dump_path.empty() && result.verified_cert) { + if (!DumpX509CertificateChain(dump_path, result.verified_cert.get())) { return false; } }
diff --git a/net/tools/cert_verify_tool/verify_using_cert_verify_proc.h b/net/tools/cert_verify_tool/verify_using_cert_verify_proc.h index 2d9f3284..f00c943 100644 --- a/net/tools/cert_verify_tool/verify_using_cert_verify_proc.h +++ b/net/tools/cert_verify_tool/verify_using_cert_verify_proc.h
@@ -30,6 +30,6 @@ const std::vector<CertInput>& intermediate_der_certs, const std::vector<CertInput>& root_der_certs, net::CRLSet* crl_set, - const base::FilePath& dump_prefix_path); + const base::FilePath& dump_path); #endif // NET_TOOLS_CERT_VERIFY_TOOL_VERIFY_USING_CERT_VERIFY_PROC_H_
diff --git a/net/tools/print_certificates.py b/net/tools/print_certificates.py index 82e7e631..908b36df 100755 --- a/net/tools/print_certificates.py +++ b/net/tools/print_certificates.py
@@ -8,6 +8,7 @@ import argparse import base64 import errno +import hashlib import os import re import subprocess @@ -258,10 +259,11 @@ return process_data_with_command(["der2ascii"], certificate_der) -def header_pretty_printer(unused_certificate_der, certificate_number): +def header_pretty_printer(certificate_der, certificate_number): + cert_hash = hashlib.sha256(certificate_der).hexdigest() return """=========================================== -Certificate%d -===========================================""" % certificate_number +Certificate%d: %s +===========================================""" % (certificate_number, cert_hash) # This is actually just used as a magic value, since pretty_print_certificates
diff --git a/net/url_request/url_fetcher_impl_unittest.cc b/net/url_request/url_fetcher_impl_unittest.cc index d077b76..68be0d6b 100644 --- a/net/url_request/url_fetcher_impl_unittest.cc +++ b/net/url_request/url_fetcher_impl_unittest.cc
@@ -21,13 +21,14 @@ #include "base/message_loop/message_loop.h" #include "base/path_service.h" #include "base/run_loop.h" -#include "base/single_thread_task_runner.h" +#include "base/sequenced_task_runner.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/synchronization/waitable_event.h" #include "base/task_scheduler/post_task.h" #include "base/test/test_timeouts.h" #include "base/threading/platform_thread.h" +#include "base/threading/sequenced_task_runner_handle.h" #include "base/threading/thread.h" #include "base/threading/thread_task_runner_handle.h" #include "build/build_config.h" @@ -91,6 +92,10 @@ const GURL& url, URLFetcher::RequestType request_type, scoped_refptr<net::URLRequestContextGetter> context_getter) { + if (!on_complete_or_cancel_) { + run_loop_ = std::make_unique<base::RunLoop>(); + on_complete_or_cancel_ = run_loop_->QuitClosure(); + } fetcher_.reset(new URLFetcherImpl(url, request_type, this, TRAFFIC_ANNOTATION_FOR_TESTS)); fetcher_->SetRequestContext(context_getter.get()); @@ -107,15 +112,15 @@ // Wait until the request has completed or been canceled. Does not start the // request. void WaitForComplete() { - EXPECT_TRUE(task_runner_->BelongsToCurrentThread()); - run_loop_.Run(); + EXPECT_TRUE(task_runner_->RunsTasksInCurrentSequence()); + run_loop_->Run(); } // Cancels the fetch by deleting the fetcher. void CancelFetch() { EXPECT_TRUE(fetcher_); fetcher_.reset(); - task_runner_->PostTask(FROM_HERE, run_loop_.QuitClosure()); + std::move(on_complete_or_cancel_).Run(); } // URLFetcherDelegate: @@ -124,7 +129,7 @@ EXPECT_TRUE(fetcher_); EXPECT_EQ(fetcher_.get(), source); did_complete_ = true; - task_runner_->PostTask(FROM_HERE, run_loop_.QuitClosure()); + std::move(on_complete_or_cancel_).Run(); } void OnURLFetchDownloadProgress(const URLFetcher* source, @@ -160,13 +165,18 @@ bool did_complete() const { return did_complete_; } + void set_on_complete_or_cancel_closure(base::OnceClosure closure) { + on_complete_or_cancel_ = std::move(closure); + } + private: bool did_complete_; std::unique_ptr<URLFetcherImpl> fetcher_; - const scoped_refptr<base::SingleThreadTaskRunner> task_runner_ = - base::ThreadTaskRunnerHandle::Get(); - base::RunLoop run_loop_; + const scoped_refptr<base::SequencedTaskRunner> task_runner_ = + base::SequencedTaskRunnerHandle::Get(); + std::unique_ptr<base::RunLoop> run_loop_; + base::OnceClosure on_complete_or_cancel_; DISALLOW_COPY_AND_ASSIGN(WaitingURLFetcherDelegate); }; @@ -210,9 +220,8 @@ shutting_down_(false) {} // Sets callback to be invoked when the getter is destroyed. - void set_on_destruction_callback( - const base::Closure& on_destruction_callback) { - on_destruction_callback_ = on_destruction_callback; + void set_on_destruction_callback(base::OnceClosure on_destruction_callback) { + on_destruction_callback_ = std::move(on_destruction_callback); } // URLRequestContextGetter: @@ -310,7 +319,7 @@ // the parent class already ensures it's deleted on the network thread. DCHECK(network_task_runner_->BelongsToCurrentThread()); if (!on_destruction_callback_.is_null()) - on_destruction_callback_.Run(); + std::move(on_destruction_callback_).Run(); } private: @@ -323,7 +332,7 @@ std::unique_ptr<FetcherTestURLRequestContext> context_; bool shutting_down_; - base::Closure on_destruction_callback_; + base::OnceClosure on_destruction_callback_; DISALLOW_COPY_AND_ASSIGN(FetcherTestURLRequestContextGetter); }; @@ -398,12 +407,12 @@ URLFetcher::GET, CreateSameThreadContextGetter()); if (save_to_temporary_file) { delegate->fetcher()->SaveResponseToTemporaryFile( - scoped_refptr<base::SingleThreadTaskRunner>( - base::ThreadTaskRunnerHandle::Get())); + scoped_refptr<base::SequencedTaskRunner>( + base::SequencedTaskRunnerHandle::Get())); } else { delegate->fetcher()->SaveResponseToFileAtPath( - requested_out_path, scoped_refptr<base::SingleThreadTaskRunner>( - base::ThreadTaskRunnerHandle::Get())); + requested_out_path, scoped_refptr<base::SequencedTaskRunner>( + base::SequencedTaskRunnerHandle::Get())); } delegate->StartFetcherAndWait(); @@ -559,26 +568,48 @@ EXPECT_EQ(kDefaultResponseBody, data); } -// Create the fetcher from a sequenced (not single-threaded) task. Verify that -// the expected response is received. +// Verifies that a URLFetcher works correctly on a TaskScheduler Sequence. TEST_F(URLFetcherTest, SequencedTaskTest) { auto sequenced_task_runner = base::CreateSequencedTaskRunnerWithTraits({}); - auto delegate = std::make_unique<WaitingURLFetcherDelegate>(); + + // Since we cannot use StartFetchAndWait(), which runs a nested RunLoop owned + // by the Delegate, on a SchedulerWorker Sequence, this test is split into + // two Callbacks, both run on |sequenced_task_runner_|. The test main thread + // then runs its own RunLoop, which the second of the Callbacks will quit. + base::RunLoop run_loop; + + // Actually start the test fetch, on the Sequence. sequenced_task_runner->PostTask( - FROM_HERE, base::Bind(&WaitingURLFetcherDelegate::CreateFetcher, - base::Unretained(delegate.get()), - test_server_->GetURL(kDefaultResponsePath), - URLFetcher::GET, CreateCrossThreadContextGetter())); - RunUntilIdle(); - delegate->StartFetcherAndWait(); + FROM_HERE, + base::BindOnce( + [](scoped_refptr<FetcherTestURLRequestContextGetter> context_getter, + const GURL& response_path, base::OnceClosure quit_closure) { + std::unique_ptr<WaitingURLFetcherDelegate> delegate = + std::make_unique<WaitingURLFetcherDelegate>(); + WaitingURLFetcherDelegate* raw_delegate = delegate.get(); - EXPECT_TRUE(delegate->fetcher()->GetStatus().is_success()); - EXPECT_EQ(200, delegate->fetcher()->GetResponseCode()); - std::string data; - ASSERT_TRUE(delegate->fetcher()->GetResponseAsString(&data)); - EXPECT_EQ(kDefaultResponseBody, data); + // Configure the delegate to run our |on_complete_closure_| rather + // than quitting its own |run_loop_|, on completion. + raw_delegate->set_on_complete_or_cancel_closure(base::BindOnce( + [](base::OnceClosure quit_closure, + std::unique_ptr<WaitingURLFetcherDelegate> delegate) { + EXPECT_TRUE(delegate->fetcher()->GetStatus().is_success()); + EXPECT_EQ(200, delegate->fetcher()->GetResponseCode()); + std::string data; + ASSERT_TRUE(delegate->fetcher()->GetResponseAsString(&data)); + EXPECT_EQ(kDefaultResponseBody, data); + std::move(quit_closure).Run(); + }, + base::Passed(&quit_closure), base::Passed(&delegate))); - sequenced_task_runner->DeleteSoon(FROM_HERE, delegate.release()); + raw_delegate->CreateFetcher(response_path, URLFetcher::GET, + context_getter); + raw_delegate->fetcher()->Start(); + }, + CreateCrossThreadContextGetter(), + test_server_->GetURL(kDefaultResponsePath), run_loop.QuitClosure())); + + run_loop.Run(); RunUntilIdle(); } @@ -780,7 +811,7 @@ delegate.fetcher()->SetUploadFilePath("application/x-www-form-urlencoded", upload_path, 0, std::numeric_limits<uint64_t>::max(), - base::ThreadTaskRunnerHandle::Get()); + base::SequencedTaskRunnerHandle::Get()); delegate.StartFetcherAndWait(); EXPECT_TRUE(delegate.fetcher()->GetStatus().is_success()); @@ -803,7 +834,7 @@ CreateSameThreadContextGetter()); delegate.fetcher()->SetUploadFilePath("application/x-www-form-urlencoded", upload_path, kRangeStart, kRangeLength, - base::ThreadTaskRunnerHandle::Get()); + base::SequencedTaskRunnerHandle::Get()); delegate.StartFetcherAndWait(); EXPECT_TRUE(delegate.fetcher()->GetStatus().is_success()); @@ -1326,14 +1357,15 @@ // Make sure that the URLFetcher releases its context getter pointer on // cancellation, cross-thread case. TEST_F(URLFetcherTest, CancelDifferentThreads) { - base::RunLoop run_loop_; + base::RunLoop run_loop; WaitingURLFetcherDelegate delegate; scoped_refptr<FetcherTestURLRequestContextGetter> context_getter( CreateCrossThreadContextGetter()); - context_getter->set_on_destruction_callback(base::Bind( - base::IgnoreResult(&base::SingleThreadTaskRunner::PostTask), - base::ThreadTaskRunnerHandle::Get(), FROM_HERE, run_loop_.QuitClosure())); + context_getter->set_on_destruction_callback( + base::BindOnce(base::IgnoreResult(&base::SequencedTaskRunner::PostTask), + base::SequencedTaskRunnerHandle::Get(), FROM_HERE, + run_loop.QuitClosure())); delegate.CreateFetcher(hanging_url(), URLFetcher::GET, context_getter); // The getter won't be destroyed if the test holds on to a reference to it. @@ -1341,21 +1373,22 @@ delegate.fetcher()->Start(); delegate.CancelFetch(); - run_loop_.Run(); + run_loop.Run(); EXPECT_FALSE(delegate.did_complete()); } TEST_F(URLFetcherTest, CancelWhileDelayedByThrottleDifferentThreads) { GURL url = test_server_->GetURL(kDefaultResponsePath); - base::RunLoop run_loop_; + base::RunLoop run_loop; WaitingURLFetcherDelegate delegate; scoped_refptr<FetcherTestURLRequestContextGetter> context_getter( CreateCrossThreadContextGetter()); - context_getter->set_on_destruction_callback(base::Bind( - base::IgnoreResult(&base::SingleThreadTaskRunner::PostTask), - base::ThreadTaskRunnerHandle::Get(), FROM_HERE, run_loop_.QuitClosure())); + context_getter->set_on_destruction_callback( + base::BindOnce(base::IgnoreResult(&base::SequencedTaskRunner::PostTask), + base::SequencedTaskRunnerHandle::Get(), FROM_HERE, + run_loop.QuitClosure())); delegate.CreateFetcher(url, URLFetcher::GET, context_getter); // Register an entry for test url using a sliding window of 400 seconds, and @@ -1373,7 +1406,7 @@ delegate.fetcher()->Start(); delegate.CancelFetch(); - run_loop_.Run(); + run_loop.Run(); EXPECT_FALSE(delegate.did_complete()); } @@ -1568,8 +1601,8 @@ test_server_->GetURL(std::string(kTestServerFilePrefix) + kFileToFetch), URLFetcher::GET, CreateSameThreadContextGetter()); delegate.fetcher()->SaveResponseToFileAtPath( - out_path, scoped_refptr<base::SingleThreadTaskRunner>( - base::ThreadTaskRunnerHandle::Get())); + out_path, scoped_refptr<base::SequencedTaskRunner>( + base::SequencedTaskRunnerHandle::Get())); delegate.StartFetcherAndWait(); EXPECT_FALSE(delegate.fetcher()->GetStatus().is_success());
diff --git a/net/websockets/websocket_basic_handshake_stream.cc b/net/websockets/websocket_basic_handshake_stream.cc index 4e243a5..da577b4 100644 --- a/net/websockets/websocket_basic_handshake_stream.cc +++ b/net/websockets/websocket_basic_handshake_stream.cc
@@ -70,8 +70,7 @@ std::string GenerateHandshakeChallenge() { std::string raw_challenge(websockets::kRawChallengeLength, '\0'); - crypto::RandBytes(base::string_as_array(&raw_challenge), - raw_challenge.length()); + crypto::RandBytes(base::data(raw_challenge), raw_challenge.length()); std::string encoded_challenge; base::Base64Encode(raw_challenge, &encoded_challenge); return encoded_challenge;
diff --git a/pdf/pdfium/pdfium_engine.cc b/pdf/pdfium/pdfium_engine.cc index 8a0cceb..acbd66b8 100644 --- a/pdf/pdfium/pdfium_engine.cc +++ b/pdf/pdfium/pdfium_engine.cc
@@ -688,27 +688,8 @@ PDFiumEngine::PDFiumEngine(PDFEngine::Client* client) : client_(client), - current_zoom_(1.0), - current_rotation_(0), - doc_(nullptr), - form_(nullptr), - defer_page_unload_(false), - selecting_(false), mouse_down_state_(PDFiumPage::NONSELECTABLE_AREA, PDFiumPage::LinkTarget()), - in_form_text_area_(false), - editable_form_text_area_(false), - mouse_left_button_down_(false), - mouse_middle_button_down_(false), - permissions_(0), - permissions_handler_revision_(-1), - fpdf_availability_(nullptr), - last_page_mouse_down_(-1), - most_visible_page_(-1), - called_do_document_action_(false), - render_grayscale_(false), - render_annots_(true), - edit_mode_(false), form_filler_(this), print_(this) { find_factory_.Initialize(this); @@ -742,12 +723,8 @@ for (auto& page : pages_) page->Unload(); - if (doc_) { - FORM_DoDocumentAAction(form_, FPDFDOC_AACTION_WC); - FPDFDOC_ExitFormFillEnvironment(form_); - FPDF_CloseDocument(doc_); - } - FPDFAvail_Destroy(fpdf_availability_); + if (doc_) + FORM_DoDocumentAAction(form(), FPDFDOC_AACTION_WC); } // static @@ -942,8 +919,9 @@ pages_[index]->Unload(); pages_[index]->set_calculated_links(false); pp::Size curr_page_size = GetPageSize(index); - FPDFPage_Delete(doc_, index); - FPDF_ImportPages(doc_, static_cast<PDFiumEngine*>(engine)->doc(), "1", index); + FPDFPage_Delete(doc(), index); + FPDF_ImportPages(doc(), static_cast<PDFiumEngine*>(engine)->doc(), "1", + index); pp::Size new_page_size = GetPageSize(index); if (curr_page_size != new_page_size) LoadPageInfo(true); @@ -965,18 +943,18 @@ return; if (!fpdf_availability_) { file_access_.m_FileLen = doc_loader_->GetDocumentSize(); - fpdf_availability_ = FPDFAvail_Create(&file_availability_, &file_access_); + fpdf_availability_.reset( + FPDFAvail_Create(&file_availability_, &file_access_)); DCHECK(fpdf_availability_); // Currently engine does not deal efficiently with some non-linearized // files. // See http://code.google.com/p/chromium/issues/detail?id=59400 // To improve user experience we download entire file for non-linearized // PDF. - if (FPDFAvail_IsLinearized(fpdf_availability_) != PDF_LINEARIZED) { + if (FPDFAvail_IsLinearized(fpdf_availability()) != PDF_LINEARIZED) { // Wait complete document. process_when_pending_request_complete_ = false; - FPDFAvail_Destroy(fpdf_availability_); - fpdf_availability_ = nullptr; + fpdf_availability_.reset(); return; } } @@ -1021,7 +999,8 @@ file_access_.m_FileLen = doc_loader_->GetDocumentSize(); if (!fpdf_availability_) { - fpdf_availability_ = FPDFAvail_Create(&file_availability_, &file_access_); + fpdf_availability_.reset( + FPDFAvail_Create(&file_availability_, &file_access_)); DCHECK(fpdf_availability_); } LoadDocument(); @@ -1052,7 +1031,7 @@ pages_[i]->set_available(true); // We still need to call IsPageAvail() even if the whole document is // already downloaded. - FPDFAvail_IsPageAvail(fpdf_availability_, i, &download_hints_); + FPDFAvail_IsPageAvail(fpdf_availability(), i, &download_hints_); need_update = true; if (IsPageVisible(i)) client_->Invalidate(GetPageScreenRect(i)); @@ -1065,21 +1044,22 @@ called_do_document_action_ = true; // These can only be called now, as the JS might end up needing a page. - FORM_DoDocumentJSAction(form_); - FORM_DoDocumentOpenAction(form_); + FORM_DoDocumentJSAction(form()); + FORM_DoDocumentOpenAction(form()); if (most_visible_page_ != -1) { FPDF_PAGE new_page = pages_[most_visible_page_]->GetPage(); - FORM_DoPageAAction(new_page, form_, FPDFPAGE_AACTION_OPEN); + FORM_DoPageAAction(new_page, form(), FPDFPAGE_AACTION_OPEN); } if (doc_) { DocumentFeatures document_features; document_features.page_count = pages_.size(); - document_features.has_attachments = (FPDFDoc_GetAttachmentCount(doc_) > 0); + document_features.has_attachments = (FPDFDoc_GetAttachmentCount(doc()) > 0); document_features.is_linearized = - (FPDFAvail_IsLinearized(fpdf_availability_) == PDF_LINEARIZED); - document_features.is_tagged = FPDFCatalog_IsTagged(doc_); - document_features.form_type = static_cast<FormType>(FPDF_GetFormType(doc_)); + (FPDFAvail_IsLinearized(fpdf_availability()) == PDF_LINEARIZED); + document_features.is_tagged = FPDFCatalog_IsTagged(doc()); + document_features.form_type = + static_cast<FormType>(FPDF_GetFormType(doc())); client_->DocumentLoadComplete(document_features, doc_loader_->BytesReceived()); } @@ -1208,7 +1188,7 @@ } void PDFiumEngine::PrintBegin() { - FORM_DoDocumentAAction(form_, FPDFDOC_AACTION_WP); + FORM_DoDocumentAAction(form(), FPDFDOC_AACTION_WP); } pp::Resource PDFiumEngine::PrintPages( @@ -1270,7 +1250,7 @@ } void PDFiumEngine::KillFormFocus() { - FORM_ForceToKillFocus(form_); + FORM_ForceToKillFocus(form()); SetInFormTextArea(false); } @@ -1302,7 +1282,7 @@ } void PDFiumEngine::PrintEnd() { - FORM_DoDocumentAAction(form_, FPDFDOC_AACTION_DP); + FORM_DoDocumentAAction(form(), FPDFDOC_AACTION_DP); } PDFiumPage::Area PDFiumEngine::GetCharIndex(const pp::Point& point, @@ -1418,7 +1398,7 @@ is_form_text_area && IsPointInEditableFormTextArea(page, page_x, page_y, form_type); - FORM_OnLButtonDown(form_, page, 0, page_x, page_y); + FORM_OnLButtonDown(form(), page, 0, page_x, page_y); if (form_type != FPDF_FORMFIELD_UNKNOWN) { // Destroy SelectionChangeInvalidator object before SetInFormTextArea() // changes plugin's focus to be in form text area. This way, regular text @@ -1507,10 +1487,10 @@ // Handle the case when focus starts inside a form text area. if (in_form_text_area_) { if (is_form_text_area) { - FORM_OnFocus(form_, page, 0, page_x, page_y); + FORM_OnFocus(form(), page, 0, page_x, page_y); } else { // Transition out of a form text area. - FORM_ForceToKillFocus(form_); + FORM_ForceToKillFocus(form()); SetInFormTextArea(false); } return true; @@ -1526,7 +1506,7 @@ SetInFormTextArea(true); editable_form_text_area_ = is_editable_form_text_area; - FORM_OnFocus(form_, page, 0, page_x, page_y); + FORM_OnFocus(form(), page, 0, page_x, page_y); return true; } @@ -1612,7 +1592,7 @@ double page_x; double page_y; DeviceToPage(page_index, point, &page_x, &page_y); - FORM_OnLButtonUp(form_, pages_[page_index]->GetPage(), 0, page_x, page_y); + FORM_OnLButtonUp(form(), pages_[page_index]->GetPage(), 0, page_x, page_y); } if (!selecting_) @@ -1643,7 +1623,8 @@ double page_x; double page_y; DeviceToPage(page_index, point, &page_x, &page_y); - FORM_OnMouseMove(form_, pages_[page_index]->GetPage(), 0, page_x, page_y); + FORM_OnMouseMove(form(), pages_[page_index]->GetPage(), 0, page_x, + page_y); } std::string url = GetLinkAtPosition(event.GetPosition()); @@ -1656,7 +1637,7 @@ // text selection needs to be updated. if (mouse_left_button_down_ && area == PDFiumPage::FORM_TEXT_AREA && last_page_mouse_down_ != -1) { - SetFormSelectedText(form_, pages_[last_page_mouse_down_]->GetPage()); + SetFormSelectedText(form(), pages_[last_page_mouse_down_]->GetPage()); } if (kViewerImplementedPanning && mouse_middle_button_down_) { @@ -1805,7 +1786,7 @@ if (last_page_mouse_down_ == -1) return false; - bool rv = !!FORM_OnKeyDown(form_, pages_[last_page_mouse_down_]->GetPage(), + bool rv = !!FORM_OnKeyDown(form(), pages_[last_page_mouse_down_]->GetPage(), event.GetKeyCode(), event.GetModifiers()); if (event.GetKeyCode() == ui::VKEY_BACK || @@ -1831,9 +1812,9 @@ // Check if form text selection needs to be updated. FPDF_PAGE page = pages_[last_page_mouse_down_]->GetPage(); if (in_form_text_area_) - SetFormSelectedText(form_, page); + SetFormSelectedText(form(), page); - return !!FORM_OnKeyUp(form_, page, event.GetKeyCode(), event.GetModifiers()); + return !!FORM_OnKeyUp(form(), page, event.GetKeyCode(), event.GetModifiers()); } bool PDFiumEngine::OnChar(const pp::KeyboardInputEvent& event) { @@ -1841,7 +1822,7 @@ return false; base::string16 str = base::UTF8ToUTF16(event.GetCharacterText().AsString()); - return !!FORM_OnChar(form_, pages_[last_page_mouse_down_]->GetPage(), str[0], + return !!FORM_OnChar(form(), pages_[last_page_mouse_down_]->GetPage(), str[0], event.GetModifiers()); } @@ -2203,7 +2184,7 @@ return false; FPDF_PAGE page = pages_[last_page_mouse_down_]->GetPage(); // If the return value is 2, that corresponds to "\0\0". - return FORM_GetFocusedText(form_, page, nullptr, 0) > 2; + return FORM_GetFocusedText(form(), page, nullptr, 0) > 2; } void PDFiumEngine::ReplaceSelection(const std::string& text) { @@ -2213,7 +2194,7 @@ FPDF_WIDESTRING text_pdf_wide = reinterpret_cast<FPDF_WIDESTRING>(text_wide.c_str()); - FORM_ReplaceSelection(form_, pages_[last_page_mouse_down_]->GetPage(), + FORM_ReplaceSelection(form(), pages_[last_page_mouse_down_]->GetPage(), text_pdf_wide); } } @@ -2221,23 +2202,23 @@ bool PDFiumEngine::CanUndo() { if (last_page_mouse_down_ == -1) return false; - return !!FORM_CanUndo(form_, pages_[last_page_mouse_down_]->GetPage()); + return !!FORM_CanUndo(form(), pages_[last_page_mouse_down_]->GetPage()); } bool PDFiumEngine::CanRedo() { if (last_page_mouse_down_ == -1) return false; - return !!FORM_CanRedo(form_, pages_[last_page_mouse_down_]->GetPage()); + return !!FORM_CanRedo(form(), pages_[last_page_mouse_down_]->GetPage()); } void PDFiumEngine::Undo() { if (last_page_mouse_down_ != -1) - FORM_Undo(form_, pages_[last_page_mouse_down_]->GetPage()); + FORM_Undo(form(), pages_[last_page_mouse_down_]->GetPage()); } void PDFiumEngine::Redo() { if (last_page_mouse_down_ != -1) - FORM_Redo(form_, pages_[last_page_mouse_down_]->GetPage()); + FORM_Redo(form(), pages_[last_page_mouse_down_]->GetPage()); } std::string PDFiumEngine::GetLinkAtPosition(const pp::Point& point) { @@ -2321,10 +2302,10 @@ } dict.Set(pp::Var("title"), pp::Var(base::UTF16ToUTF8(title))); - FPDF_DEST dest = FPDFBookmark_GetDest(doc_, bookmark); + FPDF_DEST dest = FPDFBookmark_GetDest(doc(), bookmark); // Some bookmarks don't have a page to select. if (dest) { - int page_index = FPDFDest_GetDestPageIndex(doc_, dest); + int page_index = FPDFDest_GetDestPageIndex(doc(), dest); if (PageIndexInBounds(page_index)) { dict.Set(pp::Var("page"), pp::Var(page_index)); @@ -2336,13 +2317,13 @@ } else { // Extract URI for bookmarks linking to an external page. FPDF_ACTION action = FPDFBookmark_GetAction(bookmark); - buffer_size = FPDFAction_GetURIPath(doc_, action, nullptr, 0); + buffer_size = FPDFAction_GetURIPath(doc(), action, nullptr, 0); if (buffer_size > 0) { std::string uri; PDFiumAPIStringBufferAdapter<std::string> api_string_adapter( &uri, buffer_size, true); api_string_adapter.Close(FPDFAction_GetURIPath( - doc_, action, api_string_adapter.GetData(), buffer_size)); + doc(), action, api_string_adapter.GetData(), buffer_size)); dict.Set(pp::Var("uri"), pp::Var(uri)); } } @@ -2355,9 +2336,9 @@ int child_index = 0; std::set<FPDF_BOOKMARK> seen_bookmarks; for (FPDF_BOOKMARK child_bookmark = - FPDFBookmark_GetFirstChild(doc_, bookmark); + FPDFBookmark_GetFirstChild(doc(), bookmark); child_bookmark; - child_bookmark = FPDFBookmark_GetNextSibling(doc_, child_bookmark)) { + child_bookmark = FPDFBookmark_GetNextSibling(doc(), child_bookmark)) { if (base::ContainsKey(seen_bookmarks, child_bookmark)) break; @@ -2373,21 +2354,21 @@ base::Optional<PDFEngine::NamedDestination> PDFiumEngine::GetNamedDestination( const std::string& destination) { // Look for the destination. - FPDF_DEST dest = FPDF_GetNamedDestByName(doc_, destination.c_str()); + FPDF_DEST dest = FPDF_GetNamedDestByName(doc(), destination.c_str()); if (!dest) { // Look for a bookmark with the same name. base::string16 destination_wide = base::UTF8ToUTF16(destination); FPDF_WIDESTRING destination_pdf_wide = reinterpret_cast<FPDF_WIDESTRING>(destination_wide.c_str()); - FPDF_BOOKMARK bookmark = FPDFBookmark_Find(doc_, destination_pdf_wide); + FPDF_BOOKMARK bookmark = FPDFBookmark_Find(doc(), destination_pdf_wide); if (bookmark) - dest = FPDFBookmark_GetDest(doc_, bookmark); + dest = FPDFBookmark_GetDest(doc(), bookmark); } if (!dest) return {}; - int page = FPDFDest_GetDestPageIndex(doc_, dest); + int page = FPDFDest_GetDestPageIndex(doc(), dest); if (page < 0) return {}; @@ -2502,15 +2483,15 @@ } bool PDFiumEngine::GetPrintScaling() { - return !!FPDF_VIEWERREF_GetPrintScaling(doc_); + return !!FPDF_VIEWERREF_GetPrintScaling(doc()); } int PDFiumEngine::GetCopiesToPrint() { - return FPDF_VIEWERREF_GetNumCopies(doc_); + return FPDF_VIEWERREF_GetNumCopies(doc()); } int PDFiumEngine::GetDuplexType() { - return static_cast<int>(FPDF_VIEWERREF_GetDuplex(doc_)); + return static_cast<int>(FPDF_VIEWERREF_GetDuplex(doc())); } bool PDFiumEngine::GetPageSizeAndUniformity(pp::Size* size) { @@ -2543,7 +2524,7 @@ // Delete all pages except the first one. while (pages_.size() > 1) { pages_.pop_back(); - FPDFPage_Delete(doc_, pages_.size()); + FPDFPage_Delete(doc(), pages_.size()); } // Calculate document size and all page sizes. @@ -2577,7 +2558,7 @@ { // Add a new page to the document, but delete the FPDF_PAGE object. ScopedFPDFPage temp_page( - FPDFPage_New(doc_, i, width_in_points, height_in_points)); + FPDFPage_New(doc(), i, width_in_points, height_in_points)); } pages_.push_back(std::make_unique<PDFiumPage>(this, i, page_rect, true)); } @@ -2591,7 +2572,7 @@ // Check if the document is ready for loading. If it isn't just bail for now, // we will call LoadDocument() again later. if (!doc_ && !doc_loader_->IsDocumentComplete() && - !FPDFAvail_IsDocAvail(fpdf_availability_, &download_hints_)) { + !FPDFAvail_IsDocAvail(fpdf_availability(), &download_hints_)) { return; } @@ -2620,7 +2601,7 @@ // This is probably not necessary, because it should have already been // called below in the |doc_| initialization path. However, the previous // call may have failed, so call it again for good measure. - FPDFAvail_IsDocAvail(fpdf_availability_, &download_hints_); + FPDFAvail_IsDocAvail(fpdf_availability(), &download_hints_); return true; } @@ -2630,10 +2611,10 @@ password_tries_remaining_--; } if (doc_loader_->IsDocumentComplete() && - !FPDFAvail_IsLinearized(fpdf_availability_)) { - doc_ = FPDF_LoadCustomDocument(&file_access_, password_cstr); + !FPDFAvail_IsLinearized(fpdf_availability())) { + doc_.reset(FPDF_LoadCustomDocument(&file_access_, password_cstr)); } else { - doc_ = FPDFAvail_GetDocument(fpdf_availability_, password_cstr); + doc_.reset(FPDFAvail_GetDocument(fpdf_availability(), password_cstr)); } if (!doc_) { if (FPDF_GetLastError() == FPDF_ERR_PASSWORD) @@ -2643,7 +2624,7 @@ // Always call FPDFAvail_IsDocAvail() so PDFium initializes internal data // structures. - FPDFAvail_IsDocAvail(fpdf_availability_, &download_hints_); + FPDFAvail_IsDocAvail(fpdf_availability(), &download_hints_); return true; } @@ -2682,11 +2663,11 @@ return; } - if (FPDFDoc_GetPageMode(doc_) == PAGEMODE_USEOUTLINES) + if (FPDFDoc_GetPageMode(doc()) == PAGEMODE_USEOUTLINES) client_->DocumentHasUnsupportedFeature("Bookmarks"); - permissions_ = FPDF_GetDocPermissions(doc_); - permissions_handler_revision_ = FPDF_GetSecurityHandlerRevision(doc_); + permissions_ = FPDF_GetDocPermissions(doc()); + permissions_handler_revision_ = FPDF_GetSecurityHandlerRevision(doc()); LoadBody(); @@ -2703,9 +2684,10 @@ pp::Size old_document_size = document_size_; document_size_ = pp::Size(); std::vector<pp::Rect> page_rects; - int page_count = FPDF_GetPageCount(doc_); + int page_count = FPDF_GetPageCount(doc()); bool doc_complete = doc_loader_->IsDocumentComplete(); - bool is_linear = FPDFAvail_IsLinearized(fpdf_availability_) == PDF_LINEARIZED; + bool is_linear = + FPDFAvail_IsLinearized(fpdf_availability()) == PDF_LINEARIZED; for (int i = 0; i < page_count; ++i) { if (i != 0) { // Add space for horizontal separator. @@ -2721,7 +2703,7 @@ page_available = pages_[i]->available(); } else if (is_linear) { int linear_page_avail = - FPDFAvail_IsPageAvail(fpdf_availability_, i, &download_hints_); + FPDFAvail_IsPageAvail(fpdf_availability(), i, &download_hints_); page_available = linear_page_avail == PDF_DATA_AVAIL; } else { page_available = doc_complete; @@ -2765,8 +2747,8 @@ DCHECK(fpdf_availability_); if (doc_loader_->IsDocumentComplete()) { LoadForm(); - } else if (FPDFAvail_IsLinearized(fpdf_availability_) == PDF_LINEARIZED && - FPDF_GetPageCount(doc_) == 1) { + } else if (FPDFAvail_IsLinearized(fpdf_availability()) == PDF_LINEARIZED && + FPDF_GetPageCount(doc()) == 1) { // If we have only one page we should load form first, bacause it is may be // XFA document. And after loading form the page count and its contents may // be changed. @@ -2783,7 +2765,7 @@ // Check if the first page is available. In a linearized PDF, that is not // always page 0. Doing this gives us the default page size, since when // the document is available, the first page is available as well. - CheckPageAvailable(FPDFAvail_GetFirstPageNum(doc_), &pending_pages_); + CheckPageAvailable(FPDFAvail_GetFirstPageNum(doc()), &pending_pages_); } LoadPageInfo(false); } @@ -2793,16 +2775,16 @@ if (form_) return; DCHECK(doc_); - form_status_ = FPDFAvail_IsFormAvail(fpdf_availability_, &download_hints_); + form_status_ = FPDFAvail_IsFormAvail(fpdf_availability(), &download_hints_); if (form_status_ != PDF_FORM_NOTAVAIL || doc_loader_->IsDocumentComplete()) { - form_ = FPDFDOC_InitFormFillEnvironment(doc_, &form_filler_); + form_.reset(FPDFDOC_InitFormFillEnvironment(doc(), &form_filler_)); #if defined(PDF_ENABLE_XFA) - FPDF_LoadXFA(doc_); + FPDF_LoadXFA(doc()); #endif - FPDF_SetFormFieldHighlightColor(form_, FPDF_FORMFIELD_UNKNOWN, + FPDF_SetFormFieldHighlightColor(form(), FPDF_FORMFIELD_UNKNOWN, kFormHighlightColor); - FPDF_SetFormFieldHighlightAlpha(form_, kFormHighlightAlpha); + FPDF_SetFormFieldHighlightAlpha(form(), kFormHighlightAlpha); } } // namespace chrome_pdf @@ -2887,7 +2869,7 @@ if (index < num_pages && pages_[index]->available()) return true; - if (!FPDFAvail_IsPageAvail(fpdf_availability_, index, &download_hints_)) { + if (!FPDFAvail_IsPageAvail(fpdf_availability(), index, &download_hints_)) { if (!base::ContainsValue(*pending, index)) pending->push_back(index); return false; @@ -2904,8 +2886,8 @@ pp::Size size; double width_in_points = 0; double height_in_points = 0; - int rv = - FPDF_GetPageSizeByIndex(doc_, index, &width_in_points, &height_in_points); + int rv = FPDF_GetPageSizeByIndex(doc(), index, &width_in_points, + &height_in_points); if (rv) { int width_in_pixels = static_cast<int>( @@ -2985,7 +2967,7 @@ &size_y); // Draw the forms. - FPDF_FFLDraw(form_, bitmap, pages_[page_index]->GetPage(), start_x, start_y, + FPDF_FFLDraw(form(), bitmap, pages_[page_index]->GetPage(), start_x, start_y, size_x, size_y, current_rotation_, GetRenderingFlags()); FillPageSides(progressive_index); @@ -3409,7 +3391,7 @@ if (most_visible_page_ != -1 && called_do_document_action_) { FPDF_PAGE old_page = pages_[most_visible_page_]->GetPage(); - FORM_DoPageAAction(old_page, form_, FPDFPAGE_AACTION_CLOSE); + FORM_DoPageAAction(old_page, form(), FPDFPAGE_AACTION_CLOSE); } most_visible_page_ = index; #if defined(OS_LINUX) @@ -3417,7 +3399,7 @@ #endif if (most_visible_page_ != -1 && called_do_document_action_) { FPDF_PAGE new_page = pages_[most_visible_page_]->GetPage(); - FORM_DoPageAAction(new_page, form_, FPDFPAGE_AACTION_OPEN); + FORM_DoPageAAction(new_page, form(), FPDFPAGE_AACTION_OPEN); } } @@ -3579,7 +3561,7 @@ #endif // defined(PDF_ENABLE_XFA) ScopedFPDFAnnotation annot( - FPDFAnnot_GetFormFieldAtPoint(form_, page, page_x, page_y)); + FPDFAnnot_GetFormFieldAtPoint(form(), page, page_x, page_y)); if (!annot) return false;
diff --git a/pdf/pdfium/pdfium_engine.h b/pdf/pdfium/pdfium_engine.h index 2107a6b..bd079435 100644 --- a/pdf/pdfium/pdfium_engine.h +++ b/pdf/pdfium/pdfium_engine.h
@@ -143,8 +143,9 @@ void UnsupportedFeature(int type); void FontSubstituted(); - FPDF_DOCUMENT doc() { return doc_; } - FPDF_FORMHANDLE form() { return form_; } + FPDF_AVAIL fpdf_availability() const { return fpdf_availability_.get(); } + FPDF_DOCUMENT doc() const { return doc_.get(); } + FPDF_FORMHANDLE form() const { return form_.get(); } private: // This helper class is used to detect the difference in selection between @@ -495,8 +496,8 @@ pp::Point page_offset_; // The plugin size in screen coordinates. pp::Size plugin_size_; - double current_zoom_; - unsigned int current_rotation_; + double current_zoom_ = 1.0; + unsigned int current_rotation_ = 0; std::unique_ptr<DocumentLoader> doc_loader_; // Main document's loader. std::string url_; @@ -509,12 +510,25 @@ bool getting_password_ = false; int password_tries_remaining_ = 0; - // The PDFium wrapper object for the document. - FPDF_DOCUMENT doc_; + // Interface structure to provide access to document stream. + FPDF_FILEACCESS file_access_; + + // Interface structure to check data availability in the document stream. + FileAvail file_availability_; + + // Interface structure to request data chunks from the document stream. + DownloadHints download_hints_; + + // Pointer to the document availability interface. + ScopedFPDFAvail fpdf_availability_; + + // The PDFium wrapper object for the document. Must come after + // |fpdf_availability_| to prevent outliving it. + ScopedFPDFDocument doc_; // The PDFium wrapper for form data. Used even if there are no form controls - // on the page. - FPDF_FORMHANDLE form_; + // on the page. Must come after |doc_| to prevent outliving it. + ScopedFPDFFormHandle form_; // Current form availability status. int form_status_ = PDF_FORM_NOTAVAIL; @@ -531,14 +545,15 @@ // During handling of input events we don't want to unload any pages in // callbacks to us from PDFium, since the current page can change while PDFium // code still has a pointer to it. - bool defer_page_unload_; + bool defer_page_unload_ = false; std::vector<int> deferred_page_unloads_; // Used for text selection, but does not include text within form text areas. // There could be more than one range if selection spans more than one page. std::vector<PDFiumRange> selection_; + // True if we're in the middle of text selection. - bool selecting_; + bool selecting_ = false; MouseDownState mouse_down_state_; @@ -546,17 +561,17 @@ std::string selected_form_text_; // True if focus is in form text field or form combobox text field. - bool in_form_text_area_; + bool in_form_text_area_ = false; // True if the form text area currently in focus is not read only, and is a // form text field or user-editable form combobox text field. - bool editable_form_text_area_; + bool editable_form_text_area_ = false; // True if left mouse button is currently being held down. - bool mouse_left_button_down_; + bool mouse_left_button_down_ = false; // True if middle mouse button is currently being held down. - bool mouse_middle_button_down_; + bool mouse_middle_button_down_ = false; // Last known position while performing middle mouse button pan. pp::Point mouse_middle_button_last_position_; @@ -578,19 +593,10 @@ base::Optional<size_t> resume_find_index_; // Permissions bitfield. - unsigned long permissions_; + unsigned long permissions_ = 0; // Permissions security handler revision number. -1 for unknown. - int permissions_handler_revision_; - - // Interface structure to provide access to document stream. - FPDF_FILEACCESS file_access_; - // Interface structure to check data availability in the document stream. - FileAvail file_availability_; - // Interface structure to request data chunks from the document stream. - DownloadHints download_hints_; - // Pointer to the document availability interface. - FPDF_AVAIL fpdf_availability_; + int permissions_handler_revision_ = -1; pp::Size default_page_size_; @@ -610,11 +616,11 @@ int next_touch_timer_id_ = 0; // Holds the zero-based page index of the last page that the mouse clicked on. - int last_page_mouse_down_; + int last_page_mouse_down_ = -1; // Holds the zero-based page index of the most visible page; refreshed by // calling CalculateVisiblePages() - int most_visible_page_; + int most_visible_page_ = -1; // Holds the page index requested by PDFium while the scroll operation // is being handled (asynchronously). @@ -622,17 +628,17 @@ // Set to true after FORM_DoDocumentJSAction/FORM_DoDocumentOpenAction have // been called. Only after that can we call FORM_DoPageAAction. - bool called_do_document_action_; + bool called_do_document_action_ = false; // Records parts of form fields that need to be highlighted at next paint, in // screen coordinates. std::vector<pp::Rect> form_highlights_; // Whether to render in grayscale or in color. - bool render_grayscale_; + bool render_grayscale_ = false; // Whether to render PDF annotations. - bool render_annots_; + bool render_annots_ = true; // The link currently under the cursor. std::string link_under_cursor_; @@ -689,7 +695,7 @@ pp::Point range_selection_base_; - bool edit_mode_; + bool edit_mode_ = false; PDFiumFormFiller form_filler_; PDFiumPrint print_;
diff --git a/remoting/codec/audio_decoder_opus.cc b/remoting/codec/audio_decoder_opus.cc index 5744487..752681f 100644 --- a/remoting/codec/audio_decoder_opus.cc +++ b/remoting/codec/audio_decoder_opus.cc
@@ -107,13 +107,13 @@ int buffer_pos = 0; for (int i = 0; i < packet->data_size(); ++i) { - int16_t* pcm_buffer = reinterpret_cast<int16_t*>( - base::string_as_array(decoded_data) + buffer_pos); + int16_t* pcm_buffer = + reinterpret_cast<int16_t*>(base::data(*decoded_data) + buffer_pos); CHECK_LE(buffer_pos + max_frame_bytes, static_cast<int>(decoded_data->size())); std::string* frame = packet->mutable_data(i); unsigned char* frame_data = - reinterpret_cast<unsigned char*>(base::string_as_array(frame)); + reinterpret_cast<unsigned char*>(base::data(*frame)); int result = opus_decode(decoder_, frame_data, frame->size(), pcm_buffer, max_frame_samples, 0); if (result < 0) {
diff --git a/remoting/codec/audio_encoder_opus.cc b/remoting/codec/audio_encoder_opus.cc index 16d2a48..536c667 100644 --- a/remoting/codec/audio_encoder_opus.cc +++ b/remoting/codec/audio_encoder_opus.cc
@@ -198,8 +198,7 @@ data->resize(kFrameSamples * kBytesPerSample * channels_); // Encode. - unsigned char* buffer = - reinterpret_cast<unsigned char*>(base::string_as_array(data)); + unsigned char* buffer = reinterpret_cast<unsigned char*>(base::data(*data)); int result = opus_encode(encoder_, pcm_buffer, kFrameSamples, buffer, data->length()); if (result < 0) {
diff --git a/remoting/codec/video_encoder_verbatim.cc b/remoting/codec/video_encoder_verbatim.cc index d5707c75..9be6199d 100644 --- a/remoting/codec/video_encoder_verbatim.cc +++ b/remoting/codec/video_encoder_verbatim.cc
@@ -19,8 +19,7 @@ static uint8_t* GetPacketOutputBuffer(VideoPacket* packet, size_t size) { packet->mutable_data()->resize(size); - return reinterpret_cast<uint8_t*>( - base::string_as_array(packet->mutable_data())); + return reinterpret_cast<uint8_t*>(base::data(*packet->mutable_data())); } VideoEncoderVerbatim::VideoEncoderVerbatim() = default;
diff --git a/remoting/host/file_transfer_message_handler.cc b/remoting/host/file_transfer_message_handler.cc index aea05128..bf067374 100644 --- a/remoting/host/file_transfer_message_handler.cc +++ b/remoting/host/file_transfer_message_handler.cc
@@ -94,7 +94,7 @@ std::unique_ptr<CompoundBuffer> buffer) { std::string message; message.resize(buffer->total_bytes()); - buffer->CopyTo(base::string_as_array(&message), message.size()); + buffer->CopyTo(base::data(message), message.size()); request_ = std::make_unique<protocol::FileTransferRequest>(); if (!request_->ParseFromString(message)) {
diff --git a/remoting/host/it2me/it2me_native_messaging_host_unittest.cc b/remoting/host/it2me/it2me_native_messaging_host_unittest.cc index b997a8d..a144b09 100644 --- a/remoting/host/it2me/it2me_native_messaging_host_unittest.cc +++ b/remoting/host/it2me/it2me_native_messaging_host_unittest.cc
@@ -321,8 +321,8 @@ } std::string message_json(length, '\0'); - read_result = output_read_file_.ReadAtCurrentPos( - base::string_as_array(&message_json), length); + read_result = + output_read_file_.ReadAtCurrentPos(base::data(message_json), length); if (read_result != static_cast<int>(length)) { LOG(ERROR) << "Message size (" << read_result << ") doesn't match the header (" << length << ").";
diff --git a/remoting/host/linux/audio_pipe_reader.cc b/remoting/host/linux/audio_pipe_reader.cc index 3ba0575..50fdd94 100644 --- a/remoting/host/linux/audio_pipe_reader.cc +++ b/remoting/host/linux/audio_pipe_reader.cc
@@ -154,8 +154,8 @@ data.resize(pos + bytes_to_read); while (pos < data.size()) { - int read_result = pipe_.ReadAtCurrentPos(base::string_as_array(&data) + pos, - data.size() - pos); + int read_result = + pipe_.ReadAtCurrentPos(base::data(data) + pos, data.size() - pos); if (read_result > 0) { pos += read_result; } else {
diff --git a/remoting/host/native_messaging/native_messaging_reader.cc b/remoting/host/native_messaging/native_messaging_reader.cc index 2c4c4de..ec4e6ea 100644 --- a/remoting/host/native_messaging/native_messaging_reader.cc +++ b/remoting/host/native_messaging/native_messaging_reader.cc
@@ -112,8 +112,8 @@ } std::string message_json(message_length, '\0'); - read_result = read_stream_.ReadAtCurrentPos( - base::string_as_array(&message_json), message_length); + read_result = + read_stream_.ReadAtCurrentPos(base::data(message_json), message_length); if (read_result != static_cast<int>(message_length)) { LOG(ERROR) << "Failed to read message body, read returned " << read_result;
diff --git a/remoting/host/native_messaging/native_messaging_writer_unittest.cc b/remoting/host/native_messaging/native_messaging_writer_unittest.cc index 6c4a8b8..6b62f04 100644 --- a/remoting/host/native_messaging/native_messaging_writer_unittest.cc +++ b/remoting/host/native_messaging/native_messaging_writer_unittest.cc
@@ -48,7 +48,7 @@ int read = read_file_.ReadAtCurrentPos(reinterpret_cast<char*>(&length), 4); EXPECT_EQ(4, read); std::string content(length, '\0'); - read = read_file_.ReadAtCurrentPos(base::string_as_array(&content), length); + read = read_file_.ReadAtCurrentPos(base::data(content), length); EXPECT_EQ(static_cast<int>(length), read); // |content| should now contain serialized |message|. @@ -80,7 +80,7 @@ read = read_file_.ReadAtCurrentPos(reinterpret_cast<char*>(&length), 4); EXPECT_EQ(4, read) << "i = " << i; content.resize(length); - read = read_file_.ReadAtCurrentPos(base::string_as_array(&content), length); + read = read_file_.ReadAtCurrentPos(base::data(content), length); EXPECT_EQ(static_cast<int>(length), read) << "i = " << i; }
diff --git a/remoting/host/security_key/security_key_message_reader.cc b/remoting/host/security_key/security_key_message_reader.cc index c6ba1b1c6..1d68f26 100644 --- a/remoting/host/security_key/security_key_message_reader.cc +++ b/remoting/host/security_key/security_key_message_reader.cc
@@ -87,8 +87,8 @@ } std::string message_data(total_message_size_bytes, '\0'); - read_result = read_stream_.ReadAtCurrentPos( - base::string_as_array(&message_data), total_message_size_bytes); + read_result = read_stream_.ReadAtCurrentPos(base::data(message_data), + total_message_size_bytes); // The static cast is safe as we know the value is smaller than max int. if (read_result != static_cast<int>(total_message_size_bytes)) { LOG(ERROR) << "Failed to read message: " << read_result;
diff --git a/remoting/host/security_key/security_key_message_reader_impl.cc b/remoting/host/security_key/security_key_message_reader_impl.cc index ae3b07e8..5a70efcb 100644 --- a/remoting/host/security_key/security_key_message_reader_impl.cc +++ b/remoting/host/security_key/security_key_message_reader_impl.cc
@@ -78,8 +78,7 @@ } std::string message_data(message_length_bytes, '\0'); - if (!ReadFromStream(base::string_as_array(&message_data), - message_data.size())) { + if (!ReadFromStream(base::data(message_data), message_data.size())) { NotifyError(); return; }
diff --git a/remoting/host/security_key/security_key_message_writer_impl_unittest.cc b/remoting/host/security_key/security_key_message_writer_impl_unittest.cc index c582baf..1eea21c9a 100644 --- a/remoting/host/security_key/security_key_message_writer_impl_unittest.cc +++ b/remoting/host/security_key/security_key_message_writer_impl_unittest.cc
@@ -66,17 +66,16 @@ std::string SecurityKeyMessageWriterImplTest::ReadMessage( int payload_length_bytes) { std::string message_header(SecurityKeyMessage::kHeaderSizeBytes, '\0'); - read_file_.ReadAtCurrentPos(base::string_as_array(&message_header), + read_file_.ReadAtCurrentPos(base::data(message_header), SecurityKeyMessage::kHeaderSizeBytes); std::string message_type(SecurityKeyMessage::kMessageTypeSizeBytes, '\0'); - read_file_.ReadAtCurrentPos(base::string_as_array(&message_type), + read_file_.ReadAtCurrentPos(base::data(message_type), SecurityKeyMessage::kMessageTypeSizeBytes); std::string message_data(payload_length_bytes, '\0'); if (payload_length_bytes) { - read_file_.ReadAtCurrentPos(base::string_as_array(&message_data), - payload_length_bytes); + read_file_.ReadAtCurrentPos(base::data(message_data), payload_length_bytes); } return message_header + message_type + message_data; @@ -173,8 +172,8 @@ // Retrieve and verify the message type. std::string message_type(length, '\0'); - int bytes_read = read_file_.ReadAtCurrentPos( - base::string_as_array(&message_type), length); + int bytes_read = + read_file_.ReadAtCurrentPos(base::data(message_type), length); ASSERT_EQ(length, bytes_read); SecurityKeyMessageType type =
diff --git a/remoting/host/setup/me2me_native_messaging_host_unittest.cc b/remoting/host/setup/me2me_native_messaging_host_unittest.cc index 5c2007a..1e4c010 100644 --- a/remoting/host/setup/me2me_native_messaging_host_unittest.cc +++ b/remoting/host/setup/me2me_native_messaging_host_unittest.cc
@@ -417,8 +417,8 @@ } std::string message_json(length, '\0'); - read_result = output_read_file_.ReadAtCurrentPos( - base::string_as_array(&message_json), length); + read_result = + output_read_file_.ReadAtCurrentPos(base::data(message_json), length); if (read_result != static_cast<int>(length)) { return nullptr; }
diff --git a/remoting/protocol/webrtc_dummy_video_encoder.cc b/remoting/protocol/webrtc_dummy_video_encoder.cc index 4f32d5b..adf5a750 100644 --- a/remoting/protocol/webrtc_dummy_video_encoder.cc +++ b/remoting/protocol/webrtc_dummy_video_encoder.cc
@@ -138,8 +138,8 @@ base::TimeTicks encode_started_time, base::TimeTicks encode_finished_time) { DCHECK(main_task_runner_->BelongsToCurrentThread()); - uint8_t* buffer = reinterpret_cast<uint8_t*>( - base::string_as_array(const_cast<std::string*>(&frame.data))); + uint8_t* buffer = const_cast<uint8_t*>( + reinterpret_cast<const uint8_t*>(base::data(frame.data))); size_t buffer_size = frame.data.size(); base::AutoLock lock(lock_); if (state_ == kUninitialized) {
diff --git a/sandbox/linux/BUILD.gn b/sandbox/linux/BUILD.gn index 2da57fc9..b409fd6 100644 --- a/sandbox/linux/BUILD.gn +++ b/sandbox/linux/BUILD.gn
@@ -99,6 +99,7 @@ "services/yama_unittests.cc", "syscall_broker/broker_file_permission_unittest.cc", "syscall_broker/broker_process_unittest.cc", + "syscall_broker/broker_simple_message_unittest.cc", "tests/main.cc", "tests/scoped_temporary_file.cc", "tests/scoped_temporary_file.h", @@ -371,6 +372,8 @@ "syscall_broker/broker_permission_list.h", "syscall_broker/broker_process.cc", "syscall_broker/broker_process.h", + "syscall_broker/broker_simple_message.cc", + "syscall_broker/broker_simple_message.h", ] defines = [ "SANDBOX_IMPLEMENTATION" ] @@ -420,6 +423,8 @@ "syscall_broker/broker_permission_list.h", "syscall_broker/broker_process.cc", "syscall_broker/broker_process.h", + "syscall_broker/broker_simple_message.cc", + "syscall_broker/broker_simple_message.h", ] } else if (!is_android) { sources += [
diff --git a/sandbox/linux/syscall_broker/broker_channel.h b/sandbox/linux/syscall_broker/broker_channel.h index 2abdba4..7ee39d1 100644 --- a/sandbox/linux/syscall_broker/broker_channel.h +++ b/sandbox/linux/syscall_broker/broker_channel.h
@@ -7,6 +7,7 @@ #include "base/files/scoped_file.h" #include "base/macros.h" +#include "sandbox/sandbox_export.h" namespace sandbox { @@ -15,7 +16,7 @@ // A small class to create a pipe-like communication channel. It is based on a // SOCK_SEQPACKET unix socket, which is connection-based and guaranteed to // preserve message boundaries. -class BrokerChannel { +class SANDBOX_EXPORT BrokerChannel { public: typedef base::ScopedFD EndPoint; static void CreatePair(EndPoint* reader, EndPoint* writer);
diff --git a/sandbox/linux/syscall_broker/broker_client.cc b/sandbox/linux/syscall_broker/broker_client.cc index 6ae93045..50395c0 100644 --- a/sandbox/linux/syscall_broker/broker_client.cc +++ b/sandbox/linux/syscall_broker/broker_client.cc
@@ -18,6 +18,7 @@ #include "sandbox/linux/syscall_broker/broker_channel.h" #include "sandbox/linux/syscall_broker/broker_command.h" #include "sandbox/linux/syscall_broker/broker_permission_list.h" +#include "sandbox/linux/syscall_broker/broker_simple_message.h" #if defined(OS_ANDROID) && !defined(MSG_CMSG_CLOEXEC) #define MSG_CMSG_CLOEXEC 0x40000000 @@ -29,13 +30,11 @@ BrokerClient::BrokerClient(const BrokerPermissionList& broker_permission_list, BrokerChannel::EndPoint ipc_channel, const BrokerCommandSet& allowed_command_set, - bool fast_check_in_client, - bool quiet_failures_for_tests) + bool fast_check_in_client) : broker_permission_list_(broker_permission_list), ipc_channel_(std::move(ipc_channel)), allowed_command_set_(allowed_command_set), - fast_check_in_client_(fast_check_in_client), - quiet_failures_for_tests_(quiet_failures_for_tests) {} + fast_check_in_client_(fast_check_in_client) {} BrokerClient::~BrokerClient() {} @@ -85,31 +84,33 @@ return -broker_permission_list_.denied_errno(); } - base::Pickle write_pickle; - write_pickle.WriteInt(COMMAND_READLINK); - write_pickle.WriteString(path); - RAW_CHECK(write_pickle.size() <= kMaxMessageLength); + // Message structure: + // int: syscall_type + // char[]: pathname, including '\0' terminator + BrokerSimpleMessage message; + RAW_CHECK(message.AddIntToMessage(COMMAND_READLINK)); + RAW_CHECK(message.AddStringToMessage(path)); int returned_fd = -1; - uint8_t reply_buf[kMaxMessageLength]; - ssize_t msg_len = SendRecvRequest(write_pickle, 0, reply_buf, - sizeof(reply_buf), &returned_fd); + BrokerSimpleMessage reply; + ssize_t msg_len = + message.SendRecvMsgWithFlags(ipc_channel_.get(), 0, &returned_fd, &reply); if (msg_len < 0) return msg_len; - base::Pickle read_pickle(reinterpret_cast<char*>(reply_buf), msg_len); - base::PickleIterator iter(read_pickle); int return_value = -1; - int return_length = 0; + size_t return_length = 0; const char* return_data = nullptr; - if (!iter.ReadInt(&return_value)) + if (!reply.ReadInt(&return_value)) return -ENOMEM; if (return_value < 0) return return_value; - if (!iter.ReadData(&return_data, &return_length)) + + if (!reply.ReadData(&return_data, &return_length)) return -ENOMEM; if (return_length < 0) return -ENOMEM; + if (static_cast<size_t>(return_length) > bufsize) return -ENAMETOOLONG; memcpy(buf, return_data, return_length); @@ -126,23 +127,21 @@ return -broker_permission_list_.denied_errno(); } - base::Pickle write_pickle; - write_pickle.WriteInt(COMMAND_RENAME); - write_pickle.WriteString(oldpath); - write_pickle.WriteString(newpath); - RAW_CHECK(write_pickle.size() <= kMaxMessageLength); + BrokerSimpleMessage message; + RAW_CHECK(message.AddIntToMessage(COMMAND_RENAME)); + RAW_CHECK(message.AddStringToMessage(oldpath)); + RAW_CHECK(message.AddStringToMessage(newpath)); int returned_fd = -1; - uint8_t reply_buf[kMaxMessageLength]; - ssize_t msg_len = SendRecvRequest(write_pickle, 0, reply_buf, - sizeof(reply_buf), &returned_fd); + BrokerSimpleMessage reply; + ssize_t msg_len = + message.SendRecvMsgWithFlags(ipc_channel_.get(), 0, &returned_fd, &reply); + if (msg_len < 0) return msg_len; - base::Pickle read_pickle(reinterpret_cast<char*>(reply_buf), msg_len); - base::PickleIterator iter(read_pickle); int return_value = -1; - if (!iter.ReadInt(&return_value)) + if (!reply.ReadInt(&return_value)) return -ENOMEM; return return_value; @@ -198,23 +197,22 @@ int BrokerClient::PathOnlySyscall(BrokerCommand syscall_type, const char* pathname) const { - base::Pickle write_pickle; - write_pickle.WriteInt(syscall_type); - write_pickle.WriteString(pathname); - RAW_CHECK(write_pickle.size() <= kMaxMessageLength); + BrokerSimpleMessage message; + RAW_CHECK(message.AddIntToMessage(syscall_type)); + RAW_CHECK(message.AddStringToMessage(pathname)); int returned_fd = -1; - uint8_t reply_buf[kMaxMessageLength]; - ssize_t msg_len = SendRecvRequest(write_pickle, 0, reply_buf, - sizeof(reply_buf), &returned_fd); + BrokerSimpleMessage reply; + ssize_t msg_len = + message.SendRecvMsgWithFlags(ipc_channel_.get(), 0, &returned_fd, &reply); + if (msg_len < 0) return msg_len; - base::Pickle read_pickle(reinterpret_cast<char*>(reply_buf), msg_len); - base::PickleIterator iter(read_pickle); int return_value = -1; - if (!iter.ReadInt(&return_value)) + if (!reply.ReadInt(&return_value)) return -ENOMEM; + return return_value; } @@ -225,23 +223,21 @@ int BrokerClient::PathAndFlagsSyscall(BrokerCommand syscall_type, const char* pathname, int flags) const { - base::Pickle write_pickle; - write_pickle.WriteInt(syscall_type); - write_pickle.WriteString(pathname); - write_pickle.WriteInt(flags); - RAW_CHECK(write_pickle.size() <= kMaxMessageLength); + BrokerSimpleMessage message; + RAW_CHECK(message.AddIntToMessage(syscall_type)); + RAW_CHECK(message.AddStringToMessage(pathname)); + RAW_CHECK(message.AddIntToMessage(flags)); int returned_fd = -1; - uint8_t reply_buf[kMaxMessageLength]; - ssize_t msg_len = SendRecvRequest(write_pickle, 0, reply_buf, - sizeof(reply_buf), &returned_fd); - if (msg_len < 0) - return msg_len; + BrokerSimpleMessage reply; + ssize_t msg_len = + message.SendRecvMsgWithFlags(ipc_channel_.get(), 0, &returned_fd, &reply); - base::Pickle read_pickle(reinterpret_cast<char*>(reply_buf), msg_len); - base::PickleIterator iter(read_pickle); + if (msg_len < 0) + return -ENOMEM; + int return_value = -1; - if (!iter.ReadInt(&return_value)) + if (!reply.ReadInt(&return_value)) return -ENOMEM; return return_value; @@ -268,23 +264,21 @@ flags &= ~kCurrentProcessOpenFlagsMask; } - base::Pickle write_pickle; - write_pickle.WriteInt(syscall_type); - write_pickle.WriteString(pathname); - write_pickle.WriteInt(flags); - RAW_CHECK(write_pickle.size() <= kMaxMessageLength); + BrokerSimpleMessage message; + RAW_CHECK(message.AddIntToMessage(syscall_type)); + RAW_CHECK(message.AddStringToMessage(pathname)); + RAW_CHECK(message.AddIntToMessage(flags)); int returned_fd = -1; - uint8_t reply_buf[kMaxMessageLength]; - ssize_t msg_len = SendRecvRequest(write_pickle, recvmsg_flags, reply_buf, - sizeof(reply_buf), &returned_fd); - if (msg_len < 0) - return msg_len; + BrokerSimpleMessage reply; + ssize_t msg_len = message.SendRecvMsgWithFlags( + ipc_channel_.get(), recvmsg_flags, &returned_fd, &reply); - base::Pickle read_pickle(reinterpret_cast<char*>(reply_buf), msg_len); - base::PickleIterator iter(read_pickle); + if (msg_len < 0) + return -ENOMEM; + int return_value = -1; - if (!iter.ReadInt(&return_value)) + if (!reply.ReadInt(&return_value)) return -ENOMEM; if (return_value < 0) return return_value; @@ -302,28 +296,27 @@ const char* pathname, void* result_ptr, size_t expected_result_size) const { - base::Pickle write_pickle; - write_pickle.WriteInt(syscall_type); - write_pickle.WriteString(pathname); - RAW_CHECK(write_pickle.size() <= kMaxMessageLength); + BrokerSimpleMessage message; + RAW_CHECK(message.AddIntToMessage(syscall_type)); + RAW_CHECK(message.AddStringToMessage(pathname)); int returned_fd = -1; - uint8_t reply_buf[kMaxMessageLength]; - ssize_t msg_len = SendRecvRequest(write_pickle, 0, reply_buf, - sizeof(reply_buf), &returned_fd); + BrokerSimpleMessage reply; + ssize_t msg_len = + message.SendRecvMsgWithFlags(ipc_channel_.get(), 0, &returned_fd, &reply); + if (msg_len < 0) return msg_len; - base::Pickle read_pickle(reinterpret_cast<char*>(reply_buf), msg_len); - base::PickleIterator iter(read_pickle); int return_value = -1; - int return_length = 0; + size_t return_length = 0; const char* return_data = nullptr; - if (!iter.ReadInt(&return_value)) + + if (!reply.ReadInt(&return_value)) return -ENOMEM; if (return_value < 0) return return_value; - if (!iter.ReadData(&return_data, &return_length)) + if (!reply.ReadData(&return_data, &return_length)) return -ENOMEM; if (static_cast<size_t>(return_length) != expected_result_size) return -ENOMEM; @@ -331,25 +324,5 @@ return return_value; } -// Send a request (in request_pickle) that will include a new temporary -// socketpair as well (created internally by SendRecvMsg()). Then read the -// reply on this new socketpair in |reply_buf| and put an eventual attached -// file descriptor (if any) in |returned_fd|. -ssize_t BrokerClient::SendRecvRequest(const base::Pickle& request_pickle, - int recvmsg_flags, - uint8_t* reply_buf, - size_t reply_buf_size, - int* returned_fd) const { - ssize_t msg_len = base::UnixDomainSocket::SendRecvMsgWithFlags( - ipc_channel_.get(), reply_buf, reply_buf_size, recvmsg_flags, returned_fd, - request_pickle); - if (msg_len <= 0) { - if (!quiet_failures_for_tests_) - RAW_LOG(ERROR, "Could not make request to broker process"); - return -ENOMEM; - } - return msg_len; -} - } // namespace syscall_broker } // namespace sandbox
diff --git a/sandbox/linux/syscall_broker/broker_client.h b/sandbox/linux/syscall_broker/broker_client.h index fc108f1..ead90d4 100644 --- a/sandbox/linux/syscall_broker/broker_client.h +++ b/sandbox/linux/syscall_broker/broker_client.h
@@ -10,7 +10,6 @@ #include <unistd.h> #include "base/macros.h" -#include "base/pickle.h" #include "sandbox/linux/syscall_broker/broker_channel.h" #include "sandbox/linux/syscall_broker/broker_command.h" @@ -33,12 +32,10 @@ // and save an IPC round trip. // |ipc_channel| needs to be a suitable SOCK_SEQPACKET unix socket. // |fast_check_in_client| should be set to true and - // |quiet_failures_for_tests| to false unless you are writing tests. BrokerClient(const BrokerPermissionList& policy, BrokerChannel::EndPoint ipc_channel, const BrokerCommandSet& allowed_command_set, - bool fast_check_in_client, - bool quiet_failures_for_tests); + bool fast_check_in_client); ~BrokerClient(); // Get the file descriptor used for IPC. This is used for tests. @@ -93,20 +90,12 @@ void* result_ptr, size_t expected_result_size) const; - ssize_t SendRecvRequest(const base::Pickle& request_pickle, - int recvmsg_flags, - uint8_t* reply_buf, - size_t reply_buf_size, - int* returned_fd) const; - const BrokerPermissionList& broker_permission_list_; const BrokerChannel::EndPoint ipc_channel_; const BrokerCommandSet allowed_command_set_; const bool fast_check_in_client_; // Whether to forward a request that we // know will be denied to the broker. (Used // for tests). - const bool quiet_failures_for_tests_; // Disable certain error message when - // testing for failures. DISALLOW_COPY_AND_ASSIGN(BrokerClient); };
diff --git a/sandbox/linux/syscall_broker/broker_command.h b/sandbox/linux/syscall_broker/broker_command.h index aa22b94a..1c45967 100644 --- a/sandbox/linux/syscall_broker/broker_command.h +++ b/sandbox/linux/syscall_broker/broker_command.h
@@ -17,8 +17,6 @@ class BrokerPermissionList; -constexpr size_t kMaxMessageLength = 4096; - // Some flags are local to the current process and cannot be sent over a Unix // socket. They need special treatment from the client. // O_CLOEXEC is tricky because in theory another thread could call execve()
diff --git a/sandbox/linux/syscall_broker/broker_host.cc b/sandbox/linux/syscall_broker/broker_host.cc index bdfa875..7855d98 100644 --- a/sandbox/linux/syscall_broker/broker_host.cc +++ b/sandbox/linux/syscall_broker/broker_host.cc
@@ -16,15 +16,13 @@ #include <string> #include <utility> -#include <vector> #include "base/files/scoped_file.h" #include "base/logging.h" -#include "base/pickle.h" #include "base/posix/eintr_wrapper.h" -#include "base/posix/unix_domain_socket.h" #include "sandbox/linux/syscall_broker/broker_command.h" #include "sandbox/linux/syscall_broker/broker_permission_list.h" +#include "sandbox/linux/syscall_broker/broker_simple_message.h" #include "sandbox/linux/system_headers/linux_syscalls.h" namespace sandbox { @@ -41,175 +39,185 @@ return syscall(__NR_openat, AT_FDCWD, pathname, flags, mode); } +bool GetPathAndFlags(BrokerSimpleMessage* message, + const char** pathname, + int* flags) { + return message->ReadString(pathname) && message->ReadInt(flags); +} + // Perform access(2) on |requested_filename| with mode |mode| if allowed by our -// permission_list. Write the syscall return value (-errno) to |write_pickle|. +// permission_list. Write the syscall return value (-errno) to |reply|. void AccessFileForIPC(const BrokerCommandSet& allowed_command_set, const BrokerPermissionList& permission_list, const std::string& requested_filename, int mode, - base::Pickle* write_pickle) { + BrokerSimpleMessage* reply) { const char* file_to_access = NULL; if (!CommandAccessIsSafe(allowed_command_set, permission_list, requested_filename.c_str(), mode, &file_to_access)) { - write_pickle->WriteInt(-permission_list.denied_errno()); + RAW_CHECK(reply->AddIntToMessage(-permission_list.denied_errno())); return; } - CHECK(file_to_access); + RAW_CHECK(file_to_access); if (access(file_to_access, mode) < 0) { - write_pickle->WriteInt(-errno); + RAW_CHECK(reply->AddIntToMessage(-errno)); return; } - write_pickle->WriteInt(0); + RAW_CHECK(reply->AddIntToMessage(0)); } +// Performs mkdir(2) on |filename| with mode |mode| if allowed by our +// permission_list. Write the syscall return value (-errno) to |reply|. void MkdirFileForIPC(const BrokerCommandSet& allowed_command_set, const BrokerPermissionList& permission_list, const std::string& filename, int mode, - base::Pickle* write_pickle) { + BrokerSimpleMessage* reply) { const char* file_to_access = nullptr; if (!CommandMkdirIsSafe(allowed_command_set, permission_list, filename.c_str(), &file_to_access)) { - write_pickle->WriteInt(-permission_list.denied_errno()); + RAW_CHECK(reply->AddIntToMessage(-permission_list.denied_errno())); return; } if (mkdir(file_to_access, mode) < 0) { - write_pickle->WriteInt(-errno); + RAW_CHECK(reply->AddIntToMessage(-errno)); return; } - write_pickle->WriteInt(0); + RAW_CHECK(reply->AddIntToMessage(0)); } // Open |requested_filename| with |flags| if allowed by our permission list. -// Write the syscall return value (-errno) to |write_pickle| and append -// a file descriptor to |opened_files| if relevant. +// Write the syscall return value (-errno) to |reply| and return the +// file descriptor in the |opened_file| if relevant. void OpenFileForIPC(const BrokerCommandSet& allowed_command_set, const BrokerPermissionList& permission_list, const std::string& requested_filename, int flags, - base::Pickle* write_pickle, - std::vector<int>* opened_files) { + BrokerSimpleMessage* reply, + int* opened_file) { const char* file_to_open = NULL; bool unlink_after_open = false; if (!CommandOpenIsSafe(allowed_command_set, permission_list, requested_filename.c_str(), flags, &file_to_open, &unlink_after_open)) { - write_pickle->WriteInt(-permission_list.denied_errno()); + RAW_CHECK(reply->AddIntToMessage(-permission_list.denied_errno())); return; } CHECK(file_to_open); int opened_fd = sys_open(file_to_open, flags); if (opened_fd < 0) { - write_pickle->WriteInt(-errno); + RAW_CHECK(reply->AddIntToMessage(-errno)); return; } if (unlink_after_open) unlink(file_to_open); - opened_files->push_back(opened_fd); - write_pickle->WriteInt(0); + *opened_file = opened_fd; + RAW_CHECK(reply->AddIntToMessage(0)); } -// Perform rename(2) on |old_filename| to |new_filename| and marshal the -// result to |write_pickle|. +// Perform rename(2) on |old_filename| to |new_filename| and write the +// result to |return_val|. void RenameFileForIPC(const BrokerCommandSet& allowed_command_set, const BrokerPermissionList& permission_list, const std::string& old_filename, const std::string& new_filename, - base::Pickle* write_pickle) { + BrokerSimpleMessage* reply) { const char* old_file_to_access = nullptr; const char* new_file_to_access = nullptr; if (!CommandRenameIsSafe(allowed_command_set, permission_list, old_filename.c_str(), new_filename.c_str(), &old_file_to_access, &new_file_to_access)) { - write_pickle->WriteInt(-permission_list.denied_errno()); + RAW_CHECK(reply->AddIntToMessage(-permission_list.denied_errno())); return; } if (rename(old_file_to_access, new_file_to_access) < 0) { - write_pickle->WriteInt(-errno); + RAW_CHECK(reply->AddIntToMessage(-errno)); return; } - write_pickle->WriteInt(0); + RAW_CHECK(reply->AddIntToMessage(0)); } // Perform readlink(2) on |filename| using a buffer of MAX_PATH bytes. void ReadlinkFileForIPC(const BrokerCommandSet& allowed_command_set, const BrokerPermissionList& permission_list, const std::string& filename, - base::Pickle* write_pickle) { + BrokerSimpleMessage* reply) { const char* file_to_access = nullptr; if (!CommandReadlinkIsSafe(allowed_command_set, permission_list, filename.c_str(), &file_to_access)) { - write_pickle->WriteInt(-permission_list.denied_errno()); + RAW_CHECK(reply->AddIntToMessage(-permission_list.denied_errno())); return; } char buf[PATH_MAX]; ssize_t result = readlink(file_to_access, buf, sizeof(buf)); if (result < 0) { - write_pickle->WriteInt(-errno); + RAW_CHECK(reply->AddIntToMessage(-errno)); return; } - write_pickle->WriteInt(result); - write_pickle->WriteData(buf, result); + RAW_CHECK(reply->AddIntToMessage(result)); + RAW_CHECK(reply->AddDataToMessage(buf, result)); } void RmdirFileForIPC(const BrokerCommandSet& allowed_command_set, const BrokerPermissionList& permission_list, const std::string& requested_filename, - base::Pickle* write_pickle) { + BrokerSimpleMessage* reply) { const char* file_to_access = nullptr; if (!CommandRmdirIsSafe(allowed_command_set, permission_list, requested_filename.c_str(), &file_to_access)) { - write_pickle->WriteInt(-permission_list.denied_errno()); + RAW_CHECK(reply->AddIntToMessage(-permission_list.denied_errno())); return; } if (rmdir(file_to_access) < 0) { - write_pickle->WriteInt(-errno); + RAW_CHECK(reply->AddIntToMessage(-errno)); return; } - write_pickle->WriteInt(0); + RAW_CHECK(reply->AddIntToMessage(0)); } -// Perform stat(2) on |requested_filename| and marshal the result to -// |write_pickle|. +// Perform stat(2) on |requested_filename| and write the result to +// |return_val|. void StatFileForIPC(const BrokerCommandSet& allowed_command_set, const BrokerPermissionList& permission_list, BrokerCommand command_type, const std::string& requested_filename, - base::Pickle* write_pickle) { + BrokerSimpleMessage* reply) { const char* file_to_access = nullptr; if (!CommandStatIsSafe(allowed_command_set, permission_list, requested_filename.c_str(), &file_to_access)) { - write_pickle->WriteInt(-permission_list.denied_errno()); + RAW_CHECK(reply->AddIntToMessage(-permission_list.denied_errno())); return; } if (command_type == COMMAND_STAT) { struct stat sb; if (stat(file_to_access, &sb) < 0) { - write_pickle->WriteInt(-errno); + RAW_CHECK(reply->AddIntToMessage(-errno)); return; } - write_pickle->WriteInt(0); - write_pickle->WriteData(reinterpret_cast<char*>(&sb), sizeof(sb)); + RAW_CHECK(reply->AddIntToMessage(0)); + RAW_CHECK( + reply->AddDataToMessage(reinterpret_cast<char*>(&sb), sizeof(sb))); } else { DCHECK(command_type == COMMAND_STAT64); #if defined(__ANDROID_API__) && __ANDROID_API__ < 21 // stat64 is not defined for older Android API versions in newer NDK // versions. - write_pickle->WriteInt(-ENOSYS); + RAW_CHECK(reply->AddIntToMessage(-ENOSYS)); return; #else struct stat64 sb; if (stat64(file_to_access, &sb) < 0) { - write_pickle->WriteInt(-errno); + RAW_CHECK(reply->AddIntToMessage(-errno)); return; } - write_pickle->WriteInt(0); - write_pickle->WriteData(reinterpret_cast<char*>(&sb), sizeof(sb)); + RAW_CHECK(reply->AddIntToMessage(0)); + RAW_CHECK( + reply->AddDataToMessage(reinterpret_cast<char*>(&sb), sizeof(sb))); #endif // defined(__ANDROID_API__) && __ANDROID_API__ < 21 } } @@ -217,100 +225,108 @@ void UnlinkFileForIPC(const BrokerCommandSet& allowed_command_set, const BrokerPermissionList& permission_list, const std::string& requested_filename, - base::Pickle* write_pickle) { + BrokerSimpleMessage* message) { const char* file_to_access = nullptr; if (!CommandUnlinkIsSafe(allowed_command_set, permission_list, requested_filename.c_str(), &file_to_access)) { - write_pickle->WriteInt(-permission_list.denied_errno()); + RAW_CHECK(message->AddIntToMessage(-permission_list.denied_errno())); return; } if (unlink(file_to_access) < 0) { - write_pickle->WriteInt(-errno); + RAW_CHECK(message->AddIntToMessage(-errno)); return; } - write_pickle->WriteInt(0); + RAW_CHECK(message->AddIntToMessage(0)); } // Handle a |command_type| request contained in |iter| and write the reply -// to |write_pickle|, adding any files opened to |opened_files|. +// to |reply|. bool HandleRemoteCommand(const BrokerCommandSet& allowed_command_set, const BrokerPermissionList& permission_list, - base::PickleIterator iter, - base::Pickle* write_pickle, - std::vector<int>* opened_files) { + BrokerSimpleMessage* message, + BrokerSimpleMessage* reply, + int* opened_file) { + // Message structure: + // int: command type + // char[]: pathname + // int: flags int command_type; - if (!iter.ReadInt(&command_type)) + if (!message->ReadInt(&command_type)) return false; switch (command_type) { case COMMAND_ACCESS: { - std::string requested_filename; + const char* requested_filename; int flags = 0; - if (!iter.ReadString(&requested_filename) || !iter.ReadInt(&flags)) + if (!GetPathAndFlags(message, &requested_filename, &flags)) return false; AccessFileForIPC(allowed_command_set, permission_list, requested_filename, - flags, write_pickle); + flags, reply); break; } case COMMAND_MKDIR: { - std::string requested_filename; + const char* requested_filename; int mode = 0; - if (!iter.ReadString(&requested_filename) || !iter.ReadInt(&mode)) + if (!GetPathAndFlags(message, &requested_filename, &mode)) return false; MkdirFileForIPC(allowed_command_set, permission_list, requested_filename, - mode, write_pickle); + mode, reply); break; } case COMMAND_OPEN: { - std::string requested_filename; + const char* requested_filename; int flags = 0; - if (!iter.ReadString(&requested_filename) || !iter.ReadInt(&flags)) + if (!GetPathAndFlags(message, &requested_filename, &flags)) return false; OpenFileForIPC(allowed_command_set, permission_list, requested_filename, - flags, write_pickle, opened_files); + flags, reply, opened_file); break; } case COMMAND_READLINK: { - std::string filename; - if (!iter.ReadString(&filename)) + const char* filename; + if (!message->ReadString(&filename)) return false; - ReadlinkFileForIPC(allowed_command_set, permission_list, filename, - write_pickle); + + ReadlinkFileForIPC(allowed_command_set, permission_list, filename, reply); break; } case COMMAND_RENAME: { - std::string old_filename; - std::string new_filename; - if (!iter.ReadString(&old_filename) || !iter.ReadString(&new_filename)) + const char* old_filename; + if (!message->ReadString(&old_filename)) return false; + + const char* new_filename; + if (!message->ReadString(&new_filename)) + return false; + RenameFileForIPC(allowed_command_set, permission_list, old_filename, - new_filename, write_pickle); + new_filename, reply); break; } case COMMAND_RMDIR: { - std::string requested_filename; - if (!iter.ReadString(&requested_filename)) + const char* requested_filename; + if (!message->ReadString(&requested_filename)) return false; RmdirFileForIPC(allowed_command_set, permission_list, requested_filename, - write_pickle); + reply); break; } case COMMAND_STAT: case COMMAND_STAT64: { - std::string requested_filename; - if (!iter.ReadString(&requested_filename)) + const char* requested_filename; + if (!message->ReadString(&requested_filename)) return false; StatFileForIPC(allowed_command_set, permission_list, static_cast<BrokerCommand>(command_type), - requested_filename, write_pickle); + requested_filename, reply); break; } case COMMAND_UNLINK: { - std::string requested_filename; - if (!iter.ReadString(&requested_filename)) + const char* requested_filename; + if (!message->ReadString(&requested_filename)) return false; UnlinkFileForIPC(allowed_command_set, permission_list, requested_filename, - write_pickle); + reply); break; } default: @@ -336,48 +352,36 @@ // that we will then close. // A request should start with an int that will be used as the command type. BrokerHost::RequestStatus BrokerHost::HandleRequest() const { - std::vector<base::ScopedFD> fds; - char buf[kMaxMessageLength]; + BrokerSimpleMessage message; errno = 0; - const ssize_t msg_len = base::UnixDomainSocket::RecvMsg( - ipc_channel_.get(), buf, sizeof(buf), &fds); + base::ScopedFD temporary_ipc; + const ssize_t msg_len = + message.RecvMsgWithFlags(ipc_channel_.get(), 0, &temporary_ipc); if (msg_len == 0 || (msg_len == -1 && errno == ECONNRESET)) { // EOF from the client, or the client died, we should die. return RequestStatus::LOST_CLIENT; } - // The client should send exactly one file descriptor, on which we + // The client sends exactly one file descriptor, on which we // will write the reply. - if (msg_len < 0 || fds.size() != 1 || fds[0].get() < 0) { + if (msg_len < 0) { PLOG(ERROR) << "Error reading message from the client"; return RequestStatus::FAILURE; } - base::ScopedFD temporary_ipc(std::move(fds[0])); - - base::Pickle pickle(buf, msg_len); - base::PickleIterator iter(pickle); - base::Pickle write_pickle; - std::vector<int> opened_files; + BrokerSimpleMessage reply; + int opened_file = -1; bool result = - HandleRemoteCommand(allowed_command_set_, broker_permission_list_, iter, - &write_pickle, &opened_files); + HandleRemoteCommand(allowed_command_set_, broker_permission_list_, + &message, &reply, &opened_file); - if (result) { - CHECK_LE(write_pickle.size(), kMaxMessageLength); - ssize_t sent = base::UnixDomainSocket::SendMsg( - temporary_ipc.get(), write_pickle.data(), write_pickle.size(), - opened_files); - if (sent <= 0) { - LOG(ERROR) << "Could not send IPC reply"; - result = false; - } - } + ssize_t sent = reply.SendMsg(temporary_ipc.get(), opened_file); + if (sent < 0) + LOG(ERROR) << "sent failed"; - // Close anything we have opened in this process. - for (int fd : opened_files) { - int ret = IGNORE_EINTR(close(fd)); + if (opened_file >= 0) { + int ret = IGNORE_EINTR(close(opened_file)); DCHECK(!ret) << "Could not close file descriptor"; }
diff --git a/sandbox/linux/syscall_broker/broker_process.cc b/sandbox/linux/syscall_broker/broker_process.cc index 8ebce3166..40fff3f 100644 --- a/sandbox/linux/syscall_broker/broker_process.cc +++ b/sandbox/linux/syscall_broker/broker_process.cc
@@ -78,7 +78,7 @@ broker_pid_ = child_pid; broker_client_ = std::make_unique<BrokerClient>( broker_permission_list_, std::move(ipc_writer), allowed_command_set_, - fast_check_in_client_, quiet_failures_for_tests_); + fast_check_in_client_); initialized_ = true; return true; }
diff --git a/sandbox/linux/syscall_broker/broker_simple_message.cc b/sandbox/linux/syscall_broker/broker_simple_message.cc new file mode 100644 index 0000000..dd504da5 --- /dev/null +++ b/sandbox/linux/syscall_broker/broker_simple_message.cc
@@ -0,0 +1,322 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "sandbox/linux/syscall_broker/broker_simple_message.h" + +#include <errno.h> +#include <sys/socket.h> +#include <unistd.h> + +#include "base/files/scoped_file.h" +#include "base/logging.h" +#include "base/numerics/safe_math.h" +#include "base/posix/eintr_wrapper.h" +#include "base/posix/unix_domain_socket.h" +#include "base/process/process_handle.h" +#include "build/build_config.h" + +namespace sandbox { + +namespace syscall_broker { + +BrokerSimpleMessage::BrokerSimpleMessage() + : read_only_(false), + write_only_(false), + broken_(false), + length_(0), + read_next_(message_), + write_next_(message_) {} + +ssize_t BrokerSimpleMessage::SendRecvMsgWithFlags(int fd, + int recvmsg_flags, + int* result_fd, + BrokerSimpleMessage* reply) { + RAW_CHECK(reply); + + // This socketpair is only used for the IPC and is cleaned up before + // returning. + base::ScopedFD recv_sock; + base::ScopedFD send_sock; + if (!base::CreateSocketPair(&recv_sock, &send_sock)) + return -1; + + if (!SendMsg(fd, send_sock.get())) + return -1; + + // Close the sending end of the socket right away so that if our peer closes + // it before sending a response (e.g., from exiting), RecvMsgWithFlags() will + // return EOF instead of hanging. + send_sock.reset(); + + base::ScopedFD recv_fd; + const ssize_t reply_len = + reply->RecvMsgWithFlags(recv_sock.get(), recvmsg_flags, &recv_fd); + recv_sock.reset(); + if (reply_len == -1) + return -1; + + if (result_fd) + *result_fd = (recv_fd == -1) ? -1 : recv_fd.release(); + + return reply_len; +} + +bool BrokerSimpleMessage::SendMsg(int fd, int send_fd) { + if (broken_) + return false; + + struct msghdr msg = {}; + const void* buf = reinterpret_cast<const void*>(message_); + struct iovec iov = {const_cast<void*>(buf), length_}; + msg.msg_iov = &iov; + msg.msg_iovlen = 1; + + const unsigned control_len = CMSG_SPACE(sizeof(int)); + char control_buffer[control_len]; + if (send_fd >= 0) { + struct cmsghdr* cmsg; + msg.msg_control = control_buffer; + msg.msg_controllen = control_len; + cmsg = CMSG_FIRSTHDR(&msg); + cmsg->cmsg_level = SOL_SOCKET; + cmsg->cmsg_type = SCM_RIGHTS; + cmsg->cmsg_len = CMSG_LEN(sizeof(int)); + memcpy(CMSG_DATA(cmsg), &send_fd, sizeof(int)); + msg.msg_controllen = cmsg->cmsg_len; + } + + // Avoid a SIGPIPE if the other end breaks the connection. + // Due to a bug in the Linux kernel (net/unix/af_unix.c) MSG_NOSIGNAL isn't + // regarded for SOCK_SEQPACKET in the AF_UNIX domain, but it is mandated by + // POSIX. + const int flags = MSG_NOSIGNAL; + const ssize_t r = HANDLE_EINTR(sendmsg(fd, &msg, flags)); + return static_cast<ssize_t>(length_) == r; +} + +ssize_t BrokerSimpleMessage::RecvMsgWithFlags(int fd, + int flags, + base::ScopedFD* return_fd) { + // The message must be fresh and unused. + RAW_CHECK(!read_only_ && !write_only_); + read_only_ = true; // The message should not be written to again. + struct msghdr msg = {}; + struct iovec iov = {message_, kMaxMessageLength}; + msg.msg_iov = &iov; + msg.msg_iovlen = 1; + +#if defined(OS_NACL_NONSFI) + const size_t kControlBufferSize = + CMSG_SPACE(sizeof(int) * base::UnixDomainSocket::kMaxFileDescriptors); +#else + const size_t kControlBufferSize = + CMSG_SPACE(sizeof(int) * base::UnixDomainSocket::kMaxFileDescriptors) + + // The PNaCl toolchain for Non-SFI binary build does not support ucred. + CMSG_SPACE(sizeof(struct ucred)); +#endif // defined(OS_NACL_NONSFI) + + char control_buffer[kControlBufferSize]; + msg.msg_control = control_buffer; + msg.msg_controllen = sizeof(control_buffer); + + const ssize_t r = HANDLE_EINTR(recvmsg(fd, &msg, flags)); + if (r == -1) + return -1; + + int* wire_fds = NULL; + size_t wire_fds_len = 0; + base::ProcessId pid = -1; + + if (msg.msg_controllen > 0) { + struct cmsghdr* cmsg; + for (cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) { + const size_t payload_len = cmsg->cmsg_len - CMSG_LEN(0); + if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) { + DCHECK_EQ(payload_len % sizeof(int), 0u); + DCHECK_EQ(wire_fds, static_cast<void*>(nullptr)); + wire_fds = reinterpret_cast<int*>(CMSG_DATA(cmsg)); + wire_fds_len = payload_len / sizeof(int); + } +#if !defined(OS_NACL_NONSFI) + // The PNaCl toolchain for Non-SFI binary build does not support + // SCM_CREDENTIALS. + if (cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SCM_CREDENTIALS) { + DCHECK_EQ(payload_len, sizeof(struct ucred)); + DCHECK_EQ(pid, -1); + pid = reinterpret_cast<struct ucred*>(CMSG_DATA(cmsg))->pid; + } +#endif + } + } + + if (msg.msg_flags & MSG_TRUNC || msg.msg_flags & MSG_CTRUNC) { + for (size_t i = 0; i < wire_fds_len; ++i) { + close(wire_fds[i]); + } + errno = EMSGSIZE; + return -1; + } + + if (wire_fds) { + if (wire_fds_len > 1) { + // Only one FD is accepted by this receive. + for (unsigned i = 0; i < wire_fds_len; ++i) { + close(wire_fds[i]); + } + errno = EMSGSIZE; + NOTREACHED(); + return -1; + } + + *return_fd = base::ScopedFD(wire_fds[0]); + } + + // At this point, |r| is guaranteed to be >= 0. + length_ = static_cast<size_t>(r); + return r; +} + +bool BrokerSimpleMessage::AddStringToMessage(const char* string) { + // strlen() + 1 to always include the '\0' terminating character. + return AddDataToMessage(string, strlen(string) + 1); +} + +bool BrokerSimpleMessage::AddDataToMessage(const char* data, size_t length) { + if (read_only_ || broken_) + return false; + + write_only_ = true; // Message should only be written to going forward. + + base::CheckedNumeric<size_t> safe_length(length); + safe_length += length_; + safe_length += sizeof(EntryType); + safe_length += sizeof(length); + + if (safe_length.ValueOrDie() > kMaxMessageLength) { + broken_ = true; + return false; + } + + EntryType type = EntryType::DATA; + + // Write the type to the message + memcpy(write_next_, &type, sizeof(EntryType)); + write_next_ += sizeof(EntryType); + // Write the length of the buffer to the message + memcpy(write_next_, &length, sizeof(length)); + write_next_ += sizeof(length); + // Write the data in the buffer to the message + memcpy(write_next_, data, length); + write_next_ += length; + length_ = write_next_ - message_; + + return true; +} + +bool BrokerSimpleMessage::AddIntToMessage(int data) { + if (read_only_ || broken_) + return false; + + write_only_ = true; // Message should only be written to going forward. + + base::CheckedNumeric<size_t> safe_length(length_); + safe_length += sizeof(int); + safe_length += sizeof(EntryType); + + if (!safe_length.IsValid() || safe_length.ValueOrDie() > kMaxMessageLength) { + broken_ = true; + return false; + } + + EntryType type = EntryType::INT; + + memcpy(write_next_, &type, sizeof(EntryType)); + write_next_ += sizeof(EntryType); + memcpy(write_next_, &data, sizeof(int)); + write_next_ += sizeof(int); + length_ = write_next_ - message_; + + return true; +} + +bool BrokerSimpleMessage::ReadString(const char** data) { + size_t str_len; + bool result = ReadData(data, &str_len); + return result && (*data)[str_len - 1] == '\0'; +} + +bool BrokerSimpleMessage::ReadData(const char** data, size_t* length) { + if (write_only_ || broken_) + return false; + + read_only_ = true; // Message should not be written to. + if (read_next_ > (message_ + length_)) { + broken_ = true; + return false; + } + + if (!ValidateType(EntryType::DATA)) { + broken_ = true; + return false; + } + + // Get the length of the data buffer from the message. + if ((read_next_ + sizeof(size_t)) > (message_ + length_)) { + broken_ = true; + return false; + } + memcpy(length, read_next_, sizeof(size_t)); + read_next_ = read_next_ + sizeof(size_t); + + // Get the raw data buffer from the message. + if ((read_next_ + *length) > (message_ + length_)) { + broken_ = true; + return false; + } + *data = reinterpret_cast<char*>(read_next_); + read_next_ = read_next_ + *length; + return true; +} + +bool BrokerSimpleMessage::ReadInt(int* result) { + if (write_only_ || broken_) + return false; + + read_only_ = true; // Message should not be written to. + if (read_next_ > (message_ + length_)) { + broken_ = true; + return false; + } + + if (!ValidateType(EntryType::INT)) { + broken_ = true; + return false; + } + + if ((read_next_ + sizeof(int)) > (message_ + length_)) { + broken_ = true; + return false; + } + memcpy(result, read_next_, sizeof(int)); + read_next_ = read_next_ + sizeof(int); + return true; +} + +bool BrokerSimpleMessage::ValidateType(EntryType expected_type) { + if ((read_next_ + sizeof(EntryType)) > (message_ + length_)) + return false; + + EntryType type; + memcpy(&type, read_next_, sizeof(EntryType)); + if (type != expected_type) + return false; + + read_next_ = read_next_ + sizeof(EntryType); + return true; +} + +} // namespace syscall_broker + +} // namespace sandbox
diff --git a/sandbox/linux/syscall_broker/broker_simple_message.h b/sandbox/linux/syscall_broker/broker_simple_message.h new file mode 100644 index 0000000..598b65b --- /dev/null +++ b/sandbox/linux/syscall_broker/broker_simple_message.h
@@ -0,0 +1,106 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef SANDBOX_LINUX_SYSCALL_BROKER_BROKER_SIMPLE_MESSAGE_H_ +#define SANDBOX_LINUX_SYSCALL_BROKER_BROKER_SIMPLE_MESSAGE_H_ + +#include <stdint.h> +#include <sys/types.h> + +#include "base/files/scoped_file.h" +#include "sandbox/sandbox_export.h" + +namespace sandbox { +namespace syscall_broker { + +// This class is meant to provide a very simple messaging mechanism that is +// signal-safe for the broker to utilize. This addresses many of the issues +// outlined in https://crbug.com/255063. In short, the use of the standard +// base::UnixDomainSockets is not possible because it uses base::Pickle and +// std::vector, which are not signal-safe. +// +// In implementation, much of the code for sending and receiving is taken from +// base::UnixDomainSockets and re-used below. Thus, ultimately, it might be +// worthwhile making a first-class base-supported signal-safe set of mechanisms +// that reduces the code duplication. +class SANDBOX_EXPORT BrokerSimpleMessage { + public: + BrokerSimpleMessage(); + + // Signal-safe + ssize_t SendRecvMsgWithFlags(int fd, + int recvmsg_flags, + int* send_fd, + BrokerSimpleMessage* reply); + + // Use sendmsg to write the given msg and the file descriptor |send_fd|. + // Returns true if successful. Signal-safe. + bool SendMsg(int fd, int send_fd); + + // Similar to RecvMsg, but allows to specify |flags| for recvmsg(2). + // Guaranteed to return either 1 or 0 fds. Signal-safe. + ssize_t RecvMsgWithFlags(int fd, int flags, base::ScopedFD* return_fd); + + // Adds a NUL-terminated C-style string to the message as a raw buffer. + // Returns true if the internal message buffer has room for the data, and the + // data is successfully appended. + bool AddStringToMessage(const char* string); + + // Adds a raw data buffer to the message. If the raw data is actually a + // string, be sure to have length explicitly include the '\0' terminating + // character. Returns true if the internal message buffer has room for the + // data, and the data is successfully appended. + bool AddDataToMessage(const char* buffer, size_t length); + + // Adds an int to the message. Returns true if the internal message buffer has + // room for the int and the int is successfully added. + bool AddIntToMessage(int int_to_add); + + // This returns a pointer to the next available data buffer in |data|. The + // pointer is owned by |this| class. The resulting buffer is a string and + // terminated with a '\0' character. + bool ReadString(const char** string); + + // This returns a pointer to the next available data buffer in the message + // in |data|, and the length of the buffer in |length|. The buffer is owned by + // |this| class. + bool ReadData(const char** data, size_t* length); + + // This reads the next available int from the message and stores it in + // |result|. + bool ReadInt(int* result); + + // The maximum length of a message in the fixed size buffer. + static constexpr size_t kMaxMessageLength = 4096; + + private: + friend class BrokerSimpleMessageTestHelper; + + enum class EntryType { DATA = 0xBDBDBD80, INT = 0xBDBDBD81 }; + + // Returns whether or not the next available entry matches the expected entry + // type. + bool ValidateType(EntryType expected_type); + + // Set to true once a message is read from, it may never be written to. + bool read_only_; + // Set to true once a message is written to, it may never be read from. + bool write_only_; + // Set when an operation fails, so that all subsequed operations fail, + // including any attempt to send the broken message. + bool broken_; + // The current length of the contents in the |message_| buffer. + size_t length_; + // The pointer to the next location in the |message_| buffer to read from. + uint8_t* read_next_; + // The pointer to the next location in the |message_| buffer to write from. + uint8_t* write_next_; + // The statically allocated buffer of size |kMaxMessageLength|. + uint8_t message_[kMaxMessageLength]; +}; + +} // namespace syscall_broker +} // namespace sandbox + +#endif // SANDBOX_LINUX_SYSCALL_BROKER_BROKER_SIMPLE_MESSAGE_H_
diff --git a/sandbox/linux/syscall_broker/broker_simple_message_unittest.cc b/sandbox/linux/syscall_broker/broker_simple_message_unittest.cc new file mode 100644 index 0000000..9d600ecf --- /dev/null +++ b/sandbox/linux/syscall_broker/broker_simple_message_unittest.cc
@@ -0,0 +1,703 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "sandbox/linux/syscall_broker/broker_simple_message.h" + +#include "base/bind.h" +#include "base/bind_helpers.h" +#include "base/macros.h" +#include "base/single_thread_task_runner.h" +#include "base/synchronization/waitable_event.h" +#include "base/threading/thread.h" +#include "sandbox/linux/syscall_broker/broker_channel.h" +#include "sandbox/linux/syscall_broker/broker_simple_message.h" +#include "sandbox/linux/tests/test_utils.h" +#include "sandbox/linux/tests/unit_tests.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace sandbox { + +namespace syscall_broker { + +namespace { + +void PostWaitableEventToThread(base::Thread* thread, + base::WaitableEvent* wait_event) { + thread->task_runner()->PostTask(FROM_HERE, + base::BindOnce(&base::WaitableEvent::Signal, + base::Unretained(wait_event))); +} + +} // namespace + +class ExpectedResultValue { + public: + virtual bool NextMessagePieceMatches(BrokerSimpleMessage* message) = 0; + virtual size_t Size() = 0; +}; + +class ExpectedResultDataValue : public ExpectedResultValue { + public: + ExpectedResultDataValue(const char* data, size_t length); + + bool NextMessagePieceMatches(BrokerSimpleMessage* message) override; + size_t Size() override; + + private: + const char* data_; + size_t length_; + ExpectedResultDataValue(); +}; + +class ExpectedResultIntValue : public ExpectedResultValue { + public: + ExpectedResultIntValue(int value); + + bool NextMessagePieceMatches(BrokerSimpleMessage* message) override; + size_t Size() override; + + private: + int value_; + + ExpectedResultIntValue(); +}; + +class BrokerSimpleMessageTestHelper { + public: + static bool MessageContentMatches(const BrokerSimpleMessage& message, + const uint8_t* content, + size_t length); + + static void SendMsg(int write_fd, BrokerSimpleMessage* message, int fd); + + static void RecvMsg(BrokerChannel::EndPoint* ipc_reader, + ExpectedResultValue** expected_values, + int expected_values_length); + + static void RecvMsgAndReply(BrokerChannel::EndPoint* ipc_reader, + ExpectedResultValue** expected_values, + int expected_values_length, + const char* response_msg, + int fd); + + static void RecvMsgBadRead(BrokerChannel::EndPoint* ipc_reader, int fd); + + // Helper functions to write the respective BrokerSimpleMessage::EntryType to + // a buffer. Returns the pointer to the memory right after where the value + // was written to in |dst|. + static uint8_t* WriteDataType(uint8_t* dst); + static uint8_t* WriteIntType(uint8_t* dst); + + static size_t entry_type_size() { + return sizeof(BrokerSimpleMessage::EntryType); + } +}; + +ExpectedResultDataValue::ExpectedResultDataValue() {} + +ExpectedResultDataValue::ExpectedResultDataValue(const char* data, + size_t length) + : data_(data), length_(length) {} + +bool ExpectedResultDataValue::NextMessagePieceMatches( + BrokerSimpleMessage* message) { + const char* next_data; + size_t next_length; + + if (!message->ReadData(&next_data, &next_length)) + return false; + + if (next_length != length_) + return false; + + return strncmp(data_, next_data, length_) == 0; +} + +size_t ExpectedResultDataValue::Size() { + return sizeof(size_t) + length_ * sizeof(char) + + BrokerSimpleMessageTestHelper::entry_type_size(); +} + +ExpectedResultIntValue::ExpectedResultIntValue() {} + +ExpectedResultIntValue::ExpectedResultIntValue(int value) : value_(value) {} + +bool ExpectedResultIntValue::NextMessagePieceMatches( + BrokerSimpleMessage* message) { + int next_value; + + if (!message->ReadInt(&next_value)) + return false; + + return next_value == value_; +} + +size_t ExpectedResultIntValue::Size() { + return sizeof(int) + BrokerSimpleMessageTestHelper::entry_type_size(); +} + +// static +bool BrokerSimpleMessageTestHelper::MessageContentMatches( + const BrokerSimpleMessage& message, + const uint8_t* content, + size_t length) { + return length == message.length_ && + memcmp(message.message_, content, length) == 0; +} + +// static +void BrokerSimpleMessageTestHelper::SendMsg(int write_fd, + BrokerSimpleMessage* message, + int fd) { + EXPECT_NE(-1, message->SendMsg(write_fd, fd)); +} + +// static +void BrokerSimpleMessageTestHelper::RecvMsg( + BrokerChannel::EndPoint* ipc_reader, + ExpectedResultValue** expected_values, + int expected_values_length) { + base::ScopedFD return_fd; + BrokerSimpleMessage message; + ssize_t len = message.RecvMsgWithFlags(ipc_reader->get(), 0, &return_fd); + + EXPECT_LE(0, len) << "RecvMsgWithFlags response invalid"; + + size_t expected_message_size = 0; + for (int i = 0; i < expected_values_length; i++) { + ExpectedResultValue* expected_result = expected_values[i]; + EXPECT_TRUE(expected_result->NextMessagePieceMatches(&message)); + expected_message_size += expected_result->Size(); + } + + EXPECT_EQ(static_cast<ssize_t>(expected_message_size), len); +} + +// static +void BrokerSimpleMessageTestHelper::RecvMsgBadRead( + BrokerChannel::EndPoint* ipc_reader, + int fd) { + base::ScopedFD return_fd; + BrokerSimpleMessage message; + ssize_t len = message.RecvMsgWithFlags(ipc_reader->get(), 0, &return_fd); + + EXPECT_LE(0, len) << "RecvMSgWithFlags response invalid"; + + // Try to read a string instead of the int. + const char* bad_str; + EXPECT_FALSE(message.ReadString(&bad_str)); + + // Now try to read the int, the message should be marked as broken at this + // point. + int expected_int; + EXPECT_FALSE(message.ReadInt(&expected_int)); + + // Now try to read the actual string. + const char* expected_str; + EXPECT_FALSE(message.ReadString(&expected_str)); + + BrokerSimpleMessage response_message; + SendMsg(return_fd.get(), &response_message, -1); +} + +// static +void BrokerSimpleMessageTestHelper::RecvMsgAndReply( + BrokerChannel::EndPoint* ipc_reader, + ExpectedResultValue** expected_values, + int expected_values_length, + const char* response_msg, + int fd) { + base::ScopedFD return_fd; + BrokerSimpleMessage message; + ssize_t len = message.RecvMsgWithFlags(ipc_reader->get(), 0, &return_fd); + + EXPECT_LT(0, len); + + size_t expected_message_size = 0; + for (int i = 0; i < expected_values_length; i++) { + ExpectedResultValue* expected_result = expected_values[i]; + EXPECT_TRUE(expected_result->NextMessagePieceMatches(&message)); + expected_message_size += expected_result->Size(); + } + + EXPECT_EQ(expected_message_size, static_cast<size_t>(len)); + + BrokerSimpleMessage response_message; + response_message.AddDataToMessage(response_msg, strlen(response_msg) + 1); + SendMsg(return_fd.get(), &response_message, -1); +} + +// static +uint8_t* BrokerSimpleMessageTestHelper::WriteDataType(uint8_t* dst) { + BrokerSimpleMessage::EntryType type = BrokerSimpleMessage::EntryType::DATA; + memcpy(dst, &type, sizeof(BrokerSimpleMessage::EntryType)); + return dst + sizeof(BrokerSimpleMessage::EntryType); +} + +// static +uint8_t* BrokerSimpleMessageTestHelper::WriteIntType(uint8_t* dst) { + BrokerSimpleMessage::EntryType type = BrokerSimpleMessage::EntryType::INT; + memcpy(dst, &type, sizeof(BrokerSimpleMessage::EntryType)); + return dst + sizeof(BrokerSimpleMessage::EntryType); +} + +TEST(BrokerSimpleMessage, AddData) { + const char data1[] = "hello, world"; + const char data2[] = "foobar"; + const int int1 = 42; + const int int2 = 24; + uint8_t message_content[BrokerSimpleMessage::kMaxMessageLength]; + uint8_t* next; + size_t len; + + // Simple string + { + BrokerSimpleMessage message; + message.AddDataToMessage(data1, strlen(data1)); + + next = BrokerSimpleMessageTestHelper::WriteDataType(message_content); + len = strlen(data1); + memcpy(next, &len, sizeof(len)); + next = next + sizeof(len); + memcpy(next, data1, strlen(data1)); + next = next + strlen(data1); + + EXPECT_TRUE(BrokerSimpleMessageTestHelper::MessageContentMatches( + message, message_content, next - message_content)); + } + + // Simple int + { + BrokerSimpleMessage message; + message.AddIntToMessage(int1); + + next = BrokerSimpleMessageTestHelper::WriteIntType(message_content); + memcpy(next, &int1, sizeof(int)); + next = next + sizeof(int); + + EXPECT_TRUE(BrokerSimpleMessageTestHelper::MessageContentMatches( + message, message_content, next - message_content)); + } + + // string then int + { + BrokerSimpleMessage message; + message.AddDataToMessage(data1, strlen(data1)); + message.AddIntToMessage(int1); + + // string + next = BrokerSimpleMessageTestHelper::WriteDataType(message_content); + len = strlen(data1); + memcpy(next, &len, sizeof(len)); + next = next + sizeof(len); + memcpy(next, data1, strlen(data1)); + next = next + strlen(data1); + + // int + next = BrokerSimpleMessageTestHelper::WriteIntType(next); + memcpy(next, &int1, sizeof(int)); + next = next + sizeof(int); + + EXPECT_TRUE(BrokerSimpleMessageTestHelper::MessageContentMatches( + message, message_content, next - message_content)); + } + + // int then string + { + BrokerSimpleMessage message; + message.AddIntToMessage(int1); + message.AddDataToMessage(data1, strlen(data1)); + + // int + next = BrokerSimpleMessageTestHelper::WriteIntType(message_content); + memcpy(next, &int1, sizeof(int)); + next = next + sizeof(int); + + // string + next = BrokerSimpleMessageTestHelper::WriteDataType(next); + len = strlen(data1); + memcpy(next, &len, sizeof(len)); + next = next + sizeof(len); + memcpy(next, data1, strlen(data1)); + next = next + strlen(data1); + + EXPECT_TRUE(BrokerSimpleMessageTestHelper::MessageContentMatches( + message, message_content, next - message_content)); + } + + // string int string int + { + BrokerSimpleMessage message; + message.AddDataToMessage(data1, strlen(data1)); + message.AddIntToMessage(int1); + message.AddDataToMessage(data2, strlen(data2)); + message.AddIntToMessage(int2); + + // string + next = BrokerSimpleMessageTestHelper::WriteDataType(message_content); + len = strlen(data1); + memcpy(next, &len, sizeof(len)); + next = next + sizeof(len); + memcpy(next, data1, strlen(data1)); + next = next + strlen(data1); + + // int + next = BrokerSimpleMessageTestHelper::WriteIntType(next); + memcpy(next, &int1, sizeof(int)); + next = next + sizeof(int); + + // string + next = BrokerSimpleMessageTestHelper::WriteDataType(next); + len = strlen(data2); + memcpy(next, &len, sizeof(len)); + next = next + sizeof(len); + memcpy(next, data2, strlen(data2)); + next = next + strlen(data2); + + // int + next = BrokerSimpleMessageTestHelper::WriteIntType(next); + memcpy(next, &int2, sizeof(int)); + next = next + sizeof(int); + + EXPECT_TRUE(BrokerSimpleMessageTestHelper::MessageContentMatches( + message, message_content, next - message_content)); + } + + // Add too much data + { + BrokerSimpleMessage message; + + char foo[8192]; + memset(foo, 'x', sizeof(foo)); + + EXPECT_FALSE(message.AddDataToMessage(foo, sizeof(foo))); + } +} + +TEST(BrokerSimpleMessage, SendAndRecvMsg) { + const char data1[] = "hello, world"; + const char data2[] = "foobar"; + const int int1 = 42; + const int int2 = 24; + + base::Thread message_thread("SendMessageThread"); + ASSERT_TRUE(message_thread.Start()); + base::WaitableEvent wait_event( + base::WaitableEvent::ResetPolicy::AUTOMATIC, + base::WaitableEvent::InitialState::NOT_SIGNALED); + + // Empty message case + { + SCOPED_TRACE("Empty message case"); + BrokerChannel::EndPoint ipc_reader; + BrokerChannel::EndPoint ipc_writer; + BrokerChannel::CreatePair(&ipc_reader, &ipc_writer); + + BrokerSimpleMessage send_message; + message_thread.task_runner()->PostTask( + FROM_HERE, base::BindOnce(&BrokerSimpleMessageTestHelper::SendMsg, + ipc_writer.get(), &send_message, -1)); + + PostWaitableEventToThread(&message_thread, &wait_event); + + BrokerSimpleMessageTestHelper::RecvMsg(&ipc_reader, nullptr, 0); + + wait_event.Wait(); + } + + // Simple string case + { + SCOPED_TRACE("Simple string case"); + BrokerChannel::EndPoint ipc_reader; + BrokerChannel::EndPoint ipc_writer; + BrokerChannel::CreatePair(&ipc_reader, &ipc_writer); + + BrokerSimpleMessage send_message; + send_message.AddDataToMessage(data1, strlen(data1) + 1); + message_thread.task_runner()->PostTask( + FROM_HERE, base::BindOnce(&BrokerSimpleMessageTestHelper::SendMsg, + ipc_writer.get(), &send_message, -1)); + + PostWaitableEventToThread(&message_thread, &wait_event); + + ExpectedResultDataValue data1_value(data1, strlen(data1) + 1); + ExpectedResultValue* expected_results[] = {&data1_value}; + + BrokerSimpleMessageTestHelper::RecvMsg(&ipc_reader, expected_results, + base::size(expected_results)); + + wait_event.Wait(); + } + + // Simple int case + { + SCOPED_TRACE("Simple int case"); + BrokerChannel::EndPoint ipc_reader; + BrokerChannel::EndPoint ipc_writer; + BrokerChannel::CreatePair(&ipc_reader, &ipc_writer); + + BrokerSimpleMessage send_message; + send_message.AddIntToMessage(int1); + message_thread.task_runner()->PostTask( + FROM_HERE, base::BindOnce(&BrokerSimpleMessageTestHelper::SendMsg, + ipc_writer.get(), &send_message, -1)); + + PostWaitableEventToThread(&message_thread, &wait_event); + + ExpectedResultIntValue int1_value(int1); + ExpectedResultValue* expected_results[] = {&int1_value}; + + BrokerSimpleMessageTestHelper::RecvMsg(&ipc_reader, expected_results, + base::size(expected_results)); + + wait_event.Wait(); + } + + // Mixed message 1 + { + SCOPED_TRACE("Mixed message 1"); + base::Thread message_thread("SendMessageThread"); + ASSERT_TRUE(message_thread.Start()); + BrokerChannel::EndPoint ipc_reader; + BrokerChannel::EndPoint ipc_writer; + BrokerChannel::CreatePair(&ipc_reader, &ipc_writer); + + BrokerSimpleMessage send_message; + send_message.AddDataToMessage(data1, strlen(data1) + 1); + send_message.AddIntToMessage(int1); + message_thread.task_runner()->PostTask( + FROM_HERE, base::BindOnce(&BrokerSimpleMessageTestHelper::SendMsg, + ipc_writer.get(), &send_message, -1)); + + PostWaitableEventToThread(&message_thread, &wait_event); + + ExpectedResultDataValue data1_value(data1, strlen(data1) + 1); + ExpectedResultIntValue int1_value(int1); + ExpectedResultValue* expected_results[] = {&data1_value, &int1_value}; + + BrokerSimpleMessageTestHelper::RecvMsg(&ipc_reader, expected_results, + base::size(expected_results)); + + wait_event.Wait(); + } + + // Mixed message 2 + { + SCOPED_TRACE("Mixed message 2"); + base::Thread message_thread("SendMessageThread"); + ASSERT_TRUE(message_thread.Start()); + BrokerChannel::EndPoint ipc_reader; + BrokerChannel::EndPoint ipc_writer; + BrokerChannel::CreatePair(&ipc_reader, &ipc_writer); + + BrokerSimpleMessage send_message; + send_message.AddIntToMessage(int1); + send_message.AddDataToMessage(data1, strlen(data1) + 1); + send_message.AddDataToMessage(data2, strlen(data2) + 1); + send_message.AddIntToMessage(int2); + message_thread.task_runner()->PostTask( + FROM_HERE, base::BindOnce(&BrokerSimpleMessageTestHelper::SendMsg, + ipc_writer.get(), &send_message, -1)); + + PostWaitableEventToThread(&message_thread, &wait_event); + + ExpectedResultDataValue data1_value(data1, strlen(data1) + 1); + ExpectedResultDataValue data2_value(data2, strlen(data2) + 1); + ExpectedResultIntValue int1_value(int1); + ExpectedResultIntValue int2_value(int2); + ExpectedResultValue* expected_results[] = {&int1_value, &data1_value, + &data2_value, &int2_value}; + + BrokerSimpleMessageTestHelper::RecvMsg(&ipc_reader, expected_results, + base::size(expected_results)); + + wait_event.Wait(); + } +} + +TEST(BrokerSimpleMessage, SendRecvMsgSynchronous) { + const char data1[] = "hello, world"; + const char data2[] = "foobar"; + const int int1 = 42; + const int int2 = 24; + const char reply_data1[] = "baz"; + + base::Thread message_thread("SendMessageThread"); + ASSERT_TRUE(message_thread.Start()); + base::WaitableEvent wait_event( + base::WaitableEvent::ResetPolicy::AUTOMATIC, + base::WaitableEvent::InitialState::NOT_SIGNALED); + + // Simple string case + { + SCOPED_TRACE("Simple string case"); + BrokerChannel::EndPoint ipc_reader; + BrokerChannel::EndPoint ipc_writer; + BrokerChannel::CreatePair(&ipc_reader, &ipc_writer); + + ExpectedResultDataValue data1_value(data1, strlen(data1) + 1); + ExpectedResultValue* expected_results[] = {&data1_value}; + message_thread.task_runner()->PostTask( + FROM_HERE, + base::BindOnce(&BrokerSimpleMessageTestHelper::RecvMsgAndReply, + &ipc_reader, expected_results, + base::size(expected_results), reply_data1, -1)); + + PostWaitableEventToThread(&message_thread, &wait_event); + + BrokerSimpleMessage send_message; + send_message.AddDataToMessage(data1, strlen(data1) + 1); + BrokerSimpleMessage reply_message; + int returned_fd; + ssize_t len = send_message.SendRecvMsgWithFlags( + ipc_writer.get(), 0, &returned_fd, &reply_message); + + ExpectedResultDataValue response_value(reply_data1, + strlen(reply_data1) + 1); + + EXPECT_TRUE(response_value.NextMessagePieceMatches(&reply_message)); + EXPECT_EQ(len, static_cast<ssize_t>(response_value.Size())); + + wait_event.Wait(); + } + + // Simple int case + { + SCOPED_TRACE("Simple int case"); + BrokerChannel::EndPoint ipc_reader; + BrokerChannel::EndPoint ipc_writer; + BrokerChannel::CreatePair(&ipc_reader, &ipc_writer); + + ExpectedResultIntValue int1_value(int1); + ExpectedResultValue* expected_results[] = {&int1_value}; + message_thread.task_runner()->PostTask( + FROM_HERE, + base::BindOnce(&BrokerSimpleMessageTestHelper::RecvMsgAndReply, + &ipc_reader, expected_results, + base::size(expected_results), reply_data1, -1)); + + PostWaitableEventToThread(&message_thread, &wait_event); + + BrokerSimpleMessage send_message; + send_message.AddIntToMessage(int1); + BrokerSimpleMessage reply_message; + int returned_fd; + ssize_t len = send_message.SendRecvMsgWithFlags( + ipc_writer.get(), 0, &returned_fd, &reply_message); + + ExpectedResultDataValue response_value(reply_data1, + strlen(reply_data1) + 1); + + EXPECT_TRUE(response_value.NextMessagePieceMatches(&reply_message)); + EXPECT_EQ(len, static_cast<ssize_t>(response_value.Size())); + + wait_event.Wait(); + } + + // Mixed message 1 + { + SCOPED_TRACE("Mixed message 1"); + BrokerChannel::EndPoint ipc_reader; + BrokerChannel::EndPoint ipc_writer; + BrokerChannel::CreatePair(&ipc_reader, &ipc_writer); + + ExpectedResultDataValue data1_value(data1, strlen(data1) + 1); + ExpectedResultIntValue int1_value(int1); + ExpectedResultValue* expected_results[] = {&data1_value, &int1_value}; + message_thread.task_runner()->PostTask( + FROM_HERE, + base::BindOnce(&BrokerSimpleMessageTestHelper::RecvMsgAndReply, + &ipc_reader, expected_results, + base::size(expected_results), reply_data1, -1)); + + PostWaitableEventToThread(&message_thread, &wait_event); + + BrokerSimpleMessage send_message; + send_message.AddDataToMessage(data1, strlen(data1) + 1); + send_message.AddIntToMessage(int1); + BrokerSimpleMessage reply_message; + int returned_fd; + ssize_t len = send_message.SendRecvMsgWithFlags( + ipc_writer.get(), 0, &returned_fd, &reply_message); + + ExpectedResultDataValue response_value(reply_data1, + strlen(reply_data1) + 1); + + EXPECT_TRUE(response_value.NextMessagePieceMatches(&reply_message)); + EXPECT_EQ(len, static_cast<ssize_t>(response_value.Size())); + + wait_event.Wait(); + } + + // Mixed message 2 + { + SCOPED_TRACE("Mixed message 2"); + BrokerChannel::EndPoint ipc_reader; + BrokerChannel::EndPoint ipc_writer; + BrokerChannel::CreatePair(&ipc_reader, &ipc_writer); + + ExpectedResultDataValue data1_value(data1, strlen(data1) + 1); + ExpectedResultIntValue int1_value(int1); + ExpectedResultIntValue int2_value(int2); + ExpectedResultDataValue data2_value(data2, strlen(data2) + 1); + ExpectedResultValue* expected_results[] = {&data1_value, &int1_value, + &int2_value, &data2_value}; + message_thread.task_runner()->PostTask( + FROM_HERE, + base::BindOnce(&BrokerSimpleMessageTestHelper::RecvMsgAndReply, + &ipc_reader, expected_results, + base::size(expected_results), reply_data1, -1)); + + PostWaitableEventToThread(&message_thread, &wait_event); + + BrokerSimpleMessage send_message; + send_message.AddDataToMessage(data1, strlen(data1) + 1); + send_message.AddIntToMessage(int1); + send_message.AddIntToMessage(int2); + send_message.AddDataToMessage(data2, strlen(data2) + 1); + BrokerSimpleMessage reply_message; + int returned_fd; + ssize_t len = send_message.SendRecvMsgWithFlags( + ipc_writer.get(), 0, &returned_fd, &reply_message); + + ExpectedResultDataValue response_value(reply_data1, + strlen(reply_data1) + 1); + + EXPECT_TRUE(response_value.NextMessagePieceMatches(&reply_message)); + EXPECT_EQ(len, static_cast<ssize_t>(response_value.Size())); + + wait_event.Wait(); + } + + // Bad read case + { + SCOPED_TRACE("Bad read case"); + BrokerChannel::EndPoint ipc_reader; + BrokerChannel::EndPoint ipc_writer; + BrokerChannel::CreatePair(&ipc_reader, &ipc_writer); + + message_thread.task_runner()->PostTask( + FROM_HERE, + base::BindOnce(&BrokerSimpleMessageTestHelper::RecvMsgBadRead, + &ipc_reader, -1)); + + PostWaitableEventToThread(&message_thread, &wait_event); + + BrokerSimpleMessage send_message; + EXPECT_TRUE(send_message.AddIntToMessage(5)); + EXPECT_TRUE(send_message.AddStringToMessage("test")); + BrokerSimpleMessage reply_message; + int returned_fd; + ssize_t len = send_message.SendRecvMsgWithFlags( + ipc_writer.get(), 0, &returned_fd, &reply_message); + + EXPECT_GE(len, 0); + + wait_event.Wait(); + } +} + +} // namespace syscall_broker + +} // namespace sandbox
diff --git a/services/ui/demo/mus_demo.cc b/services/ui/demo/mus_demo.cc index 44f09b1..e2bbb846 100644 --- a/services/ui/demo/mus_demo.cc +++ b/services/ui/demo/mus_demo.cc
@@ -100,6 +100,7 @@ } void MusDemo::OnPointerEventObserved(const PointerEvent& event, + int64_t display_id, aura::Window* target) {} aura::PropertyConverter* MusDemo::GetPropertyConverter() {
diff --git a/services/ui/demo/mus_demo.h b/services/ui/demo/mus_demo.h index 251e90ab..8ca629f 100644 --- a/services/ui/demo/mus_demo.h +++ b/services/ui/demo/mus_demo.h
@@ -77,6 +77,7 @@ void OnEmbedRootDestroyed(aura::WindowTreeHostMus* window_tree_host) override; void OnLostConnection(aura::WindowTreeClient* client) override; void OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, aura::Window* target) override; aura::PropertyConverter* GetPropertyConverter() override;
diff --git a/services/ui/test_wm/test_wm.cc b/services/ui/test_wm/test_wm.cc index 3213479..3aeac7c 100644 --- a/services/ui/test_wm/test_wm.cc +++ b/services/ui/test_wm/test_wm.cc
@@ -84,6 +84,7 @@ NOTREACHED(); } void OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, aura::Window* target) override { // Don't care. }
diff --git a/services/ui/ws/window_server_test_base.cc b/services/ui/ws/window_server_test_base.cc index 292923a..4adf4c2 100644 --- a/services/ui/ws/window_server_test_base.cc +++ b/services/ui/ws/window_server_test_base.cc
@@ -146,6 +146,7 @@ } void WindowServerTestBase::OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, aura::Window* target) {} aura::PropertyConverter* WindowServerTestBase::GetPropertyConverter() {
diff --git a/services/ui/ws/window_server_test_base.h b/services/ui/ws/window_server_test_base.h index 165aed04..8ab42154 100644 --- a/services/ui/ws/window_server_test_base.h +++ b/services/ui/ws/window_server_test_base.h
@@ -83,6 +83,7 @@ void OnLostConnection(aura::WindowTreeClient* client) override; void OnEmbedRootDestroyed(aura::WindowTreeHostMus* window_tree_host) override; void OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, aura::Window* target) override; aura::PropertyConverter* GetPropertyConverter() override;
diff --git a/services/viz/privileged/interfaces/compositing/BUILD.gn b/services/viz/privileged/interfaces/compositing/BUILD.gn index 62bed358..63c7154 100644 --- a/services/viz/privileged/interfaces/compositing/BUILD.gn +++ b/services/viz/privileged/interfaces/compositing/BUILD.gn
@@ -10,6 +10,7 @@ "external_begin_frame_controller.mojom", "frame_sink_manager.mojom", "frame_sink_video_capture.mojom", + "layered_window_updater.mojom", "renderer_settings.mojom", ]
diff --git a/services/viz/privileged/interfaces/compositing/display_private.mojom b/services/viz/privileged/interfaces/compositing/display_private.mojom index a468d9e..9ecfeda 100644 --- a/services/viz/privileged/interfaces/compositing/display_private.mojom +++ b/services/viz/privileged/interfaces/compositing/display_private.mojom
@@ -9,6 +9,7 @@ import "ui/gfx/mojo/color_space.mojom"; import "ui/gfx/mojo/transform.mojom"; import "ui/latency/mojo/latency_info.mojom"; +import "services/viz/privileged/interfaces/compositing/layered_window_updater.mojom"; // See ui/compositor/compositor.h: ContextFactoryPrivate. // The DisplayPrivate is used by privileged clients to talk to Display. @@ -42,4 +43,10 @@ // Notifies that a swap has occured after some latency info with snapshot // component reached the display. DidSwapAfterSnapshotRequestReceived(array<ui.mojom.LatencyInfo> latency_info); + + // WINDOWS ONLY: Create a LayeredWindowUpdater implementation to draw into + // layered window. + // Note: This will only be used when running Windows 7 and earlier with + // software compositing and a transparent HWND. + CreateLayeredWindowUpdater(LayeredWindowUpdater& layered_window_updater); };
diff --git a/services/viz/privileged/interfaces/compositing/layered_window_updater.mojom b/services/viz/privileged/interfaces/compositing/layered_window_updater.mojom new file mode 100644 index 0000000..360cab3 --- /dev/null +++ b/services/viz/privileged/interfaces/compositing/layered_window_updater.mojom
@@ -0,0 +1,26 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +module viz.mojom; + +import "ui/gfx/geometry/mojo/geometry.mojom"; + +// The syscalls needed to update a layered window are blocked by the GPU +// sandbox. This interface lets the GPU draw into shared memory and then send +// an IPC to the browser to call UpdateLayeredWindow(). +interface LayeredWindowUpdater { + // A new shared memory buffer has been allocated for |pixel_size|. The shared + // memory buffer must be at least big enough to contain |pixel_size| in + // RGBA_8888. The shared memory buffer will be used with subsequent calls to + // Draw(). + OnAllocatedSharedMemory( + gfx.mojom.Size pixel_size, + handle<shared_buffer> scoped_buffer_handle + ); + + // Draws to the HWND by copying pixels from shared memory. Callback must be + // called after draw operation is complete to signal shared memory can be + // modified. + Draw() => (); +};
diff --git a/skia/BUILD.gn b/skia/BUILD.gn index 1cca5c9..fe65317 100644 --- a/skia/BUILD.gn +++ b/skia/BUILD.gn
@@ -557,6 +557,10 @@ sources += [ "//third_party/skia/src/core/SkColorSpaceXform_skcms.cpp" ] } +config("chromium_specific_config_for_skcms") { + defines = [ "SKCMS_LEGACY_POWF" ] +} + # Template for things that are logically part of :skia, but need to be split out # so custom compile flags can be applied. #
diff --git a/sql/OWNERS b/sql/OWNERS index dc520c7..b542429 100644 --- a/sql/OWNERS +++ b/sql/OWNERS
@@ -1,8 +1,8 @@ -# Primary +# Primary: pwnall@chromium.org -# Secondary -michaeln@chromium.org +# Secondary: +cmumford@chromium.org # TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage +# COMPONENT: Internals>Storage
diff --git a/storage/OWNERS b/storage/OWNERS index 1dd3e432..4cc173f 100644 --- a/storage/OWNERS +++ b/storage/OWNERS
@@ -1,7 +1,6 @@ dmurph@chromium.org jsbell@chromium.org kinuko@chromium.org -michaeln@chromium.org # TEAM: storage-dev@chromium.org # COMPONENT: Blink>Storage
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json index c380a484..db89817 100644 --- a/testing/buildbot/chromium.android.fyi.json +++ b/testing/buildbot/chromium.android.fyi.json
@@ -627,6 +627,12 @@ "swarming": { "can_use_on_swarming_builders": false }, + "test": "blink_heap_unittests" + }, + { + "swarming": { + "can_use_on_swarming_builders": false + }, "test": "breakpad_unittests" }, { @@ -810,6 +816,12 @@ "swarming": { "can_use_on_swarming_builders": false }, + "test": "blink_heap_unittests" + }, + { + "swarming": { + "can_use_on_swarming_builders": false + }, "test": "breakpad_unittests" }, { @@ -1980,6 +1992,50 @@ "--bucket", "chromium-result-details", "--test-name", + "blink_heap_unittests" + ], + "script": "//build/android/pylib/results/presentation/test_results_presentation.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/luci/logdog/butler/${platform}", + "location": "bin", + "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c" + } + ], + "dimension_sets": [ + { + "device_os": "NRD91N", + "device_type": "bullhead" + } + ], + "expiration": 10800, + "hard_timeout": 960, + "output_links": [ + { + "link": [ + "https://luci-logdog.appspot.com/v/?s", + "=android%2Fswarming%2Flogcats%2F", + "${TASK_ID}%2F%2B%2Funified_logcats" + ], + "name": "shard #${SHARD_INDEX} logcats" + } + ] + }, + "test": "blink_heap_unittests" + }, + { + "args": [ + "--gs-results-bucket=chromium-result-details", + "--recover-devices" + ], + "merge": { + "args": [ + "--bucket", + "chromium-result-details", + "--test-name", "breakpad_unittests" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" @@ -3392,6 +3448,12 @@ "swarming": { "can_use_on_swarming_builders": false }, + "test": "blink_heap_unittests" + }, + { + "swarming": { + "can_use_on_swarming_builders": false + }, "test": "breakpad_unittests" }, { @@ -3586,6 +3648,12 @@ "swarming": { "can_use_on_swarming_builders": false }, + "test": "blink_heap_unittests" + }, + { + "swarming": { + "can_use_on_swarming_builders": false + }, "test": "breakpad_unittests" }, {
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json index 376211d..ec0e943 100644 --- a/testing/buildbot/chromium.android.json +++ b/testing/buildbot/chromium.android.json
@@ -3779,6 +3779,49 @@ "--bucket", "chromium-result-details", "--test-name", + "blink_heap_unittests" + ], + "script": "//build/android/pylib/results/presentation/test_results_presentation.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/luci/logdog/butler/${platform}", + "location": "bin", + "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c" + } + ], + "dimension_sets": [ + { + "device_os": "KTU84Z", + "device_type": "flo" + } + ], + "expiration": 10800, + "output_links": [ + { + "link": [ + "https://luci-logdog.appspot.com/v/?s", + "=android%2Fswarming%2Flogcats%2F", + "${TASK_ID}%2F%2B%2Funified_logcats" + ], + "name": "shard #${SHARD_INDEX} logcats" + } + ] + }, + "test": "blink_heap_unittests" + }, + { + "args": [ + "--gs-results-bucket=chromium-result-details", + "--recover-devices" + ], + "merge": { + "args": [ + "--bucket", + "chromium-result-details", + "--test-name", "breakpad_unittests" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" @@ -5240,6 +5283,50 @@ "--bucket", "chromium-result-details", "--test-name", + "blink_heap_unittests" + ], + "script": "//build/android/pylib/results/presentation/test_results_presentation.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/luci/logdog/butler/${platform}", + "location": "bin", + "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c" + } + ], + "dimension_sets": [ + { + "device_os": "LMY48I", + "device_type": "hammerhead" + } + ], + "expiration": 10800, + "hard_timeout": 960, + "output_links": [ + { + "link": [ + "https://luci-logdog.appspot.com/v/?s", + "=android%2Fswarming%2Flogcats%2F", + "${TASK_ID}%2F%2B%2Funified_logcats" + ], + "name": "shard #${SHARD_INDEX} logcats" + } + ] + }, + "test": "blink_heap_unittests" + }, + { + "args": [ + "--gs-results-bucket=chromium-result-details", + "--recover-devices" + ], + "merge": { + "args": [ + "--bucket", + "chromium-result-details", + "--test-name", "breakpad_unittests" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" @@ -6837,6 +6924,50 @@ "--bucket", "chromium-result-details", "--test-name", + "blink_heap_unittests" + ], + "script": "//build/android/pylib/results/presentation/test_results_presentation.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/luci/logdog/butler/${platform}", + "location": "bin", + "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c" + } + ], + "dimension_sets": [ + { + "device_os": "LMY49B", + "device_type": "flo" + } + ], + "expiration": 10800, + "hard_timeout": 120, + "output_links": [ + { + "link": [ + "https://luci-logdog.appspot.com/v/?s", + "=android%2Fswarming%2Flogcats%2F", + "${TASK_ID}%2F%2B%2Funified_logcats" + ], + "name": "shard #${SHARD_INDEX} logcats" + } + ] + }, + "test": "blink_heap_unittests" + }, + { + "args": [ + "--gs-results-bucket=chromium-result-details", + "--recover-devices" + ], + "merge": { + "args": [ + "--bucket", + "chromium-result-details", + "--test-name", "breakpad_unittests" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py" @@ -11633,6 +11764,49 @@ "--bucket", "chromium-result-details", "--test-name", + "blink_heap_unittests" + ], + "script": "//build/android/pylib/results/presentation/test_results_presentation.py" + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/luci/logdog/butler/${platform}", + "location": "bin", + "revision": "git_revision:ff387eadf445b24c935f1cf7d6ddd279f8a6b04c" + } + ], + "dimension_sets": [ + { + "device_os": "MRA58Z", + "device_type": "flo" + } + ], + "expiration": 10800, + "output_links": [ + { + "link": [ + "https://luci-logdog.appspot.com/v/?s", + "=android%2Fswarming%2Flogcats%2F", + "${TASK_ID}%2F%2B%2Funified_logcats" + ], + "name": "shard #${SHARD_INDEX} logcats" + } + ] + }, + "test": "blink_heap_unittests" + }, + { + "args": [ + "--gs-results-bucket=chromium-result-details", + "--recover-devices" + ], + "merge": { + "args": [ + "--bucket", + "chromium-result-details", + "--test-name", "breakpad_unittests" ], "script": "//build/android/pylib/results/presentation/test_results_presentation.py"
diff --git a/testing/buildbot/chromium.gpu.fyi.json b/testing/buildbot/chromium.gpu.fyi.json index 0a82258..b8095a51 100644 --- a/testing/buildbot/chromium.gpu.fyi.json +++ b/testing/buildbot/chromium.gpu.fyi.json
@@ -3390,6 +3390,32 @@ }, { "args": [ + "screenshot_sync", + "--show-stdout", + "--browser=debug", + "--passthrough", + "-v", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --enable-features=VizDisplayCompositor", + "--dont-restore-color-profile-after-test" + ], + "isolate_name": "telemetry_gpu_integration_test", + "name": "viz_screenshot_sync_tests", + "override_compile_targets": [ + "telemetry_gpu_integration_test" + ], + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "gpu": "10de:1cb3-384.90", + "os": "Ubuntu", + "pool": "Chrome-GPU" + } + ] + } + }, + { + "args": [ "webgl_conformance", "--show-stdout", "--browser=debug", @@ -4003,6 +4029,33 @@ }, { "args": [ + "screenshot_sync", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --enable-features=VizDisplayCompositor", + "--dont-restore-color-profile-after-test" + ], + "isolate_name": "telemetry_gpu_integration_test", + "name": "viz_screenshot_sync_tests", + "override_compile_targets": [ + "telemetry_gpu_integration_test" + ], + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "gpu": "1002:6613", + "os": "Ubuntu", + "pool": "Chrome-GPU" + } + ], + "expiration": 10800 + } + }, + { + "args": [ "webgl_conformance", "--show-stdout", "--browser=release", @@ -4487,6 +4540,32 @@ }, { "args": [ + "screenshot_sync", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --enable-features=VizDisplayCompositor", + "--dont-restore-color-profile-after-test" + ], + "isolate_name": "telemetry_gpu_integration_test", + "name": "viz_screenshot_sync_tests", + "override_compile_targets": [ + "telemetry_gpu_integration_test" + ], + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "gpu": "8086:5912", + "os": "Ubuntu", + "pool": "Chrome-GPU" + } + ] + } + }, + { + "args": [ "webgl_conformance", "--show-stdout", "--browser=release", @@ -4986,6 +5065,32 @@ }, { "args": [ + "screenshot_sync", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --enable-features=VizDisplayCompositor", + "--dont-restore-color-profile-after-test" + ], + "isolate_name": "telemetry_gpu_integration_test", + "name": "viz_screenshot_sync_tests", + "override_compile_targets": [ + "telemetry_gpu_integration_test" + ], + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "gpu": "10de:1cb3-384.90", + "os": "Ubuntu", + "pool": "Chrome-GPU" + } + ] + } + }, + { + "args": [ "webgl_conformance", "--show-stdout", "--browser=release", @@ -12475,6 +12580,32 @@ }, { "args": [ + "screenshot_sync", + "--show-stdout", + "--browser=debug", + "--passthrough", + "-v", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --enable-features=VizDisplayCompositor", + "--dont-restore-color-profile-after-test" + ], + "isolate_name": "telemetry_gpu_integration_test", + "name": "viz_screenshot_sync_tests", + "override_compile_targets": [ + "telemetry_gpu_integration_test" + ], + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "gpu": "10de:1cb3-23.21.13.8816", + "os": "Windows-10", + "pool": "Chrome-GPU" + } + ] + } + }, + { + "args": [ "webgl_conformance", "--show-stdout", "--browser=debug", @@ -13132,6 +13263,32 @@ }, { "args": [ + "screenshot_sync", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --enable-features=VizDisplayCompositor", + "--dont-restore-color-profile-after-test" + ], + "isolate_name": "telemetry_gpu_integration_test", + "name": "viz_screenshot_sync_tests", + "override_compile_targets": [ + "telemetry_gpu_integration_test" + ], + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "gpu": "8086:5912-24.20.100.6025", + "os": "Windows-10", + "pool": "Chrome-GPU" + } + ] + } + }, + { + "args": [ "webgl_conformance", "--show-stdout", "--browser=release", @@ -13870,6 +14027,32 @@ }, { "args": [ + "screenshot_sync", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --enable-features=VizDisplayCompositor", + "--dont-restore-color-profile-after-test" + ], + "isolate_name": "telemetry_gpu_integration_test", + "name": "viz_screenshot_sync_tests", + "override_compile_targets": [ + "telemetry_gpu_integration_test" + ], + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "gpu": "8086:5912-23.20.16.4877", + "os": "Windows-10", + "pool": "Chrome-GPU" + } + ] + } + }, + { + "args": [ "webgl_conformance", "--show-stdout", "--browser=release", @@ -14921,6 +15104,41 @@ }, { "args": [ + "screenshot_sync", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --enable-features=VizDisplayCompositor", + "--dont-restore-color-profile-after-test" + ], + "isolate_name": "telemetry_gpu_integration_test", + "name": "viz_screenshot_sync_tests", + "override_compile_targets": [ + "telemetry_gpu_integration_test" + ], + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "gpu": "10de:1cb3-23.21.13.8816", + "os": "Windows-10", + "pool": "Chrome-GPU" + } + ] + }, + "trigger_script": { + "args": [ + "--multiple-trigger-configs", + "[{\"gpu\": \"10de:1cb3-23.21.13.8816\", \"os\": \"Windows-10\", \"pool\": \"Chrome-GPU\"}]", + "--multiple-dimension-script-verbose", + "True" + ], + "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py" + } + }, + { + "args": [ "webgl_conformance", "--show-stdout", "--browser=release",
diff --git a/testing/buildbot/chromium.gpu.json b/testing/buildbot/chromium.gpu.json index c7ca2f8..a8756c8f 100644 --- a/testing/buildbot/chromium.gpu.json +++ b/testing/buildbot/chromium.gpu.json
@@ -636,6 +636,32 @@ }, { "args": [ + "screenshot_sync", + "--show-stdout", + "--browser=debug", + "--passthrough", + "-v", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --enable-features=VizDisplayCompositor", + "--dont-restore-color-profile-after-test" + ], + "isolate_name": "telemetry_gpu_integration_test", + "name": "viz_screenshot_sync_tests", + "override_compile_targets": [ + "telemetry_gpu_integration_test" + ], + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "gpu": "10de:1cb3-384.90", + "os": "Ubuntu", + "pool": "Chrome-GPU" + } + ] + } + }, + { + "args": [ "webgl_conformance", "--show-stdout", "--browser=debug", @@ -997,6 +1023,32 @@ }, { "args": [ + "screenshot_sync", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --enable-features=VizDisplayCompositor", + "--dont-restore-color-profile-after-test" + ], + "isolate_name": "telemetry_gpu_integration_test", + "name": "viz_screenshot_sync_tests", + "override_compile_targets": [ + "telemetry_gpu_integration_test" + ], + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "gpu": "10de:1cb3-384.90", + "os": "Ubuntu", + "pool": "Chrome-GPU" + } + ] + } + }, + { + "args": [ "webgl_conformance", "--show-stdout", "--browser=release", @@ -2786,6 +2838,32 @@ }, { "args": [ + "screenshot_sync", + "--show-stdout", + "--browser=debug", + "--passthrough", + "-v", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --enable-features=VizDisplayCompositor", + "--dont-restore-color-profile-after-test" + ], + "isolate_name": "telemetry_gpu_integration_test", + "name": "viz_screenshot_sync_tests", + "override_compile_targets": [ + "telemetry_gpu_integration_test" + ], + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "gpu": "10de:1cb3-23.21.13.8816", + "os": "Windows-10", + "pool": "Chrome-GPU" + } + ] + } + }, + { + "args": [ "webgl_conformance", "--show-stdout", "--browser=debug", @@ -3350,6 +3428,41 @@ }, { "args": [ + "screenshot_sync", + "--show-stdout", + "--browser=release", + "--passthrough", + "-v", + "--extra-browser-args=--enable-logging=stderr --js-flags=--expose-gc --enable-features=VizDisplayCompositor", + "--dont-restore-color-profile-after-test" + ], + "isolate_name": "telemetry_gpu_integration_test", + "name": "viz_screenshot_sync_tests", + "override_compile_targets": [ + "telemetry_gpu_integration_test" + ], + "swarming": { + "can_use_on_swarming_builders": true, + "dimension_sets": [ + { + "gpu": "10de:1cb3-23.21.13.8816", + "os": "Windows-10", + "pool": "Chrome-GPU" + } + ] + }, + "trigger_script": { + "args": [ + "--multiple-trigger-configs", + "[{\"gpu\": \"10de:1cb3-23.21.13.8816\", \"os\": \"Windows-10\", \"pool\": \"Chrome-GPU\"}]", + "--multiple-dimension-script-verbose", + "True" + ], + "script": "//testing/trigger_scripts/trigger_multiple_dimensions.py" + } + }, + { + "args": [ "webgl_conformance", "--show-stdout", "--browser=release",
diff --git a/testing/buildbot/chromium.perf.fyi.json b/testing/buildbot/chromium.perf.fyi.json index 73da04b..8b8389c0 100644 --- a/testing/buildbot/chromium.perf.fyi.json +++ b/testing/buildbot/chromium.perf.fyi.json
@@ -5,7 +5,8 @@ "args": [ "-v", "--browser=android-chromium", - "--upload-results" + "--upload-results", + "--run-ref-build" ], "isolate_name": "performance_test_suite", "merge": { @@ -494,7 +495,8 @@ "args": [ "-v", "--browser=release", - "--upload-results" + "--upload-results", + "--run-ref-build" ], "isolate_name": "performance_test_suite", "merge": { @@ -656,7 +658,8 @@ "--browser=reference", "--upload-results", "--testing=true", - "--xvfb" + "--xvfb", + "--run-ref-build" ], "isolate_name": "telemetry_perf_tests_without_chrome", "merge": { @@ -702,7 +705,8 @@ "args": [ "-v", "--browser=android-chromium", - "--upload-results" + "--upload-results", + "--run-ref-build" ], "isolate_name": "performance_test_suite", "merge": {
diff --git a/testing/buildbot/chromium.perf.json b/testing/buildbot/chromium.perf.json index a272aa9..42a1cd4 100644 --- a/testing/buildbot/chromium.perf.json +++ b/testing/buildbot/chromium.perf.json
@@ -46718,7 +46718,8 @@ "args": [ "-v", "--browser=release", - "--upload-results" + "--upload-results", + "--run-ref-build" ], "isolate_name": "performance_test_suite", "merge": { @@ -46852,7 +46853,8 @@ "args": [ "-v", "--browser=release", - "--upload-results" + "--upload-results", + "--run-ref-build" ], "isolate_name": "performance_test_suite", "merge": {
diff --git a/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter b/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter index d8c6de44..4a34fc0 100644 --- a/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter +++ b/testing/buildbot/filters/mojo.fyi.network_browser_tests.filter
@@ -23,7 +23,6 @@ -PKPModelClientTest.PKPEnforced/0 -PKPModelClientTest.PKPEnforced/1 -PolicyTest.DefaultCookiesSetting --PrefetchBrowserTestPredictionDisabled.ExperimentDisabled -PreviewsOptimizationGuideBrowserTest.NoScriptPreviewsEnabledByWhitelist -ProcessManagerBrowserTest.NestedURLNavigationsToExtensionAllowed -ProfileWindowBrowserTest.GuestClearsCookies @@ -199,11 +198,6 @@ -PredictorBrowserTest.SubframeInitiatesPreconnects -PredictorBrowserTest.SubframeLearning -# Finish ServiceWorker networking glue rewrite. -# http://crbug.com/715640 --ServiceWorkerTestWithJSBindings/ServiceWorkerTest.MimeHandlerView/0 --ServiceWorkerTestWithNativeBindings/ServiceWorkerTest.MimeHandlerView/0 - # Support URLLoaderFactories from embedder in shared workers. # https://crbug.com/839982 -ExtensionApiTest.Debugger
diff --git a/testing/buildbot/test_suite_exceptions.pyl b/testing/buildbot/test_suite_exceptions.pyl index 47cdd33..0ba65895 100644 --- a/testing/buildbot/test_suite_exceptions.pyl +++ b/testing/buildbot/test_suite_exceptions.pyl
@@ -122,17 +122,6 @@ }, 'blink_heap_unittests': { 'remove_from': [ - # On chromium.android, unclear why these aren't run on all bots. - 'KitKat Tablet Tester', - 'Lollipop Phone Tester', - 'Lollipop Tablet Tester', - 'Marshmallow Tablet Tester', - 'Nougat Phone Tester', - # chromium.android.fyi - 'Jelly Bean Tester', - 'Lollipop Consumer Tester', - 'Unswarmed N5 Tests Dummy Builder', - 'Unswarmed N5X Tests Dummy Builder', # chromium.clang 'CrWinAsan', 'CrWinAsan(dll)',
diff --git a/testing/buildbot/trybot_analyze_config.json b/testing/buildbot/trybot_analyze_config.json index 4bfca4ce..5a37c1d 100644 --- a/testing/buildbot/trybot_analyze_config.json +++ b/testing/buildbot/trybot_analyze_config.json
@@ -18,11 +18,13 @@ "build/cipd/android/android.ensure", "build/fuchsia/.*py", "build/get_landmines.py", + "build/gn_helpers.py", "build/gyp_chromium", "build/mac_toolchain.py", "build/toolchain/get_concurrent_links.py", "build/toolchain/mac/.*py", "build/util/lib/common/unittest_util.py", + "build/vs_toolchain.py", "infra/scripts/.*", "DEPS", "testing/buildbot/.*json",
diff --git a/testing/libfuzzer/fuzzers/skia_color_space_fuzzer.cc b/testing/libfuzzer/fuzzers/skia_color_space_fuzzer.cc index af0284f..7e2d4e0c 100644 --- a/testing/libfuzzer/fuzzers/skia_color_space_fuzzer.cc +++ b/testing/libfuzzer/fuzzers/skia_color_space_fuzzer.cc
@@ -37,8 +37,8 @@ static uint32_t output[kPixels * 4]; - const auto form1 = SkColorSpaceXform::ColorFormat(hash >> 0 & 7); - const auto form2 = SkColorSpaceXform::ColorFormat(hash >> 3 & 7); + const auto form1 = SkColorSpaceXform::ColorFormat((hash >> 0) % 7); + const auto form2 = SkColorSpaceXform::ColorFormat((hash >> 3) % 7); const auto alpha = SkAlphaType(hash >> 6 & 3); transform->apply(form1, output, form2, pixels, kPixels, alpha);
diff --git a/testing/scripts/run_performance_tests.py b/testing/scripts/run_performance_tests.py index d82df766..e6032f6 100755 --- a/testing/scripts/run_performance_tests.py +++ b/testing/scripts/run_performance_tests.py
@@ -202,6 +202,8 @@ ' to run in lieu of indexing into our benchmark bot maps', required=False) parser.add_argument('--output-format', action='append') + parser.add_argument('--run-ref-build', + help='Run test on reference browser', action='store_true') args, rest_args = parser.parse_known_args() isolated_out_dir = os.path.dirname(args.isolated_script_test_output) @@ -244,17 +246,13 @@ sharding = None sharding = sharding_map[shard_index]['benchmarks'] - # We don't execute tests on the reference build on android webview - # since telemetry doesn't support it. See crbug.com/612455 - is_webview = any(('browser' in a and 'webview' in a) for a in rest_args) - for benchmark in sharding: # Need to run the benchmark twice on browser and reference build return_code = (execute_benchmark( benchmark, isolated_out_dir, args, rest_args, False) or return_code) # We ignore the return code of the reference build since we do not # monitor it. - if not is_webview: + if args.run_ref_build: execute_benchmark(benchmark, isolated_out_dir, args, rest_args, True) return return_code
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index 11c1f31..7f7defe 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -2287,6 +2287,21 @@ ] } ], + "OfflinePagesSharing": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "OfflinePagesSharing" + ] + } + ] + } + ], "OmniboxBundledExperimentV1": [ { "platforms": [ @@ -3182,6 +3197,34 @@ ] } ], + "SafeBrowsingSuspiciousSiteTrigger": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "win" + ], + "experiments": [ + { + "name": "Enabled", + "params": { + "suspicious_site_trigger_quota": "10" + }, + "enable_features": [ + "SafeBrowsingSuspiciousSiteTriggerQuota" + ] + }, + { + "name": "Control", + "disable_features": [ + "SafeBrowsingSuspiciousSiteTriggerQuota" + ] + } + ] + } + ], "SafeBrowsingThreatDomDetailsTagAttributes": [ { "platforms": [
diff --git a/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG b/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG index fd79a76..d0aafe89 100644 --- a/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG +++ b/third_party/WebKit/LayoutTests/FlagExpectations/enable-blink-features=LayoutNG
@@ -22,25 +22,11 @@ crbug.com/811429 inspector-protocol/layout-fonts/cross-platform-cbdt-sbix-cff2.js [ Failure Pass ] # Crashes/asserts/failures due to inline item reuse. -crbug.com/636993 accessibility/aria-activedescendant.html [ Crash ] -crbug.com/636993 accessibility/display-none-change.html [ Crash ] crbug.com/636993 accessibility/removed-continuation-element-causes-crash.html [ Crash ] -crbug.com/636993 animations/stability/element-animate-position-crash.html [ Crash ] -crbug.com/636993 editing/selection/focus-crash.html [ Crash ] -crbug.com/636993 external/wpt/fullscreen/api/element-ready-check-allowed-cross-origin-manual.sub.html [ Crash ] -crbug.com/636993 external/wpt/fullscreen/api/element-ready-check-not-allowed-cross-origin-manual.sub.html [ Crash ] -crbug.com/636993 fast/block/child-not-removed-from-parent-lineboxes-crash.html [ Crash ] -crbug.com/636993 fast/block/float/add-float-back-to-anonymous-block-previous.html [ Crash ] -crbug.com/636993 fast/css-generated-content/dynamic-apply-after-for-inline.html [ Crash ] -crbug.com/636993 fast/css/css-property-setter-getter.html [ Crash ] crbug.com/636993 fast/css/first-letter-removed-added.html [ Crash ] crbug.com/591099 fast/css/getComputedStyle/getComputedStyle-resolved-values.html [ Crash ] -crbug.com/636993 fast/css/relative-position-replaced-in-table-display-crash.html [ Crash ] -crbug.com/636993 fast/dynamic/unicode-bidi.html [ Failure ] -crbug.com/594672 fast/events/updateLayoutForHitTest.html [ Crash ] -crbug.com/636993 fast/inline/inline-empty-block-continuation-remove.html [ Crash ] -crbug.com/636993 fast/overflow/scroll-div-hide-show.html [ Crash ] -crbug.com/594672 virtual/mouseevent_fractional/fast/events/updateLayoutForHitTest.html [ Crash ] +crbug.com/594672 fast/events/updateLayoutForHitTest.html [ Crash Failure ] +crbug.com/594672 virtual/mouseevent_fractional/fast/events/updateLayoutForHitTest.html [ Crash Failure ] # New passes crbug.com/591099 external/wpt/css/CSS2/floats-clear/no-clearance-adjoining-opposite-float.html [ Pass ]
diff --git a/third_party/WebKit/LayoutTests/TestExpectations b/third_party/WebKit/LayoutTests/TestExpectations index e281fdd..a64b13d1 100644 --- a/third_party/WebKit/LayoutTests/TestExpectations +++ b/third_party/WebKit/LayoutTests/TestExpectations
@@ -2734,6 +2734,8 @@ # This test requires enabling the flag CustomUserTiming in a virtual test. crbug.com/758385 http/tests/performance-timing/custom-user-timing/po-customusertiming-mark.html [ Skip ] +crbug.com/758385 http/tests/performance-timing/custom-user-timing/po-customusertiming-measure.html [ Skip ] +crbug.com/758385 http/tests/performance-timing/custom-user-timing/po-customusertiming-featuredetection.html [ Skip ] # These tests requires enabling the flag LongTaskV2 in a virtual test suite. crbug.com/738493 http/tests/performance-timing/longtask-v2/longtask-v8compile.html [ Skip ] @@ -4709,9 +4711,12 @@ crbug.com/839332 [ Mac ] virtual/video-surface-layer/media/video-no-audio.html [ Pass Failure ] +# Sheriff 2018-05-14 +crbug.com/842793 [ Linux ] virtual/incremental-shadow-dom/media/controls/closed-captions-dynamic-update.html [ Pass Failure ] + # Sheriff 2018-05-17 crbug.com/840792 [ Mac10.12 Mac10.13 ] external/wpt/pointerevents/pointerevent_touch-action-table-test_touch-manual.html [ Pass Timeout ] crbug.com/810437 fast/events/hr-timestamp/input-events.html [ Pass Timeout ] # This will break for now -crbug.com/841933 http/tests/webaudio/autoplay-crossorigin.html [ Skip ] +crbug.com/841933 http/tests/webaudio/autoplay-crossorigin.html [ Skip ] \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/accessibility/accessibility-node-memory-management.html b/third_party/WebKit/LayoutTests/accessibility/accessibility-node-memory-management.html index d8462d32..0562c5ef 100644 --- a/third_party/WebKit/LayoutTests/accessibility/accessibility-node-memory-management.html +++ b/third_party/WebKit/LayoutTests/accessibility/accessibility-node-memory-management.html
@@ -10,7 +10,7 @@ description("This test makes sure that AccessibilityNodeObjects are properly detached when the node they point to is deleted."); if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); // Create an ordinary button on the page, focus it and get its accessibility role. var button = document.createElement('button');
diff --git a/third_party/WebKit/LayoutTests/accessibility/accessibility-node-reparent.html b/third_party/WebKit/LayoutTests/accessibility/accessibility-node-reparent.html index fa0c9f8d..d3ec2761 100644 --- a/third_party/WebKit/LayoutTests/accessibility/accessibility-node-reparent.html +++ b/third_party/WebKit/LayoutTests/accessibility/accessibility-node-reparent.html
@@ -12,7 +12,7 @@ description("This test makes sure that AccessibilityNodeObjects are properly detached when the node they point to is reparented to a location that allows them to have a renderer."); if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); // Create an ordinary button on the page, focus it and get its accessibility role. var button = document.createElement('button');
diff --git a/third_party/WebKit/LayoutTests/accessibility/accessibility-object-detached.html b/third_party/WebKit/LayoutTests/accessibility/accessibility-object-detached.html index d75184dcc..1d87652 100644 --- a/third_party/WebKit/LayoutTests/accessibility/accessibility-object-detached.html +++ b/third_party/WebKit/LayoutTests/accessibility/accessibility-object-detached.html
@@ -10,7 +10,7 @@ description("This test makes sure that AccessibilityObjects are detached when the node they point to is detached."); if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); // Create a button on the page, focus it and get its accessibility role. var button = document.createElement('button');
diff --git a/third_party/WebKit/LayoutTests/accessibility/button-title-uses-inner-img-alt.html b/third_party/WebKit/LayoutTests/accessibility/button-title-uses-inner-img-alt.html index d996412..081efbb 100644 --- a/third_party/WebKit/LayoutTests/accessibility/button-title-uses-inner-img-alt.html +++ b/third_party/WebKit/LayoutTests/accessibility/button-title-uses-inner-img-alt.html
@@ -16,7 +16,7 @@ description("This test makes sure that a generic focusable div can get accessibility focus and gets its accessible text from contents.."); if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var button = document.getElementById('cake'); button.focus();
diff --git a/third_party/WebKit/LayoutTests/accessibility/canvas-accessibilitynodeobject.html b/third_party/WebKit/LayoutTests/accessibility/canvas-accessibilitynodeobject.html index e624cb05..e25ec72 100644 --- a/third_party/WebKit/LayoutTests/accessibility/canvas-accessibilitynodeobject.html +++ b/third_party/WebKit/LayoutTests/accessibility/canvas-accessibilitynodeobject.html
@@ -32,7 +32,7 @@ description("This test makes sure that AccessibilityNodeObjects are created for elements in a canvas subtree."); if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function appendFocusableDescendants(axObject, axFocusableList) { for (var i = 0; i < axObject.childrenCount; i++) {
diff --git a/third_party/WebKit/LayoutTests/accessibility/canvas-description-and-role.html b/third_party/WebKit/LayoutTests/accessibility/canvas-description-and-role.html index 67f1057..2897144 100644 --- a/third_party/WebKit/LayoutTests/accessibility/canvas-description-and-role.html +++ b/third_party/WebKit/LayoutTests/accessibility/canvas-description-and-role.html
@@ -13,7 +13,7 @@ description("This test makes sure that a canvas with and without fallback content each has the right role and description.") if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.getElementById('container').focus(); var axContainer = accessibilityController.focusedElement;
diff --git a/third_party/WebKit/LayoutTests/accessibility/canvas-fallback-content-2.html b/third_party/WebKit/LayoutTests/accessibility/canvas-fallback-content-2.html index 7ebac941..a4e52c4 100644 --- a/third_party/WebKit/LayoutTests/accessibility/canvas-fallback-content-2.html +++ b/third_party/WebKit/LayoutTests/accessibility/canvas-fallback-content-2.html
@@ -56,7 +56,7 @@ description("This tests a number of different elements in canvas fallback content to make sure their accessible attributes are essentially identical to the corresponding elements outside of canvas fallback content."); if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function check(id1, id2) { debug(id1);
diff --git a/third_party/WebKit/LayoutTests/accessibility/canvas-fallback-content-labels.html b/third_party/WebKit/LayoutTests/accessibility/canvas-fallback-content-labels.html index d3452e2..e0c87e1a 100644 --- a/third_party/WebKit/LayoutTests/accessibility/canvas-fallback-content-labels.html +++ b/third_party/WebKit/LayoutTests/accessibility/canvas-fallback-content-labels.html
@@ -60,7 +60,7 @@ description("This tests that labels and elements with labels in canvas fallback content have the same accessibility properties as those same elements outside of a canvas."); if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); window.collapseWhitespace = function(str) { return str.replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, '');
diff --git a/third_party/WebKit/LayoutTests/accessibility/canvas-fallback-content.html b/third_party/WebKit/LayoutTests/accessibility/canvas-fallback-content.html index 1cf1d1d..ca93a6d 100644 --- a/third_party/WebKit/LayoutTests/accessibility/canvas-fallback-content.html +++ b/third_party/WebKit/LayoutTests/accessibility/canvas-fallback-content.html
@@ -40,7 +40,7 @@ description("This test makes sure that focusable elements in canvas fallback content are accessible."); if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function check(id, expectedRole) { debug(id);
diff --git a/third_party/WebKit/LayoutTests/accessibility/chromium-only-roles.html b/third_party/WebKit/LayoutTests/accessibility/chromium-only-roles.html index d45fb164..05f0d635 100644 --- a/third_party/WebKit/LayoutTests/accessibility/chromium-only-roles.html +++ b/third_party/WebKit/LayoutTests/accessibility/chromium-only-roles.html
@@ -16,7 +16,7 @@ description("This test makes sure that a generic focusable div can get accessibility focus."); if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.getElementById('container').focus(); var axContainer = accessibilityController.focusedElement;
diff --git a/third_party/WebKit/LayoutTests/accessibility/clickable.html b/third_party/WebKit/LayoutTests/accessibility/clickable.html index 829e150..4c9f50b3 100644 --- a/third_party/WebKit/LayoutTests/accessibility/clickable.html +++ b/third_party/WebKit/LayoutTests/accessibility/clickable.html
@@ -54,7 +54,7 @@ description("This tests the clickable property of various elements, and tests that a role of an anchor element changes to link when it has a click listener."); if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function isAXElementClickable(id) { return accessibilityController.accessibleElementById(id).isClickable;
diff --git a/third_party/WebKit/LayoutTests/accessibility/disabled-controls-not-focusable.html b/third_party/WebKit/LayoutTests/accessibility/disabled-controls-not-focusable.html index e26526a..0c0ae95eb 100644 --- a/third_party/WebKit/LayoutTests/accessibility/disabled-controls-not-focusable.html +++ b/third_party/WebKit/LayoutTests/accessibility/disabled-controls-not-focusable.html
@@ -20,7 +20,7 @@ description("This test makes sure that disabled form controls are not exposed as focusable."); if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function checkControl(id) { window.element = document.getElementById(id);
diff --git a/third_party/WebKit/LayoutTests/accessibility/draw-focus-if-needed.html b/third_party/WebKit/LayoutTests/accessibility/draw-focus-if-needed.html index 51724ee..670ac06 100644 --- a/third_party/WebKit/LayoutTests/accessibility/draw-focus-if-needed.html +++ b/third_party/WebKit/LayoutTests/accessibility/draw-focus-if-needed.html
@@ -16,9 +16,9 @@ testRunner.dumpAsText(); if (window.accessibilityController) { - window.axButton1 = window.accessibilityController.accessibleElementById("button1"); - window.axContainer = window.accessibilityController.accessibleElementById("container"); - window.axButton2 = window.accessibilityController.accessibleElementById("button2"); + window.axButton1 = accessibilityController.accessibleElementById("button1"); + window.axContainer = accessibilityController.accessibleElementById("container"); + window.axButton2 = accessibilityController.accessibleElementById("button2"); } var canvas = document.getElementById("canvas").getContext("2d");
diff --git a/third_party/WebKit/LayoutTests/accessibility/element-role-mapping-focusable.html b/third_party/WebKit/LayoutTests/accessibility/element-role-mapping-focusable.html index f0b789f..13ed4d9 100644 --- a/third_party/WebKit/LayoutTests/accessibility/element-role-mapping-focusable.html +++ b/third_party/WebKit/LayoutTests/accessibility/element-role-mapping-focusable.html
@@ -75,7 +75,7 @@ description("This test make sure that focusable elements are mapped implicitly to AX roles."); if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function hasRole(id, expectedRole) { debug(id);
diff --git a/third_party/WebKit/LayoutTests/accessibility/file-upload-button-with-axpress.html b/third_party/WebKit/LayoutTests/accessibility/file-upload-button-with-axpress.html index 62f9587..61561d4 100644 --- a/third_party/WebKit/LayoutTests/accessibility/file-upload-button-with-axpress.html +++ b/third_party/WebKit/LayoutTests/accessibility/file-upload-button-with-axpress.html
@@ -13,13 +13,13 @@ description("This tests that when AXPress is used DOMActivate will be handled by the input file type.") if (window.testRunner && window.accessibilityController) { - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); var inputFile = document.getElementById("filetype"); inputFile.addEventListener("DOMActivate", function() { debug("DOMActivate was called"); - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); accessibilityController.accessibleElementById("filetype").press();
diff --git a/third_party/WebKit/LayoutTests/accessibility/focusable-div.html b/third_party/WebKit/LayoutTests/accessibility/focusable-div.html index f8e25cf..abd40154 100644 --- a/third_party/WebKit/LayoutTests/accessibility/focusable-div.html +++ b/third_party/WebKit/LayoutTests/accessibility/focusable-div.html
@@ -20,7 +20,7 @@ description("This test makes sure that a generic focusable div can get accessibility focus and gets its accessible text from contents.."); if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var link = document.getElementById('link'); link.focus();
diff --git a/third_party/WebKit/LayoutTests/accessibility/input-type-range-aria-value.html b/third_party/WebKit/LayoutTests/accessibility/input-type-range-aria-value.html index 5f955bd..271738c 100644 --- a/third_party/WebKit/LayoutTests/accessibility/input-type-range-aria-value.html +++ b/third_party/WebKit/LayoutTests/accessibility/input-type-range-aria-value.html
@@ -20,9 +20,9 @@ description("This tests that ARIA attributes can be used to override the value of an input type=range even if it doesn't have an ARIA role of slider, because it has an *implicit* ARIA role of slider already. http://www.w3.org/TR/html-aapi/#el-78"); if (window.accessibilityController) { - window.axRange1 = window.accessibilityController.accessibleElementById("range1"); - window.axRange2 = window.accessibilityController.accessibleElementById("range2"); - window.axRange3 = window.accessibilityController.accessibleElementById("range3"); + window.axRange1 = accessibilityController.accessibleElementById("range1"); + window.axRange2 = accessibilityController.accessibleElementById("range2"); + window.axRange3 = accessibilityController.accessibleElementById("range3"); shouldBe("axRange1.minValue", "1"); shouldBe("axRange1.maxValue", "10");
diff --git a/third_party/WebKit/LayoutTests/accessibility/menu-list-popup-reuses-objects.html b/third_party/WebKit/LayoutTests/accessibility/menu-list-popup-reuses-objects.html index 0a0abfe7..45dabb7 100644 --- a/third_party/WebKit/LayoutTests/accessibility/menu-list-popup-reuses-objects.html +++ b/third_party/WebKit/LayoutTests/accessibility/menu-list-popup-reuses-objects.html
@@ -15,7 +15,7 @@ window.jsTestIsAsync = true; if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var menulist = document.getElementById("menulist"); menulist.selectedIndex = 0;
diff --git a/third_party/WebKit/LayoutTests/accessibility/menu-list-selection-changed.html b/third_party/WebKit/LayoutTests/accessibility/menu-list-selection-changed.html index 83402ab..8d07217 100644 --- a/third_party/WebKit/LayoutTests/accessibility/menu-list-selection-changed.html +++ b/third_party/WebKit/LayoutTests/accessibility/menu-list-selection-changed.html
@@ -15,7 +15,7 @@ window.jsTestIsAsync = true; if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var menulist = document.getElementById("menulist"); menulist.selectedIndex = 0;
diff --git a/third_party/WebKit/LayoutTests/accessibility/meter-value.html b/third_party/WebKit/LayoutTests/accessibility/meter-value.html index ac6cecc2..5055e4c7 100644 --- a/third_party/WebKit/LayoutTests/accessibility/meter-value.html +++ b/third_party/WebKit/LayoutTests/accessibility/meter-value.html
@@ -14,7 +14,7 @@ description("This tests that meter element attributes min, max, value are exposed to accessibility module"); if (window.accessibilityController) { - window.axMeter1 = window.accessibilityController.accessibleElementById("meter1"); + window.axMeter1 = accessibilityController.accessibleElementById("meter1"); shouldBe("axMeter1.minValue", "0"); shouldBe("axMeter1.maxValue", "10");
diff --git a/third_party/WebKit/LayoutTests/accessibility/readonly.html b/third_party/WebKit/LayoutTests/accessibility/readonly.html index ff608278..b91c9845 100644 --- a/third_party/WebKit/LayoutTests/accessibility/readonly.html +++ b/third_party/WebKit/LayoutTests/accessibility/readonly.html
@@ -41,7 +41,7 @@ description("This tests which elements expose themselves as readonly. Readonly here refers to whether the item is not editable, not whether a control value can be changed vs if it's unavailable."); if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function check(id, expected_readonly) { debug(id);
diff --git a/third_party/WebKit/LayoutTests/accessibility/spinbutton-value.html b/third_party/WebKit/LayoutTests/accessibility/spinbutton-value.html index 2a1c06b..4234fd2 100644 --- a/third_party/WebKit/LayoutTests/accessibility/spinbutton-value.html +++ b/third_party/WebKit/LayoutTests/accessibility/spinbutton-value.html
@@ -18,7 +18,7 @@ description("This tests that a spin button supports range value attributes.") if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function endsWith(str, suffix) { str = '' + str;
diff --git a/third_party/WebKit/LayoutTests/accessibility/svg-bounds.html b/third_party/WebKit/LayoutTests/accessibility/svg-bounds.html index f2282b3..dfbd860 100644 --- a/third_party/WebKit/LayoutTests/accessibility/svg-bounds.html +++ b/third_party/WebKit/LayoutTests/accessibility/svg-bounds.html
@@ -35,7 +35,7 @@ } if (window.testRunner && window.accessibilityController) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var container = accessibilityController.accessibleElementById("svgroot");
diff --git a/third_party/WebKit/LayoutTests/animations/animation-offscreen-to-onscreen.html b/third_party/WebKit/LayoutTests/animations/animation-offscreen-to-onscreen.html index 71d626f..2f105e7 100644 --- a/third_party/WebKit/LayoutTests/animations/animation-offscreen-to-onscreen.html +++ b/third_party/WebKit/LayoutTests/animations/animation-offscreen-to-onscreen.html
@@ -27,7 +27,7 @@ <script src="resources/animation-test-helpers.js" type="text/javascript"></script> <script type="text/javascript" charset="utf-8"> if (window.testRunner) { - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); } const expectedValues = [
diff --git a/third_party/WebKit/LayoutTests/animations/stability/pause-set-current-time.html b/third_party/WebKit/LayoutTests/animations/stability/pause-set-current-time.html new file mode 100644 index 0000000..d9976ee --- /dev/null +++ b/third_party/WebKit/LayoutTests/animations/stability/pause-set-current-time.html
@@ -0,0 +1,44 @@ +<!DOCTYPE html> +<script src="../../resources/testharness.js"></script> +<script src="../../resources/testharnessreport.js"></script> + +<style> +.animate { + animation: animate_width 10s; +} + +@keyframes animate_width { + from { width: 100px; } + to { width: 200px; } +} +</style> + +<div id="target"></div> + +<script> +'use strict'; + +// Note that this test is only valid when DCHECK is enabled, as the underlying +// bug was DCHECK-only. +async_test(t => { + target.classList = 'animate'; + // Grabbing the animation forces style clean, causing the Animation to be created. + let animation = target.getAnimations()[0]; + + // In http://crbug.com/838594 it was found that pausing a CSS animation and + // then setting the currentTime would cause it to DCHECK the next time style + // was cleaned (as long as the style clean was only from an animation update). + animation.pause(); + animation.currentTime = 500; + + // If we make it to the next frame without DCHECKing, we're good. Note that + // we double rAF to ensure that a new frame is produced. + window.requestAnimationFrame(function() { + window.requestAnimationFrame(t.step_func_done(() => { + // Ensure that the animation pause state was not incorrectly toggled. + assert_equals(animation.currentTime, 500); + })); + }); +}, 'Pausing a CSS animation and then setting the currentTime should not ' + + 'cause a DCHECK'); +</script>
diff --git a/third_party/WebKit/LayoutTests/battery-status/multiple-windows-page-visibility.html b/third_party/WebKit/LayoutTests/battery-status/multiple-windows-page-visibility.html index a15fff1..622e35c1 100644 --- a/third_party/WebKit/LayoutTests/battery-status/multiple-windows-page-visibility.html +++ b/third_party/WebKit/LayoutTests/battery-status/multiple-windows-page-visibility.html
@@ -34,7 +34,7 @@ setTimeout(fireNewMockLevel, 0); }, batteryStatusFailure); - window.testRunner.setPageVisibility("hidden"); + testRunner.setPageVisibility("hidden"); debug("first window: page is hidden"); }
diff --git a/third_party/WebKit/LayoutTests/bindings/dictionary-iterator-expected.txt b/third_party/WebKit/LayoutTests/bindings/dictionary-iterator-expected.txt deleted file mode 100644 index e11cad8..0000000 --- a/third_party/WebKit/LayoutTests/bindings/dictionary-iterator-expected.txt +++ /dev/null
@@ -1,15 +0,0 @@ -This is a testharness.js-based test. -PASS Standard array of numbers. -PASS Standard set of numbers. -PASS Standard empty array. -PASS Standard empty set. -PASS Custom list of numbers. -PASS Truthy done signal. -PASS Custom list of numbers with missing "done: false" signal. -PASS Terminates when done is true. -PASS Empty list. -PASS Non-iterable object. -FAIL Iterator object without next() function should throw. Test bug: need to pass exception to assert_throws() -FAIL Non-object iterator.next() result should throw. Test bug: need to pass exception to assert_throws() -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/bindings/dictionary-iterator.html b/third_party/WebKit/LayoutTests/bindings/dictionary-iterator.html index 1e0b33c..fa08aff 100644 --- a/third_party/WebKit/LayoutTests/bindings/dictionary-iterator.html +++ b/third_party/WebKit/LayoutTests/bindings/dictionary-iterator.html
@@ -58,8 +58,8 @@ test(() => { var iterable = {[Symbol.iterator]() { return {}; }}; - assert_throws(null, () => Array.from(iterable)); - assert_throws(null, () => internals.dictionaryTest().stringFromIterable(iterable)); + assert_throws(new TypeError, () => Array.from(iterable)); + assert_throws(new TypeError, () => internals.dictionaryTest().stringFromIterable(iterable)); }, 'Iterator object without next() function should throw.'); test(() => { @@ -69,7 +69,7 @@ {done: false, value: 3}, 1234, ]); - assert_throws(null, () => Array.from(iterable)); - assert_throws(null, () => internals.dictionaryTest().stringFromIterable(iterable)); + assert_throws(new TypeError, () => Array.from(iterable)); + assert_throws(new TypeError, () => internals.dictionaryTest().stringFromIterable(iterable)); }, 'Non-object iterator.next() result should throw.'); </script>
diff --git a/third_party/WebKit/LayoutTests/bindings/idl-dictionary-unittest.html b/third_party/WebKit/LayoutTests/bindings/idl-dictionary-unittest.html index 05a4301..cb14984c 100644 --- a/third_party/WebKit/LayoutTests/bindings/idl-dictionary-unittest.html +++ b/third_party/WebKit/LayoutTests/bindings/idl-dictionary-unittest.html
@@ -7,7 +7,7 @@ var testObject2 = { bar: 'y' }; if (window.internals && internals.dictionaryTest) { - var dictionaryTest = window.internals.dictionaryTest(); + var dictionaryTest = internals.dictionaryTest(); debug('Test for setting an empty dictionary'); dictionaryTest.set({});
diff --git a/third_party/WebKit/LayoutTests/bindings/webidl-type-mapping.html b/third_party/WebKit/LayoutTests/bindings/webidl-type-mapping.html index 8eaa584..04ed5e3 100644 --- a/third_party/WebKit/LayoutTests/bindings/webidl-type-mapping.html +++ b/third_party/WebKit/LayoutTests/bindings/webidl-type-mapping.html
@@ -3,7 +3,7 @@ <script src="../resources/testharnessreport.js"></script> <script> setup(() => { - converter = window.internals.typeConversions(); + converter = internals.typeConversions(); }); function verifyAttribute(attribute)
diff --git a/third_party/WebKit/LayoutTests/bluetooth/idl/idl-BluetoothGATTRemoteServer-expected.txt b/third_party/WebKit/LayoutTests/bluetooth/idl/idl-BluetoothGATTRemoteServer-expected.txt deleted file mode 100644 index 71c9f8c..0000000 --- a/third_party/WebKit/LayoutTests/bluetooth/idl/idl-BluetoothGATTRemoteServer-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL BluetoothGATTRemoteServer IDL test Test bug: need to pass exception to assert_throws() -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/bluetooth/idl/idl-BluetoothGATTRemoteServer.html b/third_party/WebKit/LayoutTests/bluetooth/idl/idl-BluetoothGATTRemoteServer.html index ef976209..bdb61a3 100644 --- a/third_party/WebKit/LayoutTests/bluetooth/idl/idl-BluetoothGATTRemoteServer.html +++ b/third_party/WebKit/LayoutTests/bluetooth/idl/idl-BluetoothGATTRemoteServer.html
@@ -3,9 +3,9 @@ <script src="../../resources/testharnessreport.js"></script> <script> test(() => { - assert_throws(null, () => new BluetoothGATTRemoteServer(), + assert_throws(new ReferenceError, () => new BluetoothGATTRemoteServer(), 'the constructor should not be callable with "new"'); - assert_throws(null, () => BluetoothGATTRemoteServer(), + assert_throws(new ReferenceError, () => BluetoothGATTRemoteServer(), 'the constructor should not be callable'); }, 'BluetoothGATTRemoteServer IDL test'); </script>
diff --git a/third_party/WebKit/LayoutTests/clipboard/copy-image-at-with-pinch-zoom.html b/third_party/WebKit/LayoutTests/clipboard/copy-image-at-with-pinch-zoom.html index 4af320a..b6b7db47 100644 --- a/third_party/WebKit/LayoutTests/clipboard/copy-image-at-with-pinch-zoom.html +++ b/third_party/WebKit/LayoutTests/clipboard/copy-image-at-with-pinch-zoom.html
@@ -11,8 +11,8 @@ var context = canvas.getContext("2d"); context.fillStyle = "red"; context.fillRect(0, 0, 200, 200); - window.internals.setPageScaleFactor(2); - window.internals.setVisualViewportOffset(200, 200); + internals.setPageScaleFactor(2); + internals.setVisualViewportOffset(200, 200); requestAnimationFrame(() => { testRunner.copyImageAtAndCapturePixelsAsyncThen(0, 0, (width, height, snapshot) => { try {
diff --git a/third_party/WebKit/LayoutTests/compositing/absolute-inside-out-of-view-fixed.html b/third_party/WebKit/LayoutTests/compositing/absolute-inside-out-of-view-fixed.html index ebc3597..c2b70316 100644 --- a/third_party/WebKit/LayoutTests/compositing/absolute-inside-out-of-view-fixed.html +++ b/third_party/WebKit/LayoutTests/compositing/absolute-inside-out-of-view-fixed.html
@@ -32,7 +32,7 @@ testRunner.dumpAsText(); } if (window.internals) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); } function doScroll()
diff --git a/third_party/WebKit/LayoutTests/compositing/animation/animation-compositing.html b/third_party/WebKit/LayoutTests/compositing/animation/animation-compositing.html index 89e0f23e..a8fd045 100644 --- a/third_party/WebKit/LayoutTests/compositing/animation/animation-compositing.html +++ b/third_party/WebKit/LayoutTests/compositing/animation/animation-compositing.html
@@ -29,7 +29,7 @@ var box = document.getElementById('box'); box.addEventListener('animationstart', function() { if (window.testRunner) { - var layers = window.internals.layerTreeAsText(document); + var layers = internals.layerTreeAsText(document); var result; if (layers != "") result = "PASS: created compositing layers when animating transform.";
diff --git a/third_party/WebKit/LayoutTests/compositing/animation/hidden-composited.html b/third_party/WebKit/LayoutTests/compositing/animation/hidden-composited.html index a5f74d69..5199a3d 100644 --- a/third_party/WebKit/LayoutTests/compositing/animation/hidden-composited.html +++ b/third_party/WebKit/LayoutTests/compositing/animation/hidden-composited.html
@@ -42,9 +42,9 @@ return; document.getElementById('animated').style.visibility = 'hidden'; - window.internals.forceCompositingUpdate(document); + internals.forceCompositingUpdate(document); - documentLayerTree = JSON.parse(window.internals.layerTreeAsText( + documentLayerTree = JSON.parse(internals.layerTreeAsText( document, window.internals.LAYER_TREE_INCLUDES_COMPOSITING_REASONS)); shouldBe('hiddenLayerIsComposited(documentLayerTree)', 'true');
diff --git a/third_party/WebKit/LayoutTests/compositing/change-preferCompositingToLCDText-setting.html b/third_party/WebKit/LayoutTests/compositing/change-preferCompositingToLCDText-setting.html index 06606155..2bbb0d42 100644 --- a/third_party/WebKit/LayoutTests/compositing/change-preferCompositingToLCDText-setting.html +++ b/third_party/WebKit/LayoutTests/compositing/change-preferCompositingToLCDText-setting.html
@@ -21,7 +21,7 @@ var t = async_test("Check that the preferCompositingToLCDText flag results in compositing"); function isUsingCompositedScrolling() { - var layers = JSON.parse(window.internals.layerTreeAsText(document)); + var layers = JSON.parse(internals.layerTreeAsText(document)); var found = false; layers["layers"].forEach(function(layer) { if (layer.bounds[1] == 1000) @@ -34,9 +34,9 @@ t.step(function() { assert_not_equals(window.internals, null, 'This test requires window.internals'); - window.internals.settings.setPreferCompositingToLCDTextEnabled(false); + internals.settings.setPreferCompositingToLCDTextEnabled(false); var stateBefore = isUsingCompositedScrolling(); - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); var stateAfter = isUsingCompositedScrolling(); assert_false(stateBefore, 'Composited scrolling began disabled');
diff --git a/third_party/WebKit/LayoutTests/compositing/child-transform-with-anchor-point.html b/third_party/WebKit/LayoutTests/compositing/child-transform-with-anchor-point.html index 5d0556d..a411082 100644 --- a/third_party/WebKit/LayoutTests/compositing/child-transform-with-anchor-point.html +++ b/third_party/WebKit/LayoutTests/compositing/child-transform-with-anchor-point.html
@@ -41,7 +41,7 @@ var transformed = document.getElementById("transformed"); if (window.internals) - window.internals.forceCompositingUpdate(document); + internals.forceCompositingUpdate(document); // Request a recomposite of the layer. transformed.style.opacity = 0.9; @@ -49,7 +49,7 @@ transformed.style.opacity = 1.0; if (window.internals) - window.internals.forceCompositingUpdate(document); + internals.forceCompositingUpdate(document); } window.onload = doTest;
diff --git a/third_party/WebKit/LayoutTests/compositing/clip-child-by-non-stacking-ancestor.html b/third_party/WebKit/LayoutTests/compositing/clip-child-by-non-stacking-ancestor.html index dc214be..06a6a8f 100644 --- a/third_party/WebKit/LayoutTests/compositing/clip-child-by-non-stacking-ancestor.html +++ b/third_party/WebKit/LayoutTests/compositing/clip-child-by-non-stacking-ancestor.html
@@ -40,7 +40,7 @@ function doTest() { if (window.testRunner) { - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/columns/composited-in-paginated.html b/third_party/WebKit/LayoutTests/compositing/columns/composited-in-paginated.html index 3152e11..31fa0c0 100644 --- a/third_party/WebKit/LayoutTests/compositing/columns/composited-in-paginated.html +++ b/third_party/WebKit/LayoutTests/compositing/columns/composited-in-paginated.html
@@ -7,7 +7,7 @@ function dumpLayers() { if (window.testRunner) - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', dumpLayers, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/content-changed-chicken-egg.html b/third_party/WebKit/LayoutTests/compositing/content-changed-chicken-egg.html index be5303b..eb8bbd64 100644 --- a/third_party/WebKit/LayoutTests/compositing/content-changed-chicken-egg.html +++ b/third_party/WebKit/LayoutTests/compositing/content-changed-chicken-egg.html
@@ -20,8 +20,8 @@ testRunner.dumpAsTextWithPixelResults(); if (window.internals) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); - window.internals.runtimeFlags.accelerated2dCanvasEnabled = true; + internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.runtimeFlags.accelerated2dCanvasEnabled = true; } function doTest() {
diff --git a/third_party/WebKit/LayoutTests/compositing/contents-opaque/background-clip.html b/third_party/WebKit/LayoutTests/compositing/contents-opaque/background-clip.html index e725e23..2ad0502 100644 --- a/third_party/WebKit/LayoutTests/compositing/contents-opaque/background-clip.html +++ b/third_party/WebKit/LayoutTests/compositing/contents-opaque/background-clip.html
@@ -28,7 +28,7 @@ function doTest() { if (window.testRunner && window.internals) - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', doTest, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/contents-opaque/background-color.html b/third_party/WebKit/LayoutTests/compositing/contents-opaque/background-color.html index d17e187..839399b 100644 --- a/third_party/WebKit/LayoutTests/compositing/contents-opaque/background-color.html +++ b/third_party/WebKit/LayoutTests/compositing/contents-opaque/background-color.html
@@ -21,7 +21,7 @@ function doTest() { if (window.testRunner && window.internals) - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', doTest, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/contents-opaque/body-background-painted.html b/third_party/WebKit/LayoutTests/compositing/contents-opaque/body-background-painted.html index 41522ffa..bad5a9de 100644 --- a/third_party/WebKit/LayoutTests/compositing/contents-opaque/body-background-painted.html +++ b/third_party/WebKit/LayoutTests/compositing/contents-opaque/body-background-painted.html
@@ -21,7 +21,7 @@ function doTest() { if (window.testRunner && window.internals) - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', doTest, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/contents-opaque/body-background-skipped.html b/third_party/WebKit/LayoutTests/compositing/contents-opaque/body-background-skipped.html index 0dee5691..e5534e6 100644 --- a/third_party/WebKit/LayoutTests/compositing/contents-opaque/body-background-skipped.html +++ b/third_party/WebKit/LayoutTests/compositing/contents-opaque/body-background-skipped.html
@@ -21,7 +21,7 @@ function doTest() { if (window.testRunner && window.internals) - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', doTest, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/contents-opaque/control-layer.html b/third_party/WebKit/LayoutTests/compositing/contents-opaque/control-layer.html index c4b1862..821f901 100644 --- a/third_party/WebKit/LayoutTests/compositing/contents-opaque/control-layer.html +++ b/third_party/WebKit/LayoutTests/compositing/contents-opaque/control-layer.html
@@ -11,7 +11,7 @@ function doTest() { if (window.testRunner && window.internals) { - var layerTree = window.internals.elementLayerTreeAsText(document.getElementById('control')); + var layerTree = internals.elementLayerTreeAsText(document.getElementById('control')); document.getElementById('result').innerText = layerTree.indexOf('contentsOpaque 1') == -1 ? 'PASS' : 'FAIL:\n' + layerTree; }
diff --git a/third_party/WebKit/LayoutTests/compositing/contents-opaque/filter.html b/third_party/WebKit/LayoutTests/compositing/contents-opaque/filter.html index 80644da40..2157f10 100644 --- a/third_party/WebKit/LayoutTests/compositing/contents-opaque/filter.html +++ b/third_party/WebKit/LayoutTests/compositing/contents-opaque/filter.html
@@ -37,7 +37,7 @@ function doTest() { if (window.testRunner && window.internals) - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', doTest, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/contents-opaque/hidden-with-visible-child.html b/third_party/WebKit/LayoutTests/compositing/contents-opaque/hidden-with-visible-child.html index 46c5bca..f2fecb8 100644 --- a/third_party/WebKit/LayoutTests/compositing/contents-opaque/hidden-with-visible-child.html +++ b/third_party/WebKit/LayoutTests/compositing/contents-opaque/hidden-with-visible-child.html
@@ -20,7 +20,7 @@ function doTest() { document.getElementById("caption").style.visibility = "hidden"; if (window.testRunner && window.internals) - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', doTest, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/contents-opaque/hidden-with-visible-text.html b/third_party/WebKit/LayoutTests/compositing/contents-opaque/hidden-with-visible-text.html index 393a48f..5ed8e28 100644 --- a/third_party/WebKit/LayoutTests/compositing/contents-opaque/hidden-with-visible-text.html +++ b/third_party/WebKit/LayoutTests/compositing/contents-opaque/hidden-with-visible-text.html
@@ -20,7 +20,7 @@ function doTest() { document.getElementById("caption").style.visibility = "hidden"; if (window.testRunner && window.internals) - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', doTest, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/contents-opaque/layer-opacity.html b/third_party/WebKit/LayoutTests/compositing/contents-opaque/layer-opacity.html index ac1b7def..469a02d2 100644 --- a/third_party/WebKit/LayoutTests/compositing/contents-opaque/layer-opacity.html +++ b/third_party/WebKit/LayoutTests/compositing/contents-opaque/layer-opacity.html
@@ -21,7 +21,7 @@ function doTest() { if (window.testRunner && window.internals) - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', doTest, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/contents-opaque/layer-transform.html b/third_party/WebKit/LayoutTests/compositing/contents-opaque/layer-transform.html index cbf2926..f8b3dc9 100644 --- a/third_party/WebKit/LayoutTests/compositing/contents-opaque/layer-transform.html +++ b/third_party/WebKit/LayoutTests/compositing/contents-opaque/layer-transform.html
@@ -14,7 +14,7 @@ function doTest() { if (window.testRunner && window.internals) - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', doTest, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/contents-opaque/overflow-hidden-child-layers.html b/third_party/WebKit/LayoutTests/compositing/contents-opaque/overflow-hidden-child-layers.html index 6a8e9eff..6153322d 100644 --- a/third_party/WebKit/LayoutTests/compositing/contents-opaque/overflow-hidden-child-layers.html +++ b/third_party/WebKit/LayoutTests/compositing/contents-opaque/overflow-hidden-child-layers.html
@@ -26,7 +26,7 @@ function doTest() { if (window.testRunner && window.internals) - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', doTest, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/contents-opaque/visibility-hidden.html b/third_party/WebKit/LayoutTests/compositing/contents-opaque/visibility-hidden.html index d3fcd2f..3458ac2b 100644 --- a/third_party/WebKit/LayoutTests/compositing/contents-opaque/visibility-hidden.html +++ b/third_party/WebKit/LayoutTests/compositing/contents-opaque/visibility-hidden.html
@@ -31,7 +31,7 @@ var header = document.getElementsByTagName('header')[0]; header.classList.toggle('hidden'); if (window.testRunner && window.internals) - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', doTest, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/dont-composite-select-elements.html b/third_party/WebKit/LayoutTests/compositing/dont-composite-select-elements.html index 6aa0dc0..7ab226b 100644 --- a/third_party/WebKit/LayoutTests/compositing/dont-composite-select-elements.html +++ b/third_party/WebKit/LayoutTests/compositing/dont-composite-select-elements.html
@@ -9,9 +9,9 @@ </select> <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); test(function() { - var json = JSON.parse(window.internals.layerTreeAsText(document)); + var json = JSON.parse(internals.layerTreeAsText(document)); // The <select> element's scroller should be painted into the root layer. assert_equals(json["layers"].length, 3); }, "test");
diff --git a/third_party/WebKit/LayoutTests/compositing/dont-composite-text-input-elements.html b/third_party/WebKit/LayoutTests/compositing/dont-composite-text-input-elements.html index a03d323..6350535 100644 --- a/third_party/WebKit/LayoutTests/compositing/dont-composite-text-input-elements.html +++ b/third_party/WebKit/LayoutTests/compositing/dont-composite-text-input-elements.html
@@ -4,9 +4,9 @@ <input width=10 value="This is a long truncated text entry" style="font-size:40pt;"/> <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); test(function() { - var json = JSON.parse(window.internals.layerTreeAsText(document)); + var json = JSON.parse(internals.layerTreeAsText(document)); // The <input> element's scroller should be painted into the root layer. assert_equals(json["layers"].length, 3); }, "test");
diff --git a/third_party/WebKit/LayoutTests/compositing/draws-content/canvas-background-layer.html b/third_party/WebKit/LayoutTests/compositing/draws-content/canvas-background-layer.html index 42d0593..3b18b1b 100644 --- a/third_party/WebKit/LayoutTests/compositing/draws-content/canvas-background-layer.html +++ b/third_party/WebKit/LayoutTests/compositing/draws-content/canvas-background-layer.html
@@ -71,7 +71,7 @@ drawCanvas('canvas-opaque-box-shadow', false); if (window.testRunner && window.internals) - document.getElementById('layer-tree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layer-tree').innerText = internals.layerTreeAsText(document); }; window.addEventListener('load', doTest, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/draws-content/webgl-background-layer.html b/third_party/WebKit/LayoutTests/compositing/draws-content/webgl-background-layer.html index 9fd93e9..08c0023 100644 --- a/third_party/WebKit/LayoutTests/compositing/draws-content/webgl-background-layer.html +++ b/third_party/WebKit/LayoutTests/compositing/draws-content/webgl-background-layer.html
@@ -51,7 +51,7 @@ drawCanvas('canvas-transparent-background'); if (window.testRunner && window.internals) - document.getElementById('layer-tree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layer-tree').innerText = internals.layerTreeAsText(document); }; window.addEventListener('load', doTest, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/filters/sw-layer-overlaps-hw-shadow.html b/third_party/WebKit/LayoutTests/compositing/filters/sw-layer-overlaps-hw-shadow.html index 6de5a59..04f82b3 100644 --- a/third_party/WebKit/LayoutTests/compositing/filters/sw-layer-overlaps-hw-shadow.html +++ b/third_party/WebKit/LayoutTests/compositing/filters/sw-layer-overlaps-hw-shadow.html
@@ -36,7 +36,7 @@ <script> if (window.testRunner) { testRunner.dumpAsText(); - document.getElementById("console").appendChild(document.createTextNode(window.internals.layerTreeAsText(document))); + document.getElementById("console").appendChild(document.createTextNode(internals.layerTreeAsText(document))); } </script> </body>
diff --git a/third_party/WebKit/LayoutTests/compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow.html b/third_party/WebKit/LayoutTests/compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow.html index c451196..08dd8c8 100644 --- a/third_party/WebKit/LayoutTests/compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow.html +++ b/third_party/WebKit/LayoutTests/compositing/filters/sw-nested-shadow-overlaps-hw-nested-shadow.html
@@ -61,7 +61,7 @@ <script> if (window.testRunner) { testRunner.dumpAsText(); - document.getElementById("console").appendChild(document.createTextNode(window.internals.layerTreeAsText(document))); + document.getElementById("console").appendChild(document.createTextNode(internals.layerTreeAsText(document))); } </script> </body>
diff --git a/third_party/WebKit/LayoutTests/compositing/filters/sw-shadow-overlaps-hw-layer.html b/third_party/WebKit/LayoutTests/compositing/filters/sw-shadow-overlaps-hw-layer.html index b01f993..06c650a 100644 --- a/third_party/WebKit/LayoutTests/compositing/filters/sw-shadow-overlaps-hw-layer.html +++ b/third_party/WebKit/LayoutTests/compositing/filters/sw-shadow-overlaps-hw-layer.html
@@ -36,7 +36,7 @@ <script> if (window.testRunner) { testRunner.dumpAsText(); - document.getElementById("console").appendChild(document.createTextNode(window.internals.layerTreeAsText(document))); + document.getElementById("console").appendChild(document.createTextNode(internals.layerTreeAsText(document))); } </script> </body>
diff --git a/third_party/WebKit/LayoutTests/compositing/filters/sw-shadow-overlaps-hw-shadow.html b/third_party/WebKit/LayoutTests/compositing/filters/sw-shadow-overlaps-hw-shadow.html index ffc7d002..9714c83 100644 --- a/third_party/WebKit/LayoutTests/compositing/filters/sw-shadow-overlaps-hw-shadow.html +++ b/third_party/WebKit/LayoutTests/compositing/filters/sw-shadow-overlaps-hw-shadow.html
@@ -37,7 +37,7 @@ <script> if (window.testRunner) { testRunner.dumpAsText(); - document.getElementById("console").appendChild(document.createTextNode(window.internals.layerTreeAsText(document))); + document.getElementById("console").appendChild(document.createTextNode(internals.layerTreeAsText(document))); } </script> </body>
diff --git a/third_party/WebKit/LayoutTests/compositing/fixed-background-after-style-recalc.html b/third_party/WebKit/LayoutTests/compositing/fixed-background-after-style-recalc.html index c64cd45..00abbb4 100644 --- a/third_party/WebKit/LayoutTests/compositing/fixed-background-after-style-recalc.html +++ b/third_party/WebKit/LayoutTests/compositing/fixed-background-after-style-recalc.html
@@ -15,7 +15,7 @@ testRunner.dumpAsTextWithPixelResults(); if (window.internals) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); } window.onload = function() {
diff --git a/third_party/WebKit/LayoutTests/compositing/fixed-background-composited-html.html b/third_party/WebKit/LayoutTests/compositing/fixed-background-composited-html.html index d9c7803..3f16212 100644 --- a/third_party/WebKit/LayoutTests/compositing/fixed-background-composited-html.html +++ b/third_party/WebKit/LayoutTests/compositing/fixed-background-composited-html.html
@@ -17,7 +17,7 @@ <script> if (window.testRunner) { testRunner.waitUntilDone(); - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); }
diff --git a/third_party/WebKit/LayoutTests/compositing/fixed-background-negative-z-index-fixed.html b/third_party/WebKit/LayoutTests/compositing/fixed-background-negative-z-index-fixed.html index 92658ef..c0d0c6d 100644 --- a/third_party/WebKit/LayoutTests/compositing/fixed-background-negative-z-index-fixed.html +++ b/third_party/WebKit/LayoutTests/compositing/fixed-background-negative-z-index-fixed.html
@@ -23,7 +23,7 @@ <script> if (window.testRunner) { testRunner.waitUntilDone(); - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); } function doTest()
diff --git a/third_party/WebKit/LayoutTests/compositing/fixed-body-background-positioned.html b/third_party/WebKit/LayoutTests/compositing/fixed-body-background-positioned.html index 9980625..efaef81a 100644 --- a/third_party/WebKit/LayoutTests/compositing/fixed-body-background-positioned.html +++ b/third_party/WebKit/LayoutTests/compositing/fixed-body-background-positioned.html
@@ -23,7 +23,7 @@ <script> if (window.testRunner) { testRunner.dumpAsTextWithPixelResults(); - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); } function doTest()
diff --git a/third_party/WebKit/LayoutTests/compositing/fixed-position-changed-to-absolute.html b/third_party/WebKit/LayoutTests/compositing/fixed-position-changed-to-absolute.html index 77873e3..6329b621 100644 --- a/third_party/WebKit/LayoutTests/compositing/fixed-position-changed-to-absolute.html +++ b/third_party/WebKit/LayoutTests/compositing/fixed-position-changed-to-absolute.html
@@ -46,12 +46,12 @@ <script> if (window.testRunner) { testRunner.dumpAsText(); - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); } else { alert('This test requires testRunner'); } -window.internals.forceCompositingUpdate(document); +internals.forceCompositingUpdate(document); document.getElementById("layer-A").style.position = "absolute"; -document.querySelector('pre').textContent = window.internals.layerTreeAsText(document); +document.querySelector('pre').textContent = internals.layerTreeAsText(document); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/force-composite-empty.html b/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/force-composite-empty.html index 97f354e3..8108b7f5 100644 --- a/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/force-composite-empty.html +++ b/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/force-composite-empty.html
@@ -2,11 +2,11 @@ <head> <script> if (window.internals) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); } function doTest() { if (window.testRunner) { - document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layertree").innerText = internals.layerTreeAsText(document); testRunner.dumpAsText(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/no-overflow-iframe-layer.html b/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/no-overflow-iframe-layer.html index f5cde19..49f9fe4 100644 --- a/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/no-overflow-iframe-layer.html +++ b/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/no-overflow-iframe-layer.html
@@ -12,7 +12,7 @@ document.getElementById('iframe').contentDocument.body.offsetWidth; // See wkbug.com/41999 if (window.testRunner) { testRunner.dumpAsText(); - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); } } window.addEventListener("load", doTest, false);
diff --git a/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/overflow-hidden-iframe-layer.html b/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/overflow-hidden-iframe-layer.html index 2d8010e8..7d23bba 100644 --- a/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/overflow-hidden-iframe-layer.html +++ b/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/overflow-hidden-iframe-layer.html
@@ -22,7 +22,7 @@ iframe.contentDocument.body.offsetWidth; // See bug 41999 if (window.testRunner) { testRunner.dumpAsText(); - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } });
diff --git a/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/overflow-iframe-enter-compositing.html b/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/overflow-iframe-enter-compositing.html index d358817..9f7ed76 100644 --- a/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/overflow-iframe-enter-compositing.html +++ b/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/overflow-iframe-enter-compositing.html
@@ -22,7 +22,7 @@ iframe.contentDocument.body.offsetWidth; // See bug 41999 if (window.testRunner) { testRunner.dumpAsText(); - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } });
diff --git a/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/overflow-iframe-layer.html b/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/overflow-iframe-layer.html index 64f9494d..201492c2 100644 --- a/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/overflow-iframe-layer.html +++ b/third_party/WebKit/LayoutTests/compositing/force-compositing-mode/overflow-iframe-layer.html
@@ -15,7 +15,7 @@ document.getElementById('iframe').contentDocument.body.offsetWidth; // See wkbug.com/41999 if (window.testRunner) { testRunner.dumpAsText(); - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); } } window.addEventListener("load", doTest, false);
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/bounds-clipped-composited-child.html b/third_party/WebKit/LayoutTests/compositing/geometry/bounds-clipped-composited-child.html index 7debcc9..f2a518b 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/bounds-clipped-composited-child.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/bounds-clipped-composited-child.html
@@ -42,7 +42,7 @@ function dumpLayers() { if (window.testRunner) - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', dumpLayers, false);
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/bounds-ignores-hidden-composited-descendant.html b/third_party/WebKit/LayoutTests/compositing/geometry/bounds-ignores-hidden-composited-descendant.html index 364a70c..75a25e1 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/bounds-ignores-hidden-composited-descendant.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/bounds-ignores-hidden-composited-descendant.html
@@ -31,7 +31,7 @@ function dumpLayers() { if (window.testRunner) { - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); } } window.addEventListener('load', dumpLayers, false);
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/bounds-ignores-hidden-dynamic-negzindex.html b/third_party/WebKit/LayoutTests/compositing/geometry/bounds-ignores-hidden-dynamic-negzindex.html index eeb5cef..fd6f1101 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/bounds-ignores-hidden-dynamic-negzindex.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/bounds-ignores-hidden-dynamic-negzindex.html
@@ -65,7 +65,7 @@ window.setTimeout(function() { document.body.classList.add('changed'); if (window.testRunner) { - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }, 0);
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/bounds-ignores-hidden.html b/third_party/WebKit/LayoutTests/compositing/geometry/bounds-ignores-hidden.html index 9e47c7c5..c65d49f 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/bounds-ignores-hidden.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/bounds-ignores-hidden.html
@@ -16,7 +16,7 @@ function dumpLayers() { if (window.testRunner) { - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); } } window.addEventListener('load', dumpLayers, false);
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/clip-inside.html b/third_party/WebKit/LayoutTests/compositing/geometry/clip-inside.html index 9887383..cacdd280 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/clip-inside.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/clip-inside.html
@@ -36,7 +36,7 @@ function doTest() { if (window.testRunner) { - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/clip-with-shadow.html b/third_party/WebKit/LayoutTests/compositing/geometry/clip-with-shadow.html index 3031eac..03ddf17 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/clip-with-shadow.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/clip-with-shadow.html
@@ -48,7 +48,7 @@ function doTest() { if (window.testRunner) { - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/clip.html b/third_party/WebKit/LayoutTests/compositing/geometry/clip.html index fdceb9f..6ec403a 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/clip.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/clip.html
@@ -39,7 +39,7 @@ function doTest() { if (window.testRunner) { - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/composited-in-columns.html b/third_party/WebKit/LayoutTests/compositing/geometry/composited-in-columns.html index 0f89f22..f583347 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/composited-in-columns.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/composited-in-columns.html
@@ -45,7 +45,7 @@ function dumpLayers() { if (window.testRunner) - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', dumpLayers, false);
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale-down.html b/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale-down.html index 7c67b7a..7f2d2f7 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale-down.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale-down.html
@@ -18,9 +18,9 @@ </style> <script> if (window.internals && window.eventSender) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); - window.internals.setPageScaleFactorLimits(0.5, 0.5); - window.internals.setPageScaleFactor(0.5); + internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.setPageScaleFactorLimits(0.5, 0.5); + internals.setPageScaleFactor(0.5); } if (window.testRunner) testRunner.dumpAsTextWithPixelResults();
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale-scroll.html b/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale-scroll.html index 6618259..67e62053 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale-scroll.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale-scroll.html
@@ -15,8 +15,8 @@ </style> <script> if (window.internals && window.eventSender) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); - window.internals.setPageScaleFactor(2); + internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.setPageScaleFactor(2); } function test() { window.scrollTo(100,100);
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale-smaller-than-viewport-expected.html b/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale-smaller-than-viewport-expected.html index 6ee57502..0374e49 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale-smaller-than-viewport-expected.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale-smaller-than-viewport-expected.html
@@ -13,8 +13,8 @@ </style> <script> if (window.internals) { - window.internals.setPageScaleFactorLimits(0.5, 4); - window.internals.setPageScaleFactor(0.5); + internals.setPageScaleFactorLimits(0.5, 4); + internals.setPageScaleFactor(0.5); } </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale-smaller-than-viewport.html b/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale-smaller-than-viewport.html index 83427d74..179fafb4 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale-smaller-than-viewport.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale-smaller-than-viewport.html
@@ -25,9 +25,9 @@ </style> <script> if (window.internals && window.eventSender) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); - window.internals.setPageScaleFactorLimits(0.5, 4); - window.internals.setPageScaleFactor(0.5); + internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.setPageScaleFactorLimits(0.5, 4); + internals.setPageScaleFactor(0.5); } </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale.html b/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale.html index 8a34961..721c1f8a 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-composited-page-scale.html
@@ -18,8 +18,8 @@ </style> <script> if (window.internals && window.eventSender) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); - window.internals.setPageScaleFactor(2); + internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.setPageScaleFactor(2); } if (window.testRunner) testRunner.dumpAsTextWithPixelResults();
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-iframe-composited-page-scale-down.html b/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-iframe-composited-page-scale-down.html index b9d4962..3b92b91 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-iframe-composited-page-scale-down.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-iframe-composited-page-scale-down.html
@@ -18,9 +18,9 @@ </style> <script> if (window.internals && window.eventSender) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); - window.internals.setPageScaleFactorLimits(0.5, 0.5); - window.internals.setPageScaleFactor(0.5); + internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.setPageScaleFactorLimits(0.5, 0.5); + internals.setPageScaleFactor(0.5); } function test() { if (window.testRunner)
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-iframe-composited-page-scale.html b/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-iframe-composited-page-scale.html index 85b48e0..eb1d502 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-iframe-composited-page-scale.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-iframe-composited-page-scale.html
@@ -18,8 +18,8 @@ </style> <script> if (window.internals && window.eventSender) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); - window.internals.setPageScaleFactor(2); + internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.setPageScaleFactor(2); } function test() { if (window.testRunner)
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-transform-composited-page-scale-down.html b/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-transform-composited-page-scale-down.html index 38b9f909..e8f8bb674 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-transform-composited-page-scale-down.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-transform-composited-page-scale-down.html
@@ -20,9 +20,9 @@ </style> <script> if (window.internals && window.eventSender) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); - window.internals.setPageScaleFactorLimits(0.5, 0.5); - window.internals.setPageScaleFactor(0.5); + internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.setPageScaleFactorLimits(0.5, 0.5); + internals.setPageScaleFactor(0.5); } if (window.testRunner) testRunner.dumpAsTextWithPixelResults();
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-transform-composited-page-scale.html b/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-transform-composited-page-scale.html index 5e6f656..1068d1fa 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-transform-composited-page-scale.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/fixed-position-transform-composited-page-scale.html
@@ -20,8 +20,8 @@ </style> <script> if (window.internals && window.eventSender) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); - window.internals.setPageScaleFactor(2); + internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.setPageScaleFactor(2); } if (window.testRunner) testRunner.dumpAsTextWithPixelResults();
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/flipped-writing-mode.html b/third_party/WebKit/LayoutTests/compositing/geometry/flipped-writing-mode.html index e222669..504c941 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/flipped-writing-mode.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/flipped-writing-mode.html
@@ -43,7 +43,7 @@ function dumpLayers() { if (window.testRunner) - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', dumpLayers, false);
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/foreground-layer.html b/third_party/WebKit/LayoutTests/compositing/geometry/foreground-layer.html index cf8fecd..9629ced5 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/foreground-layer.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/foreground-layer.html
@@ -62,7 +62,7 @@ function dumpLayerTree() { if (window.testRunner) - document.getElementById('layer-tree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layer-tree').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', dumpLayerTree, false);
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-opacity-transition.html b/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-opacity-transition.html index 3c532702a..f786eb9e 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-opacity-transition.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-opacity-transition.html
@@ -40,7 +40,7 @@ function fadeDone() { if (window.testRunner) { - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-overflow-root.html b/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-overflow-root.html index 40761f5..17499c01 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-overflow-root.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-overflow-root.html
@@ -55,7 +55,7 @@ function doTest() { if (window.testRunner) { - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-positioned-transition.html b/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-positioned-transition.html index 7cf25f9c..3d60204 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-positioned-transition.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-positioned-transition.html
@@ -55,7 +55,7 @@ { document.getElementById('far-left').className = 'moved'; if (window.testRunner) { - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-positioned.html b/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-positioned.html index eeb71d2a..443f8983 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-positioned.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-positioned.html
@@ -50,7 +50,7 @@ function doTest() { if (window.testRunner) { - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-transformed.html b/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-transformed.html index 81aa55a..a8d4d6b4 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-transformed.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/limit-layer-bounds-transformed.html
@@ -51,7 +51,7 @@ function doTest() { if (window.testRunner) { - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/geometry/preserve-3d-switching.html b/third_party/WebKit/LayoutTests/compositing/geometry/preserve-3d-switching.html index df51f3b..a520303e 100644 --- a/third_party/WebKit/LayoutTests/compositing/geometry/preserve-3d-switching.html +++ b/third_party/WebKit/LayoutTests/compositing/geometry/preserve-3d-switching.html
@@ -59,7 +59,7 @@ setTimeout(function() { document.getElementById("parent").style.webkitTransformStyle = "preserve-3d"; if (window.testRunner) { - var layerTree = window.internals.layerTreeAsText(document); + var layerTree = internals.layerTreeAsText(document); document.getElementById("layerTree").innerHTML = "<pre>" + layerTree + "</pre>"; testRunner.notifyDone(); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-clipped.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-clipped.html index 010da91..f14bfc4 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-clipped.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-clipped.html
@@ -23,7 +23,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); document.getElementById("targetFrame").contentWindow.scrollTo(0, 90); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled.html index 583f6ed9..549701b 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled.html
@@ -26,7 +26,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); document.getElementById("targetFrame").contentWindow.scrollTo(0, 20); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe-composited.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe-composited.html index 6d926fe..c962cdc 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe-composited.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe-composited.html
@@ -23,7 +23,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe-scrolled.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe-scrolled.html index c0af4c7..67a16c31 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe-scrolled.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe-scrolled.html
@@ -25,7 +25,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); document.getElementById("targetFrame").contentWindow.scrollTo(0, 20); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe.html index 594e3e9..caf19ff2 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-iframe.html
@@ -23,7 +23,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scroll-clip.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scroll-clip.html index 4a448e8b..444e26f 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scroll-clip.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scroll-clip.html
@@ -32,7 +32,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); targetDiv.scrollTop += 20; - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scrolled.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scrolled.html index b910f91..0641724 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scrolled.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scrolled.html
@@ -34,7 +34,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); targetDiv.scrollTop += 20; - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited.html index 9565065a..8eaee64 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited.html
@@ -32,7 +32,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change-2.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change-2.html index 16dcbea..e5474a03e 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change-2.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change-2.html
@@ -36,7 +36,7 @@ linkToRemove.parentNode.removeChild(linkToRemove); var brToRemove = document.getElementById('brToRemove'); brToRemove.parentNode.removeChild(brToRemove); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change.html index bd44b78c..bf2be150 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change.html
@@ -37,7 +37,7 @@ newLink.innerHTML = 'Link 3'; targetLink.parentNode.insertBefore(newLink, targetLink); targetLink.parentNode.insertBefore(document.createElement('br'), targetLink) - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled.html index e0823d0c..b0a4543 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled.html
@@ -32,7 +32,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); targetDiv.scrollTop += 20; - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div.html index af576c3..458ad2e2 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-1-overflow-div.html
@@ -30,7 +30,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe-composited-inner.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe-composited-inner.html index cda1e84..7e3b7cb 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe-composited-inner.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe-composited-inner.html
@@ -24,7 +24,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe-composited-outer.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe-composited-outer.html index 635fa05..e6e8513 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe-composited-outer.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe-composited-outer.html
@@ -24,7 +24,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-inner.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-inner.html index a50f899..60648c6 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-inner.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-inner.html
@@ -26,7 +26,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); targetFrame.contentWindow.scrollTo(0, 20); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-outer.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-outer.html index 4063fe0..57b0ad49 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-outer.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-outer.html
@@ -26,7 +26,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); nestingFrame.contentWindow.scrollTo(0, 20); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe.html index b1aa15e2..4f1a5c1 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-iframe.html
@@ -24,7 +24,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner-scroll-inner.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner-scroll-inner.html index fa76414..b6c703a 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner-scroll-inner.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner-scroll-inner.html
@@ -39,7 +39,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); document.getElementById('targetDiv').scrollTop += 20; - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner-scroll-outer.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner-scroll-outer.html index 2e6d380..491f1e2 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner-scroll-outer.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner-scroll-outer.html
@@ -39,7 +39,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); document.getElementById('outerDiv').scrollTop += 20; - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner.html index 629606c1..876fb9aa 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-inner.html
@@ -38,7 +38,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer-scroll-inner.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer-scroll-inner.html index 213a8c8..e3b693a 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer-scroll-inner.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer-scroll-inner.html
@@ -38,7 +38,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); document.getElementById('targetDiv').scrollTop += 20; - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer-scroll-outer.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer-scroll-outer.html index 1e4794f..a7db300 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer-scroll-outer.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer-scroll-outer.html
@@ -39,7 +39,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); document.getElementById('outerDiv').scrollTop += 20; - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer.html index 58f2ccd..81c2866 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-composited-outer.html
@@ -38,7 +38,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-scrolled-inner.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-scrolled-inner.html index e8d0f8e5..d57abd9 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-scrolled-inner.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-scrolled-inner.html
@@ -37,7 +37,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); document.getElementById('targetDiv').scrollTop += 20; - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-scrolled-outer.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-scrolled-outer.html index bbba2f1..945d3c5 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-scrolled-outer.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div-scrolled-outer.html
@@ -37,7 +37,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); document.getElementById('outerDiv').scrollTop += 20; - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div.html index bedaa3a..2cc18b2 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-2-overflow-div.html
@@ -36,7 +36,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-composited-img.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-composited-img.html index 82baf52a..15cfe7d 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-composited-img.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-composited-img.html
@@ -22,7 +22,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); debug("This test makes sure that a link highlight is shown for a graphics " +
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-form-input-text-expected.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-form-input-text-expected.html index b69b8cc5..1bc8e8f 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-form-input-text-expected.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-form-input-text-expected.html
@@ -30,7 +30,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function () { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function () { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-form-input-text.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-form-input-text.html index abcf4c0e..d493aca 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-form-input-text.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-form-input-text.html
@@ -38,7 +38,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-imagemap-expected.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-imagemap-expected.html index a0cbee0..0b594146 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-imagemap-expected.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-imagemap-expected.html
@@ -21,7 +21,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); debug("This test is successful if we don't cause a crash. TODO: Make link highlight work on image maps");
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-imagemap.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-imagemap.html index c64b9d0..2ea1353 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-imagemap.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-imagemap.html
@@ -24,7 +24,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); debug("This test is successful if we don't cause a crash. TODO: Make link highlight work on image maps");
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-img-and-text-2.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-img-and-text-2.html index f0257a3f..56366e8 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-img-and-text-2.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-img-and-text-2.html
@@ -22,7 +22,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); debug("This test is successful if the image and text below is covered in a green rectangle.");
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-img-and-text.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-img-and-text.html index e59d179e..71f47e4 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-img-and-text.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-img-and-text.html
@@ -22,7 +22,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); debug("This test is successful if the image and text below is covered in a green rectangle.");
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-img-transformed.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-img-transformed.html index e2910fb..df3363f 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-img-transformed.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-img-transformed.html
@@ -24,7 +24,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); debug("This test is successful if the image below is covered in a green rectangle.");
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-img.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-img.html index c15e0c1..fe0f2d0 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-img.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-img.html
@@ -21,7 +21,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); debug("This test is successful if the image below is covered in a green rectangle.");
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-inline-block-crash.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-inline-block-crash.html index 3f7b45f..fcc8874 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-inline-block-crash.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-inline-block-crash.html
@@ -12,7 +12,7 @@ y = (clientRect.top + clientRect.bottom) / 2; if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-invisible-inline-squashing.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-invisible-inline-squashing.html index 1787935..fffd79c 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-invisible-inline-squashing.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-invisible-inline-squashing.html
@@ -34,7 +34,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); debug("This test makes sure that a link highlight on a composited" +
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-invisible-inline.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-invisible-inline.html index 8adb308..a6fc39b 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-invisible-inline.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-invisible-inline.html
@@ -33,7 +33,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); debug("This test makes sure that a link highlight on a composited" +
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-nested-cursor.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-nested-cursor.html index 44a3b8e7..c6f777d9b 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-nested-cursor.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-nested-cursor.html
@@ -37,7 +37,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-nested-cursor2.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-nested-cursor2.html index a16eaea..5d13961 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-nested-cursor2.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-nested-cursor2.html
@@ -37,7 +37,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-nested-cursor3.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-nested-cursor3.html index cc5b2f4..3af460e 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-nested-cursor3.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-nested-cursor3.html
@@ -24,7 +24,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-on-promoted-overflow-div-scrolled.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-on-promoted-overflow-div-scrolled.html index ee4a67a7..d46007a1 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-on-promoted-overflow-div-scrolled.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-on-promoted-overflow-div-scrolled.html
@@ -6,14 +6,14 @@ <script> useMockHighlight(); if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); function runTest() { var targetDiv = document.getElementById('targetDiv'); var resultDiv = document.getElementById('result'); if (window.internals) - window.internals.forceCompositingUpdate(document); + internals.forceCompositingUpdate(document); var clientRect = document.getElementById('targetLink').getBoundingClientRect(); x = (clientRect.left + clientRect.right) / 2; @@ -28,7 +28,7 @@ // FIXME: This is needed to make link highlighting work by marking paint as dirty. crbug.com/415702 document.querySelector("#targetLink").style.color = "red"; targetDiv.scrollTop += 20; - window.setTimeout(function() { window.testRunner.notifyDone(); }, 30); + window.setTimeout(function() { testRunner.notifyDone(); }, 30); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-pixel-rotated-div.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-pixel-rotated-div.html index 5956cc9..e26b1316 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-pixel-rotated-div.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-pixel-rotated-div.html
@@ -23,7 +23,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-pixel-rotated-link.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-pixel-rotated-link.html index 614b000..5edba676 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-pixel-rotated-link.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-pixel-rotated-link.html
@@ -26,7 +26,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-pixel-transparent.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-pixel-transparent.html index 9cfe24e..0803342 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-pixel-transparent.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-pixel-transparent.html
@@ -23,7 +23,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-shadow-tree.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-shadow-tree.html index 9d842fca..6c6cace 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-shadow-tree.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-shadow-tree.html
@@ -29,7 +29,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); debug("This test is successful if the image below is covered in a green box with square ranges.");
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-background.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-background.html index 1e27e01..9571904 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-background.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-background.html
@@ -27,7 +27,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-body.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-body.html index f53b39c2..e62a3d0 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-body.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-body.html
@@ -27,7 +27,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-cancel2-expected.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-cancel2-expected.html index 0fe0970..ac6b7f1 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-cancel2-expected.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-cancel2-expected.html
@@ -28,7 +28,7 @@ // Send GestureTapCancel, this should cause the highlight to animate away. // FIXME: remove params from all gestureTapCancel calls in LayoutTests eventSender.gestureTapCancel(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-cancel2.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-cancel2.html index 0fe0970..ac6b7f1 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-cancel2.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-cancel2.html
@@ -28,7 +28,7 @@ // Send GestureTapCancel, this should cause the highlight to animate away. // FIXME: remove params from all gestureTapCancel calls in LayoutTests eventSender.gestureTapCancel(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-absolute.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-absolute.html index a5c40b1..091209e 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-absolute.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-absolute.html
@@ -26,7 +26,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-fixed-nested.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-fixed-nested.html index 12f8a75..a16df03 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-fixed-nested.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-fixed-nested.html
@@ -28,7 +28,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-fixed-nested2.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-fixed-nested2.html index dd34e28..e6234d3f 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-fixed-nested2.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-fixed-nested2.html
@@ -31,7 +31,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-fixed.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-fixed.html index 636bc59..15c52a4 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-fixed.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-fixed.html
@@ -28,7 +28,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-static.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-static.html index f3147b9..5ccbb81 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-static.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow-static.html
@@ -28,7 +28,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow.html index 55bd81d..d097184 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-div-boxshadow.html
@@ -26,7 +26,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-longPress.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-longPress.html index addda32..9a0053fd 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-longPress.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-longPress.html
@@ -28,7 +28,7 @@ // Generate long press ... this should cancel highlight. eventSender.gestureLongPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-margin.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-margin.html index a2508aa3..91dd8bd 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-margin.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-margin.html
@@ -18,7 +18,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-multi-line.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-multi-line.html index 620d0bb..f12c971 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-multi-line.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-multi-line.html
@@ -25,7 +25,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y, touchWidth, touchHeight); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-navigate-expected.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-navigate-expected.html index 72d3404..27edf9c 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-navigate-expected.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-navigate-expected.html
@@ -8,7 +8,7 @@ <script> function runTest() { if (window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-nested-expected.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-nested-expected.html index 69e8f13..28f2159 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-nested-expected.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-nested-expected.html
@@ -23,7 +23,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-nested.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-nested.html index 031a1072..84675b0 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-nested.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-nested.html
@@ -23,7 +23,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-scaled-document-expected.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-scaled-document-expected.html index 36733818..116515e 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-scaled-document-expected.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-scaled-document-expected.html
@@ -20,7 +20,7 @@ <script> function runTest() { if (window.internals) { - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); }else{ debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-scaled-document.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-scaled-document.html index 70e1ecbe..045f0ec 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-scaled-document.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-scaled-document.html
@@ -22,7 +22,7 @@ useMockHighlight(); if (window.internals) { - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); } var clientRect = document.getElementById('targetLink').getBoundingClientRect(); @@ -33,7 +33,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-scaledX.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-scaledX.html index 78e04a2..0a197a1 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-scaledX.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-scaledX.html
@@ -29,7 +29,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-scaledY.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-scaledY.html index 6b9855af..fd7aaa72 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-scaledY.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-scaledY.html
@@ -29,7 +29,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-window-scroll-expected.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-window-scroll-expected.html index 2ffa834..f59cfbf 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-window-scroll-expected.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-window-scroll-expected.html
@@ -30,7 +30,7 @@ if (window.eventSender) { //window.scrollTo(50, 30) - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-window-scroll.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-window-scroll.html index 877dde4..bc5cf12 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-window-scroll.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple-window-scroll.html
@@ -34,7 +34,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); //window.scrollTo(50, 30) - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple.html index 31c4694e..db2ee364 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-simple.html
@@ -26,7 +26,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-skew-matrix.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-skew-matrix.html index cdbede0..b6845092 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-skew-matrix.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-skew-matrix.html
@@ -24,7 +24,7 @@ } if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-with-box-shadow.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-with-box-shadow.html index cca7fe48..4a453c6 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-with-box-shadow.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-with-box-shadow.html
@@ -22,7 +22,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-with-squashing.html b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-with-squashing.html index e3154bd..f3a16c5 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-with-squashing.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/gesture-tapHighlight-with-squashing.html
@@ -47,7 +47,7 @@ } if (window.internals) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); } function runTest() { @@ -57,7 +57,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/resources/gesture-tapHighlight-simple-navigate-destination.html b/third_party/WebKit/LayoutTests/compositing/gestures/resources/gesture-tapHighlight-simple-navigate-destination.html index 72d3404..27edf9c 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/resources/gesture-tapHighlight-simple-navigate-destination.html +++ b/third_party/WebKit/LayoutTests/compositing/gestures/resources/gesture-tapHighlight-simple-navigate-destination.html
@@ -8,7 +8,7 @@ <script> function runTest() { if (window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/resources/link-highlight-helper.js b/third_party/WebKit/LayoutTests/compositing/gestures/resources/link-highlight-helper.js index 9fa8c95..c6115c0a 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/resources/link-highlight-helper.js +++ b/third_party/WebKit/LayoutTests/compositing/gestures/resources/link-highlight-helper.js
@@ -47,7 +47,7 @@ if (window.eventSender) { eventSender.gestureTapDown(x, y, 30, 30); eventSender.gestureShowPress(x, y, 30, 30); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires eventSender"); }
diff --git a/third_party/WebKit/LayoutTests/compositing/gestures/resources/target-div-run-test.js b/third_party/WebKit/LayoutTests/compositing/gestures/resources/target-div-run-test.js index fcb0715..5daa57ac 100644 --- a/third_party/WebKit/LayoutTests/compositing/gestures/resources/target-div-run-test.js +++ b/third_party/WebKit/LayoutTests/compositing/gestures/resources/target-div-run-test.js
@@ -9,7 +9,7 @@ if (window.eventSender) { eventSender.gestureShowPress(x, y); - window.setTimeout(function() { window.testRunner.notifyDone(); }, 0); + window.setTimeout(function() { testRunner.notifyDone(); }, 0); } else { debug("This test requires DumpRenderTree."); }
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/become-composited-nested-iframes.html b/third_party/WebKit/LayoutTests/compositing/iframes/become-composited-nested-iframes.html index 41e82e9..f01e628f8 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/become-composited-nested-iframes.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/become-composited-nested-iframes.html
@@ -37,7 +37,7 @@ if (window.testRunner) { runAfterLayoutAndPaint(function() { document.getElementById('box').className = 'composited'; - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); testRunner.notifyDone(); }); }
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/become-overlapped-iframe.html b/third_party/WebKit/LayoutTests/compositing/iframes/become-overlapped-iframe.html index 5439abc..a355ca6f 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/become-overlapped-iframe.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/become-overlapped-iframe.html
@@ -33,7 +33,7 @@ { document.getElementById('overlay').style.height = '150px'; if (window.internals) { - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/composited-iframe-transition-flicker.html b/third_party/WebKit/LayoutTests/compositing/iframes/composited-iframe-transition-flicker.html index d5e51fda..e0cf53f 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/composited-iframe-transition-flicker.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/composited-iframe-transition-flicker.html
@@ -4,7 +4,7 @@ if (window.testRunner) testRunner.dumpAsText(); if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); onload = function() { var layerTreePreStyleUpdate = ""; @@ -12,11 +12,11 @@ document.getElementById("frame").contentDocument.getElementById("input").value = "This is a very long string that will cause overflow"; - layerTreePreStyleUpdate = window.internals.layerTreeAsText(document); + layerTreePreStyleUpdate = internals.layerTreeAsText(document); // Force a style recalc. document.body.offsetTop; - layerTreePostStyleUpdate = window.internals.layerTreeAsText(document); + layerTreePostStyleUpdate = internals.layerTreeAsText(document); var pre = document.createElement('pre'); if (layerTreePreStyleUpdate === layerTreePostStyleUpdate)
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/composited-parent-iframe.html b/third_party/WebKit/LayoutTests/compositing/iframes/composited-parent-iframe.html index c8686f0..607ba5a 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/composited-parent-iframe.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/composited-parent-iframe.html
@@ -21,7 +21,7 @@ function doTest() { if (window.testRunner) { - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/connect-compositing-iframe-delayed.html b/third_party/WebKit/LayoutTests/compositing/iframes/connect-compositing-iframe-delayed.html index b74c5ff..dfc7e8be 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/connect-compositing-iframe-delayed.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/connect-compositing-iframe-delayed.html
@@ -36,7 +36,7 @@ document.getElementById('box').className = 'composited'; if (window.testRunner) { document.getElementById('iframe').contentDocument.body.offsetWidth; // update iframe layout - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } });
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/connect-compositing-iframe.html b/third_party/WebKit/LayoutTests/compositing/iframes/connect-compositing-iframe.html index 11dce61..93ea82b6 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/connect-compositing-iframe.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/connect-compositing-iframe.html
@@ -37,7 +37,7 @@ if (window.testRunner) { runAfterLayoutAndPaint(function() { - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); }); }
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/connect-compositing-iframe2.html b/third_party/WebKit/LayoutTests/compositing/iframes/connect-compositing-iframe2.html index 3e41b594..5f4d135 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/connect-compositing-iframe2.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/connect-compositing-iframe2.html
@@ -36,7 +36,7 @@ document.getElementById('iframe').className = 'composited'; if (window.testRunner) { - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } });
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/connect-compositing-iframe3.html b/third_party/WebKit/LayoutTests/compositing/iframes/connect-compositing-iframe3.html index 0e450f07..13a17dc5 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/connect-compositing-iframe3.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/connect-compositing-iframe3.html
@@ -30,7 +30,7 @@ document.getElementById('iframe').className = 'composited'; if (window.testRunner) { - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } });
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/enter-compositing-iframe.html b/third_party/WebKit/LayoutTests/compositing/iframes/enter-compositing-iframe.html index 0cbfc19..aa341db 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/enter-compositing-iframe.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/enter-compositing-iframe.html
@@ -35,7 +35,7 @@ document.getElementById('parent-iframe').contentDocument.body.offsetWidth; // work around bug 41999. if (window.testRunner) { runAfterLayoutAndPaint(function() { - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); }); }
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/fixed-position-element-in-iframe-enters-viewport.html b/third_party/WebKit/LayoutTests/compositing/iframes/fixed-position-element-in-iframe-enters-viewport.html index 6b48d64..fcdd2269 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/fixed-position-element-in-iframe-enters-viewport.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/fixed-position-element-in-iframe-enters-viewport.html
@@ -21,7 +21,7 @@ testRunner.waitUntilDone(); if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); function runTest() {
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/floating-self-painting-frame-complex.html b/third_party/WebKit/LayoutTests/compositing/iframes/floating-self-painting-frame-complex.html index bb0aa82..864f782a 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/floating-self-painting-frame-complex.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/floating-self-painting-frame-complex.html
@@ -18,7 +18,7 @@ </div> <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); runAfterLayoutAndPaint(function() { target.style.height = "500px"; }, true);
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/floating-self-painting-frame.html b/third_party/WebKit/LayoutTests/compositing/iframes/floating-self-painting-frame.html index 2742575..6374eae8 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/floating-self-painting-frame.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/floating-self-painting-frame.html
@@ -10,7 +10,7 @@ <iframe id="target" name="content" srcdoc="<div style='width: 300px; height:400px; background: blue'></div>" style="height: 119px;"></iframe> <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); onload = function() { runAfterLayoutAndPaint(function() { target.style.height = "600px";
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/iframe-composited-scrolling.html b/third_party/WebKit/LayoutTests/compositing/iframes/iframe-composited-scrolling.html index 3035a53..cc3204cd1 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/iframe-composited-scrolling.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/iframe-composited-scrolling.html
@@ -16,7 +16,7 @@ if (window.testRunner) { testRunner.dumpAsText(); if (window.internals) - document.getElementById("result").innerText = window.internals.nonFastScrollableRects(document).length ? "FAIL" : "PASS"; + document.getElementById("result").innerText = internals.nonFastScrollableRects(document).length ? "FAIL" : "PASS"; } } window.addEventListener("load", doTest, false);
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/iframe-resize.html b/third_party/WebKit/LayoutTests/compositing/iframes/iframe-resize.html index 81a16c7..fa30674 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/iframe-resize.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/iframe-resize.html
@@ -36,7 +36,7 @@ { document.getElementById('parent-iframe').className = 'bigger'; if (window.testRunner) { - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/iframe-size-from-zero.html b/third_party/WebKit/LayoutTests/compositing/iframes/iframe-size-from-zero.html index 1bb111d..b2d73b1 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/iframe-size-from-zero.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/iframe-size-from-zero.html
@@ -38,7 +38,7 @@ // Need to wait for compositing layers to be updated. window.setTimeout(function() { if (window.testRunner) { - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); testRunner.notifyDone(); } }, 0);
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/iframe-size-to-zero.html b/third_party/WebKit/LayoutTests/compositing/iframes/iframe-size-to-zero.html index 40f646c3b..d165fc4 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/iframe-size-to-zero.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/iframe-size-to-zero.html
@@ -36,7 +36,7 @@ { var hadLayers = false; if (window.testRunner) { - var layers = window.internals.layerTreeAsText(document); + var layers = internals.layerTreeAsText(document); hadLayers = layers != ""; } @@ -44,7 +44,7 @@ document.getElementById('iframe').className = 'collapsed'; if (window.testRunner) { - var haveLayers = window.internals.layerTreeAsText(document) != ""; + var haveLayers = internals.layerTreeAsText(document) != ""; var result; if (hadLayers && haveLayers) result = "PASS: Had layers before and after";
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/invisible-nested-iframe-hide.html b/third_party/WebKit/LayoutTests/compositing/iframes/invisible-nested-iframe-hide.html index 11ef315..b43f235 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/invisible-nested-iframe-hide.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/invisible-nested-iframe-hide.html
@@ -37,7 +37,7 @@ var div = document.getElementById('invisible'); div.style.cssText = "display:none;"; if (window.testRunner) { - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); testRunner.notifyDone(); } });
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/invisible-nested-iframe-show.html b/third_party/WebKit/LayoutTests/compositing/iframes/invisible-nested-iframe-show.html index 013259b0..29ba0b91 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/invisible-nested-iframe-show.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/invisible-nested-iframe-show.html
@@ -37,7 +37,7 @@ var div = document.getElementById('invisible'); div.style.cssText = ""; if (window.testRunner) { - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); testRunner.notifyDone(); } });
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/overlapped-iframe-iframe.html b/third_party/WebKit/LayoutTests/compositing/iframes/overlapped-iframe-iframe.html index e3794b4..7e1366e 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/overlapped-iframe-iframe.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/overlapped-iframe-iframe.html
@@ -31,7 +31,7 @@ function doTest() { if (window.testRunner) { - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/overlapped-iframe.html b/third_party/WebKit/LayoutTests/compositing/iframes/overlapped-iframe.html index 8606b08e..f94a5c8 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/overlapped-iframe.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/overlapped-iframe.html
@@ -30,7 +30,7 @@ function doTest() { if (window.testRunner) { - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/overlapped-nested-iframes.html b/third_party/WebKit/LayoutTests/compositing/iframes/overlapped-nested-iframes.html index aaaeb62..7bd36ea 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/overlapped-nested-iframes.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/overlapped-nested-iframes.html
@@ -30,7 +30,7 @@ { window.scrollTo(0, 100); if (window.testRunner) { - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/resizer.html b/third_party/WebKit/LayoutTests/compositing/iframes/resizer.html index 3611c08..74b4485 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/resizer.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/resizer.html
@@ -9,7 +9,7 @@ function test() { if (window.testRunner) { testRunner.dumpAsText(); - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); } } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/resources/scrollgrandchild-inner.html b/third_party/WebKit/LayoutTests/compositing/iframes/resources/scrollgrandchild-inner.html index 341270f..dc8c172e 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/resources/scrollgrandchild-inner.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/resources/scrollgrandchild-inner.html
@@ -24,7 +24,7 @@ </style> <script> if (window.internals) - window.internals.settings.setMockScrollbarsEnabled(true); + internals.settings.setMockScrollbarsEnabled(true); if (window.testRunner) { testRunner.dumpAsTextWithPixelResults(); testRunner.waitUntilDone();
diff --git a/third_party/WebKit/LayoutTests/compositing/iframes/scrolling-iframe.html b/third_party/WebKit/LayoutTests/compositing/iframes/scrolling-iframe.html index f549add..fbaaed2 100644 --- a/third_party/WebKit/LayoutTests/compositing/iframes/scrolling-iframe.html +++ b/third_party/WebKit/LayoutTests/compositing/iframes/scrolling-iframe.html
@@ -34,7 +34,7 @@ runAfterLayoutAndPaint(function() { document.getElementById('parent-iframe').contentWindow.scrollTo(80, 80); if (window.testRunner) { - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); testRunner.notifyDone(); } });
diff --git a/third_party/WebKit/LayoutTests/compositing/images/clip-on-directly-composited-image.html b/third_party/WebKit/LayoutTests/compositing/images/clip-on-directly-composited-image.html index b04b411a..798f3ec 100644 --- a/third_party/WebKit/LayoutTests/compositing/images/clip-on-directly-composited-image.html +++ b/third_party/WebKit/LayoutTests/compositing/images/clip-on-directly-composited-image.html
@@ -29,7 +29,7 @@ function doTest() { if (window.testRunner) { - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/images/direct-image-dynamic-border-draws-content.html b/third_party/WebKit/LayoutTests/compositing/images/direct-image-dynamic-border-draws-content.html index dfe5bbc1..e032a57ac 100644 --- a/third_party/WebKit/LayoutTests/compositing/images/direct-image-dynamic-border-draws-content.html +++ b/third_party/WebKit/LayoutTests/compositing/images/direct-image-dynamic-border-draws-content.html
@@ -13,7 +13,7 @@ var layerText = ''; function layerTreeText(message) { - return message + '\n\n' + window.internals.layerTreeAsText(document) + '\n'; + return message + '\n\n' + internals.layerTreeAsText(document) + '\n'; } function load(element) {
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/animation-overlap-with-children.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/animation-overlap-with-children.html index 3681bef..da9eed25 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/animation-overlap-with-children.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/animation-overlap-with-children.html
@@ -61,8 +61,8 @@ function runTest() { if (window.testRunner) { - window.internals.pauseAnimations(0.0); - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + internals.pauseAnimations(0.0); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/backing-requirement-changes.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/backing-requirement-changes.html index a1adbd21..02cad049 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/backing-requirement-changes.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/backing-requirement-changes.html
@@ -32,7 +32,7 @@ function doTest() { if (window.internals) { - window.internals.forceCompositingUpdate(document); + internals.forceCompositingUpdate(document); } // Move green div so that it overlaps the yellow div, and hence // needs its own backing.
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-and-transform.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-and-transform.html index c316a12..82df016 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-and-transform.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-and-transform.html
@@ -29,7 +29,7 @@ function doTest() { window.scrollTo(0, 1000); if (window.testRunner) { - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); testRunner.dumpAsTextWithPixelResults(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-in-fixed-overflow.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-in-fixed-overflow.html index 95e85dc..f4b46ce 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-in-fixed-overflow.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-in-fixed-overflow.html
@@ -36,6 +36,6 @@ runAfterLayoutAndPaint(function() { if (window.testRunner) - document.querySelector('pre').textContent = window.internals.layerTreeAsText(document); + document.querySelector('pre').textContent = internals.layerTreeAsText(document); }, true); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-invisible-scroll-reasons.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-invisible-scroll-reasons.html index 7fde0594..1c949ccf 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-invisible-scroll-reasons.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-invisible-scroll-reasons.html
@@ -14,13 +14,13 @@ <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener("load", function() { - document.getElementById("mainThreadScrollingReasons").innerText = window.internals.mainThreadScrollingReasons(document); + document.getElementById("mainThreadScrollingReasons").innerText = internals.mainThreadScrollingReasons(document); }, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-no-content-scroll-reason.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-no-content-scroll-reason.html index 996343b..4d72726 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-no-content-scroll-reason.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-no-content-scroll-reason.html
@@ -15,13 +15,13 @@ <script type="text/javascript"> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener("load", function() { - document.getElementById("mainThreadScrollingReasons").innerText = window.internals.mainThreadScrollingReasons(document); + document.getElementById("mainThreadScrollingReasons").innerText = internals.mainThreadScrollingReasons(document); }, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-no-content.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-no-content.html index 0a00bab..422a6e50 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-no-content.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-no-content.html
@@ -21,14 +21,14 @@ <script type="text/javascript"> if (window.internals) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); } if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener("load", function() { - document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layertree").innerText = internals.layerTreeAsText(document); }, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers.html index 225fbf6..8b0ff4bb 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-nonscrollable-body-mismatch-containers.html
@@ -49,13 +49,13 @@ <script type="text/javascript"> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener("load", function() { - document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layertree").innerText = internals.layerTreeAsText(document); }, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-nonscrollable-body-overlap.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-nonscrollable-body-overlap.html index a37dcb4..72f38fa 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-nonscrollable-body-overlap.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-nonscrollable-body-overlap.html
@@ -39,13 +39,13 @@ <script type="text/javascript"> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener("load", function() { - document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layertree").innerText = internals.layerTreeAsText(document); }, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-nonscrollable-body.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-nonscrollable-body.html index 154c41dd..e8cb2560 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-nonscrollable-body.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-nonscrollable-body.html
@@ -39,14 +39,14 @@ <script type="text/javascript"> if (window.internals) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); } if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener("load", function() { - document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layertree").innerText = internals.layerTreeAsText(document); }, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page.html index 650f9dd0..873c66b 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-nonscrollable-iframes-in-scrollable-page.html
@@ -43,14 +43,14 @@ <script type="text/javascript"> if (window.internals) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); } if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener("load", function() { - document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layertree").innerText = internals.layerTreeAsText(document); }, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt index 85998a7..647b13d4 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt
@@ -1,4 +1,4 @@ -PASS layerTree is window.internals.layerTreeAsText(document) +PASS layerTree is internals.layerTreeAsText(document) PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-positioning.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-positioning.html index ada01a2..f7c801f 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-positioning.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-positioning.html
@@ -26,20 +26,20 @@ if (!window.internals) return; - document.getElementById("layertree1").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layertree1").innerText = internals.layerTreeAsText(document); window.scrollTo(0, 10); runAfterLayoutAndPaint(function() { - layerTree = window.internals.layerTreeAsText(document); + layerTree = internals.layerTreeAsText(document); // Make sure the layer tree dump is stable. - shouldBe('layerTree', 'window.internals.layerTreeAsText(document)'); + shouldBe('layerTree', 'internals.layerTreeAsText(document)'); document.getElementById("layertree2").innerText = layerTree; finishJSTest(); }); } if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); window.onload = doTest; </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scaled-iframe-scroll.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scaled-iframe-scroll.html index 589d849..c253bd9 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scaled-iframe-scroll.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scaled-iframe-scroll.html
@@ -7,15 +7,15 @@ testRunner.waitUntilDone(); } if (window.internals && window.eventSender) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); - window.internals.setPageScaleFactorLimits(0.5, 4); + internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.setPageScaleFactorLimits(0.5, 4); addEventListener("load", function() { - window.internals.setPageScaleFactor(0.5); + internals.setPageScaleFactor(0.5); setTimeout(function() { var layerTreeScaledDown = internals.layerTreeAsText(document.getElementById("iframe").contentDocument); - window.internals.setPageScaleFactor(1.5); + internals.setPageScaleFactor(1.5); setTimeout(function() { var layerTreeScaledUp = internals.layerTreeAsText(document.getElementById("iframe").contentDocument); // Because logical size of the frame is unchanged, the layer tree in the frame should not be affected by the page scale.
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scaled-iframe.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scaled-iframe.html index 9029faa..76d6819 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scaled-iframe.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scaled-iframe.html
@@ -7,15 +7,15 @@ testRunner.waitUntilDone(); } if (window.internals && window.eventSender) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); - window.internals.setPageScaleFactorLimits(0.5, 4); + internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.setPageScaleFactorLimits(0.5, 4); addEventListener("load", function() { - window.internals.setPageScaleFactor(0.5); + internals.setPageScaleFactor(0.5); setTimeout(function() { var layerTreeScaledDown = internals.layerTreeAsText(document.getElementById("iframe").contentDocument); - window.internals.setPageScaleFactor(1.5); + internals.setPageScaleFactor(1.5); setTimeout(function() { var layerTreeScaledUp = internals.layerTreeAsText(document.getElementById("iframe").contentDocument); // Because logical size of the frame is unchanged, the layer tree in the frame should not be affected by the page scale.
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scaled-scroll.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scaled-scroll.html index 8fb17de..a55e5d11 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scaled-scroll.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scaled-scroll.html
@@ -19,19 +19,19 @@ testRunner.waitUntilDone(); } if (window.internals && window.eventSender) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); - window.internals.setPageScaleFactorLimits(0.5, 4); + internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.setPageScaleFactorLimits(0.5, 4); addEventListener("load", function() { window.scrollTo(100,100); document.getElementById("layerTree").innerText = internals.layerTreeAsText(document); - window.internals.setPageScaleFactor(0.5); + internals.setPageScaleFactor(0.5); setTimeout(function() { document.getElementById("layerTreeScaledDown").innerText = internals.layerTreeAsText(document); - window.internals.setPageScaleFactor(1.5); + internals.setPageScaleFactor(1.5); setTimeout(function() { document.getElementById("layerTreeScaledUp").innerText = internals.layerTreeAsText(document); testRunner.notifyDone();
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scaled.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scaled.html index fb55f77..7b622f1 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scaled.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scaled.html
@@ -19,17 +19,17 @@ testRunner.waitUntilDone(); } if (window.internals && window.eventSender) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); - window.internals.setPageScaleFactorLimits(0.5, 4); + internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.setPageScaleFactorLimits(0.5, 4); addEventListener("load", function() { document.getElementById("layerTree").innerText = internals.layerTreeAsText(document); - window.internals.setPageScaleFactor(0.5); + internals.setPageScaleFactor(0.5); setTimeout(function() { document.getElementById("layerTreeScaledDown").innerText = internals.layerTreeAsText(document); - window.internals.setPageScaleFactor(1.5); + internals.setPageScaleFactor(1.5); setTimeout(function() { document.getElementById("layerTreeScaledUp").innerText = internals.layerTreeAsText(document); testRunner.notifyDone();
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scroll-reason.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scroll-reason.html index 602b8676..df19d5cd 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scroll-reason.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scroll-reason.html
@@ -14,13 +14,13 @@ <script type="text/javascript"> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener("load", function() { - document.getElementById("mainThreadScrollingReasons").innerText = window.internals.mainThreadScrollingReasons(document); + document.getElementById("mainThreadScrollingReasons").innerText = internals.mainThreadScrollingReasons(document); }, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-with-backdrop-filter.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-with-backdrop-filter.html index fdf0757d..2997713c 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-with-backdrop-filter.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view-with-backdrop-filter.html
@@ -13,13 +13,13 @@ <script type="text/javascript"> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener("load", function() { - document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layertree").innerText = internals.layerTreeAsText(document); }, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view.html index a1d37417..aeea6de 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-out-of-view.html
@@ -13,13 +13,13 @@ <script type="text/javascript"> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener("load", function() { - document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layertree").innerText = internals.layerTreeAsText(document); }, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-under-transform.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-under-transform.html index 3e789f35..044c20bc 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-under-transform.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/fixed-position-under-transform.html
@@ -35,7 +35,7 @@ function doTest() { window.scrollTo(0, 1000); if (window.testRunner) { - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); testRunner.dumpAsTextWithPixelResults(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/iframe-background-attachment-fixed.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/iframe-background-attachment-fixed.html index d2abd4cf..e2f2845 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/iframe-background-attachment-fixed.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/iframe-background-attachment-fixed.html
@@ -15,7 +15,7 @@ testRunner.dumpAsText(true); window.addEventListener('load', function() { - reasons = window.internals.mainThreadScrollingReasons(document); + reasons = internals.mainThreadScrollingReasons(document); text = "Main frame " + scrollingLocationAndReasons(reasons); text += "\nThe iFrame scrolls on main thread, reasons: " + document.getElementById("iframe").contentDocument.getElementById("mainThreadScrollingReasons").innerText; document.getElementById("mainThreadScrollingReasons").innerText = text;
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/impl-thread-scrolling-non-composited-fixed-no-scroll.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/impl-thread-scrolling-non-composited-fixed-no-scroll.html index 29e8832..c1c91dbe 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/impl-thread-scrolling-non-composited-fixed-no-scroll.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/impl-thread-scrolling-non-composited-fixed-no-scroll.html
@@ -11,14 +11,14 @@ <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener("load", function() { - document.getElementById("layerTree").innerText = window.internals.layerTreeAsText(document); - document.getElementById("mainThreadScrollingReasons").innerText = window.internals.mainThreadScrollingReasons(document); + document.getElementById("layerTree").innerText = internals.layerTreeAsText(document); + document.getElementById("mainThreadScrollingReasons").innerText = internals.mainThreadScrollingReasons(document); }, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/main-thread-scrolling-for-non-composited-fixed-position.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/main-thread-scrolling-for-non-composited-fixed-position.html index 3074264b..0ed2416 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/main-thread-scrolling-for-non-composited-fixed-position.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/main-thread-scrolling-for-non-composited-fixed-position.html
@@ -11,14 +11,14 @@ <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(false); + internals.settings.setPreferCompositingToLCDTextEnabled(false); if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener("load", function() { - document.getElementById("layerTree").innerText = window.internals.layerTreeAsText(document); - document.getElementById("mainThreadScrollingReasons").innerText = window.internals.mainThreadScrollingReasons(document); + document.getElementById("layerTree").innerText = internals.layerTreeAsText(document); + document.getElementById("mainThreadScrollingReasons").innerText = internals.mainThreadScrollingReasons(document); }, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/main-thread-scrolling-non-composited-fixed-overflow-hidden.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/main-thread-scrolling-non-composited-fixed-overflow-hidden.html index 11d5f89..e7647bdc 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/main-thread-scrolling-non-composited-fixed-overflow-hidden.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/main-thread-scrolling-non-composited-fixed-overflow-hidden.html
@@ -11,14 +11,14 @@ <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(false); + internals.settings.setPreferCompositingToLCDTextEnabled(false); if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener("load", function() { - document.getElementById("layerTree").innerText = window.internals.layerTreeAsText(document); - document.getElementById("mainThreadScrollingReasons").innerText = window.internals.mainThreadScrollingReasons(document); + document.getElementById("layerTree").innerText = internals.layerTreeAsText(document); + document.getElementById("mainThreadScrollingReasons").innerText = internals.mainThreadScrollingReasons(document); }, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/no-compositing-for-fixed-position-under-transform.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/no-compositing-for-fixed-position-under-transform.html index 26e5aad..77adbbd 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/no-compositing-for-fixed-position-under-transform.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/no-compositing-for-fixed-position-under-transform.html
@@ -16,14 +16,14 @@ <script type="text/javascript"> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener("load", function() { - document.getElementById("layerTree").innerText = window.internals.layerTreeAsText(document); - document.getElementById("mainThreadScrollingReasons").innerText = window.internals.mainThreadScrollingReasons(document); + document.getElementById("layerTree").innerText = internals.layerTreeAsText(document); + document.getElementById("mainThreadScrollingReasons").innerText = internals.mainThreadScrollingReasons(document); }, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/no-compositing-for-preserve-3d.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/no-compositing-for-preserve-3d.html index 61e7c099..0dcaa49 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/no-compositing-for-preserve-3d.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/no-compositing-for-preserve-3d.html
@@ -30,7 +30,7 @@ { var layersResult = document.getElementById('layers'); if (window.testRunner) - layersResult.innerText = window.internals.layerTreeAsText(document); + layersResult.innerText = internals.layerTreeAsText(document); } window.addEventListener('load', dumpLayers, false)
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/overflow-scroll-overlap.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/overflow-scroll-overlap.html index 8635af7..6943814f 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/overflow-scroll-overlap.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/overflow-scroll-overlap.html
@@ -46,7 +46,7 @@ scrollDiv.scrollTop = 49; if (window.testRunner) { - document.getElementById('results').innerText = window.internals.layerTreeAsText(document); + document.getElementById('results').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }, 150);
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-animation-clipping.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-animation-clipping.html index 06c8dff0..52dcfbf 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-animation-clipping.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-animation-clipping.html
@@ -78,7 +78,7 @@ // Make sure we don't include the #layers element in the tree. The text size // might differ between platforms. layersElement.style.display = "none"; - var layerText = window.internals.layerTreeAsText(document); + var layerText = internals.layerTreeAsText(document); // The animation can progress before the start event is handled, so remove the // effects as they can vary. layerText = layerText.replace(/\[.*,.*,.*,.*\]/g, '[...]');
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-animation-container.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-animation-container.html index 4b67fe9..79471a8e 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-animation-container.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-animation-container.html
@@ -76,7 +76,7 @@ // Make sure we don't include the #layers element in the tree. The text size // might differ between platforms. layersElement.style.display = "none"; - var layerText = window.internals.layerTreeAsText(document); + var layerText = internals.layerTreeAsText(document); // The animation can progress before the start event is handled, so remove the // effects as they can vary. layerText = layerText.replace(/\[.*,.*,.*,.*\]/g, '[...]'); @@ -88,7 +88,7 @@ document.getElementById("first-green-box").classList.add("rotate-45deg"); if (window.testRunner) { - var layerText = window.internals.layerTreeAsText(document); + var layerText = internals.layerTreeAsText(document); // The animation can progress before the start event is handled, so remove the // effects as they can vary. layerText = layerText.replace(/\[.*,.*,.*,.*\]/g, '[...]');
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-animation.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-animation.html index 333297f..bccda92 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-animation.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-animation.html
@@ -45,7 +45,7 @@ function animationStarted() { if (window.testRunner) { - var layerText = window.internals.layerTreeAsText(document); + var layerText = internals.layerTreeAsText(document); // The animation can progress before the start event is handled, so remove the // effects as they can vary. layerText = layerText.replace(/\[.*,.*,.*,.*\]/g, '[...]');
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-child-layer.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-child-layer.html index 097c49c..c9d0970 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-child-layer.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-child-layer.html
@@ -46,7 +46,7 @@ window.addEventListener('load', function() { if (window.testRunner) { - document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layertree").innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }, false);
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-clipping.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-clipping.html index 4792d0fc..f97e03d 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-clipping.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-clipping.html
@@ -43,7 +43,7 @@ if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener('load', function() { - document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layertree").innerText = internals.layerTreeAsText(document); }, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-negative-z-index-multiple.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-negative-z-index-multiple.html index 4d14f01..72fc948 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-negative-z-index-multiple.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-negative-z-index-multiple.html
@@ -64,7 +64,7 @@ window.addEventListener('load', function() { if (window.testRunner) { - document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layertree").innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }, false);
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-negative-z-index.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-negative-z-index.html index e4c4e4c..572f608 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-negative-z-index.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-negative-z-index.html
@@ -53,7 +53,7 @@ window.addEventListener('load', function() { if (window.testRunner) { - document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layertree").innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }, false);
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-3d.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-3d.html index d82053da..f356164 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-3d.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-3d.html
@@ -52,14 +52,14 @@ var layerTrees = ""; if (window.testRunner) - layerTrees = "Before:\n" + window.internals.layerTreeAsText(document); + layerTrees = "Before:\n" + internals.layerTreeAsText(document); // Rotate the first green box, so that it overlaps the first gray box in the container. // That should force the creation of composited layers for all the other green boxes. document.getElementById("green-box").classList.add("rotated-3d"); if (window.testRunner) { - layerTrees += "\nAfter:\n" + window.internals.layerTreeAsText(document); + layerTrees += "\nAfter:\n" + internals.layerTreeAsText(document); document.getElementById('layers').innerText = layerTrees; testRunner.notifyDone(); }
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-and-clipped.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-and-clipped.html index b8f31dd..adbc1806 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-and-clipped.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-and-clipped.html
@@ -52,7 +52,7 @@ if (window.testRunner) { testRunner.dumpAsTextWithPixelResults(); window.addEventListener('load', function() { - document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layertree").innerText = internals.layerTreeAsText(document); }, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-layer-with-transform-body.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-layer-with-transform-body.html index 4a9d035..ec57ba5 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-layer-with-transform-body.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-layer-with-transform-body.html
@@ -46,7 +46,7 @@ if (window.testRunner) { testRunner.dumpAsTextWithPixelResults(); window.addEventListener('load', function() { - document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layertree").innerText = internals.layerTreeAsText(document); }, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-layer.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-layer.html index 3c84c713..38642d5 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-layer.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-layer.html
@@ -45,7 +45,7 @@ if (window.testRunner) { testRunner.dumpAsTextWithPixelResults(); window.addEventListener('load', function() { - document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layertree").innerText = internals.layerTreeAsText(document); }, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-preserved-3d.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-preserved-3d.html index 08ea0934..e44bd7fd 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-preserved-3d.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transformed-preserved-3d.html
@@ -88,14 +88,14 @@ var layerTrees = ""; if (window.testRunner) - layerTrees = "Before:\n" + window.internals.layerTreeAsText(document); + layerTrees = "Before:\n" + internals.layerTreeAsText(document); // Rotate the first green box, so that it overlaps the first gray box in the container. // That should force the creation of composited layers for all the other green boxes. document.getElementById("camera").classList.add("rotate-3d-end"); if (window.testRunner) { - layerTrees += "\nAfter:\n" + window.internals.layerTreeAsText(document); + layerTrees += "\nAfter:\n" + internals.layerTreeAsText(document); document.getElementById('layers').innerText = layerTrees; testRunner.notifyDone(); }
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transforms.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transforms.html index 31575fb..104439a 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transforms.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/overlap-transforms.html
@@ -31,7 +31,7 @@ function testDone() { if (window.testRunner) - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', testDone, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/remove-clipping-layer-with-no-children.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/remove-clipping-layer-with-no-children.html index efe4337..63cc8686 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/remove-clipping-layer-with-no-children.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/remove-clipping-layer-with-no-children.html
@@ -36,7 +36,7 @@ document.getElementById('parent').classList.add('fade'); document.getElementById('child').addEventListener('transitionend', function() { if (window.testRunner) { - document.getElementsByTagName('pre')[0].textContent = window.internals.layerTreeAsText(document); + document.getElementsByTagName('pre')[0].textContent = internals.layerTreeAsText(document); setTimeout(function() { testRunner.notifyDone(); });
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/resources/background-attachment-fixed.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/resources/background-attachment-fixed.html index 5ced662..c2d0f03d 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/resources/background-attachment-fixed.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/resources/background-attachment-fixed.html
@@ -13,6 +13,6 @@ <script> window.addEventListener('load', function() { - document.getElementById("mainThreadScrollingReasons").innerText = window.internals.mainThreadScrollingReasons(document); + document.getElementById("mainThreadScrollingReasons").innerText = internals.mainThreadScrollingReasons(document); }); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/rotate3d-overlap.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/rotate3d-overlap.html index 272cf456..12d99ff 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/rotate3d-overlap.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/rotate3d-overlap.html
@@ -34,7 +34,7 @@ function doTest() { if (window.testRunner) { - document.getElementById('results').innerText = window.internals.layerTreeAsText(document); + document.getElementById('results').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/scroll-partial-update.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/scroll-partial-update.html index 016a461..06d3354 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/scroll-partial-update.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/scroll-partial-update.html
@@ -52,7 +52,7 @@ window.setTimeout(function() { document.getElementById('scroller').scrollTop = 50; if (window.testRunner) { - document.getElementById('results').innerText = window.internals.layerTreeAsText(document); + document.getElementById('results').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }, 20);
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/spanOverlapsCanvas.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/spanOverlapsCanvas.html index 47f4c677..16b3e754 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/spanOverlapsCanvas.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/spanOverlapsCanvas.html
@@ -12,9 +12,9 @@ ctx.fillRect(0,0,ctx.canvas.width,ctx.canvas.height); if (window.testRunner) { - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); var console = document.getElementById("layeroutput"); - console.innerHTML = window.internals.layerTreeAsText(document); + console.innerHTML = internals.layerTreeAsText(document); } } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/squashing-into-ancestor-clipping-layer-change-removal.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/squashing-into-ancestor-clipping-layer-change-removal.html index ea88235f..90f5c3a 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/squashing-into-ancestor-clipping-layer-change-removal.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/squashing-into-ancestor-clipping-layer-change-removal.html
@@ -59,9 +59,9 @@ alert('This test require window.testRunner.') } -window.internals.forceCompositingUpdate(document); +internals.forceCompositingUpdate(document); document.querySelector('#clipper').className = 'clipping'; -window.internals.forceCompositingUpdate(document); +internals.forceCompositingUpdate(document); document.querySelector('#composited').remove(); -window.internals.forceCompositingUpdate(document); +internals.forceCompositingUpdate(document); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/squashing-into-ancestor-clipping-layer-change.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/squashing-into-ancestor-clipping-layer-change.html index 4527da5..4d1705a 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/squashing-into-ancestor-clipping-layer-change.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/squashing-into-ancestor-clipping-layer-change.html
@@ -49,11 +49,11 @@ alert('This test require window.testRunner.') } -window.internals.forceCompositingUpdate(document); +internals.forceCompositingUpdate(document); document.querySelector('#clipper').className = 'clipping'; -window.internals.forceCompositingUpdate(document); +internals.forceCompositingUpdate(document); document.querySelector('#clipper').className = ''; -window.internals.forceCompositingUpdate(document); +internals.forceCompositingUpdate(document); document.querySelector('#clipper').className = 'clipping'; document.querySelector('pre').textContent = internals.layerTreeAsText(document);
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/stacking-context-overlap-nested.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/stacking-context-overlap-nested.html index 676bef0..caefa7a 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/stacking-context-overlap-nested.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/stacking-context-overlap-nested.html
@@ -43,7 +43,7 @@ function doTest() { if (window.testRunner) { - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/stacking-context-overlap.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/stacking-context-overlap.html index 30b5447a5..00b38094 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/stacking-context-overlap.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/stacking-context-overlap.html
@@ -38,7 +38,7 @@ function doTest() { if (window.testRunner) { - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/translatez-added.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/translatez-added.html index 5999872..2fd98e0 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/translatez-added.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/translatez-added.html
@@ -18,14 +18,14 @@ </style> <script type="text/javascript" charset="utf-8"> if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); } function doTest() { document.getElementById('test').className = 'box composited'; if (window.testRunner) { - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); } } window.addEventListener('load', doTest, false);
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/translatez-overlap.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/translatez-overlap.html index 51805788..dd56b867 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/translatez-overlap.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/translatez-overlap.html
@@ -21,7 +21,7 @@ function doTest() { if (window.testRunner) { - document.getElementById('results').innerText = window.internals.layerTreeAsText(document); + document.getElementById('results').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/layer-creation/translatez-removed.html b/third_party/WebKit/LayoutTests/compositing/layer-creation/translatez-removed.html index 1853676..e20f430 100644 --- a/third_party/WebKit/LayoutTests/compositing/layer-creation/translatez-removed.html +++ b/third_party/WebKit/LayoutTests/compositing/layer-creation/translatez-removed.html
@@ -20,13 +20,13 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function doTest() { document.getElementById('test').classList.remove('composited'); if (window.testRunner) - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', doTest, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/masks/mask-layer-size.html b/third_party/WebKit/LayoutTests/compositing/masks/mask-layer-size.html index fcf4f55..faa47d4 100644 --- a/third_party/WebKit/LayoutTests/compositing/masks/mask-layer-size.html +++ b/third_party/WebKit/LayoutTests/compositing/masks/mask-layer-size.html
@@ -31,7 +31,7 @@ function dumpLayers() { if (window.testRunner) - document.getElementById('layers').textContent = window.internals.layerTreeAsText(document); + document.getElementById('layers').textContent = internals.layerTreeAsText(document); } window.addEventListener('load', dumpLayers, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/nested-direct-image-compositing.html b/third_party/WebKit/LayoutTests/compositing/nested-direct-image-compositing.html index 458bfba..e906d73 100644 --- a/third_party/WebKit/LayoutTests/compositing/nested-direct-image-compositing.html +++ b/third_party/WebKit/LayoutTests/compositing/nested-direct-image-compositing.html
@@ -36,7 +36,7 @@ setTimeout(function() { if (window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } }, 10); } @@ -44,8 +44,8 @@ window.onload = function () { if (window.testRunner) { - window.testRunner.dumpAsTextWithPixelResults(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsTextWithPixelResults(); + testRunner.waitUntilDone(); } setTimeout(function() {
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective.html b/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective.html index 9aa0ce2..cc5b9b9 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-overflow-scroll-should-not-affect-perspective.html
@@ -35,7 +35,7 @@ testRunner.dumpAsText(); if (window.internals) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); } function runTest() {
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-scrolling-with-clip-path-text.html b/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-scrolling-with-clip-path-text.html index 8d0595e6..15aac86 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-scrolling-with-clip-path-text.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-scrolling-with-clip-path-text.html
@@ -34,7 +34,7 @@ <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-scrolling-with-clip-path.html b/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-scrolling-with-clip-path.html index 632cf04..9ac8cb86a 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-scrolling-with-clip-path.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-scrolling-with-clip-path.html
@@ -34,7 +34,7 @@ <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-scrolling-with-clip-reference-expected.html b/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-scrolling-with-clip-reference-expected.html index 280e063..d6421fa3 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-scrolling-with-clip-reference-expected.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-scrolling-with-clip-reference-expected.html
@@ -33,7 +33,7 @@ <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-scrolling-with-clip-reference.html b/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-scrolling-with-clip-reference.html index 3b9ea7e..6d6d9fb 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-scrolling-with-clip-reference.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/accelerated-scrolling-with-clip-reference.html
@@ -34,7 +34,7 @@ <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/ancestor-with-clip-path.html b/third_party/WebKit/LayoutTests/compositing/overflow/ancestor-with-clip-path.html index 8e23ec9..0eaf4355 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/ancestor-with-clip-path.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/ancestor-with-clip-path.html
@@ -37,11 +37,11 @@ </div> <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } var result = ""; @@ -64,8 +64,8 @@ result += "Fail.\n" } if (window.testRunner) { - window.testRunner.setCustomTextOutput(result); - window.testRunner.notifyDone(); + testRunner.setCustomTextOutput(result); + testRunner.notifyDone(); } }); };
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/avoid-ancestor-clip-for-scroll-children.html b/third_party/WebKit/LayoutTests/compositing/overflow/avoid-ancestor-clip-for-scroll-children.html index f31968fd..2ff2f9d 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/avoid-ancestor-clip-for-scroll-children.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/avoid-ancestor-clip-for-scroll-children.html
@@ -60,7 +60,7 @@ onload = function() { if (!window.internals) return; - documentLayerTree = JSON.parse(window.internals.layerTreeAsText( + documentLayerTree = JSON.parse(internals.layerTreeAsText( document, window.internals.LAYER_TREE_INCLUDES_CLIP_AND_SCROLL_PARENTS)); shouldBe('scrollChildHasNoScrollClip(documentLayerTree)', 'true'); };
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/clear-scroll-parent.html b/third_party/WebKit/LayoutTests/compositing/overflow/clear-scroll-parent.html index ccd0946..c0133ba 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/clear-scroll-parent.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/clear-scroll-parent.html
@@ -47,7 +47,7 @@ testRunner.dumpAsText(); if (window.internals) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); } function runTest() {
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/clip-descendents.html b/third_party/WebKit/LayoutTests/compositing/overflow/clip-descendents.html index a849238..2bf56f2 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/clip-descendents.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/clip-descendents.html
@@ -42,7 +42,7 @@ var layersElement = document.getElementById('layers'); // Do not include any text in the layers output, otherwise we need expected results for each platform. layersElement.style.display = "none"; - layersElement.innerText = window.internals.layerTreeAsText(document); + layersElement.innerText = internals.layerTreeAsText(document); layersElement.style.display = "block"; testRunner.notifyDone(); }
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/clipping-ancestor-with-accelerated-scrolling-ancestor.html b/third_party/WebKit/LayoutTests/compositing/overflow/clipping-ancestor-with-accelerated-scrolling-ancestor.html index 0c6264cc..1cd43edf 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/clipping-ancestor-with-accelerated-scrolling-ancestor.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/clipping-ancestor-with-accelerated-scrolling-ancestor.html
@@ -24,7 +24,7 @@ </style> <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/composited-scroller-can-be-normal-flow.html b/third_party/WebKit/LayoutTests/compositing/overflow/composited-scroller-can-be-normal-flow.html index 0c401550..2ffa0ab 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/composited-scroller-can-be-normal-flow.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/composited-scroller-can-be-normal-flow.html
@@ -24,7 +24,7 @@ testRunner.dumpAsTextWithPixelResults(); if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); </script> <div class="fixed"></div> <div class="scroller">
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/composited-scrolling-paint-phases.html b/third_party/WebKit/LayoutTests/compositing/overflow/composited-scrolling-paint-phases.html index 6b625e5..3005951 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/composited-scrolling-paint-phases.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/composited-scrolling-paint-phases.html
@@ -31,10 +31,10 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); function write(str) { @@ -45,15 +45,15 @@ function doTest() { - write(window.internals.layerTreeAsText(document, window.internals.LAYER_TREE_INCLUDES_PAINTING_PHASES)); + write(internals.layerTreeAsText(document, window.internals.LAYER_TREE_INCLUDES_PAINTING_PHASES)); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } window.addEventListener('load', doTest, false); if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/content-gains-scrollbars.html b/third_party/WebKit/LayoutTests/compositing/overflow/content-gains-scrollbars.html index d47fe6d6..407cdcbf6 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/content-gains-scrollbars.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/content-gains-scrollbars.html
@@ -50,7 +50,7 @@ document.getElementById("both").classList.add("tall"); // vertical and horizontal scrollbars document.getElementById("corner").classList.add("resizeWidget"); // bottom div gets a resize corner but no scrollbars if (window.testRunner) { - document.getElementById("layerTree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layerTree").innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/content-loses-scrollbars.html b/third_party/WebKit/LayoutTests/compositing/overflow/content-loses-scrollbars.html index d99b0b9..71e59b4 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/content-loses-scrollbars.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/content-loses-scrollbars.html
@@ -50,7 +50,7 @@ document.getElementById("both").classList.remove("tall"); // vertical and horizontal scrollbars document.getElementById("corner").classList.remove("resizeWidget"); // bottom div loses a resize corner but no scrollbars if (window.testRunner) { - document.getElementById("layerTree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layerTree").innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/descendant-with-clip-path.html b/third_party/WebKit/LayoutTests/compositing/overflow/descendant-with-clip-path.html index 08300431..795cd85 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/descendant-with-clip-path.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/descendant-with-clip-path.html
@@ -30,11 +30,11 @@ </div> <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } var result = ""; @@ -58,8 +58,8 @@ } if (window.testRunner) { - window.testRunner.setCustomTextOutput(result); - window.testRunner.notifyDone(); + testRunner.setCustomTextOutput(result); + testRunner.notifyDone(); } }); };
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/do-not-assert-on-invisible-composited-layers.html b/third_party/WebKit/LayoutTests/compositing/overflow/do-not-assert-on-invisible-composited-layers.html index 220a7df..0c2fc08 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/do-not-assert-on-invisible-composited-layers.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/do-not-assert-on-invisible-composited-layers.html
@@ -6,7 +6,7 @@ testRunner.dumpAsText(); if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); function runTests() { var scrollParent = document.getElementById('scrollParent');
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents.html b/third_party/WebKit/LayoutTests/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents.html index 268d7950..de71fc1 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/do-not-paint-outline-into-composited-scrolling-contents.html
@@ -10,17 +10,17 @@ <script src="../../resources/run-after-layout-and-paint.js"></script> <script type="text/javascript" charset="utf-8"> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); function endTest() { var textarea = document.getElementById('text'); textarea.scrollTop = 80; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } function doTest()
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/do-not-repaint-if-scrolling-composited-layers.html b/third_party/WebKit/LayoutTests/compositing/overflow/do-not-repaint-if-scrolling-composited-layers.html index 0209ae48..9239e60 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/do-not-repaint-if-scrolling-composited-layers.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/do-not-repaint-if-scrolling-composited-layers.html
@@ -3,10 +3,10 @@ <head> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(false); + internals.settings.setPreferCompositingToLCDTextEnabled(false); function hasRepaint(layerTree) { var layers = JSON.parse(layerTree).layers; @@ -26,12 +26,12 @@ document.body.offsetTop; if (window.internals) - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); scroller.scrollTop = 100; if (window.internals) { - var layer_tree = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + var layer_tree = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); var repainted = hasRepaint(layer_tree); var repaintedMessage = repainted ? "repainted" : "did not repaint"; var expectedMessage = expectsRepaint ? " when expected" : " when unexpected"; @@ -39,7 +39,7 @@ result += "PASS " + repaintedMessage + expectedMessage + "\n"; else result += "FAIL " + repaintedMessage + expectedMessage + "\n" + layer_tree + "\n"; - window.internals.stopTrackingRepaints(document); + internals.stopTrackingRepaints(document); } // Do all cleanup here (so as not to affect repaint rects).
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/iframe-inside-overflow-clipping.html b/third_party/WebKit/LayoutTests/compositing/overflow/iframe-inside-overflow-clipping.html index 594d0b1..13e47c5 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/iframe-inside-overflow-clipping.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/iframe-inside-overflow-clipping.html
@@ -31,7 +31,7 @@ if (window.testRunner) testRunner.dumpAsText(); if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/iframe-nested-scroll-children.html b/third_party/WebKit/LayoutTests/compositing/overflow/iframe-nested-scroll-children.html index df3c617..66dc6a4 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/iframe-nested-scroll-children.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/iframe-nested-scroll-children.html
@@ -43,7 +43,7 @@ testRunner.dumpAsText(); if (window.internals) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); } </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/iframe-scroll-children.html b/third_party/WebKit/LayoutTests/compositing/overflow/iframe-scroll-children.html index 7ec2b14..af69376 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/iframe-scroll-children.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/iframe-scroll-children.html
@@ -47,7 +47,7 @@ testRunner.dumpAsText(false); if (window.internals) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); } </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/nested-border-radius-clipping.html b/third_party/WebKit/LayoutTests/compositing/overflow/nested-border-radius-clipping.html index e340bfc..ac12815 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/nested-border-radius-clipping.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/nested-border-radius-clipping.html
@@ -33,7 +33,7 @@ <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/nested-scrolling.html b/third_party/WebKit/LayoutTests/compositing/overflow/nested-scrolling.html index 6600f34..445d58a 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/nested-scrolling.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/nested-scrolling.html
@@ -31,7 +31,7 @@ </style> <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/non-reparented-overlay-scrollbars-expected.html b/third_party/WebKit/LayoutTests/compositing/overflow/non-reparented-overlay-scrollbars-expected.html index ca584b1..e5721202 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/non-reparented-overlay-scrollbars-expected.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/non-reparented-overlay-scrollbars-expected.html
@@ -23,8 +23,8 @@ </style> <script> if (window.internals) { - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; - window.internals.settings.setPreferCompositingToLCDTextEnabled(false); + internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.settings.setPreferCompositingToLCDTextEnabled(false); } </script> <div id='scroller'>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/non-reparented-overlay-scrollbars.html b/third_party/WebKit/LayoutTests/compositing/overflow/non-reparented-overlay-scrollbars.html index ae89862..2d02874 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/non-reparented-overlay-scrollbars.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/non-reparented-overlay-scrollbars.html
@@ -23,7 +23,7 @@ </style> <script> if (window.internals) - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.runtimeFlags.overlayScrollbarsEnabled = true; </script> <div id='scroller'> <div id='fixed'></div>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/opt-in-if-composited.html b/third_party/WebKit/LayoutTests/compositing/overflow/opt-in-if-composited.html index 218dc714..da18928 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/opt-in-if-composited.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/opt-in-if-composited.html
@@ -2,11 +2,11 @@ <script src="resources/composited-scroll.js"></script> <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(false); + internals.settings.setPreferCompositingToLCDTextEnabled(false); if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } var result = ""; @@ -41,8 +41,8 @@ } if (window.testRunner) { - window.testRunner.setCustomTextOutput(result); - window.testRunner.notifyDone(); + testRunner.setCustomTextOutput(result); + testRunner.notifyDone(); } }); });
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-auto-with-touch-no-overflow.html b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-auto-with-touch-no-overflow.html index ea9d938..957ba83c 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-auto-with-touch-no-overflow.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-auto-with-touch-no-overflow.html
@@ -21,7 +21,7 @@ window.addEventListener('load', function() { if (window.testRunner) - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); }, true); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-auto-with-touch-toggle.html b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-auto-with-touch-toggle.html index 38219fec..06a9b96 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-auto-with-touch-toggle.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-auto-with-touch-toggle.html
@@ -26,7 +26,7 @@ column.style.width = '1000px'; column.style.height = '1000px'; if (window.testRunner) - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); }, true); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-auto-with-touch.html b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-auto-with-touch.html index bdf281f..015214c0 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-auto-with-touch.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-auto-with-touch.html
@@ -21,7 +21,7 @@ window.addEventListener('load', function() { if (window.testRunner) - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); }, true); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-clip-with-accelerated-scrolling-ancestor.html b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-clip-with-accelerated-scrolling-ancestor.html index 5aa8228..9782be7 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-clip-with-accelerated-scrolling-ancestor.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-clip-with-accelerated-scrolling-ancestor.html
@@ -23,7 +23,7 @@ </style> <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-hidden-with-touch.html b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-hidden-with-touch.html index 242748d0..47ed0b4b 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-hidden-with-touch.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-hidden-with-touch.html
@@ -21,7 +21,7 @@ window.addEventListener('load', function() { if (window.testRunner) - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); }, true); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-overlay-with-touch-no-overflow.html b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-overlay-with-touch-no-overflow.html index 456decb3..2fda092e 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-overlay-with-touch-no-overflow.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-overlay-with-touch-no-overflow.html
@@ -21,7 +21,7 @@ window.addEventListener('load', function() { if (window.testRunner) - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); }, true); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-overlay-with-touch.html b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-overlay-with-touch.html index f4c0ee3..e2157b7 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-overlay-with-touch.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-overlay-with-touch.html
@@ -21,7 +21,7 @@ window.addEventListener('load', function() { if (window.testRunner) - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); }, true); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scaled-descendant-overlapping.html b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scaled-descendant-overlapping.html index b72e9ad..7992062 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scaled-descendant-overlapping.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scaled-descendant-overlapping.html
@@ -8,8 +8,8 @@ if (window.testRunner) testRunner.dumpAsTextWithPixelResults(); if (window.internals) { - window.internals.setPageScaleFactorLimits(0.5, 0.5); - window.internals.setPageScaleFactor(0.5); + internals.setPageScaleFactorLimits(0.5, 0.5); + internals.setPageScaleFactor(0.5); } } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-local-background.html b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-local-background.html index 78225fe..9c8e39b 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-local-background.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-local-background.html
@@ -7,7 +7,7 @@ requestAnimationFrame(function() { document.getElementById('scroller').scrollTop = 200; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }) }); }
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-local-image-background.html b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-local-image-background.html index 2889ba3a..43f789e7 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-local-image-background.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-local-image-background.html
@@ -7,7 +7,7 @@ requestAnimationFrame(function() { document.getElementById('scroller').scrollTop = 200; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }) }); }
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-opaque-background-will-change.html b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-opaque-background-will-change.html index eec3f1f5..7f289bc 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-opaque-background-will-change.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-opaque-background-will-change.html
@@ -2,7 +2,7 @@ <script src="resources/composited-scroll.js"></script> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); onload = function() { if (!window.testRunner || !window.internals) @@ -14,7 +14,7 @@ result += "Pass.\n"; else result += "Fail.\n"; - window.testRunner.setCustomTextOutput(result); + testRunner.setCustomTextOutput(result); } </script> <style>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-touch-no-overflow.html b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-touch-no-overflow.html index c69e226..55d2019 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-touch-no-overflow.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-touch-no-overflow.html
@@ -21,7 +21,7 @@ window.addEventListener('load', function() { if (window.testRunner) - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); }, true); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-transparent-background.html b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-transparent-background.html index 3eb1b4d4..4c27117 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-transparent-background.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scroll-with-transparent-background.html
@@ -2,7 +2,7 @@ <script src="resources/composited-scroll.js"></script> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); onload = function() { if (!window.testRunner || !window.internals) @@ -14,7 +14,7 @@ result += "Pass.\n"; else result += "Fail.\n"; - window.testRunner.setCustomTextOutput(result); + testRunner.setCustomTextOutput(result); } </script> <style>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scrollbar-layers.html b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scrollbar-layers.html index 8af1ecf..f510a23 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scrollbar-layers.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-scrollbar-layers.html
@@ -44,6 +44,6 @@ <script> if (window.testRunner) { testRunner.dumpAsText(); - document.getElementById("layerTree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layerTree").innerText = internals.layerTreeAsText(document); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-visible-with-touch.html b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-visible-with-touch.html index 500d253..a546dde 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/overflow-visible-with-touch.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/overflow-visible-with-touch.html
@@ -21,7 +21,7 @@ window.addEventListener('load', function() { if (window.testRunner) - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); }, true); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/paint-neg-z-order-descendants-into-scrolling-contents-layer.html b/third_party/WebKit/LayoutTests/compositing/overflow/paint-neg-z-order-descendants-into-scrolling-contents-layer.html index 266ccfb9..21b49fb 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/paint-neg-z-order-descendants-into-scrolling-contents-layer.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/paint-neg-z-order-descendants-into-scrolling-contents-layer.html
@@ -25,17 +25,17 @@ </style> <script type="text/javascript" charset="utf-8"> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); function endTest() { var textarea = document.getElementById('container'); textarea.scrollTop = 40; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } function doTest()
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing-expected.html b/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing-expected.html index be8b522d..8d3b5c1 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing-expected.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing-expected.html
@@ -35,16 +35,16 @@ </style> <script> if (window.internals) { - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.settings.setPreferCompositingToLCDTextEnabled(true); } if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); onload = function() { if (window.internals && window.testRunner) - window.testRunner.setCustomTextOutput(window.internals.layerTreeAsText(document)); + testRunner.setCustomTextOutput(internals.layerTreeAsText(document)); }; </script> <div id="container">
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing.html b/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing.html index 8d8d8926..59abb3e 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-appear-without-compositing.html
@@ -35,16 +35,16 @@ </style> <script> if (window.internals) { - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; - window.internals.settings.setPreferCompositingToLCDTextEnabled(false); + internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.settings.setPreferCompositingToLCDTextEnabled(false); } if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); onload = function() { if (window.internals && window.testRunner) - window.testRunner.setCustomTextOutput(window.internals.layerTreeAsText(document)); + testRunner.setCustomTextOutput(internals.layerTreeAsText(document)); }; </script> <div id="container">
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-respect-ancestor-clip-expected.html b/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-respect-ancestor-clip-expected.html index 81c171d2..ded912a 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-respect-ancestor-clip-expected.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-respect-ancestor-clip-expected.html
@@ -36,16 +36,16 @@ </style> <script> if (window.internals) { - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; - window.internals.settings.setPreferCompositingToLCDTextEnabled(false); + internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.settings.setPreferCompositingToLCDTextEnabled(false); } if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); onload = function() { if (window.internals && window.testRunner) - window.testRunner.setCustomTextOutput(window.internals.layerTreeAsText(document)); + testRunner.setCustomTextOutput(internals.layerTreeAsText(document)); }; </script> <div id="container">
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-respect-ancestor-clip.html b/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-respect-ancestor-clip.html index b4b65e99..e6a58ac 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-respect-ancestor-clip.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/reflected-overlay-scrollbars-should-respect-ancestor-clip.html
@@ -41,16 +41,16 @@ </style> <script> if (window.internals) { - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.settings.setPreferCompositingToLCDTextEnabled(true); } if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); onload = function() { if (window.internals && window.testRunner) - window.testRunner.setCustomTextOutput(window.internals.layerTreeAsText(document)); + testRunner.setCustomTextOutput(internals.layerTreeAsText(document)); }; </script> <div id="container">
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-overlay-scrollbars-should-respect-ancestor-clip-expected.html b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-overlay-scrollbars-should-respect-ancestor-clip-expected.html index b1495ae..fea7e5d1 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-overlay-scrollbars-should-respect-ancestor-clip-expected.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-overlay-scrollbars-should-respect-ancestor-clip-expected.html
@@ -32,8 +32,8 @@ </style> <script> if (window.internals) { - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; - window.internals.settings.setPreferCompositingToLCDTextEnabled(false); + internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.settings.setPreferCompositingToLCDTextEnabled(false); } </script> <div id='clipper'>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-overlay-scrollbars-should-respect-ancestor-clip.html b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-overlay-scrollbars-should-respect-ancestor-clip.html index 48c536dd..75c97fb 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-overlay-scrollbars-should-respect-ancestor-clip.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-overlay-scrollbars-should-respect-ancestor-clip.html
@@ -37,8 +37,8 @@ </style> <script> if (window.internals) { - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.settings.setPreferCompositingToLCDTextEnabled(true); } </script> <div id='clipper'>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-scrollbars-non-sc-anc.html b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-scrollbars-non-sc-anc.html index 0445b8ed..eb40cea 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-scrollbars-non-sc-anc.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-scrollbars-non-sc-anc.html
@@ -42,13 +42,13 @@ testRunner.dumpAsText(); if (window.internals) { - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.settings.setPreferCompositingToLCDTextEnabled(true); } onload = function() { if (window.internals) { - document.getElementById('console').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('console').innerHTML = internals.layerTreeAsText(document); } } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-unclipped-overlay-scrollbars-with-offset-from-renderer-expected.html b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-unclipped-overlay-scrollbars-with-offset-from-renderer-expected.html index abfbeb8..f994034 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-unclipped-overlay-scrollbars-with-offset-from-renderer-expected.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-unclipped-overlay-scrollbars-with-offset-from-renderer-expected.html
@@ -23,8 +23,8 @@ </style> <script> if (window.internals) { - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; - window.internals.settings.setPreferCompositingToLCDTextEnabled(false); + internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.settings.setPreferCompositingToLCDTextEnabled(false); } </script> <div id='scroller'>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-unclipped-overlay-scrollbars-with-offset-from-renderer.html b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-unclipped-overlay-scrollbars-with-offset-from-renderer.html index 71de73ac..0ba49a8 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/reparented-unclipped-overlay-scrollbars-with-offset-from-renderer.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/reparented-unclipped-overlay-scrollbars-with-offset-from-renderer.html
@@ -29,8 +29,8 @@ </style> <script> if (window.internals) { - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.settings.setPreferCompositingToLCDTextEnabled(true); } </script> <div id='scroller'>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/resize-painting.html b/third_party/WebKit/LayoutTests/compositing/overflow/resize-painting.html index 6e395efb..2b79b21d 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/resize-painting.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/resize-painting.html
@@ -25,7 +25,7 @@ function doTest() { if (window.testRunner) - document.getElementById('layers').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', doTest, false);
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/resources/composited-scroll.js b/third_party/WebKit/LayoutTests/compositing/overflow/resources/composited-scroll.js index d0be525..ea10b1b 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/resources/composited-scroll.js +++ b/third_party/WebKit/LayoutTests/compositing/overflow/resources/composited-scroll.js
@@ -1,5 +1,5 @@ function elementSubtreeHasCompositedScrollLayers(element) { - var layerTree = window.internals.elementLayerTreeAsText(element); + var layerTree = internals.elementLayerTreeAsText(element); if (layerTree === '') return false; var layers = JSON.parse(layerTree); @@ -13,7 +13,7 @@ } function elementSubtreeHasOpaqueCompositedScrollingContentsLayer(element) { - var layerTree = window.internals.elementLayerTreeAsText(element); + var layerTree = internals.elementLayerTreeAsText(element); if (layerTree === '') return false; var layers = JSON.parse(layerTree); @@ -26,7 +26,7 @@ } function elementSubtreeHasNotOpaqueCompositedScrollingContentsLayer(element) { - var layerTree = window.internals.elementLayerTreeAsText(element); + var layerTree = internals.elementLayerTreeAsText(element); if (layerTree === '') return false; var layers = JSON.parse(layerTree);
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/resources/scrolls-with-respect-to-iframe.html b/third_party/WebKit/LayoutTests/compositing/overflow/resources/scrolls-with-respect-to-iframe.html index 39a57bb..7061868b 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/resources/scrolls-with-respect-to-iframe.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/resources/scrolls-with-respect-to-iframe.html
@@ -36,7 +36,7 @@ var div1 = document.getElementById(divs[i]); for (var j = 0; j < divs.length; j++) { var div2 = document.getElementById(divs[j]); - var scrollsWithRespectTo = window.internals.scrollsWithRespectTo(div1, div2); + var scrollsWithRespectTo = internals.scrollsWithRespectTo(div1, div2); var successText = scrollsWithRespectTo ? 'scrolls with respect to' : 'does not scroll with respect to'; var messageText = div1.id + ' ' + successText + ' ' + div2.id;
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/resources/update-widget-positions-on-nested-frames-and-scrollers-inner-frame.html b/third_party/WebKit/LayoutTests/compositing/overflow/resources/update-widget-positions-on-nested-frames-and-scrollers-inner-frame.html index 297a93a..c8dfa67 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/resources/update-widget-positions-on-nested-frames-and-scrollers-inner-frame.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/resources/update-widget-positions-on-nested-frames-and-scrollers-inner-frame.html
@@ -30,7 +30,7 @@ window.onmessage = function() { clickSelect(function () { if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); };
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor.html b/third_party/WebKit/LayoutTests/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor.html index f5f9d86..d2bcab8 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/scroll-parent-with-non-stacking-context-composited-ancestor.html
@@ -50,15 +50,15 @@ </div> <script> if (window.internals) { - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.settings.setPreferCompositingToLCDTextEnabled(true); } if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); onload = function() { if (window.internals && window.testRunner) - window.testRunner.setCustomTextOutput(window.internals.layerTreeAsText(document)); + testRunner.setCustomTextOutput(internals.layerTreeAsText(document)); }; </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/scrollbar-layer-placement.html b/third_party/WebKit/LayoutTests/compositing/overflow/scrollbar-layer-placement.html index ad67b8b..cc5ad90 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/scrollbar-layer-placement.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/scrollbar-layer-placement.html
@@ -19,8 +19,8 @@ --> <script> if (window.internals) { - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.settings.setPreferCompositingToLCDTextEnabled(true); } </script> <style>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/scrollbars-with-clipped-owner.html b/third_party/WebKit/LayoutTests/compositing/overflow/scrollbars-with-clipped-owner.html index cc81804..9a5ab01 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/scrollbars-with-clipped-owner.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/scrollbars-with-clipped-owner.html
@@ -6,7 +6,7 @@ // and would otherwise be promoted to rootScroller. Doing so causes it // to be composited and produces off-by-one differences due to how // scrollbar positions are calculated in the compositor. - window.internals.runtimeFlags.implicitRootScrollerEnabled = false; + internals.runtimeFlags.implicitRootScrollerEnabled = false; </script> <style> body {
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/scroller-with-border-radius.html b/third_party/WebKit/LayoutTests/compositing/overflow/scroller-with-border-radius.html index 258066ec..cbfaf1d 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/scroller-with-border-radius.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/scroller-with-border-radius.html
@@ -29,11 +29,11 @@ </div> <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } var result = ""; @@ -57,8 +57,8 @@ } if (window.testRunner) { - window.testRunner.setCustomTextOutput(result); - window.testRunner.notifyDone(); + testRunner.setCustomTextOutput(result); + testRunner.notifyDone(); } }); };
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/scrolling-content-clip-to-viewport.html b/third_party/WebKit/LayoutTests/compositing/overflow/scrolling-content-clip-to-viewport.html index 74bfe68e..1c81d33 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/scrolling-content-clip-to-viewport.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/scrolling-content-clip-to-viewport.html
@@ -29,11 +29,11 @@ if (window.testRunner) testRunner.dumpAsText(); if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); window.addEventListener('load', function() { if (window.testRunner) - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); }, true); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/scrolls-with-respect-to-nested.html b/third_party/WebKit/LayoutTests/compositing/overflow/scrolls-with-respect-to-nested.html index 6cc0368..7fc15e55 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/scrolls-with-respect-to-nested.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/scrolls-with-respect-to-nested.html
@@ -56,7 +56,7 @@ var div1 = document.getElementById(divs[i]); for (var j = 0; j < divs.length; j++) { var div2 = document.getElementById(divs[j]); - var scrollsWithRespectTo = window.internals.scrollsWithRespectTo(div1, div2); + var scrollsWithRespectTo = internals.scrollsWithRespectTo(div1, div2); var successText = scrollsWithRespectTo ? 'scrolls with respect to' : 'does not scroll with respect to'; var messageText = div1.id + ' ' + successText + ' ' + div2.id;
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/scrolls-with-respect-to-transform.html b/third_party/WebKit/LayoutTests/compositing/overflow/scrolls-with-respect-to-transform.html index a78700d3..5b101cd 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/scrolls-with-respect-to-transform.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/scrolls-with-respect-to-transform.html
@@ -50,7 +50,7 @@ var div1 = document.getElementById(divs[i]); for (var j = 0; j < divs.length; j++) { var div2 = document.getElementById(divs[j]); - var scrollsWithRespectTo = window.internals.scrollsWithRespectTo(div1, div2); + var scrollsWithRespectTo = internals.scrollsWithRespectTo(div1, div2); var successText = scrollsWithRespectTo ? 'scrolls with respect to' : 'does not scroll with respect to'; var messageText = div1.id + ' ' + successText + ' ' + div2.id;
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/scrolls-with-respect-to.html b/third_party/WebKit/LayoutTests/compositing/overflow/scrolls-with-respect-to.html index e4f34f0..07812102 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/scrolls-with-respect-to.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/scrolls-with-respect-to.html
@@ -93,7 +93,7 @@ var div1 = document.getElementById(divs[i]); for (var j = 0; j < divs.length; j++) { var div2 = document.getElementById(divs[j]); - var scrollsWithRespectTo = window.internals.scrollsWithRespectTo(div1, div2); + var scrollsWithRespectTo = internals.scrollsWithRespectTo(div1, div2); var successText = scrollsWithRespectTo ? 'scrolls with respect to' : 'does not scroll with respect to'; var messageText = div1.id + ' ' + successText + ' ' + div2.id;
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/surface-over-composited-offscreen.html b/third_party/WebKit/LayoutTests/compositing/overflow/surface-over-composited-offscreen.html index 1b069875..510f22d 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/surface-over-composited-offscreen.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/surface-over-composited-offscreen.html
@@ -33,7 +33,7 @@ window.addEventListener('load', () => { // Force a compositing update so it happens while the boxes are off // screen. - window.internals.forceCompositingUpdate(document); + internals.forceCompositingUpdate(document); // Bring them into view, the z-index order should be correct. window.scrollTo(0, 1500);
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/textarea-scroll-touch.html b/third_party/WebKit/LayoutTests/compositing/overflow/textarea-scroll-touch.html index c20d892..25e024c 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/textarea-scroll-touch.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/textarea-scroll-touch.html
@@ -21,7 +21,7 @@ testRunner.dumpAsText(); if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); function testScrollability(element) { @@ -36,7 +36,7 @@ testScrollability(divs[i]); if (window.testRunner) - document.getElementById('results').innerText = window.internals.layerTreeAsText(document); + document.getElementById('results').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', doTest, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/universal-accelerated-overflow-scroll.html b/third_party/WebKit/LayoutTests/compositing/overflow/universal-accelerated-overflow-scroll.html index fbb1c79..c9f5d7c 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/universal-accelerated-overflow-scroll.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/universal-accelerated-overflow-scroll.html
@@ -58,7 +58,7 @@ </style> <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); function addDomElement(elementType, className, id, parent, description, indent) {
diff --git a/third_party/WebKit/LayoutTests/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers.html b/third_party/WebKit/LayoutTests/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers.html index 6989fad..d25bec5 100644 --- a/third_party/WebKit/LayoutTests/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers.html +++ b/third_party/WebKit/LayoutTests/compositing/overflow/update-widget-positions-on-nested-frames-and-scrollers.html
@@ -14,7 +14,7 @@ if (window.testRunner) testRunner.waitUntilDone(); if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/overlap-map-stack-crash.html b/third_party/WebKit/LayoutTests/compositing/overlap-map-stack-crash.html index 8ca32a4..bd8b095 100644 --- a/third_party/WebKit/LayoutTests/compositing/overlap-map-stack-crash.html +++ b/third_party/WebKit/LayoutTests/compositing/overlap-map-stack-crash.html
@@ -44,7 +44,7 @@ <script> if (window.internals) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); } function doTest() {
diff --git a/third_party/WebKit/LayoutTests/compositing/preserve-3d-toggle.html b/third_party/WebKit/LayoutTests/compositing/preserve-3d-toggle.html index 6064f2f..0d028e7 100644 --- a/third_party/WebKit/LayoutTests/compositing/preserve-3d-toggle.html +++ b/third_party/WebKit/LayoutTests/compositing/preserve-3d-toggle.html
@@ -42,13 +42,13 @@ <script type="text/javascript"> function doTest() { if (window.testRunner) { - window.testRunner.dumpAsTextWithPixelResults(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsTextWithPixelResults(); + testRunner.waitUntilDone(); } window.setTimeout(function() { document.getElementById('container').style.webkitTransformStyle = 'flat'; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }, 0); } window.addEventListener('load', doTest);
diff --git a/third_party/WebKit/LayoutTests/compositing/rendering-contexts.html b/third_party/WebKit/LayoutTests/compositing/rendering-contexts.html index 1ecc6df..3504d204 100644 --- a/third_party/WebKit/LayoutTests/compositing/rendering-contexts.html +++ b/third_party/WebKit/LayoutTests/compositing/rendering-contexts.html
@@ -33,7 +33,7 @@ function dumpLayerTree() { if (window.internals) - document.getElementById("console").innerHTML = window.internals.layerTreeAsText(document); + document.getElementById("console").innerHTML = internals.layerTreeAsText(document); } window.onload = dumpLayerTree;
diff --git a/third_party/WebKit/LayoutTests/compositing/resources/mock_scrollbars.js b/third_party/WebKit/LayoutTests/compositing/resources/mock_scrollbars.js index 71bdf70..9858be2d 100644 --- a/third_party/WebKit/LayoutTests/compositing/resources/mock_scrollbars.js +++ b/third_party/WebKit/LayoutTests/compositing/resources/mock_scrollbars.js
@@ -1,3 +1,3 @@ if (window.internals) { - window.internals.settings.setMockScrollbarsEnabled(true); + internals.settings.setMockScrollbarsEnabled(true); }
diff --git a/third_party/WebKit/LayoutTests/compositing/rtl/rtl-iframe-relative.html b/third_party/WebKit/LayoutTests/compositing/rtl/rtl-iframe-relative.html index 7e4c353..65b4ae35 100644 --- a/third_party/WebKit/LayoutTests/compositing/rtl/rtl-iframe-relative.html +++ b/third_party/WebKit/LayoutTests/compositing/rtl/rtl-iframe-relative.html
@@ -32,7 +32,7 @@ <script> function doTest() { if (window.testRunner) { - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); testRunner.dumpAsTextWithPixelResults(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/rtl/rtl-overflow-scrolling.html b/third_party/WebKit/LayoutTests/compositing/rtl/rtl-overflow-scrolling.html index 0099190..ce10f3f 100644 --- a/third_party/WebKit/LayoutTests/compositing/rtl/rtl-overflow-scrolling.html +++ b/third_party/WebKit/LayoutTests/compositing/rtl/rtl-overflow-scrolling.html
@@ -2,7 +2,7 @@ <head> <script type="text/javascript"> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); function runTest() { document.getElementById("container").scrollLeft = 0;
diff --git a/third_party/WebKit/LayoutTests/compositing/rtl/rtl-relative.html b/third_party/WebKit/LayoutTests/compositing/rtl/rtl-relative.html index 9a49d08..483011e 100644 --- a/third_party/WebKit/LayoutTests/compositing/rtl/rtl-relative.html +++ b/third_party/WebKit/LayoutTests/compositing/rtl/rtl-relative.html
@@ -35,7 +35,7 @@ function doTest() { if (window.testRunner) { if (top == self) - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); testRunner.dumpAsTextWithPixelResults(); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/scaling/tiled-layer-recursion.html b/third_party/WebKit/LayoutTests/compositing/scaling/tiled-layer-recursion.html index 18f81d1..f4915ba2e 100644 --- a/third_party/WebKit/LayoutTests/compositing/scaling/tiled-layer-recursion.html +++ b/third_party/WebKit/LayoutTests/compositing/scaling/tiled-layer-recursion.html
@@ -21,7 +21,7 @@ function scalePage() { if (window.internals) - window.internals.setPageScaleFactor(1.50025); + internals.setPageScaleFactor(1.50025); } window.addEventListener('load', scalePage, false);
diff --git a/third_party/WebKit/LayoutTests/compositing/scroll-update-with-clamp.html b/third_party/WebKit/LayoutTests/compositing/scroll-update-with-clamp.html index eb3d978..463aceb 100644 --- a/third_party/WebKit/LayoutTests/compositing/scroll-update-with-clamp.html +++ b/third_party/WebKit/LayoutTests/compositing/scroll-update-with-clamp.html
@@ -3,7 +3,7 @@ <div id=spacer style="position: relative; width: 10px; height: 300px"></div> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); onload = function() { window.scrollTo(0, 3000); @@ -20,6 +20,6 @@ spacer.style.height = '300px'; spacer.offsetWidth; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/scroll-with-ancestor-clip.html b/third_party/WebKit/LayoutTests/compositing/scroll-with-ancestor-clip.html index e830c57..46c77079 100644 --- a/third_party/WebKit/LayoutTests/compositing/scroll-with-ancestor-clip.html +++ b/third_party/WebKit/LayoutTests/compositing/scroll-with-ancestor-clip.html
@@ -28,11 +28,11 @@ window.requestAnimationFrame(function() { window.scrollBy(0, 300); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); } if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); onload = runTest; </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/scrollbars/custom-composited-different-track-parts.html b/third_party/WebKit/LayoutTests/compositing/scrollbars/custom-composited-different-track-parts.html index 5f0805cf..004a361 100644 --- a/third_party/WebKit/LayoutTests/compositing/scrollbars/custom-composited-different-track-parts.html +++ b/third_party/WebKit/LayoutTests/compositing/scrollbars/custom-composited-different-track-parts.html
@@ -39,11 +39,11 @@ </style> <script> if (window.internals) { - window.internals.settings.setMockScrollbarsEnabled(false); + internals.settings.setMockScrollbarsEnabled(false); } if (window.testRunner) { - window.testRunner.waitUntilDone(); - window.testRunner.dumpAsTextWithPixelResults(); // This is only useful as a pixel test. + testRunner.waitUntilDone(); + testRunner.dumpAsTextWithPixelResults(); // This is only useful as a pixel test. } function doTest() @@ -51,7 +51,7 @@ window.scrollTo(400,300); window.setTimeout(function() { if (window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } }, 0); }
diff --git a/third_party/WebKit/LayoutTests/compositing/scrollbars/nested-overlay-scrollbars.html b/third_party/WebKit/LayoutTests/compositing/scrollbars/nested-overlay-scrollbars.html index 18ca7ed8..990230a 100644 --- a/third_party/WebKit/LayoutTests/compositing/scrollbars/nested-overlay-scrollbars.html +++ b/third_party/WebKit/LayoutTests/compositing/scrollbars/nested-overlay-scrollbars.html
@@ -40,17 +40,17 @@ </style> <script> if (window.internals) { - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.settings.setPreferCompositingToLCDTextEnabled(true); } if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); onload = function() { document.getElementById("outer").scrollTop = 600; if (window.internals && window.testRunner) - window.testRunner.setCustomTextOutput(window.internals.layerTreeAsText(document)); + testRunner.setCustomTextOutput(internals.layerTreeAsText(document)); }; </script> <div id="outer">
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/add-remove-squashed-layers.html b/third_party/WebKit/LayoutTests/compositing/squashing/add-remove-squashed-layers.html index 54c58fc6..dc02673 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/add-remove-squashed-layers.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/add-remove-squashed-layers.html
@@ -118,37 +118,37 @@ return; // Case 1 - document.getElementById('Case1').textContent = window.internals.layerTreeAsText(document); + document.getElementById('Case1').textContent = internals.layerTreeAsText(document); // Case 2 - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); addOverlap3(); - document.getElementById('Case2').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case2').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); // Case 3 - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); removeOverlap2(); - document.getElementById('Case3').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case3').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); // Case 4 - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); removeOverlap1(); - document.getElementById('Case4').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case4').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); // Case 5 - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); addOverlap2(); - document.getElementById('Case5').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case5').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); // Case 6 - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); resetLayers(); - document.getElementById('Case6').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case6').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); // Display the test results only after test is done so that it does not affect repaint rect results. document.getElementById('testResults').style.display = "block";
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/backing-owner-determines-scroll-parent.html b/third_party/WebKit/LayoutTests/compositing/squashing/backing-owner-determines-scroll-parent.html index d01dedf..5d18bfb 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/backing-owner-determines-scroll-parent.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/backing-owner-determines-scroll-parent.html
@@ -1,7 +1,7 @@ <!DOCTYPE HTML> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> <style> .c1 {
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/clipping-ancestor.html b/third_party/WebKit/LayoutTests/compositing/squashing/clipping-ancestor.html index 505179ed..86a5b67 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/clipping-ancestor.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/clipping-ancestor.html
@@ -12,7 +12,7 @@ { var layersResult = document.getElementById('layers'); if (window.testRunner) - layersResult.innerText = window.internals.layerTreeAsText(document); + layersResult.innerText = internals.layerTreeAsText(document); } window.addEventListener('load', dumpLayers, false) </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/clipping-backface-assert.html b/third_party/WebKit/LayoutTests/compositing/squashing/clipping-backface-assert.html index 533119e..373dd969 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/clipping-backface-assert.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/clipping-backface-assert.html
@@ -16,6 +16,6 @@ <script> if (window.testRunner) { testRunner.dumpAsText(); - window.internals.forceCompositingUpdate(document); + internals.forceCompositingUpdate(document); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/do-not-squash-scroll-child-with-composited-descendants.html b/third_party/WebKit/LayoutTests/compositing/squashing/do-not-squash-scroll-child-with-composited-descendants.html index 998980df..b7adb4d9 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/do-not-squash-scroll-child-with-composited-descendants.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/do-not-squash-scroll-child-with-composited-descendants.html
@@ -75,7 +75,7 @@ onload = function() { if (!window.internals) return; - layers = JSON.parse(window.internals.layerTreeAsText(document)); + layers = JSON.parse(internals.layerTreeAsText(document)); shouldBe('scrollChildDoesNotSquash(layers)', 'true'); };
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/dont-squash-into-iframes.html b/third_party/WebKit/LayoutTests/compositing/squashing/dont-squash-into-iframes.html index d658a20..05dc822 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/dont-squash-into-iframes.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/dont-squash-into-iframes.html
@@ -8,7 +8,7 @@ testRunner.dumpAsText(); testRunner.waitUntilDone(); runAfterLayoutAndPaint(function() { - testRunner.setCustomTextOutput(window.internals.layerTreeAsText(document)); + testRunner.setCustomTextOutput(internals.layerTreeAsText(document)); testRunner.notifyDone(); }); }
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/dont-squash-into-videos.html b/third_party/WebKit/LayoutTests/compositing/squashing/dont-squash-into-videos.html index 6d4d525..2aa89cab 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/dont-squash-into-videos.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/dont-squash-into-videos.html
@@ -8,7 +8,7 @@ testRunner.dumpAsText(); testRunner.waitUntilDone(); runAfterLayoutAndPaint(function() { - testRunner.setCustomTextOutput(window.internals.layerTreeAsText(document)); + testRunner.setCustomTextOutput(internals.layerTreeAsText(document)); testRunner.notifyDone(); }); }
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/iframes-are-never-squashed.html b/third_party/WebKit/LayoutTests/compositing/squashing/iframes-are-never-squashed.html index ce97627..1ca862a 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/iframes-are-never-squashed.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/iframes-are-never-squashed.html
@@ -9,7 +9,7 @@ testRunner.dumpAsText(); testRunner.waitUntilDone(); runAfterLayoutAndPaint(function() { - testRunner.setCustomTextOutput(window.internals.layerTreeAsText(document)); + testRunner.setCustomTextOutput(internals.layerTreeAsText(document)); testRunner.notifyDone(); }); }
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/invalidate-on-grouped-mapping-reorder.html b/third_party/WebKit/LayoutTests/compositing/squashing/invalidate-on-grouped-mapping-reorder.html index 69b6c139..8d99ddcb 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/invalidate-on-grouped-mapping-reorder.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/invalidate-on-grouped-mapping-reorder.html
@@ -6,12 +6,12 @@ requestAnimationFrame(function() { document.getElementById('badlayer').style.zIndex = "1" if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); }); if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); </script> <!-- Tests an obscure invalidaiton situation in which changing the z-index of a element results in a reshuffle of squashed content,
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/invalidations-with-large-negative-margin-inline-content.html b/third_party/WebKit/LayoutTests/compositing/squashing/invalidations-with-large-negative-margin-inline-content.html index 77f34a4..469b78c 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/invalidations-with-large-negative-margin-inline-content.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/invalidations-with-large-negative-margin-inline-content.html
@@ -19,14 +19,14 @@ } var updateFunction = function() { if (window.internals) - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); document.getElementById('chip').style.backgroundColor = "blue"; if (window.internals) { // Repaint should be at x=400px, since that is the position relative to the squashing layer. - var data = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + var data = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); var output = document.getElementById('output'); output.textContent = data;
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/invisible-layers-should-not-affect-geometry.html b/third_party/WebKit/LayoutTests/compositing/squashing/invisible-layers-should-not-affect-geometry.html index 7b7b745b..88762852 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/invisible-layers-should-not-affect-geometry.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/invisible-layers-should-not-affect-geometry.html
@@ -27,7 +27,7 @@ function runTest() { if (window.internals) { var pre = document.createElement('pre'); - pre.innerHTML = window.internals.layerTreeAsText(document); + pre.innerHTML = internals.layerTreeAsText(document); document.body.appendChild(pre); } }
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/move-squashing-layer.html b/third_party/WebKit/LayoutTests/compositing/squashing/move-squashing-layer.html index 296d465..8b27a2c 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/move-squashing-layer.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/move-squashing-layer.html
@@ -35,9 +35,9 @@ function doTest() { if (window.internals) - window.internals.forceCompositingUpdate(document); + internals.forceCompositingUpdate(document); document.getElementById('host').style.left = '100px'; - document.getElementById('console').textContent = window.internals.layerTreeAsText(document); + document.getElementById('console').textContent = internals.layerTreeAsText(document); } </script> </head>
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/no-squashing-for-filters.html b/third_party/WebKit/LayoutTests/compositing/squashing/no-squashing-for-filters.html index d775fa5..0f42a457 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/no-squashing-for-filters.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/no-squashing-for-filters.html
@@ -12,8 +12,8 @@ <script> // Tests that layers with filters are not squashed. if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var layersResult = document.getElementById('layers'); if (window.internals) - layersResult.innerText = window.internals.layerTreeAsText(document); + layersResult.innerText = internals.layerTreeAsText(document); </script> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/no-squashing-into-another-clip-layer.html b/third_party/WebKit/LayoutTests/compositing/squashing/no-squashing-into-another-clip-layer.html index 2696f202..c0a0fd2 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/no-squashing-into-another-clip-layer.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/no-squashing-into-another-clip-layer.html
@@ -12,7 +12,7 @@ { var layersResult = document.getElementById('layers'); if (window.testRunner) - layersResult.innerText = window.internals.layerTreeAsText(document); + layersResult.innerText = internals.layerTreeAsText(document); } window.addEventListener('load', dumpLayers, false) </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/no-squashing-into-fixed-position-that-clips.html b/third_party/WebKit/LayoutTests/compositing/squashing/no-squashing-into-fixed-position-that-clips.html index bfe91c1..54aa29f 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/no-squashing-into-fixed-position-that-clips.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/no-squashing-into-fixed-position-that-clips.html
@@ -38,8 +38,8 @@ <script> // Tests that not squashing into an element with a different clip works correctly with fixed-position layers. if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); if (window.internals) - output.textContent = window.internals.layerTreeAsText(document); + output.textContent = internals.layerTreeAsText(document); </script> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/opacity-squashed-owner.html b/third_party/WebKit/LayoutTests/compositing/squashing/opacity-squashed-owner.html index 98e435c..90ca0b0 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/opacity-squashed-owner.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/opacity-squashed-owner.html
@@ -39,5 +39,5 @@ var layersResult = document.getElementById('layers'); if (window.testRunner) - layersResult.innerText = window.internals.layerTreeAsText(document); + layersResult.innerText = internals.layerTreeAsText(document); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/repaint-child-of-squashed.html b/third_party/WebKit/LayoutTests/compositing/squashing/repaint-child-of-squashed.html index 9b3e22eb..f48e2e2 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/repaint-child-of-squashed.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/repaint-child-of-squashed.html
@@ -50,14 +50,14 @@ function executeTestCases() { - window.internals.startTrackingRepaints(document); - document.getElementById('Case1').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + internals.startTrackingRepaints(document); + document.getElementById('Case1').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); document.querySelector("#inner").style.backgroundColor = 'red'; - document.getElementById('Case2').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case2').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); // Display the test results only after test is done so that it does not affect repaint rect results. document.getElementById('testResults').style.display = "block";
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/selection-repaint-with-gaps.html b/third_party/WebKit/LayoutTests/compositing/squashing/selection-repaint-with-gaps.html index c0658bd..4f49ef81 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/selection-repaint-with-gaps.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/selection-repaint-with-gaps.html
@@ -38,7 +38,7 @@ runAfterLayoutAndPaint(function() { if (window.internals) - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); var selection = getSelection(); // Case 1: selection that does not have any gaps. @@ -46,21 +46,21 @@ let layerTreeAsText = []; if (window.internals) { - layerTreeAsText.push(window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS)); - window.internals.stopTrackingRepaints(document); + layerTreeAsText.push(internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS)); + internals.stopTrackingRepaints(document); } selection.empty(); if (window.internals) - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); // Case 2: selection with a gap between item1 and item2. selection.setBaseAndExtent(document.querySelector("#item1"), 0, document.querySelector("#item2"), 1); if (window.internals) { - layerTreeAsText.push(window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS)); - window.internals.stopTrackingRepaints(document); + layerTreeAsText.push(internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS)); + internals.stopTrackingRepaints(document); } if (window.testRunner) {
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squash-above-fixed-1.html b/third_party/WebKit/LayoutTests/compositing/squashing/squash-above-fixed-1.html index 6d4abdd..2f06722 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squash-above-fixed-1.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squash-above-fixed-1.html
@@ -65,7 +65,7 @@ return new Promise(function(resolve) { // Case 1 - document.getElementById('Case1').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + document.getElementById('Case1').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); resolve(); }); @@ -75,11 +75,11 @@ return new Promise(function(resolve) { // Case 2 - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); window.scrollTo(0, 80); runAfterLayoutAndPaint(function() { - document.getElementById('Case2').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case2').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); resolve(); }); @@ -91,11 +91,11 @@ return new Promise(function(resolve) { // Case 3 - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); window.scrollTo(0, 120); runAfterLayoutAndPaint(function() { - document.getElementById('Case3').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case3').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); resolve(); }); @@ -107,11 +107,11 @@ return new Promise(function(resolve) { // Case 4 - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); window.scrollTo(0, 170); runAfterLayoutAndPaint(function() { - document.getElementById('Case4').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case4').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); resolve(); });
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squash-above-fixed-2.html b/third_party/WebKit/LayoutTests/compositing/squashing/squash-above-fixed-2.html index 7d2e7763..80cf10fa 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squash-above-fixed-2.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squash-above-fixed-2.html
@@ -61,12 +61,12 @@ // Display the test results only after test is done so that it does not affect repaint rect results. document.getElementById('testResults').style.display = "block"; // Case 1 - document.getElementById('Case1').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + document.getElementById('Case1').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); // Case 2 window.scrollTo(0, 80); runAfterLayoutAndPaint(function() { - document.getElementById('Case2').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + document.getElementById('Case2').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); if (window.testRunner) { testRunner.notifyDone(); }
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squash-above-fixed-3.html b/third_party/WebKit/LayoutTests/compositing/squashing/squash-above-fixed-3.html index 99fe972..3d94e65 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squash-above-fixed-3.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squash-above-fixed-3.html
@@ -71,21 +71,21 @@ return; // Case 1 - document.getElementById('Case1').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + document.getElementById('Case1').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); // Case 2 - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); window.scrollTo(0, 10); runAfterLayoutAndPaint(function() { - document.getElementById('Case2').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case2').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); // Case 3 - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); window.scrollTo(0, 110); runAfterLayoutAndPaint(function() { - document.getElementById('Case3').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case3').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); // Display the test results only after test is done so that it does not affect repaint rect results. document.getElementById('testResults').style.display = "block";
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squash-composited-input.html b/third_party/WebKit/LayoutTests/compositing/squashing/squash-composited-input.html index f7922d27..55cf169f 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squash-composited-input.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squash-composited-input.html
@@ -23,6 +23,6 @@ <script> onload = function () { if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); }; </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squash-compositing-hover.html b/third_party/WebKit/LayoutTests/compositing/squashing/squash-compositing-hover.html index 5a24f04..3086997 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squash-compositing-hover.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squash-compositing-hover.html
@@ -57,19 +57,19 @@ if (!window.internals) return; - document.getElementById('Case1').textContent = window.internals.layerTreeAsText(document); + document.getElementById('Case1').textContent = internals.layerTreeAsText(document); hoverOverMiddleDiv(); - document.getElementById('Case2').textContent = window.internals.layerTreeAsText(document); + document.getElementById('Case2').textContent = internals.layerTreeAsText(document); hoverOverMiddle2Div(); - document.getElementById('Case3').textContent = window.internals.layerTreeAsText(document); + document.getElementById('Case3').textContent = internals.layerTreeAsText(document); hoverOverTopDiv(); - document.getElementById('Case4').textContent = window.internals.layerTreeAsText(document); + document.getElementById('Case4').textContent = internals.layerTreeAsText(document); hoverAtZero(); - document.getElementById('Case5').textContent = window.internals.layerTreeAsText(document); + document.getElementById('Case5').textContent = internals.layerTreeAsText(document); document.getElementById('testTitle').style.display = ''; document.getElementById('testResults').style.display = '';
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squash-onto-distant-relative.html b/third_party/WebKit/LayoutTests/compositing/squashing/squash-onto-distant-relative.html index 71e15284..271338ac 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squash-onto-distant-relative.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squash-onto-distant-relative.html
@@ -26,6 +26,6 @@ <script> if (window.testRunner) { testRunner.dumpAsText(); - testRunner.setCustomTextOutput(window.internals.layerTreeAsText(document)); + testRunner.setCustomTextOutput(internals.layerTreeAsText(document)); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squash-onto-nephew.html b/third_party/WebKit/LayoutTests/compositing/squashing/squash-onto-nephew.html index 818623bc..cad23de 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squash-onto-nephew.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squash-onto-nephew.html
@@ -68,7 +68,7 @@ return; } - document.body.textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + document.body.textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); document.body.style.whiteSpace = 'pre'; } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squash-onto-transform-backing.html b/third_party/WebKit/LayoutTests/compositing/squashing/squash-onto-transform-backing.html index cbf5c77..6a06611 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squash-onto-transform-backing.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squash-onto-transform-backing.html
@@ -51,7 +51,7 @@ return; } - document.body.textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + document.body.textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); document.body.style.whiteSpace = 'pre'; } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squash-paint-invalidation-fixed-position.html b/third_party/WebKit/LayoutTests/compositing/squashing/squash-paint-invalidation-fixed-position.html index 9fdaec2..529afaa 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squash-paint-invalidation-fixed-position.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squash-paint-invalidation-fixed-position.html
@@ -13,30 +13,30 @@ } runAfterLayoutAndPaint(function() { if (window.internals) - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); var output = ''; document.getElementById("foo").style.background = 'red'; if (window.internals) - output += window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS) + ' '; + output += internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS) + ' '; if (window.internals) - window.internals.stopTrackingRepaints(document); + internals.stopTrackingRepaints(document); scrollTo(0, 50); if (window.internals) - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); document.getElementById("foo").style.background = 'blue'; if (window.internals) - output += window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + output += internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); if (window.internals) - window.internals.stopTrackingRepaints(document); + internals.stopTrackingRepaints(document); testRunner.setCustomTextOutput(output);
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squash-same-transform-ancestor.html b/third_party/WebKit/LayoutTests/compositing/squashing/squash-same-transform-ancestor.html index 9df01df..1fcda5d 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squash-same-transform-ancestor.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squash-same-transform-ancestor.html
@@ -36,6 +36,6 @@ <script> if (window.testRunner) { testRunner.dumpAsText(); - testRunner.setCustomTextOutput(window.internals.layerTreeAsText(document)); + testRunner.setCustomTextOutput(internals.layerTreeAsText(document)); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squash-simple.html b/third_party/WebKit/LayoutTests/compositing/squashing/squash-simple.html index 275d4b5e..41e28cb 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squash-simple.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squash-simple.html
@@ -50,7 +50,7 @@ return; } - document.body.textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + document.body.textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); document.body.style.whiteSpace = 'pre'; } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squash-three-layers.html b/third_party/WebKit/LayoutTests/compositing/squashing/squash-three-layers.html index d22ac12..66bf7f8 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squash-three-layers.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squash-three-layers.html
@@ -58,7 +58,7 @@ return; } - document.body.textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + document.body.textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); document.body.style.whiteSpace = 'pre'; } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squash-transform-repainting-child.html b/third_party/WebKit/LayoutTests/compositing/squashing/squash-transform-repainting-child.html index 0217809..daeb14b 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squash-transform-repainting-child.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squash-transform-repainting-child.html
@@ -67,21 +67,21 @@ function executeTestCases() { - window.internals.startTrackingRepaints(document); - document.getElementById('Case1').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + internals.startTrackingRepaints(document); + document.getElementById('Case1').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); eventSender.mouseMoveTo(0, 0); - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); hoverOverOuterDiv(); - document.getElementById('Case2').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case2').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); eventSender.mouseMoveTo(0, 0); - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); hoverOverInnerDiv(); - document.getElementById('Case3').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case3').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); // Display the test results only after test is done so that it does not affect repaint rect results. document.getElementById('testResults').style.display = "block";
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squash-transform-repainting-transformed-child.html b/third_party/WebKit/LayoutTests/compositing/squashing/squash-transform-repainting-transformed-child.html index 149a000..5af7b2ab 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squash-transform-repainting-transformed-child.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squash-transform-repainting-transformed-child.html
@@ -68,21 +68,21 @@ function executeTestCases() { - window.internals.startTrackingRepaints(document); - document.getElementById('Case1').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + internals.startTrackingRepaints(document); + document.getElementById('Case1').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); eventSender.mouseMoveTo(0, 0); - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); hoverOverOuterDiv(); - document.getElementById('Case2').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case2').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); eventSender.mouseMoveTo(0, 0); - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); hoverOverInnerDiv(); - document.getElementById('Case3').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case3').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); // Display the test results only after test is done so that it does not affect repaint rect results. document.getElementById('testResults').style.display = "block";
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squash-transform.html b/third_party/WebKit/LayoutTests/compositing/squashing/squash-transform.html index 1948e3f..f62b4e0 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squash-transform.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squash-transform.html
@@ -51,7 +51,7 @@ return; } - document.body.textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + document.body.textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); document.body.style.whiteSpace = 'pre'; } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squashed-clip-parent.html b/third_party/WebKit/LayoutTests/compositing/squashing/squashed-clip-parent.html index d7b837a..7270dea 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squashed-clip-parent.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squashed-clip-parent.html
@@ -1,7 +1,7 @@ <!DOCTYPE html> <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); </script> <style> #overflow-clip {
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squashed-layer-loses-graphicslayer.html b/third_party/WebKit/LayoutTests/compositing/squashing/squashed-layer-loses-graphicslayer.html index 0814b77..44d3ed4 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squashed-layer-loses-graphicslayer.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squashed-layer-loses-graphicslayer.html
@@ -68,13 +68,13 @@ function executeTestCases() { // Case 1 - document.getElementById('Case1').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + document.getElementById('Case1').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); // Case 2 - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); document.getElementById("forceComposited").className = "underneath"; - document.getElementById('Case2').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case2').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); // Display the test results only after test is done so that it does not affect repaint rect results. document.getElementById('testResults').style.display = "block";
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squashed-repaints.html b/third_party/WebKit/LayoutTests/compositing/squashing/squashed-repaints.html index 8b93966d..2165cb3 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squashed-repaints.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squashed-repaints.html
@@ -64,34 +64,34 @@ function executeTestCases() { // Case 1 - document.getElementById('Case1').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + document.getElementById('Case1').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); // Case 2 - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); document.getElementById("A").style.backgroundColor = "green"; - document.getElementById('Case2').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case2').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); // Case 3 - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); document.getElementById("A").style.backgroundColor = "blue"; document.getElementById("B").style.backgroundColor = "green"; - document.getElementById('Case3').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case3').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); // Case 4 - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); document.getElementById("B").style.backgroundColor = "blue"; document.getElementById("C").style.backgroundColor = "green"; - document.getElementById('Case4').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case4').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); // Case 5 - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); document.getElementById("C").style.backgroundColor = "blue"; document.getElementById("A").style.backgroundColor = "green"; - document.getElementById('Case5').textContent = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + document.getElementById('Case5').textContent = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.stopTrackingRepaints(document); // Display the test results only after test is done so that it does not affect repaint rect results. document.getElementById('testResults').style.display = "block";
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squashing-does-not-stop-transform-propagation.html b/third_party/WebKit/LayoutTests/compositing/squashing/squashing-does-not-stop-transform-propagation.html index 726a885..6b659490 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squashing-does-not-stop-transform-propagation.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squashing-does-not-stop-transform-propagation.html
@@ -45,7 +45,7 @@ </style> <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); </script> <div id="container"> <div class="scrolled" id="bg"></div>
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective-with-reparented-scrolling-expected.html b/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective-with-reparented-scrolling-expected.html index 485427b..8fc7839 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective-with-reparented-scrolling-expected.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective-with-reparented-scrolling-expected.html
@@ -32,5 +32,5 @@ </div> <script> if (window.internals) - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.runtimeFlags.overlayScrollbarsEnabled = true; </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective-with-reparented-scrolling.html b/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective-with-reparented-scrolling.html index 5f76ca4..a4bc5893 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective-with-reparented-scrolling.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective-with-reparented-scrolling.html
@@ -38,7 +38,7 @@ // Check that a case with a reparented overflow control and a containing perspective node // paints the same with and without layer squashing. if (window.internals) { - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.settings.setPreferCompositingToLCDTextEnabled(true); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective.html b/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective.html index d9319482..7a49e4c 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squashing-inside-perspective.html
@@ -9,6 +9,6 @@ // Tests that a squashed layer that is the child of an element with perspective on it uses that element as its transform ancestor. if (window.testRunner) { testRunner.dumpAsText(); - testRunner.setCustomTextOutput(window.internals.layerTreeAsText(document)); + testRunner.setCustomTextOutput(internals.layerTreeAsText(document)); } </script> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/squashing-sparsity-heuristic.html b/third_party/WebKit/LayoutTests/compositing/squashing/squashing-sparsity-heuristic.html index c2a1db2..14c9bae 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/squashing-sparsity-heuristic.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/squashing-sparsity-heuristic.html
@@ -50,7 +50,7 @@ if (!window.internals) return; var layers = document.createElement('pre'); - layers.innerHTML = window.internals.layerTreeAsText(document); + layers.innerHTML = internals.layerTreeAsText(document); document.body.appendChild(layers); }
diff --git a/third_party/WebKit/LayoutTests/compositing/squashing/universal-accelerated-overflow-scrolling.html b/third_party/WebKit/LayoutTests/compositing/squashing/universal-accelerated-overflow-scrolling.html index c75ca468..83c4022 100644 --- a/third_party/WebKit/LayoutTests/compositing/squashing/universal-accelerated-overflow-scrolling.html +++ b/third_party/WebKit/LayoutTests/compositing/squashing/universal-accelerated-overflow-scrolling.html
@@ -33,7 +33,7 @@ testRunner.dumpAsTextWithPixelResults(); if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); function doTest() { var container = document.getElementById("container");
diff --git a/third_party/WebKit/LayoutTests/compositing/tiled-layers-hidpi.html b/third_party/WebKit/LayoutTests/compositing/tiled-layers-hidpi.html index 5183430..a3db404 100644 --- a/third_party/WebKit/LayoutTests/compositing/tiled-layers-hidpi.html +++ b/third_party/WebKit/LayoutTests/compositing/tiled-layers-hidpi.html
@@ -18,7 +18,7 @@ function finishTest() { setTimeout(function() { - document.getElementById('layer-tree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layer-tree').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); }, 0); }
diff --git a/third_party/WebKit/LayoutTests/compositing/update-paint-phases.html b/third_party/WebKit/LayoutTests/compositing/update-paint-phases.html index eb79e80ff..ca66347 100644 --- a/third_party/WebKit/LayoutTests/compositing/update-paint-phases.html +++ b/third_party/WebKit/LayoutTests/compositing/update-paint-phases.html
@@ -36,8 +36,8 @@ testRunner.dumpAsText(); if (window.internals) { - window.internals.forceCompositingUpdate(document); - window.internals.startTrackingRepaints(document); + internals.forceCompositingUpdate(document); + internals.startTrackingRepaints(document); } document.querySelector('style').appendChild(document.createTextNode('#to-modify { display: none }')); @@ -45,7 +45,7 @@ if (window.internals) { var layerTree = document.createElement('pre'); layerTree.innerHTML = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINTING_PHASES); - window.internals.stopTrackingRepaints(document); + internals.stopTrackingRepaints(document); document.body.appendChild(layerTree); } </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/video/video-poster.html b/third_party/WebKit/LayoutTests/compositing/video/video-poster.html index b9b818ff..832705f 100644 --- a/third_party/WebKit/LayoutTests/compositing/video/video-poster.html +++ b/third_party/WebKit/LayoutTests/compositing/video/video-poster.html
@@ -11,7 +11,7 @@ function logLayers(prefix) { log("Case: " + prefix); - log(window.internals.layerTreeAsText(document)); + log(internals.layerTreeAsText(document)); log(""); }
diff --git a/third_party/WebKit/LayoutTests/compositing/visibility/layer-visible-content.html b/third_party/WebKit/LayoutTests/compositing/visibility/layer-visible-content.html index 71d2f65..33960e6 100644 --- a/third_party/WebKit/LayoutTests/compositing/visibility/layer-visible-content.html +++ b/third_party/WebKit/LayoutTests/compositing/visibility/layer-visible-content.html
@@ -47,7 +47,7 @@ function dumpLayers() { if (window.testRunner) - document.getElementById('layer-tree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layer-tree').innerText = internals.layerTreeAsText(document); } window.addEventListener('load', dumpLayers, false); </script>
diff --git a/third_party/WebKit/LayoutTests/compositing/visibility/visibility-image-layers-dynamic.html b/third_party/WebKit/LayoutTests/compositing/visibility/visibility-image-layers-dynamic.html index 0095a90..d769c27 100644 --- a/third_party/WebKit/LayoutTests/compositing/visibility/visibility-image-layers-dynamic.html +++ b/third_party/WebKit/LayoutTests/compositing/visibility/visibility-image-layers-dynamic.html
@@ -54,21 +54,21 @@ function doTest() { if (window.testRunner) - document.getElementById('layers1').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers1').innerText = internals.layerTreeAsText(document); window.setTimeout(function() { var firstImage = document.querySelectorAll('img')[0]; firstImage.style.visibility = 'visible'; if (window.testRunner) - document.getElementById('layers2').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers2').innerText = internals.layerTreeAsText(document); window.setTimeout(function() { var secondContainer = document.querySelectorAll('.container')[1]; secondContainer.style.visibility = 'visible'; if (window.testRunner) { - document.getElementById('layers3').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layers3').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }, 0);
diff --git a/third_party/WebKit/LayoutTests/compositing/webgl/webgl-with-accelerated-background-color.html b/third_party/WebKit/LayoutTests/compositing/webgl/webgl-with-accelerated-background-color.html index 5a556396..e86268f 100644 --- a/third_party/WebKit/LayoutTests/compositing/webgl/webgl-with-accelerated-background-color.html +++ b/third_party/WebKit/LayoutTests/compositing/webgl/webgl-with-accelerated-background-color.html
@@ -37,7 +37,7 @@ window.setTimeout(function() { makeWebGLLayer(); if (window.internals) - window.internals.forceCompositingUpdate(document); + internals.forceCompositingUpdate(document); if (window.testRunner) { window.setTimeout(function() { testRunner.notifyDone();
diff --git a/third_party/WebKit/LayoutTests/compositing/will-change/composited-layers.html b/third_party/WebKit/LayoutTests/compositing/will-change/composited-layers.html index a44b82f..c6b4abb5 100644 --- a/third_party/WebKit/LayoutTests/compositing/will-change/composited-layers.html +++ b/third_party/WebKit/LayoutTests/compositing/will-change/composited-layers.html
@@ -64,7 +64,7 @@ <script> window.addEventListener('load', function() { if (window.testRunner) { - document.getElementById("layertree").innerText = window.internals.layerTreeAsText(document); + document.getElementById("layertree").innerText = internals.layerTreeAsText(document); testRunner.dumpAsText(); } }, false);
diff --git a/third_party/WebKit/LayoutTests/compositing/will-change/will-change-contents-suppresses-compositing.html b/third_party/WebKit/LayoutTests/compositing/will-change/will-change-contents-suppresses-compositing.html index d3f9d67..566f18bb 100644 --- a/third_party/WebKit/LayoutTests/compositing/will-change/will-change-contents-suppresses-compositing.html +++ b/third_party/WebKit/LayoutTests/compositing/will-change/will-change-contents-suppresses-compositing.html
@@ -47,7 +47,7 @@ function animationEventListener() { if (window.testRunner) { - document.getElementById('layertree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layertree').innerText = internals.layerTreeAsText(document); testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-data-uri-svg-image.html b/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-data-uri-svg-image.html index d1733806..3477604d 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-data-uri-svg-image.html +++ b/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-data-uri-svg-image.html
@@ -12,7 +12,7 @@ </style> <script> if (window.internals) - window.internals.settings.setMockScrollbarsEnabled(true); + internals.settings.setMockScrollbarsEnabled(true); </script> <!-- This file should contain an svg circle on top of a solid color green background, with every type of blending. The container should have a visible border. --> <body>
diff --git a/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-tiled-gradient.html b/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-tiled-gradient.html index 4bc24c9b..48d1088 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-tiled-gradient.html +++ b/third_party/WebKit/LayoutTests/css3/blending/background-blend-mode-tiled-gradient.html
@@ -1,7 +1,7 @@ <!DOCTYPE HTML> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> <style>
diff --git a/third_party/WebKit/LayoutTests/css3/blending/effect-background-blend-mode-stacking.html b/third_party/WebKit/LayoutTests/css3/blending/effect-background-blend-mode-stacking.html index ce419d14..5f5046a2 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/effect-background-blend-mode-stacking.html +++ b/third_party/WebKit/LayoutTests/css3/blending/effect-background-blend-mode-stacking.html
@@ -1,7 +1,7 @@ <!DOCTYPE HTML> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> <style>
diff --git a/third_party/WebKit/LayoutTests/css3/blending/effect-background-blend-mode-tiled.html b/third_party/WebKit/LayoutTests/css3/blending/effect-background-blend-mode-tiled.html index 9513f690..bbd3bba 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/effect-background-blend-mode-tiled.html +++ b/third_party/WebKit/LayoutTests/css3/blending/effect-background-blend-mode-tiled.html
@@ -1,7 +1,7 @@ <!DOCTYPE HTML> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> <style>
diff --git a/third_party/WebKit/LayoutTests/css3/blending/effect-background-blend-mode.html b/third_party/WebKit/LayoutTests/css3/blending/effect-background-blend-mode.html index 13e379c..1d6f42d 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/effect-background-blend-mode.html +++ b/third_party/WebKit/LayoutTests/css3/blending/effect-background-blend-mode.html
@@ -1,7 +1,7 @@ <!DOCTYPE HTML> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> <style>
diff --git a/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-2nd-stacking-context-composited.html b/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-2nd-stacking-context-composited.html index 19def14..cb92402 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-2nd-stacking-context-composited.html +++ b/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-2nd-stacking-context-composited.html
@@ -4,7 +4,7 @@ if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener('load', function () { - document.getElementById('layers').textContent = window.internals.layerTreeAsText(document); + document.getElementById('layers').textContent = internals.layerTreeAsText(document); document.getElementById('test').style.display = 'none'; }, false); }
diff --git a/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-composited-layers.html b/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-composited-layers.html index 0f42ed2..db05abd 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-composited-layers.html +++ b/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-composited-layers.html
@@ -26,8 +26,8 @@ <script type="text/javascript"> if (window.testRunner) { - window.testRunner.dumpAsText(); - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + testRunner.dumpAsText(); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); } </script> </body>
diff --git a/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-composited-reason-children.html b/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-composited-reason-children.html index bf4755d..48b0596 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-composited-reason-children.html +++ b/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-composited-reason-children.html
@@ -4,7 +4,7 @@ if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener('load', function () { - document.getElementById('layers').textContent = window.internals.layerTreeAsText(document); + document.getElementById('layers').textContent = internals.layerTreeAsText(document); document.getElementById('test').style.display = 'none'; }, false); }
diff --git a/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-isolation-2-stacking-contexts.html b/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-isolation-2-stacking-contexts.html index 975a53f..010d255d 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-isolation-2-stacking-contexts.html +++ b/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-isolation-2-stacking-contexts.html
@@ -4,7 +4,7 @@ if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener('load', function () { - document.getElementById('layers').textContent = window.internals.layerTreeAsText(document); + document.getElementById('layers').textContent = internals.layerTreeAsText(document); document.getElementById('test').style.display = 'none'; }, false); }
diff --git a/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-isolation-layer.html b/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-isolation-layer.html index 95b86734..475e9849 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-isolation-layer.html +++ b/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-isolation-layer.html
@@ -4,7 +4,7 @@ if (window.testRunner) { testRunner.dumpAsText(); window.addEventListener('load', function () { - document.getElementById('layers').textContent = window.internals.layerTreeAsText(document); + document.getElementById('layers').textContent = internals.layerTreeAsText(document); document.getElementById('test').style.display = 'none'; }, false); }
diff --git a/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-isolation-remove.html b/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-isolation-remove.html index db3861d6..4f16105a 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-isolation-remove.html +++ b/third_party/WebKit/LayoutTests/css3/blending/mix-blend-mode-isolation-remove.html
@@ -2,20 +2,20 @@ <head> <script> if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } function done() { if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } function dumpTreeAsText() { if (!window.internals) return; document.getElementById('layers').textContent = - window.internals.layerTreeAsText(document); + internals.layerTreeAsText(document); document.getElementById('test').style.display = 'none'; done(); }
diff --git a/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-blend-mode.html b/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-blend-mode.html index bb3471f8..4533f4c 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-blend-mode.html +++ b/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-blend-mode.html
@@ -2,12 +2,12 @@ <html> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function addIsolation() { var isolator = document.getElementById('blending'); isolator.style['mix-blend-mode'] = "difference"; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } window.addEventListener('load', function () { window.setTimeout(addIsolation, 10);
diff --git a/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-clipper-text.html b/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-clipper-text.html index 97a205f..48f96c34 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-clipper-text.html +++ b/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-clipper-text.html
@@ -2,12 +2,12 @@ <html> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function addIsolation() { var isolator = document.getElementById('isolator'); isolator.setAttribute('clip-path', 'url(#Clipper)'); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } window.addEventListener('load', function () { window.setTimeout(addIsolation, 10);
diff --git a/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-clipper.html b/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-clipper.html index 66fa413b..53f987b 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-clipper.html +++ b/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-clipper.html
@@ -2,12 +2,12 @@ <html> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function addIsolation() { var isolator = document.getElementById('isolator'); isolator.setAttribute('clip-path', 'url(#Clipper)'); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } window.addEventListener('load', function () { window.setTimeout(addIsolation, 10);
diff --git a/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-filter.html b/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-filter.html index 51a81b3..4441b80 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-filter.html +++ b/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-filter.html
@@ -2,12 +2,12 @@ <html> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function addIsolation() { var isolator = document.getElementById('isolator'); isolator.setAttribute('filter', 'url(#Blur)'); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } window.addEventListener('load', function () { window.setTimeout(addIsolation, 10);
diff --git a/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-isolation.html b/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-isolation.html index 0b786883..ca2646a 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-isolation.html +++ b/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-isolation.html
@@ -2,12 +2,12 @@ <html> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function addIsolation() { var isolator = document.getElementById('isolator'); isolator.style.isolation = "isolate"; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } window.addEventListener('load', function () { window.setTimeout(addIsolation, 10);
diff --git a/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-masking.html b/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-masking.html index ca33423..948db0c 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-masking.html +++ b/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-masking.html
@@ -2,12 +2,12 @@ <html> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function addIsolation() { var isolator = document.getElementById('isolator'); isolator.setAttribute('mask', 'url(#Mask)'); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } window.addEventListener('load', function () { window.setTimeout(addIsolation, 10);
diff --git a/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-opacity.html b/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-opacity.html index 55ab3425..d3420ba 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-opacity.html +++ b/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-add-opacity.html
@@ -2,12 +2,12 @@ <html> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function addIsolation() { var isolator = document.getElementById('isolator'); isolator.style.opacity = "0.9"; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } window.addEventListener('load', function () { window.setTimeout(addIsolation, 10);
diff --git a/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-remove-isolation.html b/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-remove-isolation.html index 03dba04..12e1b839 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-remove-isolation.html +++ b/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-remove-isolation.html
@@ -2,12 +2,12 @@ <html> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function addIsolation() { var isolator = document.getElementById('isolator'); isolator.style.isolation = "auto"; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } window.addEventListener('load', function () { window.setTimeout(addIsolation, 10);
diff --git a/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-remove-opacity.html b/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-remove-opacity.html index 12decc8..09da6a7 100644 --- a/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-remove-opacity.html +++ b/third_party/WebKit/LayoutTests/css3/blending/svg-isolation-remove-opacity.html
@@ -2,12 +2,12 @@ <html> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function addIsolation() { var isolator = document.getElementById('isolator'); isolator.style.opacity = "1"; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } window.addEventListener('load', function () { window.setTimeout(addIsolation, 10);
diff --git a/third_party/WebKit/LayoutTests/css3/calc/catch-divide-by-0.html b/third_party/WebKit/LayoutTests/css3/calc/catch-divide-by-0.html index 7a1a21bf..13c9a46 100644 --- a/third_party/WebKit/LayoutTests/css3/calc/catch-divide-by-0.html +++ b/third_party/WebKit/LayoutTests/css3/calc/catch-divide-by-0.html
@@ -3,7 +3,7 @@ <div id="results">This tests catching of divide by 0 in calc() at parse time<br><br></div> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var tests = [ "100px / 0",
diff --git a/third_party/WebKit/LayoutTests/css3/calc/cssom.html b/third_party/WebKit/LayoutTests/css3/calc/cssom.html index 419e0ea..6279647 100644 --- a/third_party/WebKit/LayoutTests/css3/calc/cssom.html +++ b/third_party/WebKit/LayoutTests/css3/calc/cssom.html
@@ -3,7 +3,7 @@ <div id="results">This tests calc() and the CSSOM<br><br></div> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var tests = ["10px", "10px + 15px",
diff --git a/third_party/WebKit/LayoutTests/css3/calc/simplification.html b/third_party/WebKit/LayoutTests/css3/calc/simplification.html index a30a7939..736285a 100644 --- a/third_party/WebKit/LayoutTests/css3/calc/simplification.html +++ b/third_party/WebKit/LayoutTests/css3/calc/simplification.html
@@ -3,7 +3,7 @@ <div id="results">This tests parse time simplification in calc()<br><br></div> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var tests = [ "100px * (25 + 5)",
diff --git a/third_party/WebKit/LayoutTests/css3/calc/transitions-dependent.html b/third_party/WebKit/LayoutTests/css3/calc/transitions-dependent.html index 3d7b2bd..46d1a743 100644 --- a/third_party/WebKit/LayoutTests/css3/calc/transitions-dependent.html +++ b/third_party/WebKit/LayoutTests/css3/calc/transitions-dependent.html
@@ -46,7 +46,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); const transitioningElements = ["outer", "innerTransition"];
diff --git a/third_party/WebKit/LayoutTests/css3/filters/composited-during-transition-layertree.html b/third_party/WebKit/LayoutTests/css3/filters/composited-during-transition-layertree.html index 5ce1ea8a..6778a8d 100644 --- a/third_party/WebKit/LayoutTests/css3/filters/composited-during-transition-layertree.html +++ b/third_party/WebKit/LayoutTests/css3/filters/composited-during-transition-layertree.html
@@ -66,7 +66,7 @@ function doTest() { if (window.testRunner) { - document.getElementById('layer-tree').innerText = window.internals.layerTreeAsText(document) + document.getElementById('layer-tree').innerText = internals.layerTreeAsText(document) testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/css3/filters/composited-layer-bounds-after-sw-blur-animation.html b/third_party/WebKit/LayoutTests/css3/filters/composited-layer-bounds-after-sw-blur-animation.html index 542e8b5..4b4abb2b 100644 --- a/third_party/WebKit/LayoutTests/css3/filters/composited-layer-bounds-after-sw-blur-animation.html +++ b/third_party/WebKit/LayoutTests/css3/filters/composited-layer-bounds-after-sw-blur-animation.html
@@ -50,7 +50,7 @@ function finishTest() { - var layerTreeText = window.internals.layerTreeAsText(document); + var layerTreeText = internals.layerTreeAsText(document); document.getElementById("console").appendChild(document.createTextNode(layerTreeText)); testRunner.dumpAsText(); testRunner.notifyDone();
diff --git a/third_party/WebKit/LayoutTests/css3/filters/composited-layer-bounds-with-composited-blur.html b/third_party/WebKit/LayoutTests/css3/filters/composited-layer-bounds-with-composited-blur.html index 80b173d..077bbdd 100644 --- a/third_party/WebKit/LayoutTests/css3/filters/composited-layer-bounds-with-composited-blur.html +++ b/third_party/WebKit/LayoutTests/css3/filters/composited-layer-bounds-with-composited-blur.html
@@ -27,7 +27,7 @@ <script> if (window.testRunner) { testRunner.dumpAsText(); - document.getElementById("console").appendChild(document.createTextNode(window.internals.layerTreeAsText(document))); + document.getElementById("console").appendChild(document.createTextNode(internals.layerTreeAsText(document))); } </script> </body>
diff --git a/third_party/WebKit/LayoutTests/css3/filters/composited-layer-child-bounds-after-composited-to-sw-shadow-change.html b/third_party/WebKit/LayoutTests/css3/filters/composited-layer-child-bounds-after-composited-to-sw-shadow-change.html index 5db70226..6246f128 100644 --- a/third_party/WebKit/LayoutTests/css3/filters/composited-layer-child-bounds-after-composited-to-sw-shadow-change.html +++ b/third_party/WebKit/LayoutTests/css3/filters/composited-layer-child-bounds-after-composited-to-sw-shadow-change.html
@@ -48,7 +48,7 @@ if (!window.testRunner || !window.internals) return; - var layerTreeText = window.internals.layerTreeAsText(document); + var layerTreeText = internals.layerTreeAsText(document); document.getElementById("console").appendChild(document.createTextNode(layerTreeText)); }
diff --git a/third_party/WebKit/LayoutTests/css3/filters/composited-layer-promotion-after-outset-overlap-change-using-composited-shadow.html b/third_party/WebKit/LayoutTests/css3/filters/composited-layer-promotion-after-outset-overlap-change-using-composited-shadow.html index 88214891..4d128f8 100644 --- a/third_party/WebKit/LayoutTests/css3/filters/composited-layer-promotion-after-outset-overlap-change-using-composited-shadow.html +++ b/third_party/WebKit/LayoutTests/css3/filters/composited-layer-promotion-after-outset-overlap-change-using-composited-shadow.html
@@ -41,7 +41,7 @@ if (!window.testRunner || !window.internals) return; - var layerTreeText = window.internals.layerTreeAsText(document); + var layerTreeText = internals.layerTreeAsText(document); document.getElementById("console").appendChild(document.createTextNode(layerTreeText)); }
diff --git a/third_party/WebKit/LayoutTests/css3/filters/composited-layer-promotion-after-outset-overlap-change-using-sw-shadow.html b/third_party/WebKit/LayoutTests/css3/filters/composited-layer-promotion-after-outset-overlap-change-using-sw-shadow.html index 4bdcbebc..547d8c2a 100644 --- a/third_party/WebKit/LayoutTests/css3/filters/composited-layer-promotion-after-outset-overlap-change-using-sw-shadow.html +++ b/third_party/WebKit/LayoutTests/css3/filters/composited-layer-promotion-after-outset-overlap-change-using-sw-shadow.html
@@ -45,7 +45,7 @@ if (!window.testRunner || !window.internals) return; - var layerTreeText = window.internals.layerTreeAsText(document); + var layerTreeText = internals.layerTreeAsText(document); document.getElementById("console").appendChild(document.createTextNode(layerTreeText)); }
diff --git a/third_party/WebKit/LayoutTests/css3/filters/crash-filter-change.html b/third_party/WebKit/LayoutTests/css3/filters/crash-filter-change.html index c62932e..9ebf0da 100644 --- a/third_party/WebKit/LayoutTests/css3/filters/crash-filter-change.html +++ b/third_party/WebKit/LayoutTests/css3/filters/crash-filter-change.html
@@ -11,7 +11,7 @@ <img class='first' src="resources/reference.png"> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); // force a layout document.body.offsetTop; var img = document.getElementsByTagName('img')[0];
diff --git a/third_party/WebKit/LayoutTests/css3/filters/crash-hw-sw-switch.html b/third_party/WebKit/LayoutTests/css3/filters/crash-hw-sw-switch.html index c18fe52..815bf5b8 100644 --- a/third_party/WebKit/LayoutTests/css3/filters/crash-hw-sw-switch.html +++ b/third_party/WebKit/LayoutTests/css3/filters/crash-hw-sw-switch.html
@@ -13,7 +13,7 @@ PASS if test does not crash or cause an ASSERT failure. <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); // force a layout document.body.offsetTop; var img = document.getElementsByTagName('img')[0];
diff --git a/third_party/WebKit/LayoutTests/css3/filters/effect-all-on-background-hw.html b/third_party/WebKit/LayoutTests/css3/filters/effect-all-on-background-hw.html index 482d8cb..1d12cf57 100644 --- a/third_party/WebKit/LayoutTests/css3/filters/effect-all-on-background-hw.html +++ b/third_party/WebKit/LayoutTests/css3/filters/effect-all-on-background-hw.html
@@ -1,6 +1,6 @@ <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> <svg xmlns="http://www.w3.org/2000/svg" width="0" height="0" version="1.1"> <defs>
diff --git a/third_party/WebKit/LayoutTests/css3/filters/effect-all-on-background.html b/third_party/WebKit/LayoutTests/css3/filters/effect-all-on-background.html index 4b42927..4b77ea8 100644 --- a/third_party/WebKit/LayoutTests/css3/filters/effect-all-on-background.html +++ b/third_party/WebKit/LayoutTests/css3/filters/effect-all-on-background.html
@@ -1,6 +1,6 @@ <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> <svg xmlns="http://www.w3.org/2000/svg" width="0" height="0" version="1.1"> <defs>
diff --git a/third_party/WebKit/LayoutTests/css3/filters/filter-empty-element-crash.html b/third_party/WebKit/LayoutTests/css3/filters/filter-empty-element-crash.html index 42b83af..56587bb 100644 --- a/third_party/WebKit/LayoutTests/css3/filters/filter-empty-element-crash.html +++ b/third_party/WebKit/LayoutTests/css3/filters/filter-empty-element-crash.html
@@ -1,6 +1,6 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> <div style="filter: blur(1px);" width="0px" height="0px"></div> <p>If you can read this, the test passed.</p>
diff --git a/third_party/WebKit/LayoutTests/css3/filters/filter-region.html b/third_party/WebKit/LayoutTests/css3/filters/filter-region.html index 0f64f51..ac246cf 100644 --- a/third_party/WebKit/LayoutTests/css3/filters/filter-region.html +++ b/third_party/WebKit/LayoutTests/css3/filters/filter-region.html
@@ -20,7 +20,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/css3/filters/filter-with-transform.html b/third_party/WebKit/LayoutTests/css3/filters/filter-with-transform.html index c6ca58a..7b7aa80 100644 --- a/third_party/WebKit/LayoutTests/css3/filters/filter-with-transform.html +++ b/third_party/WebKit/LayoutTests/css3/filters/filter-with-transform.html
@@ -14,5 +14,5 @@ </div> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script>
diff --git a/third_party/WebKit/LayoutTests/css3/filters/filtered-compositing-descendant.html b/third_party/WebKit/LayoutTests/css3/filters/filtered-compositing-descendant.html index a79a27d..653bf5d 100644 --- a/third_party/WebKit/LayoutTests/css3/filters/filtered-compositing-descendant.html +++ b/third_party/WebKit/LayoutTests/css3/filters/filtered-compositing-descendant.html
@@ -30,7 +30,7 @@ window.addEventListener('load', function () { if (window.testRunner) - document.getElementById('layer-tree').innerText = window.internals.layerTreeAsText(document); + document.getElementById('layer-tree').innerText = internals.layerTreeAsText(document); }, false); </script> </head>
diff --git a/third_party/WebKit/LayoutTests/css3/filters/nested-filter.html b/third_party/WebKit/LayoutTests/css3/filters/nested-filter.html index 40f03fb..a5010dbc3 100644 --- a/third_party/WebKit/LayoutTests/css3/filters/nested-filter.html +++ b/third_party/WebKit/LayoutTests/css3/filters/nested-filter.html
@@ -49,5 +49,5 @@ <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script>
diff --git a/third_party/WebKit/LayoutTests/css3/filters/nested-filters.html b/third_party/WebKit/LayoutTests/css3/filters/nested-filters.html index b23f903..391f9ec 100644 --- a/third_party/WebKit/LayoutTests/css3/filters/nested-filters.html +++ b/third_party/WebKit/LayoutTests/css3/filters/nested-filters.html
@@ -16,7 +16,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/css3/filters/offscreen-filters-memory-usage.html b/third_party/WebKit/LayoutTests/css3/filters/offscreen-filters-memory-usage.html index 8758f932..b4439cc 100644 --- a/third_party/WebKit/LayoutTests/css3/filters/offscreen-filters-memory-usage.html +++ b/third_party/WebKit/LayoutTests/css3/filters/offscreen-filters-memory-usage.html
@@ -22,7 +22,7 @@ } if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); for (var i = 0; i < 2000; ++i) document.body.appendChild(createLayer()); </script>
diff --git a/third_party/WebKit/LayoutTests/css3/filters/should-not-have-compositing-layer.html b/third_party/WebKit/LayoutTests/css3/filters/should-not-have-compositing-layer.html index 23fb2e6f..92b9e30 100644 --- a/third_party/WebKit/LayoutTests/css3/filters/should-not-have-compositing-layer.html +++ b/third_party/WebKit/LayoutTests/css3/filters/should-not-have-compositing-layer.html
@@ -7,7 +7,7 @@ } function doTest() { - var layers = window.internals.layerTreeAsText(document); + var layers = internals.layerTreeAsText(document); document.getElementById("layertree").innerText = layers; } </script>
diff --git a/third_party/WebKit/LayoutTests/css3/font-feature-settings-rendering.html b/third_party/WebKit/LayoutTests/css3/font-feature-settings-rendering.html index 2c6c2752..6a26b8d 100644 --- a/third_party/WebKit/LayoutTests/css3/font-feature-settings-rendering.html +++ b/third_party/WebKit/LayoutTests/css3/font-feature-settings-rendering.html
@@ -23,7 +23,7 @@ </style> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function test() { document.body.offsetTop;
diff --git a/third_party/WebKit/LayoutTests/css3/viewport-percentage-lengths/viewport-percentage-lengths-page-zoom.html b/third_party/WebKit/LayoutTests/css3/viewport-percentage-lengths/viewport-percentage-lengths-page-zoom.html index 7025549..c1873c8 100644 --- a/third_party/WebKit/LayoutTests/css3/viewport-percentage-lengths/viewport-percentage-lengths-page-zoom.html +++ b/third_party/WebKit/LayoutTests/css3/viewport-percentage-lengths/viewport-percentage-lengths-page-zoom.html
@@ -13,11 +13,11 @@ function zoomBy(zoomFactor) { while (zoomFactor > 0) { - window.eventSender.zoomPageIn(); + eventSender.zoomPageIn(); zoomFactor--; } while (zoomFactor < 0) { - window.eventSender.zoomPageOut(); + eventSender.zoomPageOut(); zoomFactor++; } }
diff --git a/third_party/WebKit/LayoutTests/custom-elements/constructor-context-dies-cross-context-call-expected.txt b/third_party/WebKit/LayoutTests/custom-elements/constructor-context-dies-cross-context-call-expected.txt deleted file mode 100644 index 19f11eba..0000000 --- a/third_party/WebKit/LayoutTests/custom-elements/constructor-context-dies-cross-context-call-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL context is destroyed; call across context Test bug: need to pass exception to assert_throws() -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/custom-elements/constructor-context-dies-cross-context-call.html b/third_party/WebKit/LayoutTests/custom-elements/constructor-context-dies-cross-context-call.html index ecfac8c..7be5026 100644 --- a/third_party/WebKit/LayoutTests/custom-elements/constructor-context-dies-cross-context-call.html +++ b/third_party/WebKit/LayoutTests/custom-elements/constructor-context-dies-cross-context-call.html
@@ -22,7 +22,7 @@ return watcher.wait_for('message'); })).then(t.step_func((event) => { assert_equals(event.data, 'PASS child done'); - assert_throws(null, () => new window.C()); + assert_throws(new Error, () => new window.C()); t.done(); })); } else {
diff --git a/third_party/WebKit/LayoutTests/custom-elements/v0-v1-interop-expected.txt b/third_party/WebKit/LayoutTests/custom-elements/v0-v1-interop-expected.txt deleted file mode 100644 index b1e547e..0000000 --- a/third_party/WebKit/LayoutTests/custom-elements/v0-v1-interop-expected.txt +++ /dev/null
@@ -1,5 +0,0 @@ -This is a testharness.js-based test. -FAIL Overlapping old and new-style custom elements are not allowed Test bug: need to pass exception to assert_throws() -PASS V0 and V1 definition and createElement cannot be used together -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/custom-elements/v0-v1-interop.html b/third_party/WebKit/LayoutTests/custom-elements/v0-v1-interop.html index 92cca66be..0686094 100644 --- a/third_party/WebKit/LayoutTests/custom-elements/v0-v1-interop.html +++ b/third_party/WebKit/LayoutTests/custom-elements/v0-v1-interop.html
@@ -10,7 +10,7 @@ class X extends w.HTMLElement {} w.customElements.define('new-old', X); - assert_throws(null, () => { + assert_throws("NotSupportedError", () => { w.document.registerElement('new-old', {prototype: X.prototype}); }, '"registering" (v0) a name already "defined" should throw'); @@ -18,7 +18,7 @@ prototype: Object.create(w.HTMLElement.prototype) }); class Y extends w.HTMLElement {} - assert_throws(null, () => { + assert_throws("NotSupportedError", () => { w.customElements.define('old-new', Y); }, '"defining" (v1) a name already "registered" (v0) should throw'); }, 'Overlapping old and new-style custom elements are not allowed');
diff --git a/third_party/WebKit/LayoutTests/dom/domparsing/xmlserializer-serialize-to-string-exception.html b/third_party/WebKit/LayoutTests/dom/domparsing/xmlserializer-serialize-to-string-exception.html index 34675f91..4783a0c 100644 --- a/third_party/WebKit/LayoutTests/dom/domparsing/xmlserializer-serialize-to-string-exception.html +++ b/third_party/WebKit/LayoutTests/dom/domparsing/xmlserializer-serialize-to-string-exception.html
@@ -13,7 +13,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var count = 0; function shouldThrowException(node)
diff --git a/third_party/WebKit/LayoutTests/editing/assert_selection.js b/third_party/WebKit/LayoutTests/editing/assert_selection.js index 49ad316..ba687d6 100644 --- a/third_party/WebKit/LayoutTests/editing/assert_selection.js +++ b/third_party/WebKit/LayoutTests/editing/assert_selection.js
@@ -129,7 +129,7 @@ * @param {!Node} node * @return {Node} */ - firstChildOf(node) { return window.internals.firstChildInFlatTree(node); } + firstChildOf(node) { return internals.firstChildInFlatTree(node); } /** * @param {!Window} window @@ -144,7 +144,7 @@ * @param {!Node} node * @return {Node} */ - nextSiblingOf(node) { return window.internals.nextSiblingInFlatTree(node); } + nextSiblingOf(node) { return internals.nextSiblingInFlatTree(node); } } /**
diff --git a/third_party/WebKit/LayoutTests/editing/caret/caret-height-multi-line.html b/third_party/WebKit/LayoutTests/editing/caret/caret-height-multi-line.html index 2d7ced6..7edfd86 100644 --- a/third_party/WebKit/LayoutTests/editing/caret/caret-height-multi-line.html +++ b/third_party/WebKit/LayoutTests/editing/caret/caret-height-multi-line.html
@@ -28,10 +28,10 @@ editor.focus(); assert_not_equals(window.internals, undefined, 'This test requires window.internals'); - let caretHeight1 = window.internals.absoluteCaretBounds().height; + let caretHeight1 = internals.absoluteCaretBounds().height; let sel = window.getSelection(); sel.collapse(line2, 0); - let caretHeight2 = window.internals.absoluteCaretBounds().height; + let caretHeight2 = internals.absoluteCaretBounds().height; assert_equals(caretHeight1, caretHeight2); }, 'The caret height should be the same in every line'); @@ -41,10 +41,10 @@ editor.focus(); assert_not_equals(window.internals, undefined, 'This test requires window.internals'); - let caretHeight1 = window.internals.absoluteCaretBounds().height; + let caretHeight1 = internals.absoluteCaretBounds().height; let sel = window.getSelection(); sel.collapse(large_font, 0); - let caretHeight2 = window.internals.absoluteCaretBounds().height; + let caretHeight2 = internals.absoluteCaretBounds().height; assert_equals(caretHeight1, caretHeight2); }, 'The caret height at the front of word(150%) should be the same as the caret height in other words(100%).'); @@ -57,9 +57,9 @@ let sel = window.getSelection(); sel.collapse(large_font, 0); sel.modify('move', 'right', 'character'); - let caretHeight1 = window.internals.absoluteCaretBounds().height; + let caretHeight1 = internals.absoluteCaretBounds().height; sel.collapse(large_font, 1); - let caretHeight2 = window.internals.absoluteCaretBounds().height; + let caretHeight2 = internals.absoluteCaretBounds().height; assert_equals(caretHeight1, caretHeight2); }, 'The caret height at the end of word should be the same as the caret height in the word.'); @@ -69,10 +69,10 @@ editor.focus(); assert_not_equals(window.internals, undefined, 'This test requires window.internals'); - let caretHeight1 = window.internals.absoluteCaretBounds().height; + let caretHeight1 = internals.absoluteCaretBounds().height; let sel = window.getSelection(); sel.collapse(large_font_rtl, 0); - let caretHeight2 = window.internals.absoluteCaretBounds().height; + let caretHeight2 = internals.absoluteCaretBounds().height; assert_equals(caretHeight1, caretHeight2); }, 'In case of RTL, the caret height at the front of word(150%) should be the same as the caret height in other words(100%).'); @@ -85,9 +85,9 @@ let sel = window.getSelection(); sel.collapse(large_font_rtl, 0); sel.modify('move', 'left', 'character'); - let caretHeight1 = window.internals.absoluteCaretBounds().height; + let caretHeight1 = internals.absoluteCaretBounds().height; sel.collapse(large_font_rtl, 1); - let caretHeight2 = window.internals.absoluteCaretBounds().height; + let caretHeight2 = internals.absoluteCaretBounds().height; assert_equals(caretHeight1, caretHeight2); }, 'In case of RTL, the caret height at the end of word should be the same as the caret height in the word.');
diff --git a/third_party/WebKit/LayoutTests/editing/caret/caret-height.html b/third_party/WebKit/LayoutTests/editing/caret/caret-height.html index aa519c1..908e8926 100644 --- a/third_party/WebKit/LayoutTests/editing/caret/caret-height.html +++ b/third_party/WebKit/LayoutTests/editing/caret/caret-height.html
@@ -9,9 +9,9 @@ var input1 = document.getElementById('line1'); var input2 = document.getElementById('line2'); input1.focus(); - var cursorLine1 = window.internals.absoluteCaretBounds(input1).height; + var cursorLine1 = internals.absoluteCaretBounds(input1).height; input2.focus(); - var cursorLine2 = window.internals.absoluteCaretBounds(input2).height; + var cursorLine2 = internals.absoluteCaretBounds(input2).height; shouldBe('cursorLine1', 'cursorLine2'); </script> </body>
diff --git a/third_party/WebKit/LayoutTests/editing/caret/selection-with-caret-type-progress.html b/third_party/WebKit/LayoutTests/editing/caret/selection-with-caret-type-progress.html index 033f94a8..3ed3e85 100644 --- a/third_party/WebKit/LayoutTests/editing/caret/selection-with-caret-type-progress.html +++ b/third_party/WebKit/LayoutTests/editing/caret/selection-with-caret-type-progress.html
@@ -27,7 +27,7 @@ leapForwardAndMove(div.offsetWidth - 10); - var cursorInfo = window.internals.getCurrentCursorInfo(); + var cursorInfo = internals.getCurrentCursorInfo(); var currentCursorType = cursorInfo.substring(cursorInfo.indexOf('=') + 1, cursorInfo.lastIndexOf(' ')); shouldBeEqualToString('currentCursorType', 'Progress'); }
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/2610675-1.html b/third_party/WebKit/LayoutTests/editing/deleting/2610675-1.html index 9be792a..508ddd9 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/2610675-1.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/2610675-1.html
@@ -21,7 +21,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); blockquote = document.getElementById("blockquote"); window.getSelection().collapse(blockquote, 0); document.execCommand("Delete");
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/2610675-2.html b/third_party/WebKit/LayoutTests/editing/deleting/2610675-2.html index 7fcb51c..07ca4ca5 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/2610675-2.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/2610675-2.html
@@ -20,7 +20,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); blockquote = document.getElementById("blockquote"); window.getSelection().collapse(blockquote, 0); document.execCommand("Delete");
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/2610675-3.html b/third_party/WebKit/LayoutTests/editing/deleting/2610675-3.html index 3c14826e..ff76375 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/2610675-3.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/2610675-3.html
@@ -15,7 +15,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); blockquote = document.getElementById("blockquote"); window.getSelection().collapse(blockquote, 0); document.execCommand("Delete");
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/4866671.html b/third_party/WebKit/LayoutTests/editing/deleting/4866671.html index add3a52..f6c6c657 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/4866671.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/4866671.html
@@ -4,7 +4,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var start = document.getElementById("start"); var end = document.getElementById("end");
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/4875189.html b/third_party/WebKit/LayoutTests/editing/deleting/4875189.html index b1cdd7f..8e4e9c44 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/4875189.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/4875189.html
@@ -5,7 +5,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function log(message) { var console = document.getElementById("console");
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/4916235-1.html b/third_party/WebKit/LayoutTests/editing/deleting/4916235-1.html index ced4f03..e9345fbe 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/4916235-1.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/4916235-1.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var div = document.getElementById("div"); var sel = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/5168598.html b/third_party/WebKit/LayoutTests/editing/deleting/5168598.html index 1242870..803a84e1 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/5168598.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/5168598.html
@@ -6,7 +6,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.designMode = "on"; var textfield = document.getElementById("textfield");
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/5290534.html b/third_party/WebKit/LayoutTests/editing/deleting/5290534.html index de89255..80fea60 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/5290534.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/5290534.html
@@ -12,7 +12,7 @@ } if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var search = document.getElementById("search"); search.setSelectionRange(0, 0);
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/5433862-1.html b/third_party/WebKit/LayoutTests/editing/deleting/5433862-1.html index 9a93a3e..b8e8a76 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/5433862-1.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/5433862-1.html
@@ -12,7 +12,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); start = document.getElementById("start"); end = document.getElementById("end");
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/5495723.html b/third_party/WebKit/LayoutTests/editing/deleting/5495723.html index f67e385..b74cb577 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/5495723.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/5495723.html
@@ -11,7 +11,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); start = document.getElementById("start"); end = document.getElementById("end");
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/5729680.html b/third_party/WebKit/LayoutTests/editing/deleting/5729680.html index d77c2ed6..b4888c3b 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/5729680.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/5729680.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); text = document.getElementById("div").firstChild; window.getSelection().setBaseAndExtent(text, 2, text, 4);
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/5847330-1.html b/third_party/WebKit/LayoutTests/editing/deleting/5847330-1.html index 2b1101be..a4c6030 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/5847330-1.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/5847330-1.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); outerdiv = document.getElementById("outerdiv"); innerdiv = document.getElementById("innerdiv");
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/5847330-2.html b/third_party/WebKit/LayoutTests/editing/deleting/5847330-2.html index 1d4f589..b0dae99 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/5847330-2.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/5847330-2.html
@@ -10,7 +10,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); dd = document.getElementById("dd"); dd.focus(); document.execCommand("SelectAll");
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/5890684.html b/third_party/WebKit/LayoutTests/editing/deleting/5890684.html index e515d96..3630733 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/5890684.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/5890684.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); div = document.getElementById("world"); window.getSelection().collapse(div, 0); document.execCommand("Delete");
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/6026335.html b/third_party/WebKit/LayoutTests/editing/deleting/6026335.html index 885ba911..de8a62f4 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/6026335.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/6026335.html
@@ -6,7 +6,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); start = document.getElementById("start"); end = document.getElementById("end"); s = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/delete-before-block-image-1.html b/third_party/WebKit/LayoutTests/editing/deleting/delete-before-block-image-1.html index 13f2a74..0e560727 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/delete-before-block-image-1.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/delete-before-block-image-1.html
@@ -2,7 +2,7 @@ <script> function runTest() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); img = document.getElementById("img"); s = window.getSelection(); s.collapse(img, 0);
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/delete-before-block-image-2.html b/third_party/WebKit/LayoutTests/editing/deleting/delete-before-block-image-2.html index 4f4a682..736e940 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/delete-before-block-image-2.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/delete-before-block-image-2.html
@@ -2,7 +2,7 @@ <script> function runTest() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); img = document.getElementById("img"); s = window.getSelection(); s.collapse(img, 0);
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/delete-before-block-table.html b/third_party/WebKit/LayoutTests/editing/deleting/delete-before-block-table.html index b7afe73..c82c95c1 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/delete-before-block-table.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/delete-before-block-table.html
@@ -2,7 +2,7 @@ <script> function runTest() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); table = document.getElementById("table"); s = window.getSelection(); s.collapse(table, 0);
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/delete-inserts-br-after-button.html b/third_party/WebKit/LayoutTests/editing/deleting/delete-inserts-br-after-button.html index 3de25760..c0a80aa 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/delete-inserts-br-after-button.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/delete-inserts-br-after-button.html
@@ -13,6 +13,6 @@ if (target.childNodes.length == 2) document.getElementById("result").innerHTML = "PASS"; if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </html>
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/delete-key-crash.html b/third_party/WebKit/LayoutTests/editing/deleting/delete-key-crash.html index e13e45e..a2b81283 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/delete-key-crash.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/delete-key-crash.html
@@ -4,7 +4,7 @@ <div contenteditable id="div"><div>AB</div></div> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var count = 0; div.addEventListener("DOMSubtreeModified", function () {
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/delete-node-after-DOMNodeRemoved.html b/third_party/WebKit/LayoutTests/editing/deleting/delete-node-after-DOMNodeRemoved.html index 810a41c..b7688ea 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/delete-node-after-DOMNodeRemoved.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/delete-node-after-DOMNodeRemoved.html
@@ -5,7 +5,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function log(message) { var console = document.getElementById("console");
diff --git a/third_party/WebKit/LayoutTests/editing/deleting/forward-delete-key.html b/third_party/WebKit/LayoutTests/editing/deleting/forward-delete-key.html index 5861db006..7f82426 100644 --- a/third_party/WebKit/LayoutTests/editing/deleting/forward-delete-key.html +++ b/third_party/WebKit/LayoutTests/editing/deleting/forward-delete-key.html
@@ -5,7 +5,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); text = document.getElementById("div").firstChild; window.getSelection().setBaseAndExtent(text, 0, text, 1);
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/12244.html b/third_party/WebKit/LayoutTests/editing/execCommand/12244.html index 73660c3..e2ad1ec 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/12244.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/12244.html
@@ -23,8 +23,8 @@ assert(window.find(), true, "'now we are' wasn't found"); } if (window.testRunner) { - window.testRunner.dumpEditingCallbacks(); - window.testRunner.dumpAsText(); + testRunner.dumpEditingCallbacks(); + testRunner.dumpAsText(); } window.setTimeout(runTest, 100); </script>
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/15381.html b/third_party/WebKit/LayoutTests/editing/execCommand/15381.html index 6cc3820..db85af50 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/15381.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/15381.html
@@ -2,7 +2,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); test = document.getElementById("test"); edit = document.getElementById("edit");
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/16049.html b/third_party/WebKit/LayoutTests/editing/execCommand/16049.html index 52da48c..6262398 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/16049.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/16049.html
@@ -6,7 +6,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); edit1 = document.getElementById("edit1"); edit1.focus();
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/19087.html b/third_party/WebKit/LayoutTests/editing/execCommand/19087.html index 1f39f2eb1..c2de995 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/19087.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/19087.html
@@ -2,7 +2,7 @@ <script> function runTest() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); start = document.getElementById("start"); end = document.getElementById("end"); window.getSelection().setBaseAndExtent(start, 0, end, 0);
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/19089.html b/third_party/WebKit/LayoutTests/editing/execCommand/19089.html index 1696d88..79954a9 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/19089.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/19089.html
@@ -3,7 +3,7 @@ <script> function runTest() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); div = document.getElementById("div"); div.focus(); document.execCommand("SelectAll");
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/19403.html b/third_party/WebKit/LayoutTests/editing/execCommand/19403.html index 0f2c5d430..64ccfcf4 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/19403.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/19403.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); edit = document.getElementById("edit"); edit.focus(); document.execCommand("SelectAll");
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/35791.html b/third_party/WebKit/LayoutTests/editing/execCommand/35791.html index c831ef0a..7109660 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/35791.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/35791.html
@@ -12,5 +12,5 @@ document.designMode = "off"; if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </SCRIPT>
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/4128080-1.html b/third_party/WebKit/LayoutTests/editing/execCommand/4128080-1.html index ce6591d4..7a3f52fe 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/4128080-1.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/4128080-1.html
@@ -17,7 +17,7 @@ } if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); // Test 1: Verify that a header at the beginning of inserted content is preserved. output = "Test 1: Verify that a header at the beginning of inserted content is preserved.\n";
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/4128080-2.html b/third_party/WebKit/LayoutTests/editing/execCommand/4128080-2.html index d02c992d..4794d95 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/4128080-2.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/4128080-2.html
@@ -5,7 +5,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); // Test 2: Verify that a header at the end of inserted content is preserved. copy = document.getElementById("copy");
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/4916235.html b/third_party/WebKit/LayoutTests/editing/execCommand/4916235.html index e19eea08..42c8353b 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/4916235.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/4916235.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var li = document.getElementById("li1"); var sel = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/4920742-2.html b/third_party/WebKit/LayoutTests/editing/execCommand/4920742-2.html index 79601f4..88b28f8 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/4920742-2.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/4920742-2.html
@@ -12,7 +12,7 @@ } if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var div = document.getElementById("div"); var text = div.firstChild;
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/4928635.html b/third_party/WebKit/LayoutTests/editing/execCommand/4928635.html index e3f4535..053607a 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/4928635.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/4928635.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var li = document.getElementById("li"); var sel = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/4976800.html b/third_party/WebKit/LayoutTests/editing/execCommand/4976800.html index 503bbad2..3207d0b 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/4976800.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/4976800.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var blockquote = document.getElementById("blockquote"); var sel = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/5062376.html b/third_party/WebKit/LayoutTests/editing/execCommand/5062376.html index 325082d..61727694 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/5062376.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/5062376.html
@@ -2,7 +2,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var div = document.getElementById("div"); div.focus();
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/5458246.html b/third_party/WebKit/LayoutTests/editing/execCommand/5458246.html index f7942b5..0d91306 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/5458246.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/5458246.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.getElementById("div").focus(); document.execCommand("SelectAll"); document.execCommand("InsertUnorderedList");
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/5543472-1.html b/third_party/WebKit/LayoutTests/editing/execCommand/5543472-1.html index 4e163be..1e6d9c8 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/5543472-1.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/5543472-1.html
@@ -10,7 +10,7 @@ document.execCommand("InsertUnorderedList"); if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); div = document.getElementById("div"); p = document.getElementById("p"); document.body.innerText = p.innerText + "\n\nDOM:\n" + div.innerHTML;
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/5543472-2.html b/third_party/WebKit/LayoutTests/editing/execCommand/5543472-2.html index 71f08642f..0df6808 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/5543472-2.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/5543472-2.html
@@ -8,7 +8,7 @@ document.execCommand("InsertUnorderedList"); if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); div = document.getElementById("div"); p = document.getElementById("p"); document.body.innerText = p.innerText + "\n\nDOM:\n" + div.innerHTML;
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/5543472-3.html b/third_party/WebKit/LayoutTests/editing/execCommand/5543472-3.html index 5144728..22184c1 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/5543472-3.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/5543472-3.html
@@ -8,7 +8,7 @@ document.execCommand("InsertUnorderedList"); if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); div = document.getElementById("div"); p = document.getElementById("p"); document.body.innerText = p.innerText + "\n\nDOM:\n" + div.innerHTML;
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/5575101-1.html b/third_party/WebKit/LayoutTests/editing/execCommand/5575101-1.html index dac68bdc..9c9b758 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/5575101-1.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/5575101-1.html
@@ -8,7 +8,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); outdent = document.getElementById("outdent"); window.getSelection().collapse(outdent, 0); document.execCommand("Outdent");
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/5575101-2.html b/third_party/WebKit/LayoutTests/editing/execCommand/5575101-2.html index b8c7e29..b9fa853f 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/5575101-2.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/5575101-2.html
@@ -8,7 +8,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); outdent = document.getElementById("outdent"); window.getSelection().collapse(outdent, 0); document.execCommand("Outdent");
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/5575101-3.html b/third_party/WebKit/LayoutTests/editing/execCommand/5575101-3.html index 666fecd..10796de 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/5575101-3.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/5575101-3.html
@@ -9,7 +9,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); outdent = document.getElementById("outdent"); window.getSelection().collapse(outdent, 0); document.execCommand("Outdent");
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/5604313.html b/third_party/WebKit/LayoutTests/editing/execCommand/5604313.html index 79d4dfe..980bece 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/5604313.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/5604313.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); p = document.getElementById("p"); s = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/5658933-1.html b/third_party/WebKit/LayoutTests/editing/execCommand/5658933-1.html index 5ebdb29c3..69337f2 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/5658933-1.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/5658933-1.html
@@ -9,7 +9,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); edit = document.getElementById("edit"); edit.focus();
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/5658933-2.html b/third_party/WebKit/LayoutTests/editing/execCommand/5658933-2.html index aee40399d..daa8d15 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/5658933-2.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/5658933-2.html
@@ -5,7 +5,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); td = document.getElementById("td"); text = td.firstChild;
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/5658933-3.html b/third_party/WebKit/LayoutTests/editing/execCommand/5658933-3.html index f794392..559ecc93 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/5658933-3.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/5658933-3.html
@@ -5,7 +5,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); start = document.getElementById("start"); end = document.getElementById("end");
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/5685604-1.html b/third_party/WebKit/LayoutTests/editing/execCommand/5685604-1.html index 68179ed..59582e9 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/5685604-1.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/5685604-1.html
@@ -33,7 +33,7 @@ log("Failure. Expected: " + expectedHTML); if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.body.innerText = document.getElementById("console").innerText; } </script>
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/5763082.html b/third_party/WebKit/LayoutTests/editing/execCommand/5763082.html index c37e55a9..2e6deb2 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/5763082.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/5763082.html
@@ -10,7 +10,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); div = document.getElementById("edit"); div.focus(); document.execCommand("SelectAll");
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/5770834-1.html b/third_party/WebKit/LayoutTests/editing/execCommand/5770834-1.html index d947f69e..b8e86cb 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/5770834-1.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/5770834-1.html
@@ -12,7 +12,7 @@ document.execCommand("SelectAll"); document.execCommand("RemoveFormat"); if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.body.innerText = description.innerText + "\n\n" + edit.innerHTML; } </script>
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/5939887.html b/third_party/WebKit/LayoutTests/editing/execCommand/5939887.html index 2617a77..988f8631 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/5939887.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/5939887.html
@@ -10,7 +10,7 @@ li.appendChild(text); } if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.execCommand("Copy"); document.execCommand("Cut"); document.execCommand("Paste");
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/6355786.html b/third_party/WebKit/LayoutTests/editing/execCommand/6355786.html index 13fe188..3592439 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/6355786.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/6355786.html
@@ -5,7 +5,7 @@ newlines</pre> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); if (!document.execCommand("FindString", false, "test\nover\nbrs")) document.body.innerText = "Find with line breaks failed over brs."; if (!document.execCommand("FindString", false, "test\nover\ndivs"))
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/6444148.html b/third_party/WebKit/LayoutTests/editing/execCommand/6444148.html index d1650381..bd6ba3d 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/6444148.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/6444148.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); blockquote = document.getElementById("blockquote"); edit = document.getElementById("edit"); description = document.getElementById("description");
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/backcolor-crash.html b/third_party/WebKit/LayoutTests/editing/execCommand/backcolor-crash.html index 5e5f25a4..f379d8b 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/backcolor-crash.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/backcolor-crash.html
@@ -5,7 +5,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); window.getSelection().collapse(test, 0); var color = document.queryCommandValue('backColor', false, null);
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/clipboard-access-with-userGesture.html b/third_party/WebKit/LayoutTests/editing/execCommand/clipboard-access-with-userGesture.html index ae25430..125100f5 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/clipboard-access-with-userGesture.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/clipboard-access-with-userGesture.html
@@ -7,7 +7,7 @@ function runTest() { if (window.testRunner) - window.testRunner.setJavaScriptCanAccessClipboard(false); + testRunner.setJavaScriptCanAccessClipboard(false); else return; clickButton("copy");
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/indent-empty-table-cell.html b/third_party/WebKit/LayoutTests/editing/execCommand/indent-empty-table-cell.html index e413228..73a3ad2 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/indent-empty-table-cell.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/indent-empty-table-cell.html
@@ -10,7 +10,7 @@ </div> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); indent = document.getElementById("indent"); window.getSelection().collapse(indent, 0); document.execCommand("indent");
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/indent-partial-table.html b/third_party/WebKit/LayoutTests/editing/execCommand/indent-partial-table.html index bd50be0..b78bb22e 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/indent-partial-table.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/indent-partial-table.html
@@ -20,7 +20,7 @@ </div> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); indent = document.getElementById("secondrow"); window.getSelection().setBaseAndExtent(document.getElementById('start'), 0, indent, 0); document.execCommand("indent");
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/insert-list-with-id.html b/third_party/WebKit/LayoutTests/editing/execCommand/insert-list-with-id.html index a998e8d..79d3fe12 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/insert-list-with-id.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/insert-list-with-id.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var s = window.getSelection(); var div = document.getElementById("test"); var id = "foo";
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/insert-text-not-inheriting-block-properties.html b/third_party/WebKit/LayoutTests/editing/execCommand/insert-text-not-inheriting-block-properties.html index 58d0b3c..232a8365 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/insert-text-not-inheriting-block-properties.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/insert-text-not-inheriting-block-properties.html
@@ -39,7 +39,7 @@ container.focus(); window.getSelection().collapse(container.firstChild.firstChild, 0); // First <span>. - window.testRunner.execCommand('SelectParagraph'); + testRunner.execCommand('SelectParagraph'); document.execCommand('InsertText', false, 'a'); check();
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/query-font-size.html b/third_party/WebKit/LayoutTests/editing/execCommand/query-font-size.html index b384e78f..d9137e6 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/query-font-size.html +++ b/third_party/WebKit/LayoutTests/editing/execCommand/query-font-size.html
@@ -69,7 +69,7 @@ } if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var editableDiv = document.createElement("div"); editableDiv.contentEditable = true;
diff --git a/third_party/WebKit/LayoutTests/editing/execCommand/script-tests/clipboard-access.js b/third_party/WebKit/LayoutTests/editing/execCommand/script-tests/clipboard-access.js index a8b0ae2..3ecee5beb 100644 --- a/third_party/WebKit/LayoutTests/editing/execCommand/script-tests/clipboard-access.js +++ b/third_party/WebKit/LayoutTests/editing/execCommand/script-tests/clipboard-access.js
@@ -2,7 +2,7 @@ if (window.testRunner) { - window.testRunner.setJavaScriptCanAccessClipboard(false); + testRunner.setJavaScriptCanAccessClipboard(false); } var nonEditableParagraph = document.createElement("p");
diff --git a/third_party/WebKit/LayoutTests/editing/input/resources/password-echo.js b/third_party/WebKit/LayoutTests/editing/input/resources/password-echo.js index f5aac349..abdb873 100644 --- a/third_party/WebKit/LayoutTests/editing/input/resources/password-echo.js +++ b/third_party/WebKit/LayoutTests/editing/input/resources/password-echo.js
@@ -85,8 +85,8 @@ testRunner.dumpAsText(); testRunner.waitUntilDone(); if (window.internals) { - window.internals.settings.setPasswordEchoEnabled(true); - window.internals.settings.setPasswordEchoDurationInSeconds(0.1); + internals.settings.setPasswordEchoEnabled(true); + internals.settings.setPasswordEchoDurationInSeconds(0.1); testnode = document.getElementById('testnode'); run(tests, -1); }
diff --git a/third_party/WebKit/LayoutTests/editing/input/reveal-password.html b/third_party/WebKit/LayoutTests/editing/input/reveal-password.html index c80a20e..98d67424 100644 --- a/third_party/WebKit/LayoutTests/editing/input/reveal-password.html +++ b/third_party/WebKit/LayoutTests/editing/input/reveal-password.html
@@ -2,8 +2,8 @@ <script src="resources/password-echo.js"></script> <script> onload = function() { - window.testRunner.dumpAsText(); - window.internals.settings.setPasswordEchoEnabled(false); + testRunner.dumpAsText(); + internals.settings.setPasswordEchoEnabled(false); var testnode = document.getElementById('testnode'); setTestNode(testnode); @@ -11,11 +11,11 @@ assert(true, window.find(secureText(testnode.value.length)), "secured by default."); window.getSelection().removeAllRanges(); - window.internals.setShouldRevealPassword(testnode, true); + internals.setShouldRevealPassword(testnode, true); assert(true, window.find(testnode.value), "properly revealed"); window.getSelection().removeAllRanges(); - window.internals.setShouldRevealPassword(testnode, false); + internals.setShouldRevealPassword(testnode, false); assert(true, window.find(secureText(testnode.value.length)), "hidden again"); } </script>
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/5378847.html b/third_party/WebKit/LayoutTests/editing/inserting/5378847.html index 541ed81..f2a6cf1 100644 --- a/third_party/WebKit/LayoutTests/editing/inserting/5378847.html +++ b/third_party/WebKit/LayoutTests/editing/inserting/5378847.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var div = document.getElementById("div"); children = div.childNodes;
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/5549929-1.html b/third_party/WebKit/LayoutTests/editing/inserting/5549929-1.html index b6a2f88e..7f028f5 100644 --- a/third_party/WebKit/LayoutTests/editing/inserting/5549929-1.html +++ b/third_party/WebKit/LayoutTests/editing/inserting/5549929-1.html
@@ -6,7 +6,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.getElementById("div").focus(); span = document.getElementById("span"); window.getSelection().collapse(span, 0);
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/5607069-1.html b/third_party/WebKit/LayoutTests/editing/inserting/5607069-1.html index b85ee4e..59ed6ac 100644 --- a/third_party/WebKit/LayoutTests/editing/inserting/5607069-1.html +++ b/third_party/WebKit/LayoutTests/editing/inserting/5607069-1.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); div = document.getElementById("div"); window.getSelection().collapse(div, 1); document.execCommand("InsertParagraph");
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/5685601-1.html b/third_party/WebKit/LayoutTests/editing/inserting/5685601-1.html index 4e4db09..f3ce9b8c 100644 --- a/third_party/WebKit/LayoutTests/editing/inserting/5685601-1.html +++ b/third_party/WebKit/LayoutTests/editing/inserting/5685601-1.html
@@ -7,7 +7,7 @@ document.execCommand("InsertParagraph"); document.execCommand("InsertText", false, "x"); if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.body.innerText = div.innerHTML; } </script>
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/5685601-2.html b/third_party/WebKit/LayoutTests/editing/inserting/5685601-2.html index d0bfa46..644809d 100644 --- a/third_party/WebKit/LayoutTests/editing/inserting/5685601-2.html +++ b/third_party/WebKit/LayoutTests/editing/inserting/5685601-2.html
@@ -6,7 +6,7 @@ div.focus(); document.execCommand("InsertParagraph"); if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.body.innerText = div.innerHTML; } </script>
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/5685601-3.html b/third_party/WebKit/LayoutTests/editing/inserting/5685601-3.html index d3ecd86..88550c5 100644 --- a/third_party/WebKit/LayoutTests/editing/inserting/5685601-3.html +++ b/third_party/WebKit/LayoutTests/editing/inserting/5685601-3.html
@@ -6,7 +6,7 @@ div.focus(); document.execCommand("InsertParagraph"); if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.body.innerText = div.innerHTML; } </script>
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/5803706-1.html b/third_party/WebKit/LayoutTests/editing/inserting/5803706-1.html index 1829c27..60a3da0 100644 --- a/third_party/WebKit/LayoutTests/editing/inserting/5803706-1.html +++ b/third_party/WebKit/LayoutTests/editing/inserting/5803706-1.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); h2 = document.getElementById("h2"); text = h2.firstChild; window.getSelection().collapse(text, text.length);
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/5803706-2.html b/third_party/WebKit/LayoutTests/editing/inserting/5803706-2.html index 1ccc2bbd..5e61851 100644 --- a/third_party/WebKit/LayoutTests/editing/inserting/5803706-2.html +++ b/third_party/WebKit/LayoutTests/editing/inserting/5803706-2.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); h2 = document.getElementById("h2"); text = h2.firstChild; window.getSelection().collapse(text, text.length - 1);
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/5994480.html b/third_party/WebKit/LayoutTests/editing/inserting/5994480.html index 2df3036..7996a87 100644 --- a/third_party/WebKit/LayoutTests/editing/inserting/5994480.html +++ b/third_party/WebKit/LayoutTests/editing/inserting/5994480.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); paragraphOne = document.getElementById("paragraphOne"); // Place the caret at the end of the block that contains the first paragraph. window.getSelection().collapse(paragraphOne, paragraphOne.childNodes.length);
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/6104369-2.html b/third_party/WebKit/LayoutTests/editing/inserting/6104369-2.html index 08930c57..f8aca7c 100644 --- a/third_party/WebKit/LayoutTests/editing/inserting/6104369-2.html +++ b/third_party/WebKit/LayoutTests/editing/inserting/6104369-2.html
@@ -12,7 +12,7 @@ line two</pre></blockquote></div> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); text = document.getElementById("pre").firstChild; window.getSelection().collapse(text, 8); document.execCommand("InsertNewlineInQuotedContent");
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/6104369.html b/third_party/WebKit/LayoutTests/editing/inserting/6104369.html index b7da4a6..3b371c1f 100644 --- a/third_party/WebKit/LayoutTests/editing/inserting/6104369.html +++ b/third_party/WebKit/LayoutTests/editing/inserting/6104369.html
@@ -11,7 +11,7 @@ <div id="div" contentEditable="true"><blockquote type="cite"><div id="test">line one<br>line two</div></blockquote></div> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); test = document.getElementById("test"); window.getSelection().collapse(test, 1); document.execCommand("InsertNewlineInQuotedContent");
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/6703873-2.html b/third_party/WebKit/LayoutTests/editing/inserting/6703873-2.html index d9f2b34..107799e0 100644 --- a/third_party/WebKit/LayoutTests/editing/inserting/6703873-2.html +++ b/third_party/WebKit/LayoutTests/editing/inserting/6703873-2.html
@@ -24,7 +24,7 @@ document.execCommand("InsertNewlineInQuotedContent"); if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); div = document.getElementById("div"); div.innerText = div.innerHTML; }
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/insert-before-link-1.html b/third_party/WebKit/LayoutTests/editing/inserting/insert-before-link-1.html index 5a08f4b..0d108bc 100644 --- a/third_party/WebKit/LayoutTests/editing/inserting/insert-before-link-1.html +++ b/third_party/WebKit/LayoutTests/editing/inserting/insert-before-link-1.html
@@ -4,7 +4,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var edit = document.getElementById("edit"); var sel = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/editing/inserting/paragraph-outside-nested-divs.html b/third_party/WebKit/LayoutTests/editing/inserting/paragraph-outside-nested-divs.html index 8239a94..bfca1a90 100644 --- a/third_party/WebKit/LayoutTests/editing/inserting/paragraph-outside-nested-divs.html +++ b/third_party/WebKit/LayoutTests/editing/inserting/paragraph-outside-nested-divs.html
@@ -6,7 +6,7 @@ <script src="../editing.js"></script> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); if (window.internals) internals.settings.setEditingBehavior("mac"); function fail(msg) {
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/4744008.html b/third_party/WebKit/LayoutTests/editing/pasteboard/4744008.html index 4bb9fb3..d1b2a99 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/4744008.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/4744008.html
@@ -7,7 +7,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var div = document.getElementById("div"); var sel = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/4922709.html b/third_party/WebKit/LayoutTests/editing/pasteboard/4922709.html index 016b12b..52b4740d 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/4922709.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/4922709.html
@@ -17,7 +17,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); blockquote = document.getElementById("blockquote"); text = blockquote.firstChild; sel = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/4947130.html b/third_party/WebKit/LayoutTests/editing/pasteboard/4947130.html index aa709f1..168fed4 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/4947130.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/4947130.html
@@ -9,7 +9,7 @@ if (!window.testRunner) return; - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); window.setTimeout(step2, 200); } @@ -29,7 +29,7 @@ eventSender.mouseMoveTo(left - 28, y); eventSender.mouseUp(); - window.testRunner.notifyDone(); + testRunner.notifyDone(); } runTest();
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/5078739.html b/third_party/WebKit/LayoutTests/editing/pasteboard/5078739.html index dbad2a82..b909f432 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/5078739.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/5078739.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var div = document.getElementById("div"); div.focus();
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/5480736.html b/third_party/WebKit/LayoutTests/editing/pasteboard/5480736.html index c502f3d..948b407 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/5480736.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/5480736.html
@@ -14,7 +14,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); blockquote = document.getElementById("blockquote"); text = blockquote.firstChild;
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/5521237.html b/third_party/WebKit/LayoutTests/editing/pasteboard/5521237.html index 880f70a..8f38e0a 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/5521237.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/5521237.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); div = document.getElementById("div"); text = div.firstChild;
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/5665299.html b/third_party/WebKit/LayoutTests/editing/pasteboard/5665299.html index 2a91cd97..edadfd4 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/5665299.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/5665299.html
@@ -7,7 +7,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); copy = document.getElementById("copy"); copy.focus();
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/5761530-1.html b/third_party/WebKit/LayoutTests/editing/pasteboard/5761530-1.html index 87844a0..324e858 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/5761530-1.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/5761530-1.html
@@ -2,7 +2,7 @@ <div id="edit" contenteditable="true"><span style="white-space:pre;"> </span>xxx</div> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); edit = document.getElementById("edit"); window.getSelection().collapse(edit, 0);
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/5761530-2.html b/third_party/WebKit/LayoutTests/editing/pasteboard/5761530-2.html index f99d9b4b..59e54cae 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/5761530-2.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/5761530-2.html
@@ -2,7 +2,7 @@ <div id="edit" contenteditable="true"><span style="white-space:pre;"> </span>xxx</div> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); edit = document.getElementById("edit"); window.getSelection().collapse(edit, 0); document.execCommand("InsertHTML", false, " ");
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/5780697-1.html b/third_party/WebKit/LayoutTests/editing/pasteboard/5780697-1.html index 7bd64d7..ab59f42 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/5780697-1.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/5780697-1.html
@@ -25,7 +25,7 @@ paste.focus(); document.execCommand("paste"); if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.body.innerText = document.getElementById("description").innerText + "\n\n" + copy.innerHTML; } </script>
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/5780697-2.html b/third_party/WebKit/LayoutTests/editing/pasteboard/5780697-2.html index ca091f7..4f7b97d7 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/5780697-2.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/5780697-2.html
@@ -24,7 +24,7 @@ document.execCommand("selectall"); document.execCommand("copy"); if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); paste = document.getElementById("paste"); description = document.getElementById("description"); document.getElementById("paste").focus();
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/6018653.html b/third_party/WebKit/LayoutTests/editing/pasteboard/6018653.html index 11d7b462..95ff108a 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/6018653.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/6018653.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); edit = document.getElementById("edit"); window.getSelection().collapse(edit, 0); document.execCommand("InsertHTML", false, "<div>Paragraph one</div><div>Paragraph two</div><br class='Apple-interchange-newline'><div><br></div>");
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/copy-standalone-image-crash.html b/third_party/WebKit/LayoutTests/editing/pasteboard/copy-standalone-image-crash.html index 1a15ff9..4047f73 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/copy-standalone-image-crash.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/copy-standalone-image-crash.html
@@ -6,8 +6,8 @@ var actionitems; if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } function doClick() { @@ -28,7 +28,7 @@ document.body.innerHTML = "PASS"; - window.testRunner.notifyDone(); + testRunner.notifyDone(); } function hideDiv() {
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/copy-without-common-block-crash.html b/third_party/WebKit/LayoutTests/editing/pasteboard/copy-without-common-block-crash.html index 44a53db..d4175ea 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/copy-without-common-block-crash.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/copy-without-common-block-crash.html
@@ -5,7 +5,7 @@ <script type="text/javascript"> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var test = document.getElementById('test'); document.getSelection().selectAllChildren(test);
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/drop-text-without-selection.html b/third_party/WebKit/LayoutTests/editing/pasteboard/drop-text-without-selection.html index b52725d..529aa8da 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/drop-text-without-selection.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/drop-text-without-selection.html
@@ -21,7 +21,7 @@ if (!window.testRunner) return; - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); var link = document.getElementById("link"); @@ -40,7 +40,7 @@ eventSender.mouseMoveTo(x, y); eventSender.mouseUp(); - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script>
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/get-data-text-plain-drop.html b/third_party/WebKit/LayoutTests/editing/pasteboard/get-data-text-plain-drop.html index 24cdb6d..0c01ea52 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/get-data-text-plain-drop.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/get-data-text-plain-drop.html
@@ -4,7 +4,7 @@ <script src="../editing.js" type="text/javascript"></script> <script type="text/javascript"> if (window.testRunner) { - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); testRunner.dumpAsText(); } @@ -54,7 +54,7 @@ y = drop.offsetTop + drop.offsetHeight / 2; eventSender.mouseMoveTo(x, y); eventSender.mouseUp(); - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script>
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/paste-noscript-svg.html b/third_party/WebKit/LayoutTests/editing/pasteboard/paste-noscript-svg.html index 0cd6b60..72b43a87 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/paste-noscript-svg.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/paste-noscript-svg.html
@@ -1,9 +1,9 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function foo() { var frame = frames[0]; @@ -19,7 +19,7 @@ log(document.getElementById("pastehere").innerHTML); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } function log(str) {
diff --git a/third_party/WebKit/LayoutTests/editing/pasteboard/paste-removing-iframe.html b/third_party/WebKit/LayoutTests/editing/pasteboard/paste-removing-iframe.html index 6431e6a..f5b5f4b11 100644 --- a/third_party/WebKit/LayoutTests/editing/pasteboard/paste-removing-iframe.html +++ b/third_party/WebKit/LayoutTests/editing/pasteboard/paste-removing-iframe.html
@@ -15,7 +15,7 @@ textarea.addEventListener("input", function(evt) { toRemove.parentNode.removeChild(toRemove); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); var selection = childDocument.getSelection();
diff --git a/third_party/WebKit/LayoutTests/editing/selection/4402375.html b/third_party/WebKit/LayoutTests/editing/selection/4402375.html index 7ba3191..f44d6c9 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/4402375.html +++ b/third_party/WebKit/LayoutTests/editing/selection/4402375.html
@@ -8,7 +8,7 @@ <div id="test" align="left"><img src="../resources/abe.png" align="right">This text should be selected.</div> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var e = document.getElementById("test"); var s = window.getSelection(); // Select the text node.
diff --git a/third_party/WebKit/LayoutTests/editing/selection/4776665.html b/third_party/WebKit/LayoutTests/editing/selection/4776665.html index ef63c37..19f4aa76 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/4776665.html +++ b/third_party/WebKit/LayoutTests/editing/selection/4776665.html
@@ -1,7 +1,7 @@ <script> if (window.testRunner) { testRunner.dumpEditingCallbacks(); - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); } function runTest() { @@ -11,7 +11,7 @@ var sel = frame.getSelection(); sel.collapse(body, 0); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script> <p>This tests for a caret painting bug. You should not see a caret in the editable subframe below.</p>
diff --git a/third_party/WebKit/LayoutTests/editing/selection/4975120.html b/third_party/WebKit/LayoutTests/editing/selection/4975120.html index efb7ae8..c8dc3fff 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/4975120.html +++ b/third_party/WebKit/LayoutTests/editing/selection/4975120.html
@@ -1,7 +1,7 @@ <head> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function runTest() { var input = document.getElementById("input"); @@ -14,9 +14,9 @@ if (!window.testRunner) return; - window.testRunner.setWindowIsKey(false); - window.testRunner.setWindowIsKey(true); - window.testRunner.notifyDone(); + testRunner.setWindowIsKey(false); + testRunner.setWindowIsKey(true); + testRunner.notifyDone(); } </script> </head>
diff --git a/third_party/WebKit/LayoutTests/editing/selection/5136696.html b/third_party/WebKit/LayoutTests/editing/selection/5136696.html index 41bd0674..06a2eb1 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/5136696.html +++ b/third_party/WebKit/LayoutTests/editing/selection/5136696.html
@@ -1,7 +1,7 @@ <script> if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } function verifyResults(inputElement, selectedText) { @@ -33,7 +33,7 @@ verifyResults(inputElement, textToSelect); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script> <p>This tests to make sure that a selection in one frame isn't cleared when focusing a node in a different frame.</p>
diff --git a/third_party/WebKit/LayoutTests/editing/selection/5195166-2.html b/third_party/WebKit/LayoutTests/editing/selection/5195166-2.html index 80304657..9399d6c1 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/5195166-2.html +++ b/third_party/WebKit/LayoutTests/editing/selection/5195166-2.html
@@ -10,7 +10,7 @@ li.appendChild(text); } if (window.testRunner) { - window.testRunner.dumpEditingCallbacks(); + testRunner.dumpEditingCallbacks(); var text = document.getElementById("div").firstChild; var selection = window.getSelection(); selection.setBaseAndExtent(text, 0, text, 0);
diff --git a/third_party/WebKit/LayoutTests/editing/selection/5209984.html b/third_party/WebKit/LayoutTests/editing/selection/5209984.html index 573e3d90..9b1c4b2 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/5209984.html +++ b/third_party/WebKit/LayoutTests/editing/selection/5209984.html
@@ -17,7 +17,7 @@ } if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); input = document.getElementById("input"); input.setSelectionRange(0, 1);
diff --git a/third_party/WebKit/LayoutTests/editing/selection/5241148.html b/third_party/WebKit/LayoutTests/editing/selection/5241148.html index 803818e..cf74ce0 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/5241148.html +++ b/third_party/WebKit/LayoutTests/editing/selection/5241148.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); div = document.getElementById("div"); selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/editing/selection/5714333.html b/third_party/WebKit/LayoutTests/editing/selection/5714333.html index 8f24f909..9957e391 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/5714333.html +++ b/third_party/WebKit/LayoutTests/editing/selection/5714333.html
@@ -4,7 +4,7 @@ <div id="console"></div> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); div = document.getElementById("div"); text = div.firstChild; s = document.getSelection();
diff --git a/third_party/WebKit/LayoutTests/editing/selection/5794920-1.html b/third_party/WebKit/LayoutTests/editing/selection/5794920-1.html index c6dc137..9297ba1 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/5794920-1.html +++ b/third_party/WebKit/LayoutTests/editing/selection/5794920-1.html
@@ -7,7 +7,7 @@ window.getSelection().collapse(text, 2); window.getSelection().modify("move", "backward", "character"); if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.body.innerText = document.getElementById("description").innerHTML + "\n\nTest Passed (there was no crash)"; } </script>
diff --git a/third_party/WebKit/LayoutTests/editing/selection/5825350-1.html b/third_party/WebKit/LayoutTests/editing/selection/5825350-1.html index c83110a7..c64bef4 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/5825350-1.html +++ b/third_party/WebKit/LayoutTests/editing/selection/5825350-1.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); edit = document.getElementById("edit"); text = edit.childNodes[1];
diff --git a/third_party/WebKit/LayoutTests/editing/selection/5825350-2.html b/third_party/WebKit/LayoutTests/editing/selection/5825350-2.html index 6f97ea5..23478c6 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/5825350-2.html +++ b/third_party/WebKit/LayoutTests/editing/selection/5825350-2.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); edit = document.getElementById("edit"); text = edit.childNodes[1];
diff --git a/third_party/WebKit/LayoutTests/editing/selection/button-right-click.html b/third_party/WebKit/LayoutTests/editing/selection/button-right-click.html index c961634..7c221aeb 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/button-right-click.html +++ b/third_party/WebKit/LayoutTests/editing/selection/button-right-click.html
@@ -14,7 +14,7 @@ </body> <script> if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var elem = document.getElementById("test"); x = elem.offsetLeft + elem.offsetWidth / 2; y = elem.offsetTop + elem.offsetHeight / 2;
diff --git a/third_party/WebKit/LayoutTests/editing/selection/caret-and-focus-ring.html b/third_party/WebKit/LayoutTests/editing/selection/caret-and-focus-ring.html index 1b8465ee..2994f774 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/caret-and-focus-ring.html +++ b/third_party/WebKit/LayoutTests/editing/selection/caret-and-focus-ring.html
@@ -10,8 +10,8 @@ function runTest() { if (window.testRunner) { - window.testRunner.setWindowIsKey(false); - window.testRunner.setMainFrameIsFirstResponder(false); + testRunner.setWindowIsKey(false); + testRunner.setMainFrameIsFirstResponder(false); } var s = window.getSelection(); var e = document.getElementById("test");
diff --git a/third_party/WebKit/LayoutTests/editing/selection/click-before-and-after-table.html b/third_party/WebKit/LayoutTests/editing/selection/click-before-and-after-table.html index 3310692..73e8078c 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/click-before-and-after-table.html +++ b/third_party/WebKit/LayoutTests/editing/selection/click-before-and-after-table.html
@@ -20,7 +20,7 @@ } function runAutomatedTest() { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var s, x, y, e, top, bottom, left, right; table = document.getElementById("table");
diff --git a/third_party/WebKit/LayoutTests/editing/selection/click-on-block-image.html b/third_party/WebKit/LayoutTests/editing/selection/click-on-block-image.html index 9e560b6..c2d88b0 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/click-on-block-image.html +++ b/third_party/WebKit/LayoutTests/editing/selection/click-on-block-image.html
@@ -36,7 +36,7 @@ function automaticTest() { if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var elem; elem = document.getElementById("myimage");
diff --git a/third_party/WebKit/LayoutTests/editing/selection/designmode-no-caret.html b/third_party/WebKit/LayoutTests/editing/selection/designmode-no-caret.html index 070b108e..92717f4 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/designmode-no-caret.html +++ b/third_party/WebKit/LayoutTests/editing/selection/designmode-no-caret.html
@@ -12,9 +12,9 @@ <script> document.designMode = "on"; if (window.testRunner) { - window.testRunner.waitUntilDone(); - window.testRunner.setMainFrameIsFirstResponder(false); - window.testRunner.setMainFrameIsFirstResponder(true); + testRunner.waitUntilDone(); + testRunner.setMainFrameIsFirstResponder(false); + testRunner.setMainFrameIsFirstResponder(true); var sel = window.getSelection(); if (sel.anchorNode && sel.anchorNode == sel.focusNode && sel.anchorOffset == sel.focusOffset) @@ -22,6 +22,6 @@ else log("Test Failed - there should be a caret\n"); - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script>
diff --git a/third_party/WebKit/LayoutTests/editing/selection/extend-forward-after-set-base-and-extent.html b/third_party/WebKit/LayoutTests/editing/selection/extend-forward-after-set-base-and-extent.html index 0a8a5d2c..64400a67 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/extend-forward-after-set-base-and-extent.html +++ b/third_party/WebKit/LayoutTests/editing/selection/extend-forward-after-set-base-and-extent.html
@@ -7,7 +7,7 @@ } if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var text = document.getElementById("div").firstChild; var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/editing/selection/internal-caret-rect-expected.txt b/third_party/WebKit/LayoutTests/editing/selection/internal-caret-rect-expected.txt index 359bb80b..61e1bac 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/internal-caret-rect-expected.txt +++ b/third_party/WebKit/LayoutTests/editing/selection/internal-caret-rect-expected.txt
@@ -1,6 +1,6 @@ Bug 86390: Expose FrameSelection::absoluteCaretBounds via window.internals -This test demonstrates the usage of window.internals.absoluteCaretBounds() +This test demonstrates the usage of internals.absoluteCaretBounds() abcd PASS caretRects[0].left is 8
diff --git a/third_party/WebKit/LayoutTests/editing/selection/internal-caret-rect.html b/third_party/WebKit/LayoutTests/editing/selection/internal-caret-rect.html index 4488562..8111b9a 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/internal-caret-rect.html +++ b/third_party/WebKit/LayoutTests/editing/selection/internal-caret-rect.html
@@ -11,7 +11,7 @@ </head> <body> <p> Bug <a href="http://webkit.org/b/86390">86390</a>: Expose FrameSelection::absoluteCaretBounds via window.internals</p> -<p>This test demonstrates the usage of window.internals.absoluteCaretBounds()</p> +<p>This test demonstrates the usage of internals.absoluteCaretBounds()</p> <div id="testDiv" CONTENTEDITABLE>abcd</div> <div id="console"></div> </body>
diff --git a/third_party/WebKit/LayoutTests/editing/selection/legal-positions.html b/third_party/WebKit/LayoutTests/editing/selection/legal-positions.html index f87f80c4..573b1e4 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/legal-positions.html +++ b/third_party/WebKit/LayoutTests/editing/selection/legal-positions.html
@@ -28,7 +28,7 @@ var r; if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); // The textnode s.setBaseAndExtent(e, 0, e, 1);
diff --git a/third_party/WebKit/LayoutTests/editing/selection/rangeCount.html b/third_party/WebKit/LayoutTests/editing/selection/rangeCount.html index 6360485..acbaf031b 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/rangeCount.html +++ b/third_party/WebKit/LayoutTests/editing/selection/rangeCount.html
@@ -13,7 +13,7 @@ try { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var div = document.getElementById("div"); var text = div.firstChild;
diff --git a/third_party/WebKit/LayoutTests/editing/selection/readonly-disabled-hittest.html b/third_party/WebKit/LayoutTests/editing/selection/readonly-disabled-hittest.html index 611b5bdb..af9958d7 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/readonly-disabled-hittest.html +++ b/third_party/WebKit/LayoutTests/editing/selection/readonly-disabled-hittest.html
@@ -11,7 +11,7 @@ if (!window.eventSender) return; - if (!window.eventSender.gestureLongPress) { + if (!eventSender.gestureLongPress) { debug("gestureLongPress not implemented by this platform."); debug("Manullay long press on every element in the page and check whether Paste Popup is appearing or not"); debug("If Paste popup is appearing for readonly or disabled input/textarea, then it's a failure."); @@ -51,7 +51,7 @@ var middleX = (bounds.left + bounds.right) / 2; var middleY = (bounds.top + bounds.bottom) / 2; // Touch directly in the center of the element. - window.eventSender.gestureLongPress(middleX, middleY); + eventSender.gestureLongPress(middleX, middleY); var touchNode = document.elementFromPoint(middleX, middleY); shouldBe(touchNode.id, elementId); }
diff --git a/third_party/WebKit/LayoutTests/editing/selection/readonly-disabled-text-selection.html b/third_party/WebKit/LayoutTests/editing/selection/readonly-disabled-text-selection.html index 4193d43..328effa 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/readonly-disabled-text-selection.html +++ b/third_party/WebKit/LayoutTests/editing/selection/readonly-disabled-text-selection.html
@@ -2,7 +2,7 @@ <script src="../../resources/js-test.js"></script> <script> onload = function() { - if (!window.eventSender || !window.eventSender.gestureLongPress) { + if (!window.eventSender || !eventSender.gestureLongPress) { debug("gestureLongPress not implemented by this platform."); debug("Manullay long press on every element in the page and check whether Text selection is happening or not"); debug("If Text selection is not happening for readonly or disabled input/textarea, then it's a failure."); @@ -31,7 +31,7 @@ var bounds = element.getBoundingClientRect(); var x = bounds.left + 5; var y = bounds.top + 5; - window.eventSender.gestureLongPress(x, y); + eventSender.gestureLongPress(x, y); shouldBeEqualToString('window.getSelection().toString()', element.value); } </script>
diff --git a/third_party/WebKit/LayoutTests/editing/selection/removeAllRanges.html b/third_party/WebKit/LayoutTests/editing/selection/removeAllRanges.html index a2afc5dc..1c02cd3 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/removeAllRanges.html +++ b/third_party/WebKit/LayoutTests/editing/selection/removeAllRanges.html
@@ -3,8 +3,8 @@ <script> if (window.testRunner) { - window.testRunner.dumpEditingCallbacks(); - window.testRunner.dumpAsText(); + testRunner.dumpEditingCallbacks(); + testRunner.dumpAsText(); } var sel = window.getSelection(); var div = document.getElementById("div");
diff --git a/third_party/WebKit/LayoutTests/editing/selection/replaced-boundaries-1.html b/third_party/WebKit/LayoutTests/editing/selection/replaced-boundaries-1.html index 4aac04a9..eeadcfcc 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/replaced-boundaries-1.html +++ b/third_party/WebKit/LayoutTests/editing/selection/replaced-boundaries-1.html
@@ -4,7 +4,7 @@ <script> function editingTest() { if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); selectAllCommand(); moveSelectionForwardByCharacterCommand(); extendSelectionBackwardByCharacterCommand();
diff --git a/third_party/WebKit/LayoutTests/editing/selection/replaced-boundaries-2.html b/third_party/WebKit/LayoutTests/editing/selection/replaced-boundaries-2.html index 63e0417..2442d88 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/replaced-boundaries-2.html +++ b/third_party/WebKit/LayoutTests/editing/selection/replaced-boundaries-2.html
@@ -4,7 +4,7 @@ <script> function editingTest() { if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); selectAllCommand(); moveSelectionBackwardByCharacterCommand(); extendSelectionForwardByCharacterCommand();
diff --git a/third_party/WebKit/LayoutTests/editing/selection/replaced-boundaries-3.html b/third_party/WebKit/LayoutTests/editing/selection/replaced-boundaries-3.html index 256f53d..3c7b640 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/replaced-boundaries-3.html +++ b/third_party/WebKit/LayoutTests/editing/selection/replaced-boundaries-3.html
@@ -4,7 +4,7 @@ <script> function editingTest() { if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); selectAllCommand(); moveSelectionBackwardByCharacterCommand(); extendSelectionForwardByLineCommand();
diff --git a/third_party/WebKit/LayoutTests/editing/selection/select-line.html b/third_party/WebKit/LayoutTests/editing/selection/select-line.html index 2c59952..f88b3e3 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/select-line.html +++ b/third_party/WebKit/LayoutTests/editing/selection/select-line.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var div = document.getElementById("div"); var sel = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/editing/selection/selection-background.html b/third_party/WebKit/LayoutTests/editing/selection/selection-background.html index 29e2239..a0a2355 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/selection-background.html +++ b/third_party/WebKit/LayoutTests/editing/selection/selection-background.html
@@ -9,8 +9,8 @@ function runTest() { if (window.testRunner) { - window.testRunner.setWindowIsKey(false); - window.testRunner.setMainFrameIsFirstResponder(false); + testRunner.setWindowIsKey(false); + testRunner.setMainFrameIsFirstResponder(false); } var s = window.getSelection(); var e = document.getElementById("selectme");
diff --git a/third_party/WebKit/LayoutTests/editing/selection/skip-non-editable-1.html b/third_party/WebKit/LayoutTests/editing/selection/skip-non-editable-1.html index 9a3a40b..6d2c794 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/skip-non-editable-1.html +++ b/third_party/WebKit/LayoutTests/editing/selection/skip-non-editable-1.html
@@ -43,7 +43,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var s = window.getSelection(); var e1 = document.getElementById("e1");
diff --git a/third_party/WebKit/LayoutTests/editing/selection/skip-non-editable-2.html b/third_party/WebKit/LayoutTests/editing/selection/skip-non-editable-2.html index 8af5a43..651584f 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/skip-non-editable-2.html +++ b/third_party/WebKit/LayoutTests/editing/selection/skip-non-editable-2.html
@@ -31,7 +31,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var s = window.getSelection(); var e1 = document.getElementById("e1");
diff --git a/third_party/WebKit/LayoutTests/editing/selection/skip-non-editable-rtl.html b/third_party/WebKit/LayoutTests/editing/selection/skip-non-editable-rtl.html index f4849fc..25ed069 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/skip-non-editable-rtl.html +++ b/third_party/WebKit/LayoutTests/editing/selection/skip-non-editable-rtl.html
@@ -43,7 +43,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var s = window.getSelection(); var e1 = document.getElementById("e1");
diff --git a/third_party/WebKit/LayoutTests/editing/selection/toString.html b/third_party/WebKit/LayoutTests/editing/selection/toString.html index e176d1c..def37e9a 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/toString.html +++ b/third_party/WebKit/LayoutTests/editing/selection/toString.html
@@ -13,7 +13,7 @@ function runTest() { try { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var selection = window.getSelection(); var element = document.getElementById("test");
diff --git a/third_party/WebKit/LayoutTests/editing/selection/transformed-selection-rects.html b/third_party/WebKit/LayoutTests/editing/selection/transformed-selection-rects.html index b7df488f..25a59ea 100644 --- a/third_party/WebKit/LayoutTests/editing/selection/transformed-selection-rects.html +++ b/third_party/WebKit/LayoutTests/editing/selection/transformed-selection-rects.html
@@ -19,7 +19,7 @@ internals.settings.setEditingBehavior('mac'); function editingTest() { if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var selection = window.getSelection(); var testNode = document.getElementById('test');
diff --git a/third_party/WebKit/LayoutTests/editing/spelling/spellcheck_test.js b/third_party/WebKit/LayoutTests/editing/spelling/spellcheck_test.js index 003bf96a..e5d5410 100644 --- a/third_party/WebKit/LayoutTests/editing/spelling/spellcheck_test.js +++ b/third_party/WebKit/LayoutTests/editing/spelling/spellcheck_test.js
@@ -129,9 +129,9 @@ // Recompute the current active marker and the next check point this.activeMarkerRanges_[type] = null; /** @type {number} */ - const markerCount = window.internals.markerCountForNode(node, type); + const markerCount = internals.markerCountForNode(node, type); for (let i = 0; i < markerCount; ++i) { - const marker = window.internals.markerRangeForNode(node, type, i); + const marker = internals.markerRangeForNode(node, type, i); assert_equals( marker.startContainer, node, 'Internal error: marker range not starting in the annotated node.'); @@ -444,8 +444,8 @@ } if (window.testRunner) { - window.testRunner.setMockSpellCheckerEnabled(true); - window.testRunner.setSpellCheckResolvedCallback(() => { + testRunner.setMockSpellCheckerEnabled(true); + testRunner.setSpellCheckResolvedCallback(() => { if (verificationForCurrentTest) verificationForCurrentTest(); });
diff --git a/third_party/WebKit/LayoutTests/editing/style/4230923.html b/third_party/WebKit/LayoutTests/editing/style/4230923.html index 6baf4df..655150824 100644 --- a/third_party/WebKit/LayoutTests/editing/style/4230923.html +++ b/third_party/WebKit/LayoutTests/editing/style/4230923.html
@@ -3,7 +3,7 @@ <script> function runTest() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); window.getSelection().collapse(document.body, 0); document.execCommand("JustifyCenter"); document.body.innerText = "This tests to make sure that changing block properties of content whose enclosing block is the body doesn't put those properties on the body, since Mail finds it difficult to remove those properties later when necessary. Below is the DOM inside the body. There should be a div with text-align:center on it.\n\n" + document.body.innerHTML;
diff --git a/third_party/WebKit/LayoutTests/editing/style/text-indent.html b/third_party/WebKit/LayoutTests/editing/style/text-indent.html index 89334a5..b6d6e73 100644 --- a/third_party/WebKit/LayoutTests/editing/style/text-indent.html +++ b/third_party/WebKit/LayoutTests/editing/style/text-indent.html
@@ -50,7 +50,7 @@ } if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var output = ""; output += testTextIndent("<input id='textIndentTest' type='text' style='text-indent:30px;'></input>", 0);
diff --git a/third_party/WebKit/LayoutTests/editing/undo/4059423-1.html b/third_party/WebKit/LayoutTests/editing/undo/4059423-1.html index 976b55d..b02ea39 100644 --- a/third_party/WebKit/LayoutTests/editing/undo/4059423-1.html +++ b/third_party/WebKit/LayoutTests/editing/undo/4059423-1.html
@@ -2,7 +2,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); edit = document.getElementById("edit"); window.getSelection().collapse(edit, 0); document.execCommand("SelectAll");
diff --git a/third_party/WebKit/LayoutTests/editing/undo/4059423-2.html b/third_party/WebKit/LayoutTests/editing/undo/4059423-2.html index 362ba8c..3fe7bcdc 100644 --- a/third_party/WebKit/LayoutTests/editing/undo/4059423-2.html +++ b/third_party/WebKit/LayoutTests/editing/undo/4059423-2.html
@@ -2,7 +2,7 @@ <script> function runTest() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); window.getSelection().collapse(document.body, 0); document.execCommand("InsertText", false, "foo"); div = document.createElement("div");
diff --git a/third_party/WebKit/LayoutTests/editing/undo/5658727.html b/third_party/WebKit/LayoutTests/editing/undo/5658727.html index 5cd210e..7b9b931 100644 --- a/third_party/WebKit/LayoutTests/editing/undo/5658727.html +++ b/third_party/WebKit/LayoutTests/editing/undo/5658727.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); textarea = document.getElementById("textarea"); textarea.focus();
diff --git a/third_party/WebKit/LayoutTests/editing/undo/5738768.html b/third_party/WebKit/LayoutTests/editing/undo/5738768.html index f972a4b..5c41249 100644 --- a/third_party/WebKit/LayoutTests/editing/undo/5738768.html +++ b/third_party/WebKit/LayoutTests/editing/undo/5738768.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.getElementById("input").focus(); document.execCommand("InsertText", false, "x"); document.execCommand("Undo");
diff --git a/third_party/WebKit/LayoutTests/editing/undo/undo-after-event-edited.html b/third_party/WebKit/LayoutTests/editing/undo/undo-after-event-edited.html index 5148c5e..c93bc86 100644 --- a/third_party/WebKit/LayoutTests/editing/undo/undo-after-event-edited.html +++ b/third_party/WebKit/LayoutTests/editing/undo/undo-after-event-edited.html
@@ -8,8 +8,8 @@ <script> if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } document.designMode = "on"; @@ -26,7 +26,7 @@ srcElement.textContent = "Pass. Test didn't crash."; eventHandlerActive = false; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } document.addEventListener("webkitEditableContentChanged", event_handler_webkitEditableContentChanged, true);
diff --git a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json index 343825a5..dac1f6c 100644 --- a/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json +++ b/third_party/WebKit/LayoutTests/external/WPT_BASE_MANIFEST.json
@@ -143356,6 +143356,11 @@ {} ] ], + "html/dom/dynamic-markup-insertion/document-write/contentType.window-expected.txt": [ + [ + {} + ] + ], "html/dom/dynamic-markup-insertion/document-write/empty.html": [ [ {} @@ -183511,6 +183516,12 @@ {} ] ], + "css/css-display/display-list-item-height-after-dom-change.html": [ + [ + "/css/css-display/display-list-item-height-after-dom-change.html", + {} + ] + ], "css/css-flexbox/display_flex_exist.html": [ [ "/css/css-flexbox/display_flex_exist.html", @@ -201465,6 +201476,12 @@ {} ] ], + "html/dom/dynamic-markup-insertion/document-write/contentType.window.js": [ + [ + "/html/dom/dynamic-markup-insertion/document-write/contentType.window.html", + {} + ] + ], "html/dom/dynamic-markup-insertion/document-write/document.write-01.xhtml": [ [ "/html/dom/dynamic-markup-insertion/document-write/document.write-01.xhtml", @@ -283296,6 +283313,10 @@ "f7d3cda238b0209165a77571c59af0701bcede17", "reftest" ], + "css/css-display/display-list-item-height-after-dom-change.html": [ + "3f4efe05678b7a3faac63fa98822d1711e2a54ae", + "testharness" + ], "css/css-display/support/acid.css": [ "5be41ca173eada98ac9b52b3b00732347690934e", "support" @@ -341932,6 +341953,14 @@ "e3e7f3973cf8f9b466d4f22d1ec3b9b9241fb906", "support" ], + "html/dom/dynamic-markup-insertion/document-write/contentType.window-expected.txt": [ + "8fcd5137f518a1281ffea0d9c6cd646a29c323c0", + "support" + ], + "html/dom/dynamic-markup-insertion/document-write/contentType.window.js": [ + "f39e34dec9f0a9ca12e76085a26b567dff96dc55", + "testharness" + ], "html/dom/dynamic-markup-insertion/document-write/document.write-01.xhtml": [ "3b309503bf8f002712eafba1d5e7a1f3f743d7e1", "testharness"
diff --git a/third_party/WebKit/LayoutTests/external/wpt/cookie-store/OWNERS b/third_party/WebKit/LayoutTests/external/wpt/cookie-store/OWNERS index 30980240..22c700cd 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/cookie-store/OWNERS +++ b/third_party/WebKit/LayoutTests/external/wpt/cookie-store/OWNERS
@@ -1,5 +1,5 @@ # TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage +# COMPONENT: Blink>Storage>CookiesAPI # WPT-NOTIFY: true -bsittler@chromium.org pwnall@chromium.org +jsbell@chromium.org
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/dom/dynamic-markup-insertion/document-write/contentType.window-expected.txt b/third_party/WebKit/LayoutTests/external/wpt/html/dom/dynamic-markup-insertion/document-write/contentType.window-expected.txt new file mode 100644 index 0000000..ff3d352f --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/dom/dynamic-markup-insertion/document-write/contentType.window-expected.txt
@@ -0,0 +1,7 @@ +This is a testharness.js-based test. +FAIL document.write(): video document Cannot read property 'firstChild' of null +FAIL document.write(): image document Cannot read property 'firstChild' of null +PASS document.write(): text document +PASS document.write(): HTML document +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/dom/dynamic-markup-insertion/document-write/contentType.window.js b/third_party/WebKit/LayoutTests/external/wpt/html/dom/dynamic-markup-insertion/document-write/contentType.window.js new file mode 100644 index 0000000..dbabb1b --- /dev/null +++ b/third_party/WebKit/LayoutTests/external/wpt/html/dom/dynamic-markup-insertion/document-write/contentType.window.js
@@ -0,0 +1,28 @@ +// META: script=/common/media.js + +const videoURL = getVideoURI("/images/pattern"), + videoMIMEType = getMediaContentType(videoURL); + +[ + [videoURL, videoMIMEType, "video"], + ["/images/red.png", "image/png", "image"], + ["/common/text-plain.txt", "text/plain", "text"], + ["/common/blank.html", "text/html", "HTML"] +].forEach(val => { + async_test(t => { + const frame = document.body.appendChild(document.createElement("iframe")); + t.add_cleanup(() => frame.remove()); + frame.src = val[0]; + frame.onload = t.step_func_done(() => { + assert_equals(frame.contentDocument.contentType, val[1]); + frame.contentDocument.write("<b>Heya</b>"); + assert_equals(frame.contentDocument.body.firstChild.localName, "b"); + assert_equals(frame.contentDocument.body.firstChild.textContent, "Heya"); + assert_equals(frame.contentDocument.contentType, val[1]); + + // Make sure a load event is fired across browsers + // https://github.com/w3c/web-platform-tests/pull/10239 + frame.contentDocument.close(); + }); + }, "document.write(): " + val[2] + " document"); +});
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webstorage/OWNERS b/third_party/WebKit/LayoutTests/external/wpt/webstorage/OWNERS index 87788a2..5f5f8d3 100644 --- a/third_party/WebKit/LayoutTests/external/wpt/webstorage/OWNERS +++ b/third_party/WebKit/LayoutTests/external/wpt/webstorage/OWNERS
@@ -1,6 +1,5 @@ # TEAM: storage-dev@chromium.org # COMPONENT: Blink>Storage>DOMStorage # WPT-NOTIFY: true -michaeln@chromium.org jsbell@chromium.org mek@chromium.org
diff --git a/third_party/WebKit/LayoutTests/fast/animation/request-animation-frame-callback-id.html b/third_party/WebKit/LayoutTests/fast/animation/request-animation-frame-callback-id.html index 67e9b204..a5e9c84 100644 --- a/third_party/WebKit/LayoutTests/fast/animation/request-animation-frame-callback-id.html +++ b/third_party/WebKit/LayoutTests/fast/animation/request-animation-frame-callback-id.html
@@ -1,7 +1,7 @@ <script> if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } function runTest() { @@ -14,7 +14,7 @@ results.innerText = "FAILED: Callback id was <= 0"; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } window.addEventListener("load", runTest, false);
diff --git a/third_party/WebKit/LayoutTests/fast/backgrounds/background-repeat-computed-style.html b/third_party/WebKit/LayoutTests/fast/backgrounds/background-repeat-computed-style.html index f2cf7bcd..cfeb0195 100644 --- a/third_party/WebKit/LayoutTests/fast/backgrounds/background-repeat-computed-style.html +++ b/third_party/WebKit/LayoutTests/fast/backgrounds/background-repeat-computed-style.html
@@ -19,7 +19,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> <div id="case1" class="testDiv" style="background-repeat:repeat-x">This div should have a horizontal repeating background (background-repeat:repeat-x)</div> <div id="case2" class="testDiv" style="background-repeat:repeat-y">This div should have a vertical repeating background (background-repeat:repeat-y)</div>
diff --git a/third_party/WebKit/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize.html b/third_party/WebKit/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize.html index f04969e..6c77083 100644 --- a/third_party/WebKit/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize.html +++ b/third_party/WebKit/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize.html
@@ -8,7 +8,7 @@ var e = document.getElementById('test'); if (window.internals) { - window.internals.settings.setUseLegacyBackgroundSizeShorthandBehavior(true); + internals.settings.setUseLegacyBackgroundSizeShorthandBehavior(true); e.style.backgroundSize = "cover"; e.style.background = "center red url(dummy://test.png) no-repeat border-box"; @@ -16,7 +16,7 @@ shouldBeEqualToString("e.style.backgroundSize", 'cover'); debug("") - window.internals.settings.setUseLegacyBackgroundSizeShorthandBehavior(false); + internals.settings.setUseLegacyBackgroundSizeShorthandBehavior(false); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/block/block-size-integer-overflow.html b/third_party/WebKit/LayoutTests/fast/block/block-size-integer-overflow.html index 8e5b0a2..b726e62 100644 --- a/third_party/WebKit/LayoutTests/fast/block/block-size-integer-overflow.html +++ b/third_party/WebKit/LayoutTests/fast/block/block-size-integer-overflow.html
@@ -12,7 +12,7 @@ <script> window.onload = function() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var spacer = document.getElementById("spacer"); if (spacer.offsetWidth > 0) {
diff --git a/third_party/WebKit/LayoutTests/fast/block/float/float-reparent-during-detach-crash.html b/third_party/WebKit/LayoutTests/fast/block/float/float-reparent-during-detach-crash.html index 66cac45..65feb12 100644 --- a/third_party/WebKit/LayoutTests/fast/block/float/float-reparent-during-detach-crash.html +++ b/third_party/WebKit/LayoutTests/fast/block/float/float-reparent-during-detach-crash.html
@@ -14,7 +14,7 @@ </ruby> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.execCommand("SelectAll"); window.getSelection().deleteFromDocument(); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/borders/border-image-reset-by-border-shorthand.html b/third_party/WebKit/LayoutTests/fast/borders/border-image-reset-by-border-shorthand.html index 3680c388..307d29124 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/border-image-reset-by-border-shorthand.html +++ b/third_party/WebKit/LayoutTests/fast/borders/border-image-reset-by-border-shorthand.html
@@ -12,7 +12,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function runTest() {
diff --git a/third_party/WebKit/LayoutTests/fast/borders/border-image-slice-omission.html b/third_party/WebKit/LayoutTests/fast/borders/border-image-slice-omission.html index 90d2a70..43f1549f 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/border-image-slice-omission.html +++ b/third_party/WebKit/LayoutTests/fast/borders/border-image-slice-omission.html
@@ -2,7 +2,7 @@ <head> <script> if (window.testRunner) - window.testRunner.dumpAsText() + testRunner.dumpAsText() function runTest() {
diff --git a/third_party/WebKit/LayoutTests/fast/borders/extreme-outline-offset-crash.html b/third_party/WebKit/LayoutTests/fast/borders/extreme-outline-offset-crash.html index 91d1e95..415f623 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/extreme-outline-offset-crash.html +++ b/third_party/WebKit/LayoutTests/fast/borders/extreme-outline-offset-crash.html
@@ -9,5 +9,5 @@ This test passes if it does not crash. <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/fast/borders/negative-border-width.html b/third_party/WebKit/LayoutTests/fast/borders/negative-border-width.html index 3328e44..1c9facf2 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/negative-border-width.html +++ b/third_party/WebKit/LayoutTests/fast/borders/negative-border-width.html
@@ -11,7 +11,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/fast/borders/overflow-hidden-border-radius-force-backing-store.html b/third_party/WebKit/LayoutTests/fast/borders/overflow-hidden-border-radius-force-backing-store.html index 8ee2297..1125ba0 100644 --- a/third_party/WebKit/LayoutTests/fast/borders/overflow-hidden-border-radius-force-backing-store.html +++ b/third_party/WebKit/LayoutTests/fast/borders/overflow-hidden-border-radius-force-backing-store.html
@@ -30,14 +30,14 @@ <script type="text/javascript"> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function runTest() { if (!window.internals) return; - document.getElementById('layers').innerHTML = window.internals.layerTreeAsText(document); + document.getElementById('layers').innerHTML = internals.layerTreeAsText(document); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/box-shadow/box-shadow-clipped-slices.html b/third_party/WebKit/LayoutTests/fast/box-shadow/box-shadow-clipped-slices.html index 9247e3a..40a7957 100644 --- a/third_party/WebKit/LayoutTests/fast/box-shadow/box-shadow-clipped-slices.html +++ b/third_party/WebKit/LayoutTests/fast/box-shadow/box-shadow-clipped-slices.html
@@ -1,7 +1,7 @@ <html><head> <script type=text/javascript> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> <style type=text/css> .rounded { border: 2px solid black; border-radius: 5px / 10px; box-shadow: -150px 0 30px 200px #999; width: 400px; height: 200px; position: relative }
diff --git a/third_party/WebKit/LayoutTests/fast/box-shadow/box-shadow-currentcolor.html b/third_party/WebKit/LayoutTests/fast/box-shadow/box-shadow-currentcolor.html index 6359cc1..e517ae1 100644 --- a/third_party/WebKit/LayoutTests/fast/box-shadow/box-shadow-currentcolor.html +++ b/third_party/WebKit/LayoutTests/fast/box-shadow/box-shadow-currentcolor.html
@@ -13,7 +13,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/fast/box-shadow/no-blur-multiple-offsets.html b/third_party/WebKit/LayoutTests/fast/box-shadow/no-blur-multiple-offsets.html index 65e2973..51f8aca 100644 --- a/third_party/WebKit/LayoutTests/fast/box-shadow/no-blur-multiple-offsets.html +++ b/third_party/WebKit/LayoutTests/fast/box-shadow/no-blur-multiple-offsets.html
@@ -17,7 +17,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> Divs with green no-blur shadows and offsets (x,y) listed. <div id="container">
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-createImageBitmap-immutable.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-createImageBitmap-immutable.html index 739cb46d..31f78a5f1f 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-createImageBitmap-immutable.html +++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-createImageBitmap-immutable.html
@@ -2,7 +2,7 @@ <body> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function shouldNotBeCalled() { testFailed("Promise was rejected."); @@ -130,7 +130,7 @@ var checkNum = 0; function checkIfDone() { if (++checkNum == 8 && window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-font-cache.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-font-cache.html index b9c2c7c..2d0f7eb 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-font-cache.html +++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-font-cache.html
@@ -7,7 +7,7 @@ // The reason this is implemented as a layout test instead of a unit test (see CanvasFontCacheTest.cpp) // is to exercise interactions with animation frames. var cacheLimit = 0; - cacheLimit = window.internals.canvasFontCacheMaxFonts(); + cacheLimit = internals.canvasFontCacheMaxFonts(); requestAnimationFrame(step1); var ctx = document.getElementById('c').getContext('2d');
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-putImageData-expected.txt b/third_party/WebKit/LayoutTests/fast/canvas/canvas-putImageData-expected.txt deleted file mode 100644 index f239532..0000000 --- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-putImageData-expected.txt +++ /dev/null
@@ -1,66 +0,0 @@ -This is a testharness.js-based test. -PASS PixelTestBasicDrawing 1 -PASS PixelTestBasicDrawing 2 -PASS PixelTestBasicDrawing 3 -PASS PixelTestBasicDrawing 4 -PASS PixelTestBasicDrawing 5 -PASS PixelTestBasicDrawing 6 -PASS PixelTestBasicDrawing 7 -PASS PixelTestPositionedDrawing 1 -PASS PixelTestPositionedDrawing 2 -PASS PixelTestPositionedDrawing 3 -PASS PixelTestPositionedDrawing 4 -PASS PixelTestPositionedDrawing 5 -PASS PixelTestTranslation 1 -PASS PixelTestTranslation 2 -PASS PixelTestTranslation 3 -PASS PixelTestTranslation 4 -PASS Test dirty rect handling. -PASS Test drawing outside the canvas border. -PASS test drawing with non-intersecting dirty rect. -PASS Test drawing to region intersect edge of canvas. -PASS PixelTestRegionIntersectLeftEdge 1 -PASS PixelTestRegionIntersectLeftEdge 2 -PASS PixelTestRegionIntersectLeftEdge 3 -PASS PixelTestRegionIntersectRightEdge 1 -PASS PixelTestRegionIntersectRightEdge 2 -PASS PixelTestRegionIntersectRightEdge 3 -PASS PixelTestRegionIntersectTopEdge 1 -PASS PixelTestRegionIntersectTopEdge 2 -PASS PixelTestRegionIntersectTopEdge 3 -PASS PixelTestRegionIntersectBototmEdge 1 -PASS PixelTestRegionIntersectBototmEdge 2 -PASS PixelTestRegionIntersectBototmEdge 3 -PASS Test drawing with only part of the dirty region intersecting the window. -PASS PixelTestDirtyRegionIntersectLeftEdge 1 -PASS PixelTestDirtyRegionIntersectLeftEdge 2 -PASS PixelTestDirtyRegionIntersectLeftEdge 3 -PASS PixelTestDirtyRegionIntersectLeftEdge 4 -PASS PixelTestDirtyRegionIntersectLeftEdge 5 -PASS PixelTestDirtyRegionIntersectLeftEdge 6 -PASS PixelTestDirtyRegionIntersectRightEdge 1 -PASS PixelTestDirtyRegionIntersectRightEdge 2 -PASS PixelTestDirtyRegionIntersectRightEdge 3 -PASS PixelTestDirtyRegionIntersectRightEdge 4 -PASS PixelTestDirtyRegionIntersectRightEdge 5 -PASS PixelTestDirtyRegionIntersectRightEdge 6 -PASS PixelTestDirtyRegionIntersectTopEdge 1 -PASS PixelTestDirtyRegionIntersectTopEdge 2 -PASS PixelTestDirtyRegionIntersectTopEdge 3 -PASS PixelTestDirtyRegionIntersectTopEdge 4 -PASS PixelTestDirtyRegionIntersectTopEdge 5 -PASS PixelTestDirtyRegionIntersectTopEdge 6 -PASS PixelTestDirtyRegionIntersectBottomEdge 1 -PASS PixelTestDirtyRegionIntersectBottomEdge 2 -PASS PixelTestDirtyRegionIntersectBottomEdge 3 -PASS PixelTestDirtyRegionIntersectBottomEdge 4 -PASS PixelTestDirtyRegionIntersectBottomEdge 5 -PASS PixelTestDirtyRegionIntersectBottomEdge 6 -PASS Test clamping of dx/dy. -PASS Test clamping of dirtyX/Y/Width/Height. -FAIL TestInvalidParam 1 Test bug: need to pass exception to assert_throws() -FAIL TestInvalidParam 2 Test bug: need to pass exception to assert_throws() -FAIL TestInvalidParam 3 Test bug: need to pass exception to assert_throws() -PASS Ensure we don't mess up bounds clipping checks. -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-putImageData.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-putImageData.html index 405681a..14c629e 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-putImageData.html +++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-putImageData.html
@@ -241,9 +241,9 @@ }, "Test clamping of dirtyX/Y/Width/Height."); var testInvalidParams = [ - ['TestInvalidParam 1', null, function() {context.putImageData({}, 0, 0);}], - ['TestInvalidParam 2', null, function() {context.putImageData(null, 0, 0, 0, 0, 0, 0);}], - ['TestInvalidParam 3', null, function() {context.putImageData(undefined, 0, 0, 0, 0, 0, 0);}], + ['TestInvalidParam 1', new TypeError, function() {context.putImageData({}, 0, 0);}], + ['TestInvalidParam 2', new TypeError, function() {context.putImageData(null, 0, 0, 0, 0, 0, 0);}], + ['TestInvalidParam 3', new TypeError, function() {context.putImageData(undefined, 0, 0, 0, 0, 0, 0);}], ];
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-text-baseline-tiny-fonts.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-text-baseline-tiny-fonts.html index 486b840..e833cef 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-text-baseline-tiny-fonts.html +++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-text-baseline-tiny-fonts.html
@@ -6,7 +6,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); function draw() { // The code works fine with 1px font size, however testing that makes
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-toBlob-webp-maximum-quality.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-toBlob-webp-maximum-quality.html index e9e3e8d..0cca6a3b 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-toBlob-webp-maximum-quality.html +++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-toBlob-webp-maximum-quality.html
@@ -19,7 +19,7 @@ result.onload = function() { if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }; canvas.toBlob(function(blob) {
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-toDataURL-jpeg-maximum-quality.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-toDataURL-jpeg-maximum-quality.html index fadcbb34..5b8df6a 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-toDataURL-jpeg-maximum-quality.html +++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-toDataURL-jpeg-maximum-quality.html
@@ -4,8 +4,8 @@ <script> if (window.testRunner) { - window.testRunner.dumpAsTextWithPixelResults(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsTextWithPixelResults(); + testRunner.waitUntilDone(); } var image = new Image(); @@ -22,7 +22,7 @@ result.src = canvas.toDataURL('image/jpeg', 1.0); document.body.style.zoom = 1.3; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }, 0); };
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-toDataURL-webp-alpha.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-toDataURL-webp-alpha.html index 2d4f393..e15b37c 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-toDataURL-webp-alpha.html +++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-toDataURL-webp-alpha.html
@@ -6,8 +6,8 @@ <script> if (window.testRunner) { - window.testRunner.dumpAsTextWithPixelResults(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsTextWithPixelResults(); + testRunner.waitUntilDone(); } var image = new Image(); @@ -26,7 +26,7 @@ result.src = dataURL; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }; image.src = 'resources/html5.png';
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-toDataURL-webp-maximum-quality.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-toDataURL-webp-maximum-quality.html index 8b61c2d..aa85651 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-toDataURL-webp-maximum-quality.html +++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-toDataURL-webp-maximum-quality.html
@@ -5,8 +5,8 @@ <script> if (window.testRunner) { - window.testRunner.dumpAsTextWithPixelResults(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsTextWithPixelResults(); + testRunner.waitUntilDone(); } var image = new Image(); @@ -25,7 +25,7 @@ result.src = dataURL; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }; image.src = "resources/letters.png";
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/canvas-toDataURL-webp.html b/third_party/WebKit/LayoutTests/fast/canvas/canvas-toDataURL-webp.html index fc12902..a36b4f6 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/canvas-toDataURL-webp.html +++ b/third_party/WebKit/LayoutTests/fast/canvas/canvas-toDataURL-webp.html
@@ -5,8 +5,8 @@ <script> if (window.testRunner) { - window.testRunner.dumpAsTextWithPixelResults(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsTextWithPixelResults(); + testRunner.waitUntilDone(); } var image = new Image(); @@ -30,7 +30,7 @@ document.body.style.zoom = 1.3; // zoom in to see the low quality if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }, 0); };
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/pixelated-canvas.html b/third_party/WebKit/LayoutTests/fast/canvas/pixelated-canvas.html index 10c2682..9526882e 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/pixelated-canvas.html +++ b/third_party/WebKit/LayoutTests/fast/canvas/pixelated-canvas.html
@@ -19,7 +19,7 @@ <script> // Ignore the render tree. if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); function drawToCanvas(canvas) { var ctx = canvas.getContext("2d")
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/pixelated-off-screen-expected.html b/third_party/WebKit/LayoutTests/fast/canvas/pixelated-off-screen-expected.html index 963c9b47..26fd80e 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/pixelated-off-screen-expected.html +++ b/third_party/WebKit/LayoutTests/fast/canvas/pixelated-off-screen-expected.html
@@ -14,7 +14,7 @@ <script> // Ignore the render tree. if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); var canvas = document.getElementsByTagName("canvas")[0]; var context = canvas.getContext("2d");
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/pixelated-off-screen.html b/third_party/WebKit/LayoutTests/fast/canvas/pixelated-off-screen.html index a0f05b5..a491eae 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/pixelated-off-screen.html +++ b/third_party/WebKit/LayoutTests/fast/canvas/pixelated-off-screen.html
@@ -13,7 +13,7 @@ <script> // Ignore the render tree. if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); var canvas = document.createElement('canvas'); canvas.width = 2;
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/pixelated-resize.html b/third_party/WebKit/LayoutTests/fast/canvas/pixelated-resize.html index 723a0d5fb..d3ff850 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/pixelated-resize.html +++ b/third_party/WebKit/LayoutTests/fast/canvas/pixelated-resize.html
@@ -18,7 +18,7 @@ <script> // Ignore the render tree. if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); function drawToCanvas(canvas) { var ctx = canvas.getContext("2d")
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/pixelated.html b/third_party/WebKit/LayoutTests/fast/canvas/pixelated.html index 3b895d1..3da5bd0 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/pixelated.html +++ b/third_party/WebKit/LayoutTests/fast/canvas/pixelated.html
@@ -23,7 +23,7 @@ <script> // Ignore the render tree. if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); function drawToCanvas(canvas) { var ctx = canvas.getContext("2d")
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/script-tests/canvas-lost-gpu-context.js b/third_party/WebKit/LayoutTests/fast/canvas/script-tests/canvas-lost-gpu-context.js index 808c629..37b06e10 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/script-tests/canvas-lost-gpu-context.js +++ b/third_party/WebKit/LayoutTests/fast/canvas/script-tests/canvas-lost-gpu-context.js
@@ -24,7 +24,7 @@ // because a rendering mode was fixed. verifyContextLost(false); - window.internals.loseSharedGraphicsContext3D(); + internals.loseSharedGraphicsContext3D(); // for the canvas to realize its Graphics context was lost we must try to // use the contents of the canvas -- that is, we must either try to present // the canvas or read from it (e.g. by calling getImageData)
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/synchronous-create-pattern.html b/third_party/WebKit/LayoutTests/fast/canvas/synchronous-create-pattern.html index e23fa362..4e2e304 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/synchronous-create-pattern.html +++ b/third_party/WebKit/LayoutTests/fast/canvas/synchronous-create-pattern.html
@@ -25,7 +25,7 @@ function drawPatternAndFinish() { // Advance the image one more time to the last frame. // The pattern should not be affected. - window.internals.advanceImageAnimation(image); + internals.advanceImageAnimation(image); context.fillStyle = pattern; context.fillRect(0, 0, 200, 200);
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/toDataURL-alpha-stability.html b/third_party/WebKit/LayoutTests/fast/canvas/toDataURL-alpha-stability.html index 3b3ea3e..a282e2b 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/toDataURL-alpha-stability.html +++ b/third_party/WebKit/LayoutTests/fast/canvas/toDataURL-alpha-stability.html
@@ -9,8 +9,8 @@ var autoTest = false; if (window.testRunner) { - window.testRunner.dumpAsTextWithPixelResults(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsTextWithPixelResults(); + testRunner.waitUntilDone(); autoTest = true; } @@ -83,7 +83,7 @@ { if (autoTest && nextItem > 70) { if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); return; }
diff --git a/third_party/WebKit/LayoutTests/fast/canvas/yuv-video-on-accelerated-canvas.html b/third_party/WebKit/LayoutTests/fast/canvas/yuv-video-on-accelerated-canvas.html index 493ad00..9b50d7e 100644 --- a/third_party/WebKit/LayoutTests/fast/canvas/yuv-video-on-accelerated-canvas.html +++ b/third_party/WebKit/LayoutTests/fast/canvas/yuv-video-on-accelerated-canvas.html
@@ -36,7 +36,7 @@ testRunner.waitUntilDone(); } if (window.internals) - window.internals.settings.setMinimumAccelerated2dCanvasSize(257*256); + internals.settings.setMinimumAccelerated2dCanvasSize(257*256); var hw_canvas = document.getElementById("hw-canvas"); var hw_ctx = hw_canvas.getContext("2d");
diff --git a/third_party/WebKit/LayoutTests/fast/compositor-wheel-scroll-latching/non-animated-scroll/subpixel-accumulation.html b/third_party/WebKit/LayoutTests/fast/compositor-wheel-scroll-latching/non-animated-scroll/subpixel-accumulation.html index 790a9f7..bc27e0e 100644 --- a/third_party/WebKit/LayoutTests/fast/compositor-wheel-scroll-latching/non-animated-scroll/subpixel-accumulation.html +++ b/third_party/WebKit/LayoutTests/fast/compositor-wheel-scroll-latching/non-animated-scroll/subpixel-accumulation.html
@@ -4,8 +4,8 @@ <script> let t; if (window.internals && chrome && chrome.gpuBenchmarking) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); - window.internals.settings.setScrollAnimatorEnabled(false); + internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setScrollAnimatorEnabled(false); t = async_test("Vertical scroll shouldn't latch to horizontal scroller."); }
diff --git a/third_party/WebKit/LayoutTests/fast/css-generated-content/pseudo-element-cursor.html b/third_party/WebKit/LayoutTests/fast/css-generated-content/pseudo-element-cursor.html index 3f82f1c..662a730 100644 --- a/third_party/WebKit/LayoutTests/fast/css-generated-content/pseudo-element-cursor.html +++ b/third_party/WebKit/LayoutTests/fast/css-generated-content/pseudo-element-cursor.html
@@ -28,6 +28,6 @@ debug("Hover your mouse over the red block, you should see the pointer cursor."); } else { eventSender.mouseMoveTo(2, 2); - debug("Cursor Info: " + window.internals.getCurrentCursorInfo()); + debug("Cursor Info: " + internals.getCurrentCursorInfo()); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/css-generated-content/quote-crash-93750.html b/third_party/WebKit/LayoutTests/fast/css-generated-content/quote-crash-93750.html index f10f8b6..85ad107 100644 --- a/third_party/WebKit/LayoutTests/fast/css-generated-content/quote-crash-93750.html +++ b/third_party/WebKit/LayoutTests/fast/css-generated-content/quote-crash-93750.html
@@ -7,7 +7,7 @@ </style> <script> - if (window.testRunner) window.testRunner.dumpAsText(); + if (window.testRunner) testRunner.dumpAsText(); onload = function(){ document.designMode = "on"; document.execCommand("SelectAll");
diff --git a/third_party/WebKit/LayoutTests/fast/css/annotated-regions.html b/third_party/WebKit/LayoutTests/fast/css/annotated-regions.html index 9b67e51..e9042b4 100644 --- a/third_party/WebKit/LayoutTests/fast/css/annotated-regions.html +++ b/third_party/WebKit/LayoutTests/fast/css/annotated-regions.html
@@ -42,11 +42,11 @@ } function draggableRegions() { - return getBoundsFromClientRectList(window.internals.draggableRegions(document)); + return getBoundsFromClientRectList(internals.draggableRegions(document)); } function nonDraggableRegions() { - return getBoundsFromClientRectList(window.internals.nonDraggableRegions(document)); + return getBoundsFromClientRectList(internals.nonDraggableRegions(document)); } function startTest() {
diff --git a/third_party/WebKit/LayoutTests/fast/css/background-parser-crash.html b/third_party/WebKit/LayoutTests/fast/css/background-parser-crash.html index 72b6b98..0e08df5 100644 --- a/third_party/WebKit/LayoutTests/fast/css/background-parser-crash.html +++ b/third_party/WebKit/LayoutTests/fast/css/background-parser-crash.html
@@ -11,7 +11,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.styleSheets[0].rules[1].style.background; </script>
diff --git a/third_party/WebKit/LayoutTests/fast/css/border-radius-non-negative.html b/third_party/WebKit/LayoutTests/fast/css/border-radius-non-negative.html index 680c48c..3da5401 100644 --- a/third_party/WebKit/LayoutTests/fast/css/border-radius-non-negative.html +++ b/third_party/WebKit/LayoutTests/fast/css/border-radius-non-negative.html
@@ -28,7 +28,7 @@ </head> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> <body> <div id="reference1"></div>
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/2displays-expected.txt b/third_party/WebKit/LayoutTests/fast/css/counters/2displays-expected.txt index 417b522..fa226ef2 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/2displays-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/css/counters/2displays-expected.txt
@@ -6,5 +6,5 @@ PASS successfullyParsed is true TEST COMPLETE -PASS window.internals.counterValue(document.getElementById('testView')) is '1000 1000' +PASS internals.counterValue(document.getElementById('testView')) is '1000 1000'
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/2displays.html b/third_party/WebKit/LayoutTests/fast/css/counters/2displays.html index 9970bdb0..a909d839 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/2displays.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/2displays.html
@@ -31,7 +31,7 @@ document.getElementById("testView").setAttribute("class", "counter1000"); if (!window.testRunner) return; - shouldBe("window.internals.counterValue(document.getElementById('testView'))", "'1000 1000'"); + shouldBe("internals.counterValue(document.getElementById('testView'))", "'1000 1000'"); if (window.testRunner) testRunner.notifyDone();
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/adding-nodes.html b/third_party/WebKit/LayoutTests/fast/css/counters/adding-nodes.html index 77e65f9..72d3448 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/adding-nodes.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/adding-nodes.html
@@ -34,7 +34,7 @@ newSpanElement = document.createElement("span"); id = spanList.item(i).getAttribute("id"); if (id != null) - newSpanElement.innerText = window.internals.counterValue(document.getElementById(id)); + newSpanElement.innerText = internals.counterValue(document.getElementById(id)); if (newSpanElement.innerText.length) newSpanElement.innerText = newSpanElement.innerText + "-"; console.appendChild(newSpanElement);
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/after-continuation-expected.txt b/third_party/WebKit/LayoutTests/fast/css/counters/after-continuation-expected.txt index 8a5a142a2..3daf3e6 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/after-continuation-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/css/counters/after-continuation-expected.txt
@@ -3,7 +3,7 @@ PASS successfullyParsed is true TEST COMPLETE -PASS window.internals.counterValue(document.getElementById('c2')) is '2' +PASS internals.counterValue(document.getElementById('c2')) is '2' TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/after-continuation.html b/third_party/WebKit/LayoutTests/fast/css/counters/after-continuation.html index 1eabc71..f2f2597 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/after-continuation.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/after-continuation.html
@@ -10,7 +10,7 @@ } function run() { - shouldBe("window.internals.counterValue(document.getElementById('c2'))", "'2'"); + shouldBe("internals.counterValue(document.getElementById('c2'))", "'2'"); debug(''); debug('TEST COMPLETE');
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/content-021-expected.txt b/third_party/WebKit/LayoutTests/fast/css/counters/content-021-expected.txt index 709e083..35df105 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/content-021-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/css/counters/content-021-expected.txt
@@ -3,8 +3,8 @@ PASS successfullyParsed is true TEST COMPLETE -PASS window.internals.counterValue(document.getElementById('div1')) is '0' -PASS window.internals.counterValue(document.getElementById('div2')) is '0.0' +PASS internals.counterValue(document.getElementById('div1')) is '0' +PASS internals.counterValue(document.getElementById('div2')) is '0.0' TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/content-021.html b/third_party/WebKit/LayoutTests/fast/css/counters/content-021.html index bed9b0c..c2dd01f0 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/content-021.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/content-021.html
@@ -28,8 +28,8 @@ { if (!window.testRunner) return; - shouldBe("window.internals.counterValue(document.getElementById('div1'))", "'0'"); - shouldBe("window.internals.counterValue(document.getElementById('div2'))", "'0.0'"); + shouldBe("internals.counterValue(document.getElementById('div1'))", "'0'"); + shouldBe("internals.counterValue(document.getElementById('div2'))", "'0.0'"); debug(''); debug('TEST COMPLETE');
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counter-before-content-not-incremented.html b/third_party/WebKit/LayoutTests/fast/css/counters/counter-before-content-not-incremented.html index ea6cdc5..127126c 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counter-before-content-not-incremented.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counter-before-content-not-incremented.html
@@ -43,7 +43,7 @@ for (var i = 0; i < spanList.length; ++i ) { var divItem = spanList.item(i); counters += '-'; - counters += window.internals.counterValue(document.getElementById(divItem.getAttribute("id"))); + counters += internals.counterValue(document.getElementById(divItem.getAttribute("id"))); counters += divItem.textContent; } document.getElementById("container").innerHTML = counters;
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-000-expected.txt b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-000-expected.txt index 1a221f5c..4d6a06e 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-000-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-000-expected.txt
@@ -4,14 +4,14 @@ TEST COMPLETE Before the dynamic change: -PASS window.internals.counterValue(document.getElementById('one')) is '1' -PASS window.internals.counterValue(document.getElementById('three')) is '2' -PASS window.internals.counterValue(document.getElementById('four')) is '3' +PASS internals.counterValue(document.getElementById('one')) is '1' +PASS internals.counterValue(document.getElementById('three')) is '2' +PASS internals.counterValue(document.getElementById('four')) is '3' After the dynamic change: -PASS window.internals.counterValue(document.getElementById('one')) is '1' -PASS window.internals.counterValue(document.getElementById('two')) is '2' -PASS window.internals.counterValue(document.getElementById('three')) is '3' -PASS window.internals.counterValue(document.getElementById('four')) is '4' +PASS internals.counterValue(document.getElementById('one')) is '1' +PASS internals.counterValue(document.getElementById('two')) is '2' +PASS internals.counterValue(document.getElementById('three')) is '3' +PASS internals.counterValue(document.getElementById('four')) is '4' TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-000.html b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-000.html index 466bbd6..8ee77b3 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-000.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-000.html
@@ -18,18 +18,18 @@ function checkCounterValuesBeforeChange() { debug('Before the dynamic change:'); - shouldBe("window.internals.counterValue(document.getElementById('one'))", "'1'"); - shouldBe("window.internals.counterValue(document.getElementById('three'))", "'2'"); - shouldBe("window.internals.counterValue(document.getElementById('four'))", "'3'"); + shouldBe("internals.counterValue(document.getElementById('one'))", "'1'"); + shouldBe("internals.counterValue(document.getElementById('three'))", "'2'"); + shouldBe("internals.counterValue(document.getElementById('four'))", "'3'"); } function checkCounterValuesAfterChange() { debug('After the dynamic change:'); - shouldBe("window.internals.counterValue(document.getElementById('one'))", "'1'"); - shouldBe("window.internals.counterValue(document.getElementById('two'))", "'2'"); - shouldBe("window.internals.counterValue(document.getElementById('three'))", "'3'"); - shouldBe("window.internals.counterValue(document.getElementById('four'))", "'4'"); + shouldBe("internals.counterValue(document.getElementById('one'))", "'1'"); + shouldBe("internals.counterValue(document.getElementById('two'))", "'2'"); + shouldBe("internals.counterValue(document.getElementById('three'))", "'3'"); + shouldBe("internals.counterValue(document.getElementById('four'))", "'4'"); debug(''); debug('TEST COMPLETE');
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-001-expected.txt b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-001-expected.txt index 790d252e..b736297 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-001-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-001-expected.txt
@@ -4,13 +4,13 @@ TEST COMPLETE Before the dynamic change: -PASS window.internals.counterValue(document.getElementById('one')) is '1' -PASS window.internals.counterValue(document.getElementById('two')) is '3' -PASS window.internals.counterValue(document.getElementById('three')) is '4' +PASS internals.counterValue(document.getElementById('one')) is '1' +PASS internals.counterValue(document.getElementById('two')) is '3' +PASS internals.counterValue(document.getElementById('three')) is '4' After the dynamic change: -PASS window.internals.counterValue(document.getElementById('one')) is '1' -PASS window.internals.counterValue(document.getElementById('two')) is '2' -PASS window.internals.counterValue(document.getElementById('three')) is '3' +PASS internals.counterValue(document.getElementById('one')) is '1' +PASS internals.counterValue(document.getElementById('two')) is '2' +PASS internals.counterValue(document.getElementById('three')) is '3' TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-001.html b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-001.html index e52fdc2..f24b51f 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-001.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-001.html
@@ -18,17 +18,17 @@ function checkCounterValuesBeforeChange() { debug('Before the dynamic change:'); - shouldBe("window.internals.counterValue(document.getElementById('one'))", "'1'"); - shouldBe("window.internals.counterValue(document.getElementById('two'))", "'3'"); - shouldBe("window.internals.counterValue(document.getElementById('three'))", "'4'"); + shouldBe("internals.counterValue(document.getElementById('one'))", "'1'"); + shouldBe("internals.counterValue(document.getElementById('two'))", "'3'"); + shouldBe("internals.counterValue(document.getElementById('three'))", "'4'"); } function checkCounterValuesAfterChange() { debug('After the dynamic change:'); - shouldBe("window.internals.counterValue(document.getElementById('one'))", "'1'"); - shouldBe("window.internals.counterValue(document.getElementById('two'))", "'2'"); - shouldBe("window.internals.counterValue(document.getElementById('three'))", "'3'"); + shouldBe("internals.counterValue(document.getElementById('one'))", "'1'"); + shouldBe("internals.counterValue(document.getElementById('two'))", "'2'"); + shouldBe("internals.counterValue(document.getElementById('three'))", "'3'"); debug(''); debug('TEST COMPLETE');
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-002.html b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-002.html index 4e1784b..cac42c5 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-002.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-002.html
@@ -32,7 +32,7 @@ for (i = 0; i < spanList.length; ++i ) { newSpanElement = document.createElement("span"); newSpanElement.innerText = - window.internals.counterValue(document.getElementById(spanList.item(i).getAttribute("id"))); + internals.counterValue(document.getElementById(spanList.item(i).getAttribute("id"))); if (newSpanElement.innerText.length) newSpanElement.innerText = newSpanElement.innerText + "-"; console.appendChild(newSpanElement);
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-inherit-expected.txt b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-inherit-expected.txt index 479572c..d3ccdca 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-inherit-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-inherit-expected.txt
@@ -1,10 +1,10 @@ PASS successfullyParsed is true TEST COMPLETE -PASS window.internals.counterValue(document.getElementById('wrapper90')) is '5' -PASS window.internals.counterValue(document.getElementById('test90')) is '10' -PASS window.internals.counterValue(document.getElementById('test90a')) is '15' -PASS window.internals.counterValue(document.getElementById('wrapper91')) is '10' -PASS window.internals.counterValue(document.getElementById('test91')) is '20' -PASS window.internals.counterValue(document.getElementById('test91a')) is '30' +PASS internals.counterValue(document.getElementById('wrapper90')) is '5' +PASS internals.counterValue(document.getElementById('test90')) is '10' +PASS internals.counterValue(document.getElementById('test90a')) is '15' +PASS internals.counterValue(document.getElementById('wrapper91')) is '10' +PASS internals.counterValue(document.getElementById('test91')) is '20' +PASS internals.counterValue(document.getElementById('test91a')) is '30'
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-inherit.htm b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-inherit.htm index 8380911..b795356 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-inherit.htm +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-inherit.htm
@@ -13,12 +13,12 @@ function run() { // Some extra WebKit testing for counter-increment inherit - shouldBe("window.internals.counterValue(document.getElementById('wrapper90'))", "'5'"); - shouldBe("window.internals.counterValue(document.getElementById('test90'))", "'10'"); - shouldBe("window.internals.counterValue(document.getElementById('test90a'))", "'15'"); - shouldBe("window.internals.counterValue(document.getElementById('wrapper91'))", "'10'"); - shouldBe("window.internals.counterValue(document.getElementById('test91'))", "'20'"); - shouldBe("window.internals.counterValue(document.getElementById('test91a'))", "'30'"); + shouldBe("internals.counterValue(document.getElementById('wrapper90'))", "'5'"); + shouldBe("internals.counterValue(document.getElementById('test90'))", "'10'"); + shouldBe("internals.counterValue(document.getElementById('test90a'))", "'15'"); + shouldBe("internals.counterValue(document.getElementById('wrapper91'))", "'10'"); + shouldBe("internals.counterValue(document.getElementById('test91'))", "'20'"); + shouldBe("internals.counterValue(document.getElementById('test91a'))", "'30'"); if (window.testRunner) testRunner.notifyDone(); }
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-not-reflected-on-stylechange-expected.txt b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-not-reflected-on-stylechange-expected.txt index 85191a2..668653f 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-not-reflected-on-stylechange-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-not-reflected-on-stylechange-expected.txt
@@ -1,5 +1,5 @@ -PASS window.internals.counterValue(document.getElementById('inner1')) is "1" -PASS window.internals.counterValue(document.getElementById('inner2')) is "2" +PASS internals.counterValue(document.getElementById('inner1')) is "1" +PASS internals.counterValue(document.getElementById('inner2')) is "2" PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-not-reflected-on-stylechange.html b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-not-reflected-on-stylechange.html index 365857b4..68bebdc 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-not-reflected-on-stylechange.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-not-reflected-on-stylechange.html
@@ -31,6 +31,6 @@ outerDiv.offsetTop; outerDiv.className = "active"; - shouldBeEqualToString("window.internals.counterValue(document.getElementById('inner1'))", "1"); - shouldBeEqualToString("window.internals.counterValue(document.getElementById('inner2'))", "2"); + shouldBeEqualToString("internals.counterValue(document.getElementById('inner1'))", "1"); + shouldBeEqualToString("internals.counterValue(document.getElementById('inner2'))", "2"); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-overflow.html b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-overflow.html index 73ad15c..81aeb20 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-overflow.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-overflow.html
@@ -18,7 +18,7 @@ function doTest() { if (window.testRunner) - document.getElementById('counted').innerText = window.internals.counterValue(document.getElementById('counted')); + document.getElementById('counted').innerText = internals.counterValue(document.getElementById('counted')); } window.addEventListener('load', doTest, false);
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-tests-expected.txt b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-tests-expected.txt index 5217e63..79cfaf4 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-tests-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-tests-expected.txt
@@ -1,61 +1,61 @@ PASS successfullyParsed is true TEST COMPLETE -PASS window.internals.counterValue(document.getElementById('test3')) is '-2147483648' -PASS window.internals.counterValue(document.getElementById('test4')) is '-2147483647' -PASS window.internals.counterValue(document.getElementById('test5')) is '0' -PASS window.internals.counterValue(document.getElementById('test6')) is '0' -PASS window.internals.counterValue(document.getElementById('test7')) is '0' -PASS window.internals.counterValue(document.getElementById('test8')) is '10' -PASS window.internals.counterValue(document.getElementById('test9')) is '10' -PASS window.internals.counterValue(document.getElementById('test10')) is '2147483646' -PASS window.internals.counterValue(document.getElementById('test11')) is '2147483647' -PASS window.internals.counterValue(document.getElementById('test12')) is '2147483647' -PASS window.internals.counterValue(document.getElementById('test13')) is '2147483647' -PASS window.internals.counterValue(document.getElementById('test14')) is '2' -PASS window.internals.counterValue(document.getElementById('test15')) is '-2147483648' -PASS window.internals.counterValue(document.getElementById('test16')) is '-2147483648' -PASS window.internals.counterValue(document.getElementById('test17')) is '-2147483648' -PASS window.internals.counterValue(document.getElementById('test18')) is '0' -PASS window.internals.counterValue(document.getElementById('test19')) is '0' -PASS window.internals.counterValue(document.getElementById('test20')) is '0' -PASS window.internals.counterValue(document.getElementById('test21')) is '20' -PASS window.internals.counterValue(document.getElementById('test22')) is '20' -PASS window.internals.counterValue(document.getElementById('test23')) is '2147483647' -PASS window.internals.counterValue(document.getElementById('test24')) is '2147483647' -PASS window.internals.counterValue(document.getElementById('test25')) is '2147483647' -PASS window.internals.counterValue(document.getElementById('test26')) is '2147483647' -PASS window.internals.counterValue(document.getElementById('test27')) is '3' -PASS window.internals.counterValue(document.getElementById('test28')) is '-2147483648' -PASS window.internals.counterValue(document.getElementById('test29')) is '-2147483648' -PASS window.internals.counterValue(document.getElementById('test30')) is '-2147483648' -PASS window.internals.counterValue(document.getElementById('test31')) is '0' -PASS window.internals.counterValue(document.getElementById('test32')) is '0' -PASS window.internals.counterValue(document.getElementById('test33')) is '0' -PASS window.internals.counterValue(document.getElementById('test34')) is '30' -PASS window.internals.counterValue(document.getElementById('test35')) is '30' -PASS window.internals.counterValue(document.getElementById('test36')) is '2147483647' -PASS window.internals.counterValue(document.getElementById('test37')) is '2147483647' -PASS window.internals.counterValue(document.getElementById('test38')) is '2147483647' -PASS window.internals.counterValue(document.getElementById('test39')) is '2147483647' -PASS window.internals.counterValue(document.getElementById('test40')) is '32' -PASS window.internals.counterValue(document.getElementById('test41')) is '-2147483648' -PASS window.internals.counterValue(document.getElementById('test42')) is '-2147483648' -PASS window.internals.counterValue(document.getElementById('test43')) is '-2147483648' -PASS window.internals.counterValue(document.getElementById('test44')) is '0' -PASS window.internals.counterValue(document.getElementById('test45')) is '0' -PASS window.internals.counterValue(document.getElementById('test46')) is '0' -PASS window.internals.counterValue(document.getElementById('test47')) is '320' -PASS window.internals.counterValue(document.getElementById('test48')) is '320' -PASS window.internals.counterValue(document.getElementById('test49')) is '2147483647' -PASS window.internals.counterValue(document.getElementById('test50')) is '2147483647' -PASS window.internals.counterValue(document.getElementById('test51')) is '2147483647' -PASS window.internals.counterValue(document.getElementById('test52')) is '2147483647' -PASS window.internals.counterValue(document.getElementById('test53')) is '5' -PASS window.internals.counterValue(document.getElementById('none53')) is '5' -PASS window.internals.counterValue(document.getElementById('test53a')) is '10' -PASS window.internals.counterValue(document.getElementById('wrapper54')) is '5' -PASS window.internals.counterValue(document.getElementById('test54')) is '10' -PASS window.internals.counterValue(document.getElementById('test55')) is '1' -PASS window.internals.counterValue(document.getElementById('test56')) is '-2147483648' +PASS internals.counterValue(document.getElementById('test3')) is '-2147483648' +PASS internals.counterValue(document.getElementById('test4')) is '-2147483647' +PASS internals.counterValue(document.getElementById('test5')) is '0' +PASS internals.counterValue(document.getElementById('test6')) is '0' +PASS internals.counterValue(document.getElementById('test7')) is '0' +PASS internals.counterValue(document.getElementById('test8')) is '10' +PASS internals.counterValue(document.getElementById('test9')) is '10' +PASS internals.counterValue(document.getElementById('test10')) is '2147483646' +PASS internals.counterValue(document.getElementById('test11')) is '2147483647' +PASS internals.counterValue(document.getElementById('test12')) is '2147483647' +PASS internals.counterValue(document.getElementById('test13')) is '2147483647' +PASS internals.counterValue(document.getElementById('test14')) is '2' +PASS internals.counterValue(document.getElementById('test15')) is '-2147483648' +PASS internals.counterValue(document.getElementById('test16')) is '-2147483648' +PASS internals.counterValue(document.getElementById('test17')) is '-2147483648' +PASS internals.counterValue(document.getElementById('test18')) is '0' +PASS internals.counterValue(document.getElementById('test19')) is '0' +PASS internals.counterValue(document.getElementById('test20')) is '0' +PASS internals.counterValue(document.getElementById('test21')) is '20' +PASS internals.counterValue(document.getElementById('test22')) is '20' +PASS internals.counterValue(document.getElementById('test23')) is '2147483647' +PASS internals.counterValue(document.getElementById('test24')) is '2147483647' +PASS internals.counterValue(document.getElementById('test25')) is '2147483647' +PASS internals.counterValue(document.getElementById('test26')) is '2147483647' +PASS internals.counterValue(document.getElementById('test27')) is '3' +PASS internals.counterValue(document.getElementById('test28')) is '-2147483648' +PASS internals.counterValue(document.getElementById('test29')) is '-2147483648' +PASS internals.counterValue(document.getElementById('test30')) is '-2147483648' +PASS internals.counterValue(document.getElementById('test31')) is '0' +PASS internals.counterValue(document.getElementById('test32')) is '0' +PASS internals.counterValue(document.getElementById('test33')) is '0' +PASS internals.counterValue(document.getElementById('test34')) is '30' +PASS internals.counterValue(document.getElementById('test35')) is '30' +PASS internals.counterValue(document.getElementById('test36')) is '2147483647' +PASS internals.counterValue(document.getElementById('test37')) is '2147483647' +PASS internals.counterValue(document.getElementById('test38')) is '2147483647' +PASS internals.counterValue(document.getElementById('test39')) is '2147483647' +PASS internals.counterValue(document.getElementById('test40')) is '32' +PASS internals.counterValue(document.getElementById('test41')) is '-2147483648' +PASS internals.counterValue(document.getElementById('test42')) is '-2147483648' +PASS internals.counterValue(document.getElementById('test43')) is '-2147483648' +PASS internals.counterValue(document.getElementById('test44')) is '0' +PASS internals.counterValue(document.getElementById('test45')) is '0' +PASS internals.counterValue(document.getElementById('test46')) is '0' +PASS internals.counterValue(document.getElementById('test47')) is '320' +PASS internals.counterValue(document.getElementById('test48')) is '320' +PASS internals.counterValue(document.getElementById('test49')) is '2147483647' +PASS internals.counterValue(document.getElementById('test50')) is '2147483647' +PASS internals.counterValue(document.getElementById('test51')) is '2147483647' +PASS internals.counterValue(document.getElementById('test52')) is '2147483647' +PASS internals.counterValue(document.getElementById('test53')) is '5' +PASS internals.counterValue(document.getElementById('none53')) is '5' +PASS internals.counterValue(document.getElementById('test53a')) is '10' +PASS internals.counterValue(document.getElementById('wrapper54')) is '5' +PASS internals.counterValue(document.getElementById('test54')) is '10' +PASS internals.counterValue(document.getElementById('test55')) is '1' +PASS internals.counterValue(document.getElementById('test56')) is '-2147483648'
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-tests.htm b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-tests.htm index f24d7e5..d07fffc2 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-tests.htm +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counter-increment-tests.htm
@@ -15,63 +15,63 @@ /* These are text versions of the counter-increment-* tests in the CSS 2.1 test suite. So 'test3' here is equivalent to counter-increment-003.htm, and so on. WebKit dumpAsText versions of counter-increment-001 and 002 already exist in fast/css/counters */ - shouldBe("window.internals.counterValue(document.getElementById('test3'))", "'-2147483648'"); - shouldBe("window.internals.counterValue(document.getElementById('test4'))", "'-2147483647'"); - shouldBe("window.internals.counterValue(document.getElementById('test5'))", "'0'"); - shouldBe("window.internals.counterValue(document.getElementById('test6'))", "'0'"); - shouldBe("window.internals.counterValue(document.getElementById('test7'))", "'0'"); - shouldBe("window.internals.counterValue(document.getElementById('test8'))", "'10'"); - shouldBe("window.internals.counterValue(document.getElementById('test9'))", "'10'"); - shouldBe("window.internals.counterValue(document.getElementById('test10'))", "'2147483646'"); - shouldBe("window.internals.counterValue(document.getElementById('test11'))", "'2147483647'"); - shouldBe("window.internals.counterValue(document.getElementById('test12'))", "'2147483647'"); - shouldBe("window.internals.counterValue(document.getElementById('test13'))", "'2147483647'"); - shouldBe("window.internals.counterValue(document.getElementById('test14'))", "'2'"); - shouldBe("window.internals.counterValue(document.getElementById('test15'))", "'-2147483648'"); - shouldBe("window.internals.counterValue(document.getElementById('test16'))", "'-2147483648'"); - shouldBe("window.internals.counterValue(document.getElementById('test17'))", "'-2147483648'"); - shouldBe("window.internals.counterValue(document.getElementById('test18'))", "'0'"); - shouldBe("window.internals.counterValue(document.getElementById('test19'))", "'0'"); - shouldBe("window.internals.counterValue(document.getElementById('test20'))", "'0'"); - shouldBe("window.internals.counterValue(document.getElementById('test21'))", "'20'"); - shouldBe("window.internals.counterValue(document.getElementById('test22'))", "'20'"); - shouldBe("window.internals.counterValue(document.getElementById('test23'))", "'2147483647'"); - shouldBe("window.internals.counterValue(document.getElementById('test24'))", "'2147483647'"); - shouldBe("window.internals.counterValue(document.getElementById('test25'))", "'2147483647'"); - shouldBe("window.internals.counterValue(document.getElementById('test26'))", "'2147483647'"); - shouldBe("window.internals.counterValue(document.getElementById('test27'))", "'3'"); - shouldBe("window.internals.counterValue(document.getElementById('test28'))", "'-2147483648'"); - shouldBe("window.internals.counterValue(document.getElementById('test29'))", "'-2147483648'"); - shouldBe("window.internals.counterValue(document.getElementById('test30'))", "'-2147483648'"); - shouldBe("window.internals.counterValue(document.getElementById('test31'))", "'0'"); - shouldBe("window.internals.counterValue(document.getElementById('test32'))", "'0'"); - shouldBe("window.internals.counterValue(document.getElementById('test33'))", "'0'"); - shouldBe("window.internals.counterValue(document.getElementById('test34'))", "'30'"); - shouldBe("window.internals.counterValue(document.getElementById('test35'))", "'30'"); - shouldBe("window.internals.counterValue(document.getElementById('test36'))", "'2147483647'"); - shouldBe("window.internals.counterValue(document.getElementById('test37'))", "'2147483647'"); - shouldBe("window.internals.counterValue(document.getElementById('test38'))", "'2147483647'"); - shouldBe("window.internals.counterValue(document.getElementById('test39'))", "'2147483647'"); - shouldBe("window.internals.counterValue(document.getElementById('test40'))", "'32'"); - shouldBe("window.internals.counterValue(document.getElementById('test41'))", "'-2147483648'"); - shouldBe("window.internals.counterValue(document.getElementById('test42'))", "'-2147483648'"); - shouldBe("window.internals.counterValue(document.getElementById('test43'))", "'-2147483648'"); - shouldBe("window.internals.counterValue(document.getElementById('test44'))", "'0'"); - shouldBe("window.internals.counterValue(document.getElementById('test45'))", "'0'"); - shouldBe("window.internals.counterValue(document.getElementById('test46'))", "'0'"); - shouldBe("window.internals.counterValue(document.getElementById('test47'))", "'320'"); - shouldBe("window.internals.counterValue(document.getElementById('test48'))", "'320'"); - shouldBe("window.internals.counterValue(document.getElementById('test49'))", "'2147483647'"); - shouldBe("window.internals.counterValue(document.getElementById('test50'))", "'2147483647'"); - shouldBe("window.internals.counterValue(document.getElementById('test51'))", "'2147483647'"); - shouldBe("window.internals.counterValue(document.getElementById('test52'))", "'2147483647'"); - shouldBe("window.internals.counterValue(document.getElementById('test53'))", "'5'"); - shouldBe("window.internals.counterValue(document.getElementById('none53'))", "'5'"); - shouldBe("window.internals.counterValue(document.getElementById('test53a'))", "'10'"); - shouldBe("window.internals.counterValue(document.getElementById('wrapper54'))", "'5'"); - shouldBe("window.internals.counterValue(document.getElementById('test54'))", "'10'"); - shouldBe("window.internals.counterValue(document.getElementById('test55'))", "'1'"); - shouldBe("window.internals.counterValue(document.getElementById('test56'))", "'-2147483648'"); + shouldBe("internals.counterValue(document.getElementById('test3'))", "'-2147483648'"); + shouldBe("internals.counterValue(document.getElementById('test4'))", "'-2147483647'"); + shouldBe("internals.counterValue(document.getElementById('test5'))", "'0'"); + shouldBe("internals.counterValue(document.getElementById('test6'))", "'0'"); + shouldBe("internals.counterValue(document.getElementById('test7'))", "'0'"); + shouldBe("internals.counterValue(document.getElementById('test8'))", "'10'"); + shouldBe("internals.counterValue(document.getElementById('test9'))", "'10'"); + shouldBe("internals.counterValue(document.getElementById('test10'))", "'2147483646'"); + shouldBe("internals.counterValue(document.getElementById('test11'))", "'2147483647'"); + shouldBe("internals.counterValue(document.getElementById('test12'))", "'2147483647'"); + shouldBe("internals.counterValue(document.getElementById('test13'))", "'2147483647'"); + shouldBe("internals.counterValue(document.getElementById('test14'))", "'2'"); + shouldBe("internals.counterValue(document.getElementById('test15'))", "'-2147483648'"); + shouldBe("internals.counterValue(document.getElementById('test16'))", "'-2147483648'"); + shouldBe("internals.counterValue(document.getElementById('test17'))", "'-2147483648'"); + shouldBe("internals.counterValue(document.getElementById('test18'))", "'0'"); + shouldBe("internals.counterValue(document.getElementById('test19'))", "'0'"); + shouldBe("internals.counterValue(document.getElementById('test20'))", "'0'"); + shouldBe("internals.counterValue(document.getElementById('test21'))", "'20'"); + shouldBe("internals.counterValue(document.getElementById('test22'))", "'20'"); + shouldBe("internals.counterValue(document.getElementById('test23'))", "'2147483647'"); + shouldBe("internals.counterValue(document.getElementById('test24'))", "'2147483647'"); + shouldBe("internals.counterValue(document.getElementById('test25'))", "'2147483647'"); + shouldBe("internals.counterValue(document.getElementById('test26'))", "'2147483647'"); + shouldBe("internals.counterValue(document.getElementById('test27'))", "'3'"); + shouldBe("internals.counterValue(document.getElementById('test28'))", "'-2147483648'"); + shouldBe("internals.counterValue(document.getElementById('test29'))", "'-2147483648'"); + shouldBe("internals.counterValue(document.getElementById('test30'))", "'-2147483648'"); + shouldBe("internals.counterValue(document.getElementById('test31'))", "'0'"); + shouldBe("internals.counterValue(document.getElementById('test32'))", "'0'"); + shouldBe("internals.counterValue(document.getElementById('test33'))", "'0'"); + shouldBe("internals.counterValue(document.getElementById('test34'))", "'30'"); + shouldBe("internals.counterValue(document.getElementById('test35'))", "'30'"); + shouldBe("internals.counterValue(document.getElementById('test36'))", "'2147483647'"); + shouldBe("internals.counterValue(document.getElementById('test37'))", "'2147483647'"); + shouldBe("internals.counterValue(document.getElementById('test38'))", "'2147483647'"); + shouldBe("internals.counterValue(document.getElementById('test39'))", "'2147483647'"); + shouldBe("internals.counterValue(document.getElementById('test40'))", "'32'"); + shouldBe("internals.counterValue(document.getElementById('test41'))", "'-2147483648'"); + shouldBe("internals.counterValue(document.getElementById('test42'))", "'-2147483648'"); + shouldBe("internals.counterValue(document.getElementById('test43'))", "'-2147483648'"); + shouldBe("internals.counterValue(document.getElementById('test44'))", "'0'"); + shouldBe("internals.counterValue(document.getElementById('test45'))", "'0'"); + shouldBe("internals.counterValue(document.getElementById('test46'))", "'0'"); + shouldBe("internals.counterValue(document.getElementById('test47'))", "'320'"); + shouldBe("internals.counterValue(document.getElementById('test48'))", "'320'"); + shouldBe("internals.counterValue(document.getElementById('test49'))", "'2147483647'"); + shouldBe("internals.counterValue(document.getElementById('test50'))", "'2147483647'"); + shouldBe("internals.counterValue(document.getElementById('test51'))", "'2147483647'"); + shouldBe("internals.counterValue(document.getElementById('test52'))", "'2147483647'"); + shouldBe("internals.counterValue(document.getElementById('test53'))", "'5'"); + shouldBe("internals.counterValue(document.getElementById('none53'))", "'5'"); + shouldBe("internals.counterValue(document.getElementById('test53a'))", "'10'"); + shouldBe("internals.counterValue(document.getElementById('wrapper54'))", "'5'"); + shouldBe("internals.counterValue(document.getElementById('test54'))", "'10'"); + shouldBe("internals.counterValue(document.getElementById('test55'))", "'1'"); + shouldBe("internals.counterValue(document.getElementById('test56'))", "'-2147483648'"); if (window.testRunner) testRunner.notifyDone(); }
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counter-overflow.html b/third_party/WebKit/LayoutTests/fast/css/counters/counter-overflow.html index b8c2db9..6e7c198 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counter-overflow.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counter-overflow.html
@@ -36,7 +36,7 @@ function get_list_counters() { var counters = []; for (var i = 0; i < items.length; i++) { - counters.push(parseInt(window.internals.counterValue(items[i]))); + counters.push(parseInt(internals.counterValue(items[i]))); } return counters; }
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counter-reset-000.html b/third_party/WebKit/LayoutTests/fast/css/counters/counter-reset-000.html index c6b1cfa..3305299a 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counter-reset-000.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counter-reset-000.html
@@ -33,7 +33,7 @@ for (i = 0; i < spanList.length; ++i ) { newSpanElement = document.createElement("span"); newSpanElement.innerText = - window.internals.counterValue(document.getElementById(spanList.item(i).getAttribute("id"))); + internals.counterValue(document.getElementById(spanList.item(i).getAttribute("id"))); if (newSpanElement.innerText.length) newSpanElement.innerText = newSpanElement.innerText + "-" console.appendChild(newSpanElement);
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counter-reset-001.html b/third_party/WebKit/LayoutTests/fast/css/counters/counter-reset-001.html index 00d4556..aa2c002 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counter-reset-001.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counter-reset-001.html
@@ -22,7 +22,7 @@ if (window.testRunner) { testRunner.dumpAsText(); // This call ensures the layout happened before we modify the DOM tree. - window.internals.counterValue(document.getElementById("span1")); + internals.counterValue(document.getElementById("span1")); } var t = document.getElementById("test"); @@ -34,7 +34,7 @@ spanList = testElement.getElementsByTagName("span"); for (i = 0; i < spanList.length; ++i ) { newSpanElement = document.createElement("span"); - newSpanElement.innerText = window.internals.counterValue(document.getElementById(spanList.item(i).getAttribute("id"))); + newSpanElement.innerText = internals.counterValue(document.getElementById(spanList.item(i).getAttribute("id"))); if (newSpanElement.innerText.length) newSpanElement.innerText = newSpanElement.innerText + "-"; console.appendChild(newSpanElement);
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counter-reset-002.html b/third_party/WebKit/LayoutTests/fast/css/counters/counter-reset-002.html index 270259a9..572c16a 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counter-reset-002.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counter-reset-002.html
@@ -30,7 +30,7 @@ for (i = 0; i < spanList.length; ++i ) { newSpanElement = document.createElement("span"); newSpanElement.innerText = - window.internals.counterValue(document.getElementById(spanList.item(i).getAttribute("id"))); + internals.counterValue(document.getElementById(spanList.item(i).getAttribute("id"))); if (newSpanElement.innerText.length) newSpanElement.innerText = newSpanElement.innerText + "-"; console.appendChild(newSpanElement);
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counterValueForElementById-expected.txt b/third_party/WebKit/LayoutTests/fast/css/counters/counterValueForElementById-expected.txt index 1424c503..61ab336 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counterValueForElementById-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counterValueForElementById-expected.txt
@@ -1,13 +1,13 @@ -This is the test for window.internals.counterValueForElementById +This is the test for internals.counterValueForElementById -PASS window.internals.counterValue(document.getElementById('before')) is '0' -PASS window.internals.counterValue(document.getElementById('after')) is '0' -PASS window.internals.counterValue(document.getElementById('before_after')) is '0 0' -PASS window.internals.counterValue(document.getElementById('twice')) is '0 0' -PASS window.internals.counterValue(document.getElementById('point')) is '0.1' -PASS window.internals.counterValue(document.getElementById('two-points')) is '0.1.2' -PASS window.internals.counterValue(document.getElementById('greek')) is '0.α.β' -PASS window.internals.counterValue(document.getElementById('three-greeks')) is '0.α.β 0.α.β 0.α.β' +PASS internals.counterValue(document.getElementById('before')) is '0' +PASS internals.counterValue(document.getElementById('after')) is '0' +PASS internals.counterValue(document.getElementById('before_after')) is '0 0' +PASS internals.counterValue(document.getElementById('twice')) is '0 0' +PASS internals.counterValue(document.getElementById('point')) is '0.1' +PASS internals.counterValue(document.getElementById('two-points')) is '0.1.2' +PASS internals.counterValue(document.getElementById('greek')) is '0.α.β' +PASS internals.counterValue(document.getElementById('three-greeks')) is '0.α.β 0.α.β 0.α.β' PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/counterValueForElementById.html b/third_party/WebKit/LayoutTests/fast/css/counters/counterValueForElementById.html index b8c8794..a9595c6 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/counterValueForElementById.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/counterValueForElementById.html
@@ -14,7 +14,7 @@ <script src="../../../resources/js-test.js"></script> </head> <body> - <div>This is the test for window.internals.counterValueForElementById</div> + <div>This is the test for internals.counterValueForElementById</div> <div class="reset"><span id="before" class="show-before"></span></div> <div class="reset"><span id="after" class="show-after"></span></div> @@ -35,14 +35,14 @@ if (window.testRunner) { testRunner.dumpAsText(); - shouldBe("window.internals.counterValue(document.getElementById('before'))", "'0'"); - shouldBe("window.internals.counterValue(document.getElementById('after'))", "'0'"); - shouldBe("window.internals.counterValue(document.getElementById('before_after'))", "'0 0'"); - shouldBe("window.internals.counterValue(document.getElementById('twice'))", "'0 0'"); - shouldBe("window.internals.counterValue(document.getElementById('point'))", "'0.1'"); - shouldBe("window.internals.counterValue(document.getElementById('two-points'))", "'0.1.2'"); - shouldBe("window.internals.counterValue(document.getElementById('greek'))", "'0.\u03b1.\u03b2'"); - shouldBe("window.internals.counterValue(document.getElementById('three-greeks'))", "'0.\u03b1.\u03b2 0.\u03b1.\u03b2 0.\u03b1.\u03b2'"); + shouldBe("internals.counterValue(document.getElementById('before'))", "'0'"); + shouldBe("internals.counterValue(document.getElementById('after'))", "'0'"); + shouldBe("internals.counterValue(document.getElementById('before_after'))", "'0 0'"); + shouldBe("internals.counterValue(document.getElementById('twice'))", "'0 0'"); + shouldBe("internals.counterValue(document.getElementById('point'))", "'0.1'"); + shouldBe("internals.counterValue(document.getElementById('two-points'))", "'0.1.2'"); + shouldBe("internals.counterValue(document.getElementById('greek'))", "'0.\u03b1.\u03b2'"); + shouldBe("internals.counterValue(document.getElementById('three-greeks'))", "'0.\u03b1.\u03b2 0.\u03b1.\u03b2 0.\u03b1.\u03b2'"); } </script> </body>
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/deep-before-expected.txt b/third_party/WebKit/LayoutTests/fast/css/counters/deep-before-expected.txt index bde65e5..ac9152b 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/deep-before-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/css/counters/deep-before-expected.txt
@@ -1,7 +1,7 @@ PASS successfullyParsed is true TEST COMPLETE -PASS window.internals.counterValue(document.getElementById('div1')) is '0' +PASS internals.counterValue(document.getElementById('div1')) is '0' TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/deep-before.html b/third_party/WebKit/LayoutTests/fast/css/counters/deep-before.html index 756cbf7..692b6cf 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/deep-before.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/deep-before.html
@@ -26,7 +26,7 @@ { if (!window.testRunner) return; - shouldBe("window.internals.counterValue(document.getElementById('div1'))", "'0'"); + shouldBe("internals.counterValue(document.getElementById('div1'))", "'0'"); debug(''); debug('TEST COMPLETE');
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/invalidate-cached-counter-node.html b/third_party/WebKit/LayoutTests/fast/css/counters/invalidate-cached-counter-node.html index 77ee63e..4312fab 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/invalidate-cached-counter-node.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/invalidate-cached-counter-node.html
@@ -22,7 +22,7 @@ if (window.testRunner) { testRunner.dumpAsText(); var testResult; - var counterValue = window.internals.counterValue(document.getElementById("keep-me")); + var counterValue = internals.counterValue(document.getElementById("keep-me")); if (counterValue == "1") testResult = "PASS"; else
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/nesting.html b/third_party/WebKit/LayoutTests/fast/css/counters/nesting.html index 03c983f..af11b2a 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/nesting.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/nesting.html
@@ -29,7 +29,7 @@ for (i = 0; i < spanList.length; ++i ) { newSpanElement = document.createElement("span"); newSpanElement.innerText = - window.internals.counterValue(document.getElementById(spanList.item(i).getAttribute("id"))); + internals.counterValue(document.getElementById(spanList.item(i).getAttribute("id"))); if (newSpanElement.innerText.length) newSpanElement.innerText = newSpanElement.innerText + "- "; console.appendChild(newSpanElement);
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/update-reset-counter-parent-sibling.html b/third_party/WebKit/LayoutTests/fast/css/counters/update-reset-counter-parent-sibling.html index 37b99d9..1f7ef99 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/update-reset-counter-parent-sibling.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/update-reset-counter-parent-sibling.html
@@ -20,26 +20,26 @@ 'use strict'; test(() => { - assert_equals(window.internals.counterValue(p1), '2'); - assert_equals(window.internals.counterValue(p2), '3'); - assert_equals(window.internals.counterValue(p3), '4'); - assert_equals(window.internals.counterValue(p4), '1'); + assert_equals(internals.counterValue(p1), '2'); + assert_equals(internals.counterValue(p2), '3'); + assert_equals(internals.counterValue(p3), '4'); + assert_equals(internals.counterValue(p4), '1'); p1.className = 'reset'; - assert_equals(window.internals.counterValue(p1), '0'); - assert_equals(window.internals.counterValue(p2), '1'); - assert_equals(window.internals.counterValue(p3), '2'); - assert_equals(window.internals.counterValue(p4), '1'); + assert_equals(internals.counterValue(p1), '0'); + assert_equals(internals.counterValue(p2), '1'); + assert_equals(internals.counterValue(p3), '2'); + assert_equals(internals.counterValue(p4), '1'); let elem = document.createElement('p'); elem.className = 'reset'; root.insertBefore(elem, p3); - assert_equals(window.internals.counterValue(p1), '0'); - assert_equals(window.internals.counterValue(p2), '1'); - assert_equals(window.internals.counterValue(p3), '1'); - assert_equals(window.internals.counterValue(p4), '1'); + assert_equals(internals.counterValue(p1), '0'); + assert_equals(internals.counterValue(p2), '1'); + assert_equals(internals.counterValue(p3), '1'); + assert_equals(internals.counterValue(p4), '1'); }, 'Dynamically changing counter-reset with counter-resets in parent and sibling updates counters accordingly'); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/css/counters/update-reset-counter-sibling.html b/third_party/WebKit/LayoutTests/fast/css/counters/update-reset-counter-sibling.html index 4415b30..fda571b4 100644 --- a/third_party/WebKit/LayoutTests/fast/css/counters/update-reset-counter-sibling.html +++ b/third_party/WebKit/LayoutTests/fast/css/counters/update-reset-counter-sibling.html
@@ -20,26 +20,26 @@ 'use strict'; test(() => { - assert_equals(window.internals.counterValue(p1), '1'); - assert_equals(window.internals.counterValue(p2), '2'); - assert_equals(window.internals.counterValue(p3), '3'); - assert_equals(window.internals.counterValue(p4), '1'); + assert_equals(internals.counterValue(p1), '1'); + assert_equals(internals.counterValue(p2), '2'); + assert_equals(internals.counterValue(p3), '3'); + assert_equals(internals.counterValue(p4), '1'); p1.className = 'reset'; - assert_equals(window.internals.counterValue(p1), '0'); - assert_equals(window.internals.counterValue(p2), '1'); - assert_equals(window.internals.counterValue(p3), '2'); - assert_equals(window.internals.counterValue(p4), '1'); + assert_equals(internals.counterValue(p1), '0'); + assert_equals(internals.counterValue(p2), '1'); + assert_equals(internals.counterValue(p3), '2'); + assert_equals(internals.counterValue(p4), '1'); let elem = document.createElement('p'); elem.className = 'reset'; root.insertBefore(elem, p3); - assert_equals(window.internals.counterValue(p1), '0'); - assert_equals(window.internals.counterValue(p2), '1'); - assert_equals(window.internals.counterValue(p3), '1'); - assert_equals(window.internals.counterValue(p4), '1'); + assert_equals(internals.counterValue(p1), '0'); + assert_equals(internals.counterValue(p2), '1'); + assert_equals(internals.counterValue(p3), '1'); + assert_equals(internals.counterValue(p4), '1'); }, 'Dynamically changing counter-reset with counter-reset in sibling updates counters accordingly'); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/css/device-aspect-ratio.html b/third_party/WebKit/LayoutTests/fast/css/device-aspect-ratio.html index 7cf9a11..00c70090 100644 --- a/third_party/WebKit/LayoutTests/fast/css/device-aspect-ratio.html +++ b/third_party/WebKit/LayoutTests/fast/css/device-aspect-ratio.html
@@ -4,7 +4,7 @@ <script src="../../resources/js-test.js"></script> <script> if (window.testRunner) { - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); } var count = 0; @@ -31,7 +31,7 @@ shouldBe("document.defaultView.getComputedStyle(document.getElementById('description'), null).color", "'rgb(0, 128, 0)'"); isSuccessfullyParsed(); if (window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } return; }
diff --git a/third_party/WebKit/LayoutTests/fast/css/div_plus_nav_bug47971.html b/third_party/WebKit/LayoutTests/fast/css/div_plus_nav_bug47971.html index 666e92e..a045c842 100644 --- a/third_party/WebKit/LayoutTests/fast/css/div_plus_nav_bug47971.html +++ b/third_party/WebKit/LayoutTests/fast/css/div_plus_nav_bug47971.html
@@ -27,7 +27,7 @@ <script type="text/javascript"> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function runTest(element) {
diff --git a/third_party/WebKit/LayoutTests/fast/css/duplicate-property-in-rule-important.html b/third_party/WebKit/LayoutTests/fast/css/duplicate-property-in-rule-important.html index fb6047c..a14adf4 100644 --- a/third_party/WebKit/LayoutTests/fast/css/duplicate-property-in-rule-important.html +++ b/third_party/WebKit/LayoutTests/fast/css/duplicate-property-in-rule-important.html
@@ -14,7 +14,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/fast/css/duplicate-property-in-rule.html b/third_party/WebKit/LayoutTests/fast/css/duplicate-property-in-rule.html index d94682f..64f05c00 100644 --- a/third_party/WebKit/LayoutTests/fast/css/duplicate-property-in-rule.html +++ b/third_party/WebKit/LayoutTests/fast/css/duplicate-property-in-rule.html
@@ -10,7 +10,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/fast/css/font-face-css-change-while-loading.html b/third_party/WebKit/LayoutTests/fast/css/font-face-css-change-while-loading.html index 8ef213f2..999d7d14 100644 --- a/third_party/WebKit/LayoutTests/fast/css/font-face-css-change-while-loading.html +++ b/third_party/WebKit/LayoutTests/fast/css/font-face-css-change-while-loading.html
@@ -7,7 +7,7 @@ </style> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function getDocumentFontFaces() { var faces = []; @@ -31,7 +31,7 @@ function finish() { if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } onload = function() {
diff --git a/third_party/WebKit/LayoutTests/fast/css/font-face-data-uri.html b/third_party/WebKit/LayoutTests/fast/css/font-face-data-uri.html index bde8fb9..f0be5026 100644 --- a/third_party/WebKit/LayoutTests/fast/css/font-face-data-uri.html +++ b/third_party/WebKit/LayoutTests/fast/css/font-face-data-uri.html
@@ -36,7 +36,7 @@ shouldBe("document.getElementById('ref" + testId + "').offsetWidth", "document.getElementById('test" + testId + "').offsetWidth"); } if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } var trialCount = 0; @@ -54,7 +54,7 @@ } if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); </script> </body> </html>
diff --git a/third_party/WebKit/LayoutTests/fast/css/font-face-download-error.html b/third_party/WebKit/LayoutTests/fast/css/font-face-download-error.html index e78f0d1..a0e5fac 100644 --- a/third_party/WebKit/LayoutTests/fast/css/font-face-download-error.html +++ b/third_party/WebKit/LayoutTests/fast/css/font-face-download-error.html
@@ -63,7 +63,7 @@ <div id="out"></div> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); description("If no font resources are available for an @font-face rule due to download errors, the rule must be ignored but others must remain in effect."); @@ -110,7 +110,7 @@ } } if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } for (var mainTestId = 0; mainTestId < expectedResults.length; mainTestId++) {
diff --git a/third_party/WebKit/LayoutTests/fast/css/font-face-font-family-descriptor.html b/third_party/WebKit/LayoutTests/fast/css/font-face-font-family-descriptor.html index 681d1258..7cac426 100644 --- a/third_party/WebKit/LayoutTests/fast/css/font-face-font-family-descriptor.html +++ b/third_party/WebKit/LayoutTests/fast/css/font-face-font-family-descriptor.html
@@ -26,7 +26,7 @@ <div id="console"></div> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); description("font-family descriptor in @font-face rule can take only one family. Hence the @font-face rule in this test must be ignored.");
diff --git a/third_party/WebKit/LayoutTests/fast/css/font-family-initial-shorthand.html b/third_party/WebKit/LayoutTests/fast/css/font-family-initial-shorthand.html index 048231f..4d62422 100644 --- a/third_party/WebKit/LayoutTests/fast/css/font-family-initial-shorthand.html +++ b/third_party/WebKit/LayoutTests/fast/css/font-family-initial-shorthand.html
@@ -4,7 +4,7 @@ <script src="../../resources/js-test.js"></script> <script> if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); } </script> </head>
diff --git a/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/getComputedStyle-zoom-and-background-size.html b/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/getComputedStyle-zoom-and-background-size.html index ac16097..494f04d 100644 --- a/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/getComputedStyle-zoom-and-background-size.html +++ b/third_party/WebKit/LayoutTests/fast/css/getComputedStyle/getComputedStyle-zoom-and-background-size.html
@@ -91,7 +91,7 @@ <script type="text/javascript" charset="utf-8"> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var propertiesToCheck = { "background-position": "10px 10px",
diff --git a/third_party/WebKit/LayoutTests/fast/css/invalid-import-rule-insertion.html b/third_party/WebKit/LayoutTests/fast/css/invalid-import-rule-insertion.html index a58da09..e8b4dd34 100644 --- a/third_party/WebKit/LayoutTests/fast/css/invalid-import-rule-insertion.html +++ b/third_party/WebKit/LayoutTests/fast/css/invalid-import-rule-insertion.html
@@ -7,7 +7,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/fast/css/invalid-not-with-pseudo-element.html b/third_party/WebKit/LayoutTests/fast/css/invalid-not-with-pseudo-element.html index b5886634e..91b46d91 100644 --- a/third_party/WebKit/LayoutTests/fast/css/invalid-not-with-pseudo-element.html +++ b/third_party/WebKit/LayoutTests/fast/css/invalid-not-with-pseudo-element.html
@@ -18,7 +18,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/fast/css/linear-gradient-currentcolor.html b/third_party/WebKit/LayoutTests/fast/css/linear-gradient-currentcolor.html index ce71fe4ba..98b116fb 100644 --- a/third_party/WebKit/LayoutTests/fast/css/linear-gradient-currentcolor.html +++ b/third_party/WebKit/LayoutTests/fast/css/linear-gradient-currentcolor.html
@@ -15,7 +15,7 @@ </head> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> <body> <div style="color: green"></div>
diff --git a/third_party/WebKit/LayoutTests/fast/css/list-item-pseudo-nocrash.html b/third_party/WebKit/LayoutTests/fast/css/list-item-pseudo-nocrash.html index ddf92f7..b8f82a1 100644 --- a/third_party/WebKit/LayoutTests/fast/css/list-item-pseudo-nocrash.html +++ b/third_party/WebKit/LayoutTests/fast/css/list-item-pseudo-nocrash.html
@@ -20,9 +20,9 @@ if (!window.testRunner) return; - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); - window.eventSender.mouseMoveTo(0, 0); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); + eventSender.mouseMoveTo(0, 0); window.setTimeout(hover, 100); } @@ -30,12 +30,12 @@ var element = document.getElementById('text'); var x = element.offsetLeft + element.offsetWidth / 2; var y = element.offsetTop + element.offsetHeight / 2; - window.eventSender.mouseMoveTo(x, y); + eventSender.mouseMoveTo(x, y); window.setTimeout(finalize, 100); } function finalize() { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } window.addEventListener('load', run, false);
diff --git a/third_party/WebKit/LayoutTests/fast/css/logical-property-resolution.html b/third_party/WebKit/LayoutTests/fast/css/logical-property-resolution.html index 3a2b5e3..48d1570 100644 --- a/third_party/WebKit/LayoutTests/fast/css/logical-property-resolution.html +++ b/third_party/WebKit/LayoutTests/fast/css/logical-property-resolution.html
@@ -41,7 +41,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsText() + testRunner.dumpAsText() function dumpBlockProperties() {
diff --git a/third_party/WebKit/LayoutTests/fast/css/max-device-aspect-ratio.html b/third_party/WebKit/LayoutTests/fast/css/max-device-aspect-ratio.html index 58ae5c93f..f527d54 100644 --- a/third_party/WebKit/LayoutTests/fast/css/max-device-aspect-ratio.html +++ b/third_party/WebKit/LayoutTests/fast/css/max-device-aspect-ratio.html
@@ -4,7 +4,7 @@ <script src="../../resources/js-test.js"></script> <script> if (window.testRunner) { - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); } var count = 0; @@ -43,7 +43,7 @@ shouldBe("document.defaultView.getComputedStyle(document.getElementById('description'), null).color", "'rgb(0, 128, 0)'"); isSuccessfullyParsed(); if (window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } return; }
diff --git a/third_party/WebKit/LayoutTests/fast/css/max-height-and-max-width.html b/third_party/WebKit/LayoutTests/fast/css/max-height-and-max-width.html index 8d4828a..0982dd8 100644 --- a/third_party/WebKit/LayoutTests/fast/css/max-height-and-max-width.html +++ b/third_party/WebKit/LayoutTests/fast/css/max-height-and-max-width.html
@@ -4,7 +4,7 @@ <script src="../../resources/js-test.js"></script> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function doTest() {
diff --git a/third_party/WebKit/LayoutTests/fast/css/max-width-none.html b/third_party/WebKit/LayoutTests/fast/css/max-width-none.html index c7d5330..9d510a2 100644 --- a/third_party/WebKit/LayoutTests/fast/css/max-width-none.html +++ b/third_party/WebKit/LayoutTests/fast/css/max-width-none.html
@@ -1,7 +1,7 @@ <html> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function doTest() { var box1 = document.getElementById('box1');
diff --git a/third_party/WebKit/LayoutTests/fast/css/min-device-aspect-ratio.html b/third_party/WebKit/LayoutTests/fast/css/min-device-aspect-ratio.html index 04b686b..ee2bb48 100644 --- a/third_party/WebKit/LayoutTests/fast/css/min-device-aspect-ratio.html +++ b/third_party/WebKit/LayoutTests/fast/css/min-device-aspect-ratio.html
@@ -4,7 +4,7 @@ <script src="../../resources/js-test.js"></script> <script> if (window.testRunner) { - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); } var count = 0; @@ -43,7 +43,7 @@ shouldBe("document.defaultView.getComputedStyle(document.getElementById('description'), null).color", "'rgb(0, 128, 0)'"); isSuccessfullyParsed(); if (window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } return; }
diff --git a/third_party/WebKit/LayoutTests/fast/css/nth-child-implied-step.html b/third_party/WebKit/LayoutTests/fast/css/nth-child-implied-step.html index 1b112f274..20f4447 100644 --- a/third_party/WebKit/LayoutTests/fast/css/nth-child-implied-step.html +++ b/third_party/WebKit/LayoutTests/fast/css/nth-child-implied-step.html
@@ -10,7 +10,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/fast/css/nth-child-n.html b/third_party/WebKit/LayoutTests/fast/css/nth-child-n.html index b6d7023..eb6b13b 100644 --- a/third_party/WebKit/LayoutTests/fast/css/nth-child-n.html +++ b/third_party/WebKit/LayoutTests/fast/css/nth-child-n.html
@@ -7,7 +7,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsText() + testRunner.dumpAsText() </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/fast/css/nth-child-unary-prefix.html b/third_party/WebKit/LayoutTests/fast/css/nth-child-unary-prefix.html index bac130e4..e70c132 100644 --- a/third_party/WebKit/LayoutTests/fast/css/nth-child-unary-prefix.html +++ b/third_party/WebKit/LayoutTests/fast/css/nth-child-unary-prefix.html
@@ -10,7 +10,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsText() + testRunner.dumpAsText() </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/fast/css/pseudo-empty-dynamic-empty.html b/third_party/WebKit/LayoutTests/fast/css/pseudo-empty-dynamic-empty.html index f046e26..7b510f52 100644 --- a/third_party/WebKit/LayoutTests/fast/css/pseudo-empty-dynamic-empty.html +++ b/third_party/WebKit/LayoutTests/fast/css/pseudo-empty-dynamic-empty.html
@@ -15,7 +15,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function allElementsHaveDisplayNone(elements) {
diff --git a/third_party/WebKit/LayoutTests/fast/css/sticky/sticky-top-overflow-scroll-by-fragment.html b/third_party/WebKit/LayoutTests/fast/css/sticky/sticky-top-overflow-scroll-by-fragment.html index 9e93dbf2..bfd097d 100644 --- a/third_party/WebKit/LayoutTests/fast/css/sticky/sticky-top-overflow-scroll-by-fragment.html +++ b/third_party/WebKit/LayoutTests/fast/css/sticky/sticky-top-overflow-scroll-by-fragment.html
@@ -5,12 +5,12 @@ function done() { if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } if (window.location.hash == '') { if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); window.onhashchange = done; location = '#hash'; }
diff --git a/third_party/WebKit/LayoutTests/fast/css/text-align-initial.html b/third_party/WebKit/LayoutTests/fast/css/text-align-initial.html index 824e146..41aaf4d 100644 --- a/third_party/WebKit/LayoutTests/fast/css/text-align-initial.html +++ b/third_party/WebKit/LayoutTests/fast/css/text-align-initial.html
@@ -2,7 +2,7 @@ <script> function runTest() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var textAlign = window.getComputedStyle(document.getElementById("div")).textAlign; if (textAlign == "start")
diff --git a/third_party/WebKit/LayoutTests/fast/css/webfont-lighter-weight-crash.html b/third_party/WebKit/LayoutTests/fast/css/webfont-lighter-weight-crash.html index ec1aac0..3f30e11 100644 --- a/third_party/WebKit/LayoutTests/fast/css/webfont-lighter-weight-crash.html +++ b/third_party/WebKit/LayoutTests/fast/css/webfont-lighter-weight-crash.html
@@ -16,7 +16,7 @@ </p> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </body> </html>
diff --git a/third_party/WebKit/LayoutTests/fast/css/webkit-color-adjust.html b/third_party/WebKit/LayoutTests/fast/css/webkit-color-adjust.html index 9b559acd..613a4adc 100644 --- a/third_party/WebKit/LayoutTests/fast/css/webkit-color-adjust.html +++ b/third_party/WebKit/LayoutTests/fast/css/webkit-color-adjust.html
@@ -12,7 +12,7 @@ function runTests() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); test("economy", "economy"); test("exact", "exact");
diff --git a/third_party/WebKit/LayoutTests/fast/deprecated-flexbox/box-size-integer-overflow.html b/third_party/WebKit/LayoutTests/fast/deprecated-flexbox/box-size-integer-overflow.html index 598b6b4e..e69bf2a9 100644 --- a/third_party/WebKit/LayoutTests/fast/deprecated-flexbox/box-size-integer-overflow.html +++ b/third_party/WebKit/LayoutTests/fast/deprecated-flexbox/box-size-integer-overflow.html
@@ -3,7 +3,7 @@ <script> window.onload = function() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var cell = document.getElementById("cell"); var text = cell.firstElementChild;
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Document/title-property-creates-title-element.html b/third_party/WebKit/LayoutTests/fast/dom/Document/title-property-creates-title-element.html index 62b4236..9aad901 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Document/title-property-creates-title-element.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Document/title-property-creates-title-element.html
@@ -20,7 +20,7 @@ function test() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); expect(0, document.getElementsByTagName('title').length); document.title = 'Document title';
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Element/scale-page-bounding-client-rect-in-frame.html b/third_party/WebKit/LayoutTests/fast/dom/Element/scale-page-bounding-client-rect-in-frame.html index 84706ee..e33a332 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Element/scale-page-bounding-client-rect-in-frame.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Element/scale-page-bounding-client-rect-in-frame.html
@@ -10,7 +10,7 @@ var div = document.getElementById("frame").contentDocument.getElementById("div"); var rect = div.getBoundingClientRect(); - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); var scaledRect = div.getBoundingClientRect(); var result = document.getElementById("result");
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Element/scale-page-bounding-client-rect.html b/third_party/WebKit/LayoutTests/fast/dom/Element/scale-page-bounding-client-rect.html index e43ad30..493e25a 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Element/scale-page-bounding-client-rect.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Element/scale-page-bounding-client-rect.html
@@ -9,7 +9,7 @@ var div = document.getElementById("div"); var rect = div.getBoundingClientRect(); - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); var scaledRect = div.getBoundingClientRect(); var result = document.getElementById("result");
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Element/scale-page-client-rects-in-frame.html b/third_party/WebKit/LayoutTests/fast/dom/Element/scale-page-client-rects-in-frame.html index 41e40bd1..4de298958 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Element/scale-page-client-rects-in-frame.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Element/scale-page-client-rects-in-frame.html
@@ -10,7 +10,7 @@ var div = document.getElementById("frame").contentDocument.getElementById("div"); var rect = div.getClientRects()[0]; - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); var scaledRect = div.getClientRects()[0]; var result = document.getElementById("result");
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Element/scale-page-client-rects.html b/third_party/WebKit/LayoutTests/fast/dom/Element/scale-page-client-rects.html index c59122b..be6cd27 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Element/scale-page-client-rects.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Element/scale-page-client-rects.html
@@ -9,7 +9,7 @@ var div = document.getElementById("div"); var rectList = div.getClientRects(); - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); var scaledRectList = div.getClientRects(); var result = document.getElementById("result");
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Element/setAttributeNode-case-insensitivity-xhtml.xhtml b/third_party/WebKit/LayoutTests/fast/dom/Element/setAttributeNode-case-insensitivity-xhtml.xhtml index f01330c..0665f39 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Element/setAttributeNode-case-insensitivity-xhtml.xhtml +++ b/third_party/WebKit/LayoutTests/fast/dom/Element/setAttributeNode-case-insensitivity-xhtml.xhtml
@@ -6,7 +6,7 @@ function runTest() { if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var test = document.getElementById("test"); var newStyleAttr = document.createAttribute("STYLE");
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLDivElement/align/getset.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLDivElement/align/getset.html index 035755c..97d64df 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/HTMLDivElement/align/getset.html +++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLDivElement/align/getset.html
@@ -10,7 +10,7 @@ function test() { if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); } //test get align var divL = document.getElementById("divLeft");
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/document-special-properties.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/document-special-properties.html index e5c79bc5..b46bf25 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/document-special-properties.html +++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/document-special-properties.html
@@ -18,7 +18,7 @@ document.custom=new Object(); if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> <div style="visibility: hidden; width: 0px; height: 0px;">
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/object-by-name-or-id.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/object-by-name-or-id.html index 23ae632..92d590b 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/object-by-name-or-id.html +++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/object-by-name-or-id.html
@@ -8,7 +8,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> <div style="visibility: hidden; width: 0px; height: 0px;">
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/title-get.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/title-get.html index 88c88e7..8ddd46b 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/title-get.html +++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/title-get.html
@@ -10,7 +10,7 @@ function test() { if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); } if (document.title == "test") {
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/title-set.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/title-set.html index 19a8dec..13d63ff56 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/title-set.html +++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/title-set.html
@@ -9,7 +9,7 @@ function test() { if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); } document.title = "test";
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/url-getset.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/url-getset.html index 41b5f69..965330d 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/url-getset.html +++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/url-getset.html
@@ -20,7 +20,7 @@ //test set URL if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); } var origURL = document.URL;
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/write-call.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/write-call.html index 15265c7..630c477 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/write-call.html +++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/write-call.html
@@ -3,7 +3,7 @@ <script> function test() { if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); } document.write("passed");
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/write-multiple-calls.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/write-multiple-calls.html index b7bc96a..0a372c23 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/write-multiple-calls.html +++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/write-multiple-calls.html
@@ -3,7 +3,7 @@ <script> function test() { if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); } document.write("<pre>");
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/writeln-call.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/writeln-call.html index 62c630c..87259bcb 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/writeln-call.html +++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/writeln-call.html
@@ -3,7 +3,7 @@ <script> function test() { if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); } document.writeln("success");
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/writeln-multiple-calls.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/writeln-multiple-calls.html index c5ae445..be24fe0 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/writeln-multiple-calls.html +++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLDocument/writeln-multiple-calls.html
@@ -3,7 +3,7 @@ <script> function test() { if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); } document.writeln("<pre>");
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-sizes-meta-viewport.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-sizes-meta-viewport.html index f9607e0..227e249 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-sizes-meta-viewport.html +++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-sizes-meta-viewport.html
@@ -1,8 +1,8 @@ <!DOCTYPE html> <script> if (window.internals) { - window.internals.settings.setViewportEnabled(true); - window.internals.settings.setViewportMetaEnabled(true); + internals.settings.setViewportEnabled(true); + internals.settings.setViewportMetaEnabled(true); } </script> <meta name="viewport" content="width=160">
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-srcset-in-iframe-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-srcset-in-iframe-expected.txt index be73c42..a0c3a91 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-srcset-in-iframe-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-srcset-in-iframe-expected.txt
@@ -1,5 +1,5 @@ -PASS window.internals.isLoadingFromMemoryCache("resources/image-set-4x.png") is false -PASS window.internals.isLoadingFromMemoryCache("resources/blue_rect.jpg") is true +PASS internals.isLoadingFromMemoryCache("resources/image-set-4x.png") is false +PASS internals.isLoadingFromMemoryCache("resources/blue_rect.jpg") is true PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-srcset-in-iframe-external-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-srcset-in-iframe-external-expected.txt index be73c42..a0c3a91 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-srcset-in-iframe-external-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-srcset-in-iframe-external-expected.txt
@@ -1,5 +1,5 @@ -PASS window.internals.isLoadingFromMemoryCache("resources/image-set-4x.png") is false -PASS window.internals.isLoadingFromMemoryCache("resources/blue_rect.jpg") is true +PASS internals.isLoadingFromMemoryCache("resources/image-set-4x.png") is false +PASS internals.isLoadingFromMemoryCache("resources/blue_rect.jpg") is true PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-srcset-in-iframe-external.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-srcset-in-iframe-external.html index c7e36fe..bd5a91b 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-srcset-in-iframe-external.html +++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-srcset-in-iframe-external.html
@@ -9,8 +9,8 @@ window.addEventListener("message", function() { if (window.internals) { - shouldBeFalse('window.internals.isLoadingFromMemoryCache("resources/image-set-4x.png")'); - shouldBeTrue('window.internals.isLoadingFromMemoryCache("resources/blue_rect.jpg")'); + shouldBeFalse('internals.isLoadingFromMemoryCache("resources/image-set-4x.png")'); + shouldBeTrue('internals.isLoadingFromMemoryCache("resources/blue_rect.jpg")'); } finishJSTest(); });
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-srcset-in-iframe.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-srcset-in-iframe.html index c2f332d5..c75238e 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-srcset-in-iframe.html +++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-srcset-in-iframe.html
@@ -9,8 +9,8 @@ window.addEventListener("message", function() { if (window.internals) { - shouldBeFalse('window.internals.isLoadingFromMemoryCache("resources/image-set-4x.png")'); - shouldBeTrue('window.internals.isLoadingFromMemoryCache("resources/blue_rect.jpg")'); + shouldBeFalse('internals.isLoadingFromMemoryCache("resources/image-set-4x.png")'); + shouldBeTrue('internals.isLoadingFromMemoryCache("resources/blue_rect.jpg")'); } finishJSTest(); });
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-with-sizes-accounts-for-browser-zoom-expected.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-with-sizes-accounts-for-browser-zoom-expected.html index 2790e4f..0978d735 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-with-sizes-accounts-for-browser-zoom-expected.html +++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-with-sizes-accounts-for-browser-zoom-expected.html
@@ -15,9 +15,9 @@ addEventListener('load', function() { // Zoom in three times. Ensure the image scales just as a div with // an explicit vw size would. - window.eventSender.zoomPageIn(); - window.eventSender.zoomPageIn(); - window.eventSender.zoomPageIn(); + eventSender.zoomPageIn(); + eventSender.zoomPageIn(); + eventSender.zoomPageIn(); }); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-with-sizes-accounts-for-browser-zoom.html b/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-with-sizes-accounts-for-browser-zoom.html index 48384fae..ca02b66d 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-with-sizes-accounts-for-browser-zoom.html +++ b/third_party/WebKit/LayoutTests/fast/dom/HTMLImageElement/image-with-sizes-accounts-for-browser-zoom.html
@@ -12,9 +12,9 @@ addEventListener('load', function() { // Zoom in three times. Since the image has sizes=50vw it should // remain the same size since the viewport shrinks during a zoom. - window.eventSender.zoomPageIn(); - window.eventSender.zoomPageIn(); - window.eventSender.zoomPageIn(); + eventSender.zoomPageIn(); + eventSender.zoomPageIn(); + eventSender.zoomPageIn(); }); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Range/13000.html b/third_party/WebKit/LayoutTests/fast/dom/Range/13000.html index c801e3c..79903af 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Range/13000.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Range/13000.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var div = document.getElementById("div"); var text = div.firstChild;
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Range/compareBoundaryPoints-1.html b/third_party/WebKit/LayoutTests/fast/dom/Range/compareBoundaryPoints-1.html index 6144a4c..28abb2d 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Range/compareBoundaryPoints-1.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Range/compareBoundaryPoints-1.html
@@ -11,7 +11,7 @@ } if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var div = document.getElementById("div"); var text = div.firstChild;
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Range/compareBoundaryPoints-2.html b/third_party/WebKit/LayoutTests/fast/dom/Range/compareBoundaryPoints-2.html index 748df02..0d39d78 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Range/compareBoundaryPoints-2.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Range/compareBoundaryPoints-2.html
@@ -11,7 +11,7 @@ } if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var text = document.getElementById("text");
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Range/getClientRects.html b/third_party/WebKit/LayoutTests/fast/dom/Range/getClientRects.html index dc6a814..808eebe 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Range/getClientRects.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Range/getClientRects.html
@@ -199,7 +199,7 @@ if (window.testRunner) - window.testRunner.setTextSubpixelPositioning(true); + testRunner.setTextSubpixelPositioning(true); test(function() { var range = document.createRange();
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Range/scale-page-bounding-client-rect.html b/third_party/WebKit/LayoutTests/fast/dom/Range/scale-page-bounding-client-rect.html index f2e03d2c..5b9de67 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Range/scale-page-bounding-client-rect.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Range/scale-page-bounding-client-rect.html
@@ -11,7 +11,7 @@ range.selectNode(document.getElementById('div')); var rect = range.getBoundingClientRect(); - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); var scaledRange = document.createRange(); scaledRange.selectNode(document.getElementById('div')); var scaledRect = scaledRange.getBoundingClientRect();
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Range/scale-page-client-rects.html b/third_party/WebKit/LayoutTests/fast/dom/Range/scale-page-client-rects.html index 487c0937..008c101 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Range/scale-page-client-rects.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Range/scale-page-client-rects.html
@@ -12,7 +12,7 @@ var rectList = range.getClientRects(); var rect = rectList[0]; - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); var scaledRange = document.createRange(); scaledRange.selectNode(document.getElementById('div')); var scaledRectList = scaledRange.getClientRects();
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/global-opener-function.html b/third_party/WebKit/LayoutTests/fast/dom/Window/global-opener-function.html index f561633..0221914 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Window/global-opener-function.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Window/global-opener-function.html
@@ -12,7 +12,7 @@ function test() { if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); } var STATUS;
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/screen-size-in-physical-pixels-quirk.html b/third_party/WebKit/LayoutTests/fast/dom/Window/screen-size-in-physical-pixels-quirk.html index 33edade..17c52bc3 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Window/screen-size-in-physical-pixels-quirk.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Window/screen-size-in-physical-pixels-quirk.html
@@ -8,7 +8,7 @@ description("This test verifies behavior of the ReportScreenSizeInPhysicalPixelsQuirk setting."); if (window.testRunner) - window.testRunner.setBackingScaleFactor(2, function() {}); + testRunner.setBackingScaleFactor(2, function() {}); else debug("WARN: This test depends on availability of window.testRunner."); @@ -27,7 +27,7 @@ expectedValues = expectedValues.concat(initialUnscalableValues); if (window.internals) - window.internals.settings.setReportScreenSizeInPhysicalPixelsQuirk(true); + internals.settings.setReportScreenSizeInPhysicalPixelsQuirk(true); else debug("WARN: This test depends on the ReportScreenSizeInPhysicalPixelsQuirk setting to be true.");
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/window-collection-length-no-crash.html b/third_party/WebKit/LayoutTests/fast/dom/Window/window-collection-length-no-crash.html index 7959dbd..c6a5dda 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Window/window-collection-length-no-crash.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Window/window-collection-length-no-crash.html
@@ -13,8 +13,8 @@ <script> if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } var myFrames = subframe.frames; @@ -23,7 +23,7 @@ var foo = myFrames.length; document.getElementById("status").innerText = "SUCCESS"; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } subframe.document.location = "resources/notify-parent-done.html";
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/window-constructor-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/Window/window-constructor-expected.txt deleted file mode 100644 index 8942f0af..0000000 --- a/third_party/WebKit/LayoutTests/fast/dom/Window/window-constructor-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL Test Window and its prototype chain's constructors. Test bug: need to pass exception to assert_throws() -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/window-constructor-settable.html b/third_party/WebKit/LayoutTests/fast/dom/Window/window-constructor-settable.html index 2d7dbb2..8de00d1 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Window/window-constructor-settable.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Window/window-constructor-settable.html
@@ -6,7 +6,7 @@ <div id="console"></div> <script> if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); } function log(message, color)
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/window-constructor.html b/third_party/WebKit/LayoutTests/fast/dom/Window/window-constructor.html index cc043d3..026eca5b 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Window/window-constructor.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Window/window-constructor.html
@@ -6,19 +6,19 @@ assert_equals(window.constructor.prototype, window.__proto__, "Window constructor prototype is window prototype."); - assert_throws(null, () => { window.constructor(); }, + assert_throws(new TypeError, () => { window.constructor(); }, "Window constructor must be non-callable."); - assert_throws(null, () => { new window.constructor; }, + assert_throws(new TypeError, () => { new window.constructor; }, "Window constructor must be non-callable."); - assert_throws(null, () => { window.__proto__.constructor(); }, + assert_throws(new TypeError, () => { window.__proto__.constructor(); }, "Window.prototype constructor must be non-callable."); - assert_throws(null, () => { new window.__proto__.constructor; }, + assert_throws(new TypeError, () => { new window.__proto__.constructor; }, "Window.prototype constructor must be non-callable."); - assert_throws(null, () => { window.__proto__.__proto__.constructor(); }, + assert_throws(new TypeError, () => { window.__proto__.__proto__.constructor(); }, "WindowProperties constructor must be non-callable."); - assert_throws(null, () => { new window.__proto__.__proto__.constructor; }, + assert_throws(new TypeError, () => { new window.__proto__.__proto__.constructor; }, "WindowProperties constructor must be non-callable."); }, "Test Window and its prototype chain's constructors."); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/window-methods-construct-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/Window/window-methods-construct-expected.txt deleted file mode 100644 index 994354fb..0000000 --- a/third_party/WebKit/LayoutTests/fast/dom/Window/window-methods-construct-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL Construct call to window methods throws. Test bug: need to pass exception to assert_throws() -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/window-methods-construct.html b/third_party/WebKit/LayoutTests/fast/dom/Window/window-methods-construct.html index 64e6705..f8f4ca8 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Window/window-methods-construct.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Window/window-methods-construct.html
@@ -3,6 +3,6 @@ <script src="../../../resources/testharnessreport.js"></script> <script> test(t => { - assert_throws(null, function() { new window.blur(); }); + assert_throws(new TypeError, function() { new window.blur(); }); }, "Construct call to window methods throws."); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/window-onFocus.html b/third_party/WebKit/LayoutTests/fast/dom/Window/window-onFocus.html index 6986ee8..bfedb2b 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Window/window-onFocus.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Window/window-onFocus.html
@@ -6,12 +6,12 @@ window.onblur = windowBlurred; if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.setMainFrameIsFirstResponder(true); + testRunner.dumpAsText(); + testRunner.setMainFrameIsFirstResponder(true); - window.testRunner.setWindowIsKey(false); - window.testRunner.setWindowIsKey(true); - window.testRunner.setWindowIsKey(false); + testRunner.setWindowIsKey(false); + testRunner.setWindowIsKey(true); + testRunner.setWindowIsKey(false); } }
diff --git a/third_party/WebKit/LayoutTests/fast/dom/Window/window-special-properties.html b/third_party/WebKit/LayoutTests/fast/dom/Window/window-special-properties.html index 0fd80d3..d3597715 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/Window/window-special-properties.html +++ b/third_party/WebKit/LayoutTests/fast/dom/Window/window-special-properties.html
@@ -22,7 +22,7 @@ window.custom=new Object(); if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> <div style="visibility: hidden; width: 0px; height: 0px;">
diff --git a/third_party/WebKit/LayoutTests/fast/dom/array-special-accessors-should-ignore-items.html b/third_party/WebKit/LayoutTests/fast/dom/array-special-accessors-should-ignore-items.html index eeac44d..7292f13a 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/array-special-accessors-should-ignore-items.html +++ b/third_party/WebKit/LayoutTests/fast/dom/array-special-accessors-should-ignore-items.html
@@ -8,7 +8,7 @@ </select> <script type="text/javascript"> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var sel = document.getElementById("select"); var bracketZero = sel[0]; var itemZero = sel.item(0);
diff --git a/third_party/WebKit/LayoutTests/fast/dom/attr_dead_doc.html b/third_party/WebKit/LayoutTests/fast/dom/attr_dead_doc.html index 76fd592..b481f28 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/attr_dead_doc.html +++ b/third_party/WebKit/LayoutTests/fast/dom/attr_dead_doc.html
@@ -11,12 +11,12 @@ function init() { if (window.testRunner) { - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); } getImg(); document.getElementById("right").contentWindow.location.href = "about:blank"; if (window.testRunner) { - setTimeout("setImg(); window.testRunner.notifyDone();",100); + setTimeout("setImg(); testRunner.notifyDone();",100); } else { setTimeout("setImg();",100);
diff --git a/third_party/WebKit/LayoutTests/fast/dom/custom/custom-elements-registry-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/custom/custom-elements-registry-expected.txt deleted file mode 100644 index 268c43b..0000000 --- a/third_party/WebKit/LayoutTests/fast/dom/custom/custom-elements-registry-expected.txt +++ /dev/null
@@ -1,5 +0,0 @@ -This is a testharness.js-based test. -PASS window.customElements.define is defined -FAIL window.customElements.define requires two arguments Test bug: need to pass exception to assert_throws() -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/fast/dom/custom/custom-elements-registry.html b/third_party/WebKit/LayoutTests/fast/dom/custom/custom-elements-registry.html index 509762b..156e83f 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/custom/custom-elements-registry.html +++ b/third_party/WebKit/LayoutTests/fast/dom/custom/custom-elements-registry.html
@@ -8,9 +8,9 @@ }, 'window.customElements.define is defined'); test(function () { - assert_throws(null, function () { window.customElements.define(); }, + assert_throws(new TypeError, function () { window.customElements.define(); }, '"define" without arguments should throw TypeError'); - assert_throws(null, function () { window.customElements.define("x-x"); }, + assert_throws(new TypeError, function () { window.customElements.define("x-x"); }, '"define" with one argument should throw TypeError'); window.customElements.define('x-empty-function', function () { });
diff --git a/third_party/WebKit/LayoutTests/fast/dom/dataset-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/dataset-expected.txt index 66b35c5..d07c5012 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/dataset-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/dom/dataset-expected.txt
@@ -4,7 +4,7 @@ PASS This tests case sensitive scenario PASS Tests Undefined PASS Tests matchesNothingInDataset -FAIL Tests Set Test bug: need to pass exception to assert_throws() +PASS Tests Set PASS Tests Is Null PASS Tests Delete PASS Tests Native Delete @@ -14,7 +14,7 @@ PASS This tests case sensitive scenario PASS Tests Undefined PASS Tests matchesNothingInDataset -FAIL Tests Set Test bug: need to pass exception to assert_throws() +PASS Tests Set PASS Tests Is Null PASS Tests Delete PASS Tests Native Delete
diff --git a/third_party/WebKit/LayoutTests/fast/dom/dataset.html b/third_party/WebKit/LayoutTests/fast/dom/dataset.html index 7db2dbb..1e5440c3 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/dataset.html +++ b/third_party/WebKit/LayoutTests/fast/dom/dataset.html
@@ -94,9 +94,9 @@ assert_true(testSet('2d', 'data-2d')); assert_true(testSet('d-2', 'data-d-2')); assert_true(testSet('A--S', 'data--a---s')); - assert_throws(null, function() { testSet('-foo', 'dummy'); }, '"SyntaxError: Failed to set the \'-foo\' property on \'DOMStringMap\': \'-foo\' is not a valid property name."'); - assert_throws(null, function() { testSet('foo\x20', 'dummy'); }, '"InvalidCharacterError: Failed to set the \'foo\x20\' property on \'DOMStringMap\': \'data-foo\x20\' is not a valid attribute name."'); - assert_throws(null, function() { testSet('foo\uF900', 'dummy'); }, '"InvalidCharacterError: Failed to set the \'foo\uF900\' property on \'DOMStringMap\': \'data-foo\uF900\' is not a valid attribute name."'); + assert_throws(new SyntaxError, function() { testSet('-foo', 'dummy'); }, '"SyntaxError: Failed to set the \'-foo\' property on \'DOMStringMap\': \'-foo\' is not a valid property name."'); + assert_throws("InvalidCharacterError", function() { testSet('foo\x20', 'dummy'); }, '"InvalidCharacterError: Failed to set the \'foo\x20\' property on \'DOMStringMap\': \'data-foo\x20\' is not a valid attribute name."'); + assert_throws("InvalidCharacterError", function() { testSet('foo\uF900', 'dummy'); }, '"InvalidCharacterError: Failed to set the \'foo\uF900\' property on \'DOMStringMap\': \'data-foo\uF900\' is not a valid attribute name."'); },'Tests Set');
diff --git a/third_party/WebKit/LayoutTests/fast/dom/documentElement-null.html b/third_party/WebKit/LayoutTests/fast/dom/documentElement-null.html index a693820a..fe0330d 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/documentElement-null.html +++ b/third_party/WebKit/LayoutTests/fast/dom/documentElement-null.html
@@ -6,7 +6,7 @@ <script> window.onload = function() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var meths = [ document.lookupNamespaceURI,
diff --git a/third_party/WebKit/LayoutTests/fast/dom/documentmarker-add-adjacent-text-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/documentmarker-add-adjacent-text-expected.txt index fec0eb86..067d19e43 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/documentmarker-add-adjacent-text-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/dom/documentmarker-add-adjacent-text-expected.txt
@@ -3,7 +3,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -PASS window.internals.markerCountForNode(elt, "textmatch") is 2 +PASS internals.markerCountForNode(elt, "textmatch") is 2 PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/dom/documentmarker-add-adjacent-text.html b/third_party/WebKit/LayoutTests/fast/dom/documentmarker-add-adjacent-text.html index 9e34c19..97f01fa 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/documentmarker-add-adjacent-text.html +++ b/third_party/WebKit/LayoutTests/fast/dom/documentmarker-add-adjacent-text.html
@@ -20,10 +20,10 @@ if (!window.internals) { alert('This test requires window.interals to run!'); } else { - window.internals.addTextMatchMarker(rangeLeft, 'kActive'); - window.internals.addTextMatchMarker(rangeRight, 'kActive'); + internals.addTextMatchMarker(rangeLeft, 'kActive'); + internals.addTextMatchMarker(rangeRight, 'kActive'); - shouldBe('window.internals.markerCountForNode(elt, "textmatch")', '2'); + shouldBe('internals.markerCountForNode(elt, "textmatch")', '2'); } var successfullyParsed = true;
diff --git a/third_party/WebKit/LayoutTests/fast/dom/documentmarker-set-active-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/documentmarker-set-active-expected.txt index 5f99934c..e6d2ab2 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/documentmarker-set-active-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/dom/documentmarker-set-active-expected.txt
@@ -3,10 +3,10 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -PASS window.internals.activeMarkerCountForNode(elt) is 0 -PASS window.internals.activeMarkerCountForNode(elt) is 1 -PASS window.internals.activeMarkerCountForNode(elt) is 0 -PASS window.internals.activeMarkerCountForNode(elt) is 0 +PASS internals.activeMarkerCountForNode(elt) is 0 +PASS internals.activeMarkerCountForNode(elt) is 1 +PASS internals.activeMarkerCountForNode(elt) is 0 +PASS internals.activeMarkerCountForNode(elt) is 0 PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/dom/documentmarker-set-active.html b/third_party/WebKit/LayoutTests/fast/dom/documentmarker-set-active.html index 39d5a3d9..17efcf2 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/documentmarker-set-active.html +++ b/third_party/WebKit/LayoutTests/fast/dom/documentmarker-set-active.html
@@ -17,19 +17,19 @@ if (!window.internals) { alert('This test requires window.interals to run!'); } else { - window.internals.addTextMatchMarker(range, 'kInactive'); + internals.addTextMatchMarker(range, 'kInactive'); - window.internals.setTextMatchMarkersActive(elt, 0, 1, true); - shouldBe('window.internals.activeMarkerCountForNode(elt)', '0'); + internals.setTextMatchMarkersActive(elt, 0, 1, true); + shouldBe('internals.activeMarkerCountForNode(elt)', '0'); - window.internals.setTextMatchMarkersActive(elt, 1, 2, true); - shouldBe('window.internals.activeMarkerCountForNode(elt)', '1'); + internals.setTextMatchMarkersActive(elt, 1, 2, true); + shouldBe('internals.activeMarkerCountForNode(elt)', '1'); - window.internals.setTextMatchMarkersActive(elt, 2, 3, false); - shouldBe('window.internals.activeMarkerCountForNode(elt)', '0'); + internals.setTextMatchMarkersActive(elt, 2, 3, false); + shouldBe('internals.activeMarkerCountForNode(elt)', '0'); - window.internals.setTextMatchMarkersActive(elt, 3, 4, true); - shouldBe('window.internals.activeMarkerCountForNode(elt)', '0'); + internals.setTextMatchMarkersActive(elt, 3, 4, true); + shouldBe('internals.activeMarkerCountForNode(elt)', '0'); } var successfullyParsed = true;
diff --git a/third_party/WebKit/LayoutTests/fast/dom/element-bounding-client-rect-relative-to-viewport.html b/third_party/WebKit/LayoutTests/fast/dom/element-bounding-client-rect-relative-to-viewport.html index 80000c1c..6468d40 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/element-bounding-client-rect-relative-to-viewport.html +++ b/third_party/WebKit/LayoutTests/fast/dom/element-bounding-client-rect-relative-to-viewport.html
@@ -42,7 +42,7 @@ if (window.internals) { window.scrollTo(layoutXScroll, layoutYScroll); - window.internals.setPageScaleFactor(2.0); + internals.setPageScaleFactor(2.0); internals.setVisualViewportOffset(visualXScroll, visualYScroll); }
diff --git a/third_party/WebKit/LayoutTests/fast/dom/elementFromPoint-scaled-scrolled.html b/third_party/WebKit/LayoutTests/fast/dom/elementFromPoint-scaled-scrolled.html index 5db10775..6be0b97 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/elementFromPoint-scaled-scrolled.html +++ b/third_party/WebKit/LayoutTests/fast/dom/elementFromPoint-scaled-scrolled.html
@@ -11,7 +11,7 @@ // Scroll before scaling so we scroll the layout viewport rather than the visual. window.scrollTo(100,100); if (window.internals) - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); if (window.testRunner) testRunner.dumpAsText();
diff --git a/third_party/WebKit/LayoutTests/fast/dom/hover-after-dom-delete-child-invisible-cursor.html b/third_party/WebKit/LayoutTests/fast/dom/hover-after-dom-delete-child-invisible-cursor.html index c2a53d7..95b5b20b 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/hover-after-dom-delete-child-invisible-cursor.html +++ b/third_party/WebKit/LayoutTests/fast/dom/hover-after-dom-delete-child-invisible-cursor.html
@@ -41,8 +41,8 @@ if (!window.testRunner || !window.eventSender) return; - if (!window.internals || !window.internals.setIsCursorVisible) { - debug("window.internals.setIsCursorVisible is required to run this test."); + if (!window.internals || !internals.setIsCursorVisible) { + debug("internals.setIsCursorVisible is required to run this test."); return; }
diff --git a/third_party/WebKit/LayoutTests/fast/dom/hover-after-dom-delete.html b/third_party/WebKit/LayoutTests/fast/dom/hover-after-dom-delete.html index afcd6b55..001dc71 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/hover-after-dom-delete.html +++ b/third_party/WebKit/LayoutTests/fast/dom/hover-after-dom-delete.html
@@ -41,8 +41,8 @@ if (!window.testRunner || !window.eventSender) return; - if (!window.internals || !window.internals.setIsCursorVisible) { - debug("window.internals.setIsCursorVisible is required to run this test."); + if (!window.internals || !internals.setIsCursorVisible) { + debug("internals.setIsCursorVisible is required to run this test."); return; }
diff --git a/third_party/WebKit/LayoutTests/fast/dom/hover-node-refcnt-asan-crash.html b/third_party/WebKit/LayoutTests/fast/dom/hover-node-refcnt-asan-crash.html index 1c92d48..7e92368 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/hover-node-refcnt-asan-crash.html +++ b/third_party/WebKit/LayoutTests/fast/dom/hover-node-refcnt-asan-crash.html
@@ -13,7 +13,7 @@ // after hovered node changes. Nodes were deref'ed and could be mistakenly freed // before use. if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); eventSender.mouseMoveTo(50, 100); eventSender.mouseDown(1);
diff --git a/third_party/WebKit/LayoutTests/fast/dom/htmlcollection-non-html.html b/third_party/WebKit/LayoutTests/fast/dom/htmlcollection-non-html.html index b79a434..0f8d96b 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/htmlcollection-non-html.html +++ b/third_party/WebKit/LayoutTests/fast/dom/htmlcollection-non-html.html
@@ -61,7 +61,7 @@ function runTest() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); description('Tests that HTMLCollection only properly contains HTML elements');
diff --git a/third_party/WebKit/LayoutTests/fast/dom/icon-url-change.html b/third_party/WebKit/LayoutTests/fast/dom/icon-url-change.html index 1dd2baeb..e9c2c51 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/icon-url-change.html +++ b/third_party/WebKit/LayoutTests/fast/dom/icon-url-change.html
@@ -45,7 +45,7 @@ // check that the URL list in the document is as we expect var expectedURLs = "http://test.com/oldfavicon.ico"; - var iconURLs = window.internals.shortcutIconURLs(document); + var iconURLs = internals.shortcutIconURLs(document); if (expectedURLs == iconURLs[0]) testPassed('URL list matches expected'); else
diff --git a/third_party/WebKit/LayoutTests/fast/dom/icon-url-list-apple-touch.html b/third_party/WebKit/LayoutTests/fast/dom/icon-url-list-apple-touch.html index 9bac9ce..1a72d65 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/icon-url-list-apple-touch.html +++ b/third_party/WebKit/LayoutTests/fast/dom/icon-url-list-apple-touch.html
@@ -13,7 +13,7 @@ debug('Tests that all favicons and touch icons are in document.iconURLs()'); // Fetch the actual list of icon URLs. - var actualURLs = window.internals.allIconURLs(document); + var actualURLs = internals.allIconURLs(document); if (!actualURLs[0] || actualURLs[0] != "http://test.com/oldfavicon.ico") { debug("Test failed.. not the right icon on first place in document.iconURLs()")
diff --git a/third_party/WebKit/LayoutTests/fast/dom/icon-url-list.html b/third_party/WebKit/LayoutTests/fast/dom/icon-url-list.html index 2e95d7b..1293d122 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/icon-url-list.html +++ b/third_party/WebKit/LayoutTests/fast/dom/icon-url-list.html
@@ -48,7 +48,7 @@ var expectedURL0 = "http://test.com/barfavicon.ico"; var expectedURL1 = "http://test.com/foofavicon.ico"; var expectedURL2 = "http://test.com/newfavicon.ico"; - var iconURLs = window.internals.shortcutIconURLs(document); + var iconURLs = internals.shortcutIconURLs(document); if (expectedURL0 == iconURLs[0] && expectedURL1 == iconURLs[1] && expectedURL2 == iconURLs[2]) testPassed('URL list matches expected'); else
diff --git a/third_party/WebKit/LayoutTests/fast/dom/icon-url-property.html b/third_party/WebKit/LayoutTests/fast/dom/icon-url-property.html index ff71712e..bd6bc6c 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/icon-url-property.html +++ b/third_party/WebKit/LayoutTests/fast/dom/icon-url-property.html
@@ -54,7 +54,7 @@ // check that the URL list in the document is as we expect var expectedURLs = "http://test.com/newfavicon.ico"; - var iconURLs = window.internals.shortcutIconURLs(document); + var iconURLs = internals.shortcutIconURLs(document); if (expectedURLs == iconURLs[0]) debugOutput('PASS - URL list matches expected'); else
diff --git a/third_party/WebKit/LayoutTests/fast/dom/iframe-inner-size-scaling.html b/third_party/WebKit/LayoutTests/fast/dom/iframe-inner-size-scaling.html index a0db3f3..a9e473b 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/iframe-inner-size-scaling.html +++ b/third_party/WebKit/LayoutTests/fast/dom/iframe-inner-size-scaling.html
@@ -12,7 +12,7 @@ originalHeight = frame.contentWindow.innerHeight; if (window.internals) - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); shouldBeNonZero("frame.contentWindow.innerWidth"); shouldBeNonZero("frame.contentWindow.innerHeight");
diff --git a/third_party/WebKit/LayoutTests/fast/dom/inline-event-attributes-release.html b/third_party/WebKit/LayoutTests/fast/dom/inline-event-attributes-release.html index 2db4f80..3b48623c 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/inline-event-attributes-release.html +++ b/third_party/WebKit/LayoutTests/fast/dom/inline-event-attributes-release.html
@@ -7,7 +7,7 @@ jsTestIsAsync = true; function numberOfLiveNodes() { - return window.internals && window.internals.numberOfLiveNodes && window.internals.numberOfLiveNodes(); + return window.internals && internals.numberOfLiveNodes && internals.numberOfLiveNodes(); } var afterCount;
diff --git a/third_party/WebKit/LayoutTests/fast/dom/inner-text-001.html b/third_party/WebKit/LayoutTests/fast/dom/inner-text-001.html index 20d430c..75e58ce 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/inner-text-001.html +++ b/third_party/WebKit/LayoutTests/fast/dom/inner-text-001.html
@@ -52,7 +52,7 @@ <pre id="innertext"></pre> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.getElementById("innertext").innerText = document.getElementById("test").innerText; </script>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/lenient-this-expected.txt b/third_party/WebKit/LayoutTests/fast/dom/lenient-this-expected.txt deleted file mode 100644 index d4985ca..0000000 --- a/third_party/WebKit/LayoutTests/fast/dom/lenient-this-expected.txt +++ /dev/null
@@ -1,5 +0,0 @@ -This is a testharness.js-based test. -FAIL Test [LenientThis] and non-[LenientThis]. Test bug: need to pass exception to assert_throws() -PASS Test with extracted accessors. -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/fast/dom/lenient-this.html b/third_party/WebKit/LayoutTests/fast/dom/lenient-this.html index 39a6c86..6e566a15 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/lenient-this.html +++ b/third_party/WebKit/LayoutTests/fast/dom/lenient-this.html
@@ -12,10 +12,10 @@ // GlobalEventHandlers.onmousedown is NOT [LenientThis]. assert_equals(document.onmousedown, null, "|this| is an appropriate object."); - assert_throws(null, function() { + assert_throws(new TypeError, function() { Document.prototype.onmousedown; }, "Document.prototype is invalid as |this|."); - assert_throws(null, function() { + assert_throws(new TypeError, function() { Document.prototype.onmousedown = 'foo'; }, "Document.prototype is invalid as |this|."); }, "Test [LenientThis] and non-[LenientThis].");
diff --git a/third_party/WebKit/LayoutTests/fast/dom/navigator-maxTouchPoints.html b/third_party/WebKit/LayoutTests/fast/dom/navigator-maxTouchPoints.html index e6c2b89..82728de 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/navigator-maxTouchPoints.html +++ b/third_party/WebKit/LayoutTests/fast/dom/navigator-maxTouchPoints.html
@@ -3,7 +3,7 @@ <script> description('This tests that the maxTouchPoints setting is plumbed through to the navigator object.'); -window.internals.settings.setMaxTouchPoints(37); +internals.settings.setMaxTouchPoints(37); shouldBe('navigator.maxTouchPoints', '37'); </script> <body>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/null-chardata-crash.html b/third_party/WebKit/LayoutTests/fast/dom/null-chardata-crash.html index e1be5a7..4dda589 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/null-chardata-crash.html +++ b/third_party/WebKit/LayoutTests/fast/dom/null-chardata-crash.html
@@ -3,7 +3,7 @@ <p>To pass, this test should not crash</p> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var o = document.createTextNode(''); try {
diff --git a/third_party/WebKit/LayoutTests/fast/dom/partial-layout-block.html b/third_party/WebKit/LayoutTests/fast/dom/partial-layout-block.html index 3bf1e085..ac98643 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/partial-layout-block.html +++ b/third_party/WebKit/LayoutTests/fast/dom/partial-layout-block.html
@@ -28,7 +28,7 @@ testRunner.dumpAsText(); if (window.internals) - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.runtimeFlags.overlayScrollbarsEnabled = true; test(function() { var measure = document.getElementById('measure');
diff --git a/third_party/WebKit/LayoutTests/fast/dom/partial-layout-non-overlay-scrollbars.html b/third_party/WebKit/LayoutTests/fast/dom/partial-layout-non-overlay-scrollbars.html index d98864b..339fa51 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/partial-layout-non-overlay-scrollbars.html +++ b/third_party/WebKit/LayoutTests/fast/dom/partial-layout-non-overlay-scrollbars.html
@@ -28,7 +28,7 @@ testRunner.dumpAsText(); if (window.internals) - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; // Note: We force non-overlay scrollbars with CSS. + internals.runtimeFlags.overlayScrollbarsEnabled = true; // Note: We force non-overlay scrollbars with CSS. var test = async_test("Test that partial layout works with non-overlay scrollbars."); setTimeout(function() {
diff --git a/third_party/WebKit/LayoutTests/fast/dom/partial-layout-overlay-scrollbars.html b/third_party/WebKit/LayoutTests/fast/dom/partial-layout-overlay-scrollbars.html index 5b07116e..2d921f1 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/partial-layout-overlay-scrollbars.html +++ b/third_party/WebKit/LayoutTests/fast/dom/partial-layout-overlay-scrollbars.html
@@ -23,7 +23,7 @@ testRunner.dumpAsText(); if (window.internals) - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.runtimeFlags.overlayScrollbarsEnabled = true; var test = async_test("Test that partial layout works with overlay scrollbars."); setTimeout(function() {
diff --git a/third_party/WebKit/LayoutTests/fast/dom/remove-svg-font-face-element-crash.xhtml b/third_party/WebKit/LayoutTests/fast/dom/remove-svg-font-face-element-crash.xhtml index 983203c3..12e0ffa6 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/remove-svg-font-face-element-crash.xhtml +++ b/third_party/WebKit/LayoutTests/fast/dom/remove-svg-font-face-element-crash.xhtml
@@ -23,7 +23,7 @@ // crbug.com/352178: Heap-use-after-free in WebCore::SVGFontFaceElement::associatedFontElement. // PASS if no crash occurs. if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.execCommand("SelectAll");
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/anchor-content-projected.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/anchor-content-projected.html index 11202a0c..6a307e5 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/shadow/anchor-content-projected.html +++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/anchor-content-projected.html
@@ -37,7 +37,7 @@ window.onhashchange = function() { if (window.internals) - debug('Cursor Info: ' + window.internals.getCurrentCursorInfo()); + debug('Cursor Info: ' + internals.getCurrentCursorInfo()); shouldBeEqualToString("window.location.hash", "#link-clicked"); finishJSTest(); };
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/content-after-style.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/content-after-style.html index 83feeb0..0ac5e18 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/shadow/content-after-style.html +++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/content-after-style.html
@@ -4,13 +4,13 @@ <div id="host"><div>host content</div></div> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); var root = document.querySelector('#host').createShadowRoot(); root.innerHTML = '<style>invalid { }</style>' + 'text<content></content>'; window.setTimeout(function() { if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }, 0); </script> </body>
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/content-element-outside-shadow.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/content-element-outside-shadow.html index 0ec3d13..6d8361e 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/shadow/content-element-outside-shadow.html +++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/content-element-outside-shadow.html
@@ -40,9 +40,9 @@ targetContainer.innerHTML = targetMarkup; comparisonContainer.innerHTML = expectedMarkup; - targetLayoutTree = removeContainerLines(window.internals.elementLayoutTreeAsText(targetContainer)); + targetLayoutTree = removeContainerLines(internals.elementLayoutTreeAsText(targetContainer)); targetLayoutTree = targetLayoutTree.replace(/CONTENT/g, "UNKNOWN"); - comparisonLayoutTree = removeContainerLines(window.internals.elementLayoutTreeAsText(comparisonContainer)); + comparisonLayoutTree = removeContainerLines(internals.elementLayoutTreeAsText(comparisonContainer)); debug(escapeHTML(targetMarkup)); shouldBe("targetLayoutTree", "comparisonLayoutTree"); }
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/content-element-renderers.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/content-element-renderers.html index 0d9914e..23e5fa2 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/shadow/content-element-renderers.html +++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/content-element-renderers.html
@@ -100,7 +100,7 @@ cleanupContainer(targetContainer); var target = createTargetTree(contentHtml, shadowHtml); targetContainer.appendChild(target); - var targetLayoutTree = removeContainerLines(window.internals.elementLayoutTreeAsText(targetContainer)); + var targetLayoutTree = removeContainerLines(internals.elementLayoutTreeAsText(targetContainer)); var referenceContainer = document.getElementById("referenceContainer"); cleanupContainer(referenceContainer); @@ -108,7 +108,7 @@ var referenceHtml = shadowHtml.replace("<content/>", (separator + contentHtml + separator)); var reference = createTreeFrom(referenceHtml); referenceContainer.appendChild(reference); - var referenceLayoutTree = removeContainerLines(window.internals.elementLayoutTreeAsText(referenceContainer)); + var referenceLayoutTree = removeContainerLines(internals.elementLayoutTreeAsText(referenceContainer)); if (targetLayoutTree == referenceLayoutTree) log("PASS[" + label + "]: content=" + contentHtml + " shadow=" + shadowHtml); else {
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/create-content-element.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/create-content-element.html index b2f6f730..1f667eab 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/shadow/create-content-element.html +++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/create-content-element.html
@@ -42,9 +42,9 @@ testRunner.dumpAsText(); log("This test compares a shadow-based render tree with one for a reference DOM tree."); setupTargetTree(); - var targetContainerLayoutTree = window.internals.elementLayoutTreeAsText(document.getElementById("targetContainer")); + var targetContainerLayoutTree = internals.elementLayoutTreeAsText(document.getElementById("targetContainer")); var targetLayoutTree = removeContainerLines(targetContainerLayoutTree); - var refContainerLayoutTree = window.internals.elementLayoutTreeAsText(document.getElementById("refContainer")); + var refContainerLayoutTree = internals.elementLayoutTreeAsText(document.getElementById("refContainer")); var refLayoutTree = removeContainerLines(refContainerLayoutTree); if (targetLayoutTree == refLayoutTree) log("PASS");
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/drag-and-drop-in-user-agent-shadow.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/drag-and-drop-in-user-agent-shadow.html index 8fd215c..623d28e 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/shadow/drag-and-drop-in-user-agent-shadow.html +++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/drag-and-drop-in-user-agent-shadow.html
@@ -12,7 +12,7 @@ document.createTextNode('Shadow Root Child')), createDOM('slot', {'name': 'user-agent-default-slot'})))); -var shadowRootChild = window.internals.shadowRoot(host).getElementById('shadow-root-child'); +var shadowRootChild = internals.shadowRoot(host).getElementById('shadow-root-child'); var dragstartCount = 0; host.addEventListener('dragstart', function(e) {
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/offset-parent-does-not-leak-ua-shadow.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/offset-parent-does-not-leak-ua-shadow.html index 77c5a35..77064394 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/shadow/offset-parent-does-not-leak-ua-shadow.html +++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/offset-parent-does-not-leak-ua-shadow.html
@@ -46,7 +46,7 @@ container.appendChild(host); host.setAttribute('open', 'open'); host.appendChild(child); -var shadow = window.internals.shadowRoot(host); // this is a UA shadow root +var shadow = internals.shadowRoot(host); // this is a UA shadow root configureUAShadowRoot(shadow); shouldBe('child.offsetParent', 'container');
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/event-dispatching.js b/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/event-dispatching.js index 9f4b9e4..a8fd1ff 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/event-dispatching.js +++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/event-dispatching.js
@@ -8,7 +8,7 @@ var rect = element.getBoundingClientRect(); var x = rect.left + rect.width / 2; var y; - if (element.hasChildNodes() || window.internals.shadowRoot(element)) + if (element.hasChildNodes() || internals.shadowRoot(element)) y = rect.top + defaultPaddingSize / 2; else y = rect.top + rect.height / 2;
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/shadow-dom.js b/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/shadow-dom.js index 1ba6705..6dd3e38 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/shadow-dom.js +++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/resources/shadow-dom.js
@@ -79,7 +79,7 @@ if (child.isShadowRoot) { var shadowRoot; if (child.isUserAgentShadowRoot) { - shadowRoot = window.internals.createUserAgentShadowRoot(element); + shadowRoot = internals.createUserAgentShadowRoot(element); } else { if (child.parameter && Object.keys(child.parameter).length > 0) shadowRoot = element.attachShadow(child.parameter); @@ -102,7 +102,7 @@ function isShadowHost(node) { - return window.internals.shadowRoot(node); + return internals.shadowRoot(node); } function isShadowRoot(node) @@ -172,7 +172,7 @@ return element; } if (isShadowHost(element)) { - var shadowRoot = window.internals.shadowRoot(element); + var shadowRoot = internals.shadowRoot(element); if (shadowRoot) { if (shadowRoot.activeElement) return innermostActiveElement(shadowRoot.activeElement);
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/shadow-boundary-events.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/shadow-boundary-events.html index 2725eeaa..d15e8c03 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/shadow/shadow-boundary-events.html +++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/shadow-boundary-events.html
@@ -19,7 +19,7 @@ var defaultPaddingSize = 20; var x = element.offsetLeft + element.offsetWidth / 2; var y; - if (element.hasChildNodes() || window.internals.shadowRoot(element)) + if (element.hasChildNodes() || internals.shadowRoot(element)) y = element.offsetTop + defaultPaddingSize; else y = element.offsetTop + element.offsetHeight / 2;
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/shadow-root-node-list.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/shadow-root-node-list.html index 911c0e4..683a3a79 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/shadow/shadow-root-node-list.html +++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/shadow-root-node-list.html
@@ -5,7 +5,7 @@ { if (!window.testRunner) return; - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var host = document.createElement("blockquote"); var shadow = host.createShadowRoot();
diff --git a/third_party/WebKit/LayoutTests/fast/dom/shadow/shadow-root-text-child.html b/third_party/WebKit/LayoutTests/fast/dom/shadow/shadow-root-text-child.html index e6a4986..93e0c6b82 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/shadow/shadow-root-text-child.html +++ b/third_party/WebKit/LayoutTests/fast/dom/shadow/shadow-root-text-child.html
@@ -5,7 +5,7 @@ { if (!window.testRunner) return; - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var root = document.createElement("div"); var shadow = root.createShadowRoot(); var shadowBuilder = document.createElement("div");
diff --git a/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-dimensions-exclude-custom-scrollbars.html b/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-dimensions-exclude-custom-scrollbars.html index 2f6a716..fde9980 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-dimensions-exclude-custom-scrollbars.html +++ b/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-dimensions-exclude-custom-scrollbars.html
@@ -46,7 +46,7 @@ "Height with pinch-zoom"); // Apply browser zoom. - window.internals.setZoomFactor(browserZoomFactor); + internals.setZoomFactor(browserZoomFactor); // Verify scrollbar exclusion with browser zoom. Custom scrollbars are // scaled with browser zoom but remain unchanged with pinch zoom.
diff --git a/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-dimensions-exclude-scrollbars.html b/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-dimensions-exclude-scrollbars.html index a432e96..7c96827 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-dimensions-exclude-scrollbars.html +++ b/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-dimensions-exclude-scrollbars.html
@@ -34,7 +34,7 @@ "Height with pinch-zoom"); // Apply browser zoom. - window.internals.setZoomFactor(browserZoomFactor); + internals.setZoomFactor(browserZoomFactor); // Since the scrollbars don't change size to the user as we zoom, they're // actuall smaller in CSS pixels.
diff --git a/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-dimensions-under-browser-zoom.html b/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-dimensions-under-browser-zoom.html index 9365bf6..1eeeed2f 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-dimensions-under-browser-zoom.html +++ b/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-dimensions-under-browser-zoom.html
@@ -43,7 +43,7 @@ assert_equals(viewport().scale, 2); // Apply browser zoom. - window.internals.setZoomFactor(browserZoomFactor); + internals.setZoomFactor(browserZoomFactor); requestAnimationFrame(function() { t.step(function() {
diff --git a/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-scale-inert.html b/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-scale-inert.html index d5d9e678..7708ac5 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-scale-inert.html +++ b/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-scale-inert.html
@@ -22,7 +22,7 @@ var initialHeight = window.innerHeight; // Zoom into the page, innerWidth and innerHeight shouldn't be affected. - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); test(function() { assert_equals(window.innerWidth, initialWidth); @@ -31,7 +31,7 @@ // Pan just the visual viepwort. scrollX and scrollY shouldn't be // affected. - window.internals.setVisualViewportOffset(10, 20); + internals.setVisualViewportOffset(10, 20); test(function() { assert_equals(window.scrollX, 0);
diff --git a/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-scrolling-element-inert.html b/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-scrolling-element-inert.html index cc27e57..cc66ecd 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-scrolling-element-inert.html +++ b/third_party/WebKit/LayoutTests/fast/dom/viewport/viewport-scrolling-element-inert.html
@@ -14,8 +14,8 @@ return; // Zoom into the page, innerWidth and innerHeight shouldn't be affected. - window.internals.setPageScaleFactor(2); - window.internals.setVisualViewportOffset(0, 0); + internals.setPageScaleFactor(2); + internals.setVisualViewportOffset(0, 0); test(function() { // Try scrollTo(). Since the page has no overflow, the only @@ -51,7 +51,7 @@ // Ensure scrollLeft and scrollTop don't report visual viewport // offset. - window.internals.setVisualViewportOffset(200, 200); + internals.setVisualViewportOffset(200, 200); assert_equals(document.scrollingElement.scrollLeft, 0); assert_equals(document.scrollingElement.scrollTop, 0); }, "scrollLeft and scrollTop are layout-viewport relative");
diff --git a/third_party/WebKit/LayoutTests/fast/dom/window-scroll-scaling.html b/third_party/WebKit/LayoutTests/fast/dom/window-scroll-scaling.html index 0f138f9..50d62a9 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/window-scroll-scaling.html +++ b/third_party/WebKit/LayoutTests/fast/dom/window-scroll-scaling.html
@@ -5,7 +5,7 @@ description("This test ensures that document content width (height) as reported by scrollWidth (scrollHeight) is invariant to changes in page scale factor."); if (window.internals) - window.internals.settings.setMockScrollbarsEnabled(true); + internals.settings.setMockScrollbarsEnabled(true); var body = document.body; @@ -24,7 +24,7 @@ var scale = 1.1; if (window.eventSender) - window.internals.setPageScaleFactor(scale); + internals.setPageScaleFactor(scale); // As we have increased the scale factor, the innerWidth will be less // as fewer CSS pixels will be rendered in the same viewport, so
diff --git a/third_party/WebKit/LayoutTests/fast/dom/zoom-scroll-page-test.html b/third_party/WebKit/LayoutTests/fast/dom/zoom-scroll-page-test.html index 93cdf598..bb8433b 100644 --- a/third_party/WebKit/LayoutTests/fast/dom/zoom-scroll-page-test.html +++ b/third_party/WebKit/LayoutTests/fast/dom/zoom-scroll-page-test.html
@@ -11,11 +11,11 @@ function zoomBy(zoomFactor) { while (zoomFactor > 0) { - window.eventSender.zoomPageIn(); + eventSender.zoomPageIn(); zoomFactor--; } while (zoomFactor < 0) { - window.eventSender.zoomPageOut(); + eventSender.zoomPageOut(); zoomFactor++; } }
diff --git a/third_party/WebKit/LayoutTests/fast/encoding/no-charset-on-dynamic-script-load.html b/third_party/WebKit/LayoutTests/fast/encoding/no-charset-on-dynamic-script-load.html index ab2093b..031a0f7 100644 --- a/third_party/WebKit/LayoutTests/fast/encoding/no-charset-on-dynamic-script-load.html +++ b/third_party/WebKit/LayoutTests/fast/encoding/no-charset-on-dynamic-script-load.html
@@ -10,8 +10,8 @@ <div id="target"></div> <script> if (window.testRunner) { - window.testRunner.waitUntilDone(); - window.testRunner.dumpAsText(); + testRunner.waitUntilDone(); + testRunner.dumpAsText(); } tokyo = 'とうきょう'; oDIVResults=document.createElement('script');
diff --git a/third_party/WebKit/LayoutTests/fast/encoding/resources/dynamic-load-target.js b/third_party/WebKit/LayoutTests/fast/encoding/resources/dynamic-load-target.js index 2e66fe9..50fd29cf 100644 --- a/third_party/WebKit/LayoutTests/fast/encoding/resources/dynamic-load-target.js +++ b/third_party/WebKit/LayoutTests/fast/encoding/resources/dynamic-load-target.js
@@ -6,4 +6,4 @@ document.getElementById("target").innerHTML = "FAIL: Incorrect encoding used. Expected '" + tokyo + "' but got '" + 'とうきょう' + "'."; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone();
diff --git a/third_party/WebKit/LayoutTests/fast/events/attribute-listener-deletion-crash.html b/third_party/WebKit/LayoutTests/fast/events/attribute-listener-deletion-crash.html index 40eebe1..6661b99 100644 --- a/third_party/WebKit/LayoutTests/fast/events/attribute-listener-deletion-crash.html +++ b/third_party/WebKit/LayoutTests/fast/events/attribute-listener-deletion-crash.html
@@ -5,7 +5,7 @@ if (!window.testRunner) return; - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var span = document.getElementById("root"); eventSender.mouseMoveTo(span.offsetLeft + 10, span.offsetTop + span.offsetHeight / 2);
diff --git a/third_party/WebKit/LayoutTests/fast/events/defaultprevented.html b/third_party/WebKit/LayoutTests/fast/events/defaultprevented.html index 54fe7af..f43ee621 100644 --- a/third_party/WebKit/LayoutTests/fast/events/defaultprevented.html +++ b/third_party/WebKit/LayoutTests/fast/events/defaultprevented.html
@@ -2,7 +2,7 @@ <head> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </head> <body onload="document.forms[0].reset()">
diff --git a/third_party/WebKit/LayoutTests/fast/events/document-elementFromPoint.html b/third_party/WebKit/LayoutTests/fast/events/document-elementFromPoint.html index 288d327..c8b6bb0 100644 --- a/third_party/WebKit/LayoutTests/fast/events/document-elementFromPoint.html +++ b/third_party/WebKit/LayoutTests/fast/events/document-elementFromPoint.html
@@ -242,8 +242,8 @@ } if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } // Start the test. @@ -269,7 +269,7 @@ // End asynchronous test. if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }, 0); }, 0); }, false);
diff --git a/third_party/WebKit/LayoutTests/fast/events/drag-and-drop-subframe-dataTransfer.html b/third_party/WebKit/LayoutTests/fast/events/drag-and-drop-subframe-dataTransfer.html index fb344c4..8e835ca 100644 --- a/third_party/WebKit/LayoutTests/fast/events/drag-and-drop-subframe-dataTransfer.html +++ b/third_party/WebKit/LayoutTests/fast/events/drag-and-drop-subframe-dataTransfer.html
@@ -11,12 +11,12 @@ document.body.innerHTML = 'FAIL'; } evt.preventDefault(); - window.testRunner.notifyDone(); + testRunner.notifyDone(); } function runTest() { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); var d = document.getElementById('drag'); var o = document.getElementById('drop'); eventSender.mouseMoveTo(d.offsetLeft + d.offsetWidth / 2, d.offsetTop + d.offsetHeight / 2);
diff --git a/third_party/WebKit/LayoutTests/fast/events/drop-with-file-paths.html b/third_party/WebKit/LayoutTests/fast/events/drop-with-file-paths.html index 3fb7675..12174a01 100644 --- a/third_party/WebKit/LayoutTests/fast/events/drop-with-file-paths.html +++ b/third_party/WebKit/LayoutTests/fast/events/drop-with-file-paths.html
@@ -6,7 +6,7 @@ if (!window.testRunner) return; - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); eventSender.beginDragWithFiles(['resources/file-for-drop-with-file-paths.html']); eventSender.mouseMoveTo(10, 10);
diff --git a/third_party/WebKit/LayoutTests/fast/events/event-listener-on-attribute-inside-shadow-dom-expected.txt b/third_party/WebKit/LayoutTests/fast/events/event-listener-on-attribute-inside-shadow-dom-expected.txt index 42a8c97..b73159e 100644 --- a/third_party/WebKit/LayoutTests/fast/events/event-listener-on-attribute-inside-shadow-dom-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/events/event-listener-on-attribute-inside-shadow-dom-expected.txt
@@ -3,8 +3,8 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/events/event-listener-on-attribute-inside-shadow-dom.html b/third_party/WebKit/LayoutTests/fast/events/event-listener-on-attribute-inside-shadow-dom.html index c5aac05..f6583585 100644 --- a/third_party/WebKit/LayoutTests/fast/events/event-listener-on-attribute-inside-shadow-dom.html +++ b/third_party/WebKit/LayoutTests/fast/events/event-listener-on-attribute-inside-shadow-dom.html
@@ -14,7 +14,7 @@ // Register an event listener on an attribute node. div1.attributes[0].addEventListener('touchstart', function() { }); if (window.internals) - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); // Move the parent element into a shadow DOM. shadowRoot.appendChild(div1); @@ -25,6 +25,6 @@ // Make sure the handler was unregistered. if (window.internals) - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/events/focus-remove-focuesed-node.html b/third_party/WebKit/LayoutTests/fast/events/focus-remove-focuesed-node.html index 94f4340..a10a2fb 100644 --- a/third_party/WebKit/LayoutTests/fast/events/focus-remove-focuesed-node.html +++ b/third_party/WebKit/LayoutTests/fast/events/focus-remove-focuesed-node.html
@@ -11,7 +11,7 @@ function test() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.getElementById("a").addEventListener('focusin', focusinListener , false); document.getElementById("a").focus(); }
diff --git a/third_party/WebKit/LayoutTests/fast/events/focusinout.html b/third_party/WebKit/LayoutTests/fast/events/focusinout.html index 87eac54..46c6653d 100644 --- a/third_party/WebKit/LayoutTests/fast/events/focusinout.html +++ b/third_party/WebKit/LayoutTests/fast/events/focusinout.html
@@ -2,7 +2,7 @@ <head> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function writePass(id) {
diff --git a/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-iframes-expected.txt b/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-iframes-expected.txt index fdb54dd..724c2cdd 100644 --- a/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-iframes-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-iframes-expected.txt
@@ -3,9 +3,9 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -PASS window.internals.hitTestCacheHits(document) is 0 -PASS window.internals.hitTestCacheHits(document) is 0 -PASS window.internals.hitTestCacheHits(document) is 0 +PASS internals.hitTestCacheHits(document) is 0 +PASS internals.hitTestCacheHits(document) is 0 +PASS internals.hitTestCacheHits(document) is 0 PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-iframes.html b/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-iframes.html index 2f11f21..536f8b5 100644 --- a/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-iframes.html +++ b/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-iframes.html
@@ -28,8 +28,8 @@ function doHit() { var rect = document.getElementById('myframe').getBoundingClientRect(); - window.internals.elementFromPoint(document, rect.left + 8, rect.top + 8, false, false); - shouldBe("window.internals.hitTestCacheHits(document)", "0"); + internals.elementFromPoint(document, rect.left + 8, rect.top + 8, false, false); + shouldBe("internals.hitTestCacheHits(document)", "0"); } </script> <body onload="loaded()" />
diff --git a/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-scrollbar-no-crash-expected.txt b/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-scrollbar-no-crash-expected.txt index 3d3d3c25..4fdb087b5 100644 --- a/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-scrollbar-no-crash-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-scrollbar-no-crash-expected.txt
@@ -3,7 +3,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -PASS window.internals.hitTestCacheHits(document) is expectedCount +PASS internals.hitTestCacheHits(document) is expectedCount PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-scrollbar-no-crash.html b/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-scrollbar-no-crash.html index 1fa16dd7..a59fedf2 100644 --- a/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-scrollbar-no-crash.html +++ b/third_party/WebKit/LayoutTests/fast/events/hit-test-cache-scrollbar-no-crash.html
@@ -18,16 +18,16 @@ description("Ensure hit test cache works in correct scenarios of overlay scrollbars."); if (window.internals) { - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.runtimeFlags.overlayScrollbarsEnabled = true; var parentDiv = document.getElementById("parent"); var rect = parentDiv.getBoundingClientRect(); // Only MacOSX > 10.6 has overlay scrollbars; so the result will be 1 on other platforms. - var expectedCount = window.internals.setScrollbarVisibilityInScrollableArea(parentDiv, true) ? 0 : 1; - window.internals.elementFromPoint(document, rect.left + rect.width - 2, rect.top + (rect.height/2), false, false); - window.internals.setScrollbarVisibilityInScrollableArea(parentDiv, false); - window.internals.elementFromPoint(document, rect.left + rect.width - 2, rect.top + (rect.height/2), false, false); - shouldBe("window.internals.hitTestCacheHits(document)", "expectedCount"); + var expectedCount = internals.setScrollbarVisibilityInScrollableArea(parentDiv, true) ? 0 : 1; + internals.elementFromPoint(document, rect.left + rect.width - 2, rect.top + (rect.height/2), false, false); + internals.setScrollbarVisibilityInScrollableArea(parentDiv, false); + internals.elementFromPoint(document, rect.left + rect.width - 2, rect.top + (rect.height/2), false, false); + shouldBe("internals.hitTestCacheHits(document)", "expectedCount"); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/events/hit-test-cache.html b/third_party/WebKit/LayoutTests/fast/events/hit-test-cache.html index 85289d6..6e096aa 100644 --- a/third_party/WebKit/LayoutTests/fast/events/hit-test-cache.html +++ b/third_party/WebKit/LayoutTests/fast/events/hit-test-cache.html
@@ -38,8 +38,8 @@ setPrintTestResultsLazily(); if (window.internals) { - window.internals.settings.setViewportEnabled(true); - window.internals.settings.setMockScrollbarsEnabled(true); + internals.settings.setViewportEnabled(true); + internals.settings.setMockScrollbarsEnabled(true); } description("Ensure hit test cache works in correct scenarios of scrolling, dom and style changes.");
diff --git a/third_party/WebKit/LayoutTests/fast/events/hit-test-counts.html b/third_party/WebKit/LayoutTests/fast/events/hit-test-counts.html index 3c0d0d1b..ab83525 100644 --- a/third_party/WebKit/LayoutTests/fast/events/hit-test-counts.html +++ b/third_party/WebKit/LayoutTests/fast/events/hit-test-counts.html
@@ -28,8 +28,8 @@ <script> setPrintTestResultsLazily(); if (window.internals) { - window.internals.settings.setViewportEnabled(true); - window.internals.settings.setMockScrollbarsEnabled(true); + internals.settings.setViewportEnabled(true); + internals.settings.setMockScrollbarsEnabled(true); } var unique_event_id = 1; description("Count how many hit tests are required for various event scenarios. Hit tests can be expensive and it's often tempting to add more. These values should only ever be changed to go down, not up."); @@ -170,12 +170,12 @@ { clearCounts(documents); sendEvents(targetX, targetY, documents, false); - window.internals.settings.setMultiTargetTapNotificationEnabled(true); + internals.settings.setMultiTargetTapNotificationEnabled(true); for(var i = 0; i < documents.length; i++) { internals.clearHitTestCache(documents[i]); } sendEvents(targetX, targetY, documents, true); - window.internals.settings.setMultiTargetTapNotificationEnabled(false); + internals.settings.setMultiTargetTapNotificationEnabled(false); } function centerOf(element) { @@ -189,7 +189,7 @@ eventCounts = {}; onload = function() { - window.internals.settings.setMultiTargetTapNotificationEnabled(false); + internals.settings.setMultiTargetTapNotificationEnabled(false); debug('Event on a simple div'); debug('---------------------'); @@ -212,13 +212,13 @@ runTestForDocuments(rect.left + 3, rect.top + 3, [document, doc2, doc3]); debug(''); - window.internals.settings.setViewportEnabled(false); + internals.settings.setViewportEnabled(false); debug('Event on a simple div (desktop viewport)'); debug('---------------------'); var point = centerOf(document.getElementById('target')); runTestForDocuments(point.x, point.y, [document]); debug(''); - window.internals.settings.setViewportEnabled(true); + internals.settings.setViewportEnabled(true); finishJSTest(); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/events/input-focus-no-duplicate-events.html b/third_party/WebKit/LayoutTests/fast/events/input-focus-no-duplicate-events.html index 97eed22..99f11ab 100644 --- a/third_party/WebKit/LayoutTests/fast/events/input-focus-no-duplicate-events.html +++ b/third_party/WebKit/LayoutTests/fast/events/input-focus-no-duplicate-events.html
@@ -11,7 +11,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function log(s) { document.getElementById('log').appendChild(document.createTextNode(s+"\n"));
diff --git a/third_party/WebKit/LayoutTests/fast/events/input-tab-focus-no-duplicate-events.html b/third_party/WebKit/LayoutTests/fast/events/input-tab-focus-no-duplicate-events.html index e70f2873..ec15d37 100644 --- a/third_party/WebKit/LayoutTests/fast/events/input-tab-focus-no-duplicate-events.html +++ b/third_party/WebKit/LayoutTests/fast/events/input-tab-focus-no-duplicate-events.html
@@ -12,7 +12,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function log(s) { document.getElementById('log').appendChild(document.createTextNode(s+"\n"));
diff --git a/third_party/WebKit/LayoutTests/fast/events/keydown-1.html b/third_party/WebKit/LayoutTests/fast/events/keydown-1.html index e6f33083..4fa6436f 100644 --- a/third_party/WebKit/LayoutTests/fast/events/keydown-1.html +++ b/third_party/WebKit/LayoutTests/fast/events/keydown-1.html
@@ -46,7 +46,7 @@ eventSender.keyDown("Delete"); log(window.frames[0].document.body.innerText); - window.testRunner.notifyDone(); + testRunner.notifyDone(); } if (window.testRunner) {
diff --git a/third_party/WebKit/LayoutTests/fast/events/keydown-function-keys.html b/third_party/WebKit/LayoutTests/fast/events/keydown-function-keys.html index 790b779..5fdbbbf 100644 --- a/third_party/WebKit/LayoutTests/fast/events/keydown-function-keys.html +++ b/third_party/WebKit/LayoutTests/fast/events/keydown-function-keys.html
@@ -25,7 +25,7 @@ <ul id="console"></ul> <script language="javascript" type="text/javascript"> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var textarea = document.getElementById("test"); textarea.focus(); eventSender.keyDown("F1");
diff --git a/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-change-after-layout-expected.txt b/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-change-after-layout-expected.txt index 3042ea0f..f7cf400f 100644 --- a/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-change-after-layout-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-change-after-layout-expected.txt
@@ -7,7 +7,7 @@ Mouse move -PASS window.internals.getCurrentCursorInfo() is "type=IBeam hotSpot=0,0" +PASS internals.getCurrentCursorInfo() is "type=IBeam hotSpot=0,0" Adding overlay element PASS internals.getCurrentCursorInfo() is "type=Wait hotSpot=0,0" Moving overlay element
diff --git a/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-change-after-layout.html b/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-change-after-layout.html index 9808f18..381ff69 100644 --- a/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-change-after-layout.html +++ b/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-change-after-layout.html
@@ -56,7 +56,7 @@ debug('Mouse move'); var rect = target.getBoundingClientRect(); eventSender.mouseMoveTo(rect.left + 3, rect.top + 3); - shouldBeEqualToString('window.internals.getCurrentCursorInfo()', 'type=IBeam hotSpot=0,0'); + shouldBeEqualToString('internals.getCurrentCursorInfo()', 'type=IBeam hotSpot=0,0'); debug('Adding overlay element'); addOverlay(); expectSendFakeMouseMove('type=Wait hotSpot=0,0', function() {
diff --git a/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-change.html b/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-change.html index 55d6a16..bb5726c 100644 --- a/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-change.html +++ b/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-change.html
@@ -33,7 +33,7 @@ function runTest(prepare, next) { prepare(); setTimeout(function() { - debug('Cursor Info: ' + window.internals.getCurrentCursorInfo()); + debug('Cursor Info: ' + internals.getCurrentCursorInfo()); debug(''); next(); }, CURSOR_UPDATE_DELAY);
diff --git a/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-image-set.html b/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-image-set.html index 9d377b56..ee37bd2 100644 --- a/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-image-set.html +++ b/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-image-set.html
@@ -44,7 +44,7 @@ // Note that we could return structured data which we then validate, but that's a lot more // work and is redundant with relying on the expected output anyway. Better to just dump // it and inspect that it matches the description. - debug('Cursor Info: ' + window.internals.getCurrentCursorInfo()); + debug('Cursor Info: ' + internals.getCurrentCursorInfo()); debug(''); } }
diff --git a/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-multiframecur.html b/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-multiframecur.html index 353bc9d9..4d48aae 100644 --- a/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-multiframecur.html +++ b/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-multiframecur.html
@@ -35,7 +35,7 @@ // Note that we could return structured data which we then validate, but that's a lot more // work and is redundant with relying on the expected output anyway. Better to just dump // it and inspect that it matches the description. - debug('Cursor Info: ' + window.internals.getCurrentCursorInfo()); + debug('Cursor Info: ' + internals.getCurrentCursorInfo()); debug(''); } // This text is redundant with the test output - hide it
diff --git a/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-no-mousemove.html b/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-no-mousemove.html index 3dfe3ad..d50f4d36 100644 --- a/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-no-mousemove.html +++ b/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-no-mousemove.html
@@ -35,14 +35,14 @@ var node = document.getElementById('target'); debug('TEST CASE: ' + node.textContent); eventSender.mouseMoveTo(node.offsetLeft + 3, node.offsetTop + 3); - debug('Cursor Info: ' + window.internals.getCurrentCursorInfo()); + debug('Cursor Info: ' + internals.getCurrentCursorInfo()); node.addEventListener('mousemove', function() { testFailed('Mousemove event should not be fired when changing cursor'); finishJSTest(); }); node.style.cursor = 'help'; setTimeout(function() { - debug('Cursor Info: ' + window.internals.getCurrentCursorInfo()); + debug('Cursor Info: ' + internals.getCurrentCursorInfo()); debug(''); }, CURSOR_UPDATE_DELAY);
diff --git a/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-style-change-iframe-expected.txt b/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-style-change-iframe-expected.txt index e8edf07..0165db6 100644 --- a/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-style-change-iframe-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-style-change-iframe-expected.txt
@@ -5,7 +5,7 @@ Mouse moved to cursor changing div -PASS window.internals.getCurrentCursorInfo() is "type=Hand hotSpot=0,0" +PASS internals.getCurrentCursorInfo() is "type=Hand hotSpot=0,0" Changing cursor style PASS internals.getCurrentCursorInfo() is "type=Wait hotSpot=0,0" @@ -13,7 +13,7 @@ PASS document.elementFromPoint(100, y) is frame PASS document.elementsFromPoint(100, y).indexOf(container) > 0 is true PASS internals.cursorUpdatePending is false -PASS window.internals.getCurrentCursorInfo() is "type=IBeam hotSpot=0,0" +PASS internals.getCurrentCursorInfo() is "type=IBeam hotSpot=0,0" Changing cursor style of the background should not affect the cursor as it sits over the iframe PASS internals.getCurrentCursorInfo() is "type=IBeam hotSpot=0,0"
diff --git a/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-style-change-iframe.html b/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-style-change-iframe.html index 05bc39f4..690d401 100644 --- a/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-style-change-iframe.html +++ b/third_party/WebKit/LayoutTests/fast/events/mouse-cursor-style-change-iframe.html
@@ -46,7 +46,7 @@ frame.onload = function() { debug('Mouse moved to cursor changing div'); eventSender.mouseMoveTo(100, container.offsetTop + 5); - shouldBeEqualToString('window.internals.getCurrentCursorInfo()', 'type=Hand hotSpot=0,0'); + shouldBeEqualToString('internals.getCurrentCursorInfo()', 'type=Hand hotSpot=0,0'); debug('Changing cursor style'); container.classList.add('wait'); @@ -59,7 +59,7 @@ shouldBe('document.elementFromPoint(100, y)', 'frame'); shouldBeTrue('document.elementsFromPoint(100, y).indexOf(container) > 0'); shouldBeFalse('internals.cursorUpdatePending'); - shouldBeEqualToString('window.internals.getCurrentCursorInfo()', 'type=IBeam hotSpot=0,0'); + shouldBeEqualToString('internals.getCurrentCursorInfo()', 'type=IBeam hotSpot=0,0'); debug(''); debug('Changing cursor style of the background should not affect the cursor as it sits over the iframe');
diff --git a/third_party/WebKit/LayoutTests/fast/events/mouse-cursor.html b/third_party/WebKit/LayoutTests/fast/events/mouse-cursor.html index 3780731..4a5560f1 100644 --- a/third_party/WebKit/LayoutTests/fast/events/mouse-cursor.html +++ b/third_party/WebKit/LayoutTests/fast/events/mouse-cursor.html
@@ -65,7 +65,7 @@ // Note that we could return structured data which we then validate, but that's a lot more // work and is redundant with relying on the expected output anyway. Better to just dump // it and inspect that it matches the description. - debug('Cursor Info: ' + window.internals.getCurrentCursorInfo()); + debug('Cursor Info: ' + internals.getCurrentCursorInfo()); debug(''); } // This text is redundant with the test output - hide it
diff --git a/third_party/WebKit/LayoutTests/fast/events/mousemove-to-resizer-changes-cursor.html b/third_party/WebKit/LayoutTests/fast/events/mousemove-to-resizer-changes-cursor.html index 3eaca51..88f5a095 100644 --- a/third_party/WebKit/LayoutTests/fast/events/mousemove-to-resizer-changes-cursor.html +++ b/third_party/WebKit/LayoutTests/fast/events/mousemove-to-resizer-changes-cursor.html
@@ -15,7 +15,7 @@ function addInfo(message) { - log(message + ": " + window.internals.getCurrentCursorInfo()); + log(message + ": " + internals.getCurrentCursorInfo()); } function test()
diff --git a/third_party/WebKit/LayoutTests/fast/events/mousemove-to-scrollbar-changes-cursor.html b/third_party/WebKit/LayoutTests/fast/events/mousemove-to-scrollbar-changes-cursor.html index 1e0a0f75..c7253e3 100644 --- a/third_party/WebKit/LayoutTests/fast/events/mousemove-to-scrollbar-changes-cursor.html +++ b/third_party/WebKit/LayoutTests/fast/events/mousemove-to-scrollbar-changes-cursor.html
@@ -21,11 +21,11 @@ return; eventSender.dragMode = false; eventSender.mouseMoveTo(50, 50); - var originalInfo = window.internals.getCurrentCursorInfo(); + var originalInfo = internals.getCurrentCursorInfo(); // The view is 800x600 in tests. eventSender.mouseMoveTo(799, 500); - var scrollbarInfo = window.internals.getCurrentCursorInfo(); + var scrollbarInfo = internals.getCurrentCursorInfo(); log("Hovered pointer: " + originalInfo); log("Scrollbar pointer: " + scrollbarInfo); }
diff --git a/third_party/WebKit/LayoutTests/fast/events/move-event-handler-between-framehosts-expected.txt b/third_party/WebKit/LayoutTests/fast/events/move-event-handler-between-framehosts-expected.txt index 28a1f39..021907b 100644 --- a/third_party/WebKit/LayoutTests/fast/events/move-event-handler-between-framehosts-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/events/move-event-handler-between-framehosts-expected.txt
@@ -3,8 +3,8 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -PASS window.internals.scrollEventHandlerCount(document) is 0 -PASS window.internals.scrollEventHandlerCount(document) is 1 +PASS internals.scrollEventHandlerCount(document) is 0 +PASS internals.scrollEventHandlerCount(document) is 1 PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/events/move-event-handler-between-framehosts.html b/third_party/WebKit/LayoutTests/fast/events/move-event-handler-between-framehosts.html index 0497fc8..31bd2136 100644 --- a/third_party/WebKit/LayoutTests/fast/events/move-event-handler-between-framehosts.html +++ b/third_party/WebKit/LayoutTests/fast/events/move-event-handler-between-framehosts.html
@@ -10,11 +10,11 @@ var window2; function window2Loaded() { - shouldBe('window.internals.scrollEventHandlerCount(document)', '0'); + shouldBe('internals.scrollEventHandlerCount(document)', '0'); var div = window2.document.getElementById("div"); window.document.adoptNode(div); window.document.body.appendChild(div); - shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); + shouldBe('internals.scrollEventHandlerCount(document)', '1'); window2.close(); finishJSTest();
diff --git a/third_party/WebKit/LayoutTests/fast/events/onerror-no-constructor.html b/third_party/WebKit/LayoutTests/fast/events/onerror-no-constructor.html index c2274fc..fc181e57 100644 --- a/third_party/WebKit/LayoutTests/fast/events/onerror-no-constructor.html +++ b/third_party/WebKit/LayoutTests/fast/events/onerror-no-constructor.html
@@ -4,7 +4,7 @@ <div id="container"></div> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); window.onerror = function(message) { console.log("FAIL"); } Object.defineProperty(Object.prototype, "prototype", {
diff --git a/third_party/WebKit/LayoutTests/fast/events/page-visibility-iframe-move-test.html b/third_party/WebKit/LayoutTests/fast/events/page-visibility-iframe-move-test.html index 7d8d7ec..53861ef 100644 --- a/third_party/WebKit/LayoutTests/fast/events/page-visibility-iframe-move-test.html +++ b/third_party/WebKit/LayoutTests/fast/events/page-visibility-iframe-move-test.html
@@ -24,7 +24,7 @@ // Change the visibility of the current page to invisible. if (window.testRunner) { numVisibilityChanges++; - window.testRunner.setPageVisibility("hidden"); + testRunner.setPageVisibility("hidden"); } }
diff --git a/third_party/WebKit/LayoutTests/fast/events/platform-wheelevent-paging-x-in-non-scrolling-div.html b/third_party/WebKit/LayoutTests/fast/events/platform-wheelevent-paging-x-in-non-scrolling-div.html index 8a348d1..1dfa2c8 100644 --- a/third_party/WebKit/LayoutTests/fast/events/platform-wheelevent-paging-x-in-non-scrolling-div.html +++ b/third_party/WebKit/LayoutTests/fast/events/platform-wheelevent-paging-x-in-non-scrolling-div.html
@@ -33,7 +33,7 @@ shouldBe("div.scrollLeft", "window.expectedScrollLeft"); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } function mousewheelHandler(e)
diff --git a/third_party/WebKit/LayoutTests/fast/events/platform-wheelevent-paging-x-in-non-scrolling-page.html b/third_party/WebKit/LayoutTests/fast/events/platform-wheelevent-paging-x-in-non-scrolling-page.html index 792ab182..ae1b48b 100644 --- a/third_party/WebKit/LayoutTests/fast/events/platform-wheelevent-paging-x-in-non-scrolling-page.html +++ b/third_party/WebKit/LayoutTests/fast/events/platform-wheelevent-paging-x-in-non-scrolling-page.html
@@ -30,7 +30,7 @@ shouldBe("document.scrollingElement.scrollLeft", "window.expectedScrollLeft"); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } function mousewheelHandler(e)
diff --git a/third_party/WebKit/LayoutTests/fast/events/platform-wheelevent-paging-y-in-non-scrolling-div.html b/third_party/WebKit/LayoutTests/fast/events/platform-wheelevent-paging-y-in-non-scrolling-div.html index c0cab23..1c9afd5 100644 --- a/third_party/WebKit/LayoutTests/fast/events/platform-wheelevent-paging-y-in-non-scrolling-div.html +++ b/third_party/WebKit/LayoutTests/fast/events/platform-wheelevent-paging-y-in-non-scrolling-div.html
@@ -34,7 +34,7 @@ shouldBe("div.scrollLeft", "window.expectedScrollLeft"); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } function mousewheelHandler(e)
diff --git a/third_party/WebKit/LayoutTests/fast/events/platform-wheelevent-paging-y-in-non-scrolling-page.html b/third_party/WebKit/LayoutTests/fast/events/platform-wheelevent-paging-y-in-non-scrolling-page.html index 8f9f6a12..81d4ef5f 100644 --- a/third_party/WebKit/LayoutTests/fast/events/platform-wheelevent-paging-y-in-non-scrolling-page.html +++ b/third_party/WebKit/LayoutTests/fast/events/platform-wheelevent-paging-y-in-non-scrolling-page.html
@@ -30,7 +30,7 @@ shouldBe("document.scrollingElement.scrollLeft", "window.expectedScrollLeft"); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } function mousewheelHandler(e)
diff --git a/third_party/WebKit/LayoutTests/fast/events/pointerevents/pointer-event-properties-in-iframe.html b/third_party/WebKit/LayoutTests/fast/events/pointerevents/pointer-event-properties-in-iframe.html index 7c0b8fe..cc2d658 100644 --- a/third_party/WebKit/LayoutTests/fast/events/pointerevents/pointer-event-properties-in-iframe.html +++ b/third_party/WebKit/LayoutTests/fast/events/pointerevents/pointer-event-properties-in-iframe.html
@@ -47,7 +47,7 @@ debug('===== scrollX=' + scrollX + ', scrollY=' + scrollY + ', zoomFactor=' + zoomFactor); document.getElementById('target').contentWindow.scrollTo(scrollX, scrollY); - window.internals.setZoomFactor(zoomFactor); + internals.setZoomFactor(zoomFactor); debug(' *** Mouse events inside iframe ***'); // mouse events inside iframe
diff --git a/third_party/WebKit/LayoutTests/fast/events/pointerevents/pointer-handler-count.html b/third_party/WebKit/LayoutTests/fast/events/pointerevents/pointer-handler-count.html index c22df7ae..1b7ed728 100644 --- a/third_party/WebKit/LayoutTests/fast/events/pointerevents/pointer-handler-count.html +++ b/third_party/WebKit/LayoutTests/fast/events/pointerevents/pointer-handler-count.html
@@ -6,30 +6,30 @@ test(function() { - assert_equals(window.internals.pointerEventHandlerCount(document), 0); + assert_equals(internals.pointerEventHandlerCount(document), 0); document.addEventListener('pointerenter', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 1); + assert_equals(internals.pointerEventHandlerCount(document), 1); document.addEventListener('pointerout', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 2); + assert_equals(internals.pointerEventHandlerCount(document), 2); document.addEventListener('pointerenter', listener, false); - assert_equals(window.internals.pointerEventHandlerCount(document), 3); + assert_equals(internals.pointerEventHandlerCount(document), 3); document.addEventListener('pointerout', listener, false); - assert_equals(window.internals.pointerEventHandlerCount(document), 4); + assert_equals(internals.pointerEventHandlerCount(document), 4); document.removeEventListener('pointerenter', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 3); + assert_equals(internals.pointerEventHandlerCount(document), 3); document.removeEventListener('pointerout', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 2); + assert_equals(internals.pointerEventHandlerCount(document), 2); // Try removing the capturing listener again. document.removeEventListener('pointerenter', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 2); + assert_equals(internals.pointerEventHandlerCount(document), 2); document.removeEventListener('pointerout', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 2); + assert_equals(internals.pointerEventHandlerCount(document), 2); document.removeEventListener('pointerenter', listener, false); - assert_equals(window.internals.pointerEventHandlerCount(document), 1); + assert_equals(internals.pointerEventHandlerCount(document), 1); document.removeEventListener('pointerout', listener, false); - assert_equals(window.internals.pointerEventHandlerCount(document), 0); + assert_equals(internals.pointerEventHandlerCount(document), 0); }, "Test 1: addEventListener/removeEventListener on the document"); @@ -37,13 +37,13 @@ (function() { test(function() { - assert_equals(window.internals.pointerEventHandlerCount(document), 0); + assert_equals(internals.pointerEventHandlerCount(document), 0); document.onpointerenter = function() { } - assert_equals(window.internals.pointerEventHandlerCount(document), 1); + assert_equals(internals.pointerEventHandlerCount(document), 1); document.onpointerenter = function() { } - assert_equals(window.internals.pointerEventHandlerCount(document), 1); + assert_equals(internals.pointerEventHandlerCount(document), 1); document.onpointerenter = null; - assert_equals(window.internals.pointerEventHandlerCount(document), 0); + assert_equals(internals.pointerEventHandlerCount(document), 0); }, "Test 2: setting onpointerenter on the document"); })(); @@ -51,69 +51,69 @@ var listener = function() { } test(function() { - assert_equals(window.internals.pointerEventHandlerCount(document), 0); + assert_equals(internals.pointerEventHandlerCount(document), 0); window.addEventListener('pointerenter', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 1); + assert_equals(internals.pointerEventHandlerCount(document), 1); window.addEventListener('pointerout', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 2); + assert_equals(internals.pointerEventHandlerCount(document), 2); window.addEventListener('pointerenter', listener, false); - assert_equals(window.internals.pointerEventHandlerCount(document), 3); + assert_equals(internals.pointerEventHandlerCount(document), 3); window.addEventListener('pointerout', listener, false); - assert_equals(window.internals.pointerEventHandlerCount(document), 4); + assert_equals(internals.pointerEventHandlerCount(document), 4); window.removeEventListener('pointerenter', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 3); + assert_equals(internals.pointerEventHandlerCount(document), 3); window.removeEventListener('pointerout', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 2); + assert_equals(internals.pointerEventHandlerCount(document), 2); // Try removing the capturing listener again. window.removeEventListener('pointerenter', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 2); + assert_equals(internals.pointerEventHandlerCount(document), 2); window.removeEventListener('pointerout', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 2); + assert_equals(internals.pointerEventHandlerCount(document), 2); window.removeEventListener('pointerenter', listener, false); - assert_equals(window.internals.pointerEventHandlerCount(document), 1); + assert_equals(internals.pointerEventHandlerCount(document), 1); window.removeEventListener('pointerout', listener, false); - assert_equals(window.internals.pointerEventHandlerCount(document), 0); + assert_equals(internals.pointerEventHandlerCount(document), 0); }, "Test 3: addEventListener/removeEventListener on the window"); })(); (function() { test(function() { - assert_equals(window.internals.pointerEventHandlerCount(document), 0); + assert_equals(internals.pointerEventHandlerCount(document), 0); window.onpointerenter = function() { } - assert_equals(window.internals.pointerEventHandlerCount(document), 1); + assert_equals(internals.pointerEventHandlerCount(document), 1); window.onpointerenter = function() { } - assert_equals(window.internals.pointerEventHandlerCount(document), 1); + assert_equals(internals.pointerEventHandlerCount(document), 1); window.onpointerenter = null; - assert_equals(window.internals.pointerEventHandlerCount(document), 0); + assert_equals(internals.pointerEventHandlerCount(document), 0); }, "Test 4: setting onpointerenter on the window"); })(); (function() { var listener = function() { } test(function() { - assert_equals(window.internals.pointerEventHandlerCount(document), 0); + assert_equals(internals.pointerEventHandlerCount(document), 0); document.addEventListener('pointerenter', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 1); + assert_equals(internals.pointerEventHandlerCount(document), 1); document.addEventListener('pointerover', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 2); + assert_equals(internals.pointerEventHandlerCount(document), 2); document.addEventListener('pointerleave', listener, false); - assert_equals(window.internals.pointerEventHandlerCount(document), 3); + assert_equals(internals.pointerEventHandlerCount(document), 3); document.addEventListener('pointerout', listener, false); - assert_equals(window.internals.pointerEventHandlerCount(document), 4); + assert_equals(internals.pointerEventHandlerCount(document), 4); document.addEventListener('pointermove', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 5); + assert_equals(internals.pointerEventHandlerCount(document), 5); document.addEventListener('pointerup', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 6); + assert_equals(internals.pointerEventHandlerCount(document), 6); document.addEventListener('pointerdown', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 7); + assert_equals(internals.pointerEventHandlerCount(document), 7); document.addEventListener('pointercancel', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 8); + assert_equals(internals.pointerEventHandlerCount(document), 8); document.addEventListener('gotpointercapture', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 9); + assert_equals(internals.pointerEventHandlerCount(document), 9); document.addEventListener('lostpointercapture', listener, true); - assert_equals(window.internals.pointerEventHandlerCount(document), 10); + assert_equals(internals.pointerEventHandlerCount(document), 10); }, "Test 5: test addEventListener for all possible pointer event"); })(); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-history-reload.html b/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-history-reload.html index 6e9cfe7..1bb133f 100644 --- a/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-history-reload.html +++ b/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-history-reload.html
@@ -9,10 +9,10 @@ testRunner.setCloseRemainingWindowsWhenComplete(true); testRunner.waitUntilDone(); // Record current window count. - window.windowCount = window.testRunner.windowCount(); + window.windowCount = testRunner.windowCount(); } function testDone() { - if (window.testRunner && window.testRunner.windowCount() == window.windowCount) + if (window.testRunner && testRunner.windowCount() == window.windowCount) document.getElementById("console").innerText = "PASSED"; // Close the test. testRunner.notifyDone();
diff --git a/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-iframe-script.html b/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-iframe-script.html index 81cbe9a..1fb11121 100644 --- a/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-iframe-script.html +++ b/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-iframe-script.html
@@ -9,10 +9,10 @@ testRunner.setCloseRemainingWindowsWhenComplete(true); testRunner.waitUntilDone(); // Record current window count. - window.windowCount = window.testRunner.windowCount(); + window.windowCount = testRunner.windowCount(); } function test() { - if (window.testRunner && window.testRunner.windowCount() == window.windowCount) + if (window.testRunner && testRunner.windowCount() == window.windowCount) document.getElementById("console").innerText = "PASSED"; // Close the test. testRunner.notifyDone();
diff --git a/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-iframe-src.html b/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-iframe-src.html index 378d3b2..cf68951 100644 --- a/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-iframe-src.html +++ b/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-iframe-src.html
@@ -9,7 +9,7 @@ testRunner.setCloseRemainingWindowsWhenComplete(true); testRunner.waitUntilDone(); // Record current window count. - window.windowCount = window.testRunner.windowCount(); + window.windowCount = testRunner.windowCount(); } function test() { if (!window.testRunner)
diff --git a/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-mousemove.html b/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-mousemove.html index 5042562e..952a7701 100644 --- a/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-mousemove.html +++ b/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-mousemove.html
@@ -8,7 +8,7 @@ testRunner.setCloseRemainingWindowsWhenComplete(true); testRunner.waitUntilDone(); // Record current window count. - window.windowCount = window.testRunner.windowCount(); + window.windowCount = testRunner.windowCount(); } function eventfire()
diff --git a/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-window-open.html b/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-window-open.html index 2bc9792..a8c8c91 100644 --- a/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-window-open.html +++ b/third_party/WebKit/LayoutTests/fast/events/popup-blocked-from-window-open.html
@@ -8,11 +8,11 @@ testRunner.setCloseRemainingWindowsWhenComplete(true); testRunner.waitUntilDone(); // Record current window count. - window.windowCount = window.testRunner.windowCount(); + window.windowCount = testRunner.windowCount(); } function test() { - if (window.testRunner && window.testRunner.windowCount() == window.windowCount) + if (window.testRunner && testRunner.windowCount() == window.windowCount) document.getElementById("console").innerText = "PASSED"; // Close the test. testRunner.notifyDone();
diff --git a/third_party/WebKit/LayoutTests/fast/events/resize-events.html b/third_party/WebKit/LayoutTests/fast/events/resize-events.html index 6b05a3b..ce3aa87 100644 --- a/third_party/WebKit/LayoutTests/fast/events/resize-events.html +++ b/third_party/WebKit/LayoutTests/fast/events/resize-events.html
@@ -40,7 +40,7 @@ } function scalePage() { if (window.internals) - window.internals.setPageScaleFactor(3); + internals.setPageScaleFactor(3); setTimeout(finish, 20); } function finish() {
diff --git a/third_party/WebKit/LayoutTests/fast/events/resources/middleClickAutoscroll.js b/third_party/WebKit/LayoutTests/fast/events/resources/middleClickAutoscroll.js index f1763b8..f58baf64 100644 --- a/third_party/WebKit/LayoutTests/fast/events/resources/middleClickAutoscroll.js +++ b/third_party/WebKit/LayoutTests/fast/events/resources/middleClickAutoscroll.js
@@ -50,7 +50,7 @@ return; scrolled = true; testPassed('autoscroll started'); - var cursorInfo = window.internals.getCurrentCursorInfo(); + var cursorInfo = internals.getCurrentCursorInfo(); debug("Mouse cursor shape: " + cursorInfo); if (window.eventSender) { @@ -66,7 +66,7 @@ noMoreScroll = true; window.setTimeout(function() { testPassed('autoscroll stopped'); - var cursorInfo = window.internals.getCurrentCursorInfo(); + var cursorInfo = internals.getCurrentCursorInfo(); if (cursorInfo == "type=Pointer hotSpot=0,0" || cursorInfo == "type=IBeam hotSpot=0,0") testPassed('Mouse cursor cleared'); else
diff --git a/third_party/WebKit/LayoutTests/fast/events/scale-and-scroll-body.html b/third_party/WebKit/LayoutTests/fast/events/scale-and-scroll-body.html index 4543b2d..13d744fa 100644 --- a/third_party/WebKit/LayoutTests/fast/events/scale-and-scroll-body.html +++ b/third_party/WebKit/LayoutTests/fast/events/scale-and-scroll-body.html
@@ -12,10 +12,10 @@ function scrollViaJavascript() { var scaleFactor = 2.0; if (window.internals) { - window.internals.setPageScaleFactor(scaleFactor); + internals.setPageScaleFactor(scaleFactor); } - // The page scale, as set by window.internals.setPageScaleFactor should not be apparent + // The page scale, as set by internals.setPageScaleFactor should not be apparent // to javascript. So, we expect scrolling to (100,100) to be page coordinates, rather // than device pixels. document.scrollingElement.scrollLeft = 100;
diff --git a/third_party/WebKit/LayoutTests/fast/events/scale-and-scroll-div.html b/third_party/WebKit/LayoutTests/fast/events/scale-and-scroll-div.html index 05fd4ba3d..2dd1ab5 100644 --- a/third_party/WebKit/LayoutTests/fast/events/scale-and-scroll-div.html +++ b/third_party/WebKit/LayoutTests/fast/events/scale-and-scroll-div.html
@@ -63,7 +63,7 @@ function scaleWithEventSender(scaleFactor) { if (window.internals) { - window.internals.setPageScaleFactor(scaleFactor); + internals.setPageScaleFactor(scaleFactor); } } @@ -88,8 +88,8 @@ if (window.eventSender && window.internals) { description('This tests that a div scrolled by gesture touch while the page is scaled still scrolls at the rate of the touch'); - if (window.internals.runtimeFlags.fractionalScrollOffsetsEnabled) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + if (internals.runtimeFlags.fractionalScrollOffsetsEnabled) { + internals.settings.setPreferCompositingToLCDTextEnabled(true); integerScrollOffset = false; } test();
diff --git a/third_party/WebKit/LayoutTests/fast/events/scale-and-scroll-window.html b/third_party/WebKit/LayoutTests/fast/events/scale-and-scroll-window.html index d0bb4c5d..7499566 100644 --- a/third_party/WebKit/LayoutTests/fast/events/scale-and-scroll-window.html +++ b/third_party/WebKit/LayoutTests/fast/events/scale-and-scroll-window.html
@@ -10,7 +10,7 @@ window.enablePixelTesting = true; function scroll() { - // The page scale, as set by window.internals.setPageScaleFactor should not be apparent + // The page scale, as set by internals.setPageScaleFactor should not be apparent // to javascript. So, we expect scrolling to (100,100) to be page coordinates, rather // than device pixels. window.scrollTo(100,100);
diff --git a/third_party/WebKit/LayoutTests/fast/events/script-tests/blur-focus-window-should-blur-focus-element.js b/third_party/WebKit/LayoutTests/fast/events/script-tests/blur-focus-window-should-blur-focus-element.js index 862ee42..08721da 100644 --- a/third_party/WebKit/LayoutTests/fast/events/script-tests/blur-focus-window-should-blur-focus-element.js +++ b/third_party/WebKit/LayoutTests/fast/events/script-tests/blur-focus-window-should-blur-focus-element.js
@@ -29,8 +29,8 @@ }; if (window.testRunner) { - window.testRunner.setWindowIsKey(false); - window.testRunner.setWindowIsKey(true); + testRunner.setWindowIsKey(false); + testRunner.setWindowIsKey(true); innerDiv.focus(); divElement.focus();
diff --git a/third_party/WebKit/LayoutTests/fast/events/script-tests/page-scaled-mouse-click-iframe.js b/third_party/WebKit/LayoutTests/fast/events/script-tests/page-scaled-mouse-click-iframe.js index 4633758..0e3192f 100644 --- a/third_party/WebKit/LayoutTests/fast/events/script-tests/page-scaled-mouse-click-iframe.js +++ b/third_party/WebKit/LayoutTests/fast/events/script-tests/page-scaled-mouse-click-iframe.js
@@ -60,18 +60,18 @@ testEvents(0, "Unscaled", "click(10, 10)"); - window.internals.setPageScaleFactorLimits(0.5, 0.5); - window.internals.setPageScaleFactor(0.5); + internals.setPageScaleFactorLimits(0.5, 0.5); + internals.setPageScaleFactor(0.5); testEvents(0, "setPageScale(0.5)", "click(20, 20)"); - window.internals.setPageScaleFactorLimits(1, 1); - window.internals.setPageScaleFactor(1.0); + internals.setPageScaleFactorLimits(1, 1); + internals.setPageScaleFactor(1.0); html.style["-webkit-transform"] = "scale(0.5, 2.0)"; html.style["-webkit-transform-origin"] = "0 0"; testEvents(0, "CSS scale(0.5, 2.0)", "click(20, 5)"); - window.internals.setPageScaleFactorLimits(0.5, 0.5); - window.internals.setPageScaleFactor(0.5); + internals.setPageScaleFactorLimits(0.5, 0.5); + internals.setPageScaleFactor(0.5); testEvents(0, "setPageScale(0.5), CSS scale(0.5, 2.0)", "click(40, 10)"); }
diff --git a/third_party/WebKit/LayoutTests/fast/events/script-tests/page-scaled-mouse-click.js b/third_party/WebKit/LayoutTests/fast/events/script-tests/page-scaled-mouse-click.js index e0ac5a1..6f62975bc 100644 --- a/third_party/WebKit/LayoutTests/fast/events/script-tests/page-scaled-mouse-click.js +++ b/third_party/WebKit/LayoutTests/fast/events/script-tests/page-scaled-mouse-click.js
@@ -50,7 +50,7 @@ // parts of the document are under the mouse. testEvents(0, "Unscaled", "click(10, 10)"); - window.internals.setPageScaleFactorLimits(0.5, 0.5); - window.internals.setPageScaleFactor(0.5); + internals.setPageScaleFactorLimits(0.5, 0.5); + internals.setPageScaleFactor(0.5); testEvents(0, "setPageScale(0.5)", "click(20, 20)"); }
diff --git a/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-count-expected.txt b/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-count-expected.txt index 4bcd6ff3..be754b64 100644 --- a/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-count-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-count-expected.txt
@@ -3,53 +3,53 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -PASS window.internals.scrollEventHandlerCount(document) is 0 -PASS window.internals.scrollEventHandlerCount(document) is 1 -PASS window.internals.scrollEventHandlerCount(document) is 2 -PASS window.internals.scrollEventHandlerCount(document) is 1 -PASS window.internals.scrollEventHandlerCount(document) is 1 -PASS window.internals.scrollEventHandlerCount(document) is 0 +PASS internals.scrollEventHandlerCount(document) is 0 +PASS internals.scrollEventHandlerCount(document) is 1 +PASS internals.scrollEventHandlerCount(document) is 2 +PASS internals.scrollEventHandlerCount(document) is 1 +PASS internals.scrollEventHandlerCount(document) is 1 +PASS internals.scrollEventHandlerCount(document) is 0 Test setting onscroll on the document. -PASS window.internals.scrollEventHandlerCount(document) is 0 -PASS window.internals.scrollEventHandlerCount(document) is 1 -PASS window.internals.scrollEventHandlerCount(document) is 1 -PASS window.internals.scrollEventHandlerCount(document) is 0 +PASS internals.scrollEventHandlerCount(document) is 0 +PASS internals.scrollEventHandlerCount(document) is 1 +PASS internals.scrollEventHandlerCount(document) is 1 +PASS internals.scrollEventHandlerCount(document) is 0 Test that nested Documents' scroll handlers are properly tracked in their parent Document. -PASS window.internals.scrollEventHandlerCount(document) is 1 -PASS window.internals.scrollEventHandlerCount(nestedDocument) is 2 -PASS window.internals.scrollEventHandlerCount(document) is 2 -PASS window.internals.scrollEventHandlerCount(nestedDocument) is 1 -PASS window.internals.scrollEventHandlerCount(document) is 1 -PASS window.internals.scrollEventHandlerCount(document) is 1 +PASS internals.scrollEventHandlerCount(document) is 1 +PASS internals.scrollEventHandlerCount(nestedDocument) is 2 +PASS internals.scrollEventHandlerCount(document) is 2 +PASS internals.scrollEventHandlerCount(nestedDocument) is 1 +PASS internals.scrollEventHandlerCount(document) is 1 +PASS internals.scrollEventHandlerCount(document) is 1 Test that detaching a nested Document with handlers works properly. -PASS window.internals.scrollEventHandlerCount(nestedDocument) is 2 -PASS window.internals.scrollEventHandlerCount(document) is 2 -PASS window.internals.scrollEventHandlerCount(document) is 0 +PASS internals.scrollEventHandlerCount(nestedDocument) is 2 +PASS internals.scrollEventHandlerCount(document) is 2 +PASS internals.scrollEventHandlerCount(document) is 0 Test moving event listeners from an unattached document to an attached one -PASS window.internals.scrollEventHandlerCount(doc) is 0 -PASS window.internals.scrollEventHandlerCount(document) is 0 -PASS window.internals.scrollEventHandlerCount(document) is 2 -PASS window.internals.scrollEventHandlerCount(document) is 2 -PASS window.internals.scrollEventHandlerCount(document) is 0 +PASS internals.scrollEventHandlerCount(doc) is 0 +PASS internals.scrollEventHandlerCount(document) is 0 +PASS internals.scrollEventHandlerCount(document) is 2 +PASS internals.scrollEventHandlerCount(document) is 2 +PASS internals.scrollEventHandlerCount(document) is 0 Test moving event listeners from an attached document to an unattached one -PASS window.internals.scrollEventHandlerCount(document) is 3 -PASS window.internals.scrollEventHandlerCount(document) is 0 +PASS internals.scrollEventHandlerCount(document) is 3 +PASS internals.scrollEventHandlerCount(document) is 0 Test moving a scroll event listener between documents belonging to the same page -PASS window.internals.scrollEventHandlerCount(document) is 2 -PASS window.internals.scrollEventHandlerCount(document) is 2 -PASS window.internals.scrollEventHandlerCount(document) is 0 +PASS internals.scrollEventHandlerCount(document) is 2 +PASS internals.scrollEventHandlerCount(document) is 2 +PASS internals.scrollEventHandlerCount(document) is 0 Test addEventListener/removeEventListener on the window. -PASS window.internals.scrollEventHandlerCount(document) is 0 -PASS window.internals.scrollEventHandlerCount(document) is 1 -PASS window.internals.scrollEventHandlerCount(document) is 2 -PASS window.internals.scrollEventHandlerCount(document) is 1 -PASS window.internals.scrollEventHandlerCount(document) is 1 -PASS window.internals.scrollEventHandlerCount(document) is 0 +PASS internals.scrollEventHandlerCount(document) is 0 +PASS internals.scrollEventHandlerCount(document) is 1 +PASS internals.scrollEventHandlerCount(document) is 2 +PASS internals.scrollEventHandlerCount(document) is 1 +PASS internals.scrollEventHandlerCount(document) is 1 +PASS internals.scrollEventHandlerCount(document) is 0 Test setting onscroll on the window. -PASS window.internals.scrollEventHandlerCount(document) is 0 -PASS window.internals.scrollEventHandlerCount(document) is 1 -PASS window.internals.scrollEventHandlerCount(document) is 1 -PASS window.internals.scrollEventHandlerCount(document) is 0 +PASS internals.scrollEventHandlerCount(document) is 0 +PASS internals.scrollEventHandlerCount(document) is 1 +PASS internals.scrollEventHandlerCount(document) is 1 +PASS internals.scrollEventHandlerCount(document) is 0 PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-count.html b/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-count.html index f17219a6..be755de 100644 --- a/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-count.html +++ b/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-count.html
@@ -6,31 +6,31 @@ // Test addEventListener/removeEventListener on the document. var listener = function() { } - shouldBe('window.internals.scrollEventHandlerCount(document)', '0'); + shouldBe('internals.scrollEventHandlerCount(document)', '0'); document.addEventListener('scroll', listener, true); - shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); + shouldBe('internals.scrollEventHandlerCount(document)', '1'); document.addEventListener('scroll', listener, false); - shouldBe('window.internals.scrollEventHandlerCount(document)', '2'); + shouldBe('internals.scrollEventHandlerCount(document)', '2'); document.removeEventListener('scroll', listener, true); - shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); + shouldBe('internals.scrollEventHandlerCount(document)', '1'); // Try removing the capturing listener again. document.removeEventListener('scroll', listener, true); - shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); + shouldBe('internals.scrollEventHandlerCount(document)', '1'); document.removeEventListener('scroll', listener, false); - shouldBe('window.internals.scrollEventHandlerCount(document)', '0'); + shouldBe('internals.scrollEventHandlerCount(document)', '0'); })(); debug('Test setting onscroll on the document.'); (function() { - shouldBe('window.internals.scrollEventHandlerCount(document)', '0'); + shouldBe('internals.scrollEventHandlerCount(document)', '0'); document.onscroll = function() { } - shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); + shouldBe('internals.scrollEventHandlerCount(document)', '1'); document.onscroll = function() { } - shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); + shouldBe('internals.scrollEventHandlerCount(document)', '1'); document.onscroll = null; - shouldBe('window.internals.scrollEventHandlerCount(document)', '0'); + shouldBe('internals.scrollEventHandlerCount(document)', '0'); })(); debug('Test that nested Documents\' scroll handlers are properly tracked in their parent Document.'); @@ -39,24 +39,24 @@ var scrolltarget = document.getElementById('scrolltarget'); scrolltarget.onscroll = function() {}; - shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); + shouldBe('internals.scrollEventHandlerCount(document)', '1'); scrolltarget.appendChild(iframe); nestedDocument = iframe.contentWindow.document; nestedDocument.open('text/html', 'replace'); nestedDocument.write('<!DOCTYPE html>\n<script>\ndocument.onscroll=function(){};\n</' + 'script>\n'); - shouldBe('window.internals.scrollEventHandlerCount(nestedDocument)', '2'); - shouldBe('window.internals.scrollEventHandlerCount(document)', '2'); + shouldBe('internals.scrollEventHandlerCount(nestedDocument)', '2'); + shouldBe('internals.scrollEventHandlerCount(document)', '2'); nestedDocument.write('<script>document.onscroll=undefined</' + 'script>\n'); - shouldBe('window.internals.scrollEventHandlerCount(nestedDocument)', '1'); - shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); + shouldBe('internals.scrollEventHandlerCount(nestedDocument)', '1'); + shouldBe('internals.scrollEventHandlerCount(document)', '1'); nestedDocument.close(); scrolltarget.removeChild(iframe); - shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); + shouldBe('internals.scrollEventHandlerCount(document)', '1'); scrolltarget.onscroll = undefined; })(); @@ -71,12 +71,12 @@ nestedDocument.open('text/html', 'replace'); nestedDocument.write('<!DOCTYPE html>\n<script>\ndocument.onscroll=function(){};\n' + 'window.onscroll=function(){};</' + 'script>\n'); - shouldBe('window.internals.scrollEventHandlerCount(nestedDocument)', '2'); - shouldBe('window.internals.scrollEventHandlerCount(document)', '2'); + shouldBe('internals.scrollEventHandlerCount(nestedDocument)', '2'); + shouldBe('internals.scrollEventHandlerCount(document)', '2'); nestedDocument.close(); scrolltarget.removeChild(iframe); - shouldBe('window.internals.scrollEventHandlerCount(document)', '0'); + shouldBe('internals.scrollEventHandlerCount(document)', '0'); })(); debug('Test moving event listeners from an unattached document to an attached one'); @@ -91,24 +91,24 @@ // Since we only track event handlers on documents that attached to a page, // |doc| should not have any registered handlers at this point. - shouldBe('window.internals.scrollEventHandlerCount(doc)', '0'); - shouldBe('window.internals.scrollEventHandlerCount(document)', '0'); + shouldBe('internals.scrollEventHandlerCount(doc)', '0'); + shouldBe('internals.scrollEventHandlerCount(document)', '0'); // Move the top level div into the current document. Both event handlers should // get registered. document.body.appendChild(div); - shouldBe('window.internals.scrollEventHandlerCount(document)', '2'); + shouldBe('internals.scrollEventHandlerCount(document)', '2'); // Removing the div from the document does not affect the event handler count. document.body.removeChild(div); - shouldBe('window.internals.scrollEventHandlerCount(document)', '2'); + shouldBe('internals.scrollEventHandlerCount(document)', '2'); // Once the divs are destroyed the handlers go away. div = null; childDiv = null; doc = null; gc(); - shouldBe('window.internals.scrollEventHandlerCount(document)', '0'); + shouldBe('internals.scrollEventHandlerCount(document)', '0'); })(); debug('Test moving event listeners from an attached document to an unattached one'); @@ -125,11 +125,11 @@ 'window.onscroll=function(){};</' + 'script>\n'); nestedDocument.close(); - shouldBe('window.internals.scrollEventHandlerCount(document)', '3'); + shouldBe('internals.scrollEventHandlerCount(document)', '3'); var unattachedDoc = document.implementation.createHTMLDocument(''); unattachedDoc.body.appendChild(div); - shouldBe('window.internals.scrollEventHandlerCount(document)', '0'); + shouldBe('internals.scrollEventHandlerCount(document)', '0'); })(); debug('Test moving a scroll event listener between documents belonging to the same page'); @@ -145,45 +145,45 @@ var listener = function() { } element.addEventListener('scroll', listener, false); frames[0].window.addEventListener('scroll', listener, false); - shouldBe('window.internals.scrollEventHandlerCount(document)', '2'); + shouldBe('internals.scrollEventHandlerCount(document)', '2'); document.body.appendChild(element); - shouldBe('window.internals.scrollEventHandlerCount(document)', '2'); + shouldBe('internals.scrollEventHandlerCount(document)', '2'); element.removeEventListener('scroll', listener, false); frames[0].window.removeEventListener('scroll', listener, false); - shouldBe('window.internals.scrollEventHandlerCount(document)', '0'); + shouldBe('internals.scrollEventHandlerCount(document)', '0'); })(); debug('Test addEventListener/removeEventListener on the window.'); (function() { var listener = function() { } - shouldBe('window.internals.scrollEventHandlerCount(document)', '0'); + shouldBe('internals.scrollEventHandlerCount(document)', '0'); window.addEventListener('scroll', listener, true); - shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); + shouldBe('internals.scrollEventHandlerCount(document)', '1'); window.addEventListener('scroll', listener, false); - shouldBe('window.internals.scrollEventHandlerCount(document)', '2'); + shouldBe('internals.scrollEventHandlerCount(document)', '2'); window.removeEventListener('scroll', listener, true); - shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); + shouldBe('internals.scrollEventHandlerCount(document)', '1'); // Try removing the capturing listener again. window.removeEventListener('scroll', listener, true); - shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); + shouldBe('internals.scrollEventHandlerCount(document)', '1'); window.removeEventListener('scroll', listener, false); - shouldBe('window.internals.scrollEventHandlerCount(document)', '0'); + shouldBe('internals.scrollEventHandlerCount(document)', '0'); })(); debug('Test setting onscroll on the window.'); (function() { - shouldBe('window.internals.scrollEventHandlerCount(document)', '0'); + shouldBe('internals.scrollEventHandlerCount(document)', '0'); window.onscroll = function() { } - shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); + shouldBe('internals.scrollEventHandlerCount(document)', '1'); window.onscroll = function() { } - shouldBe('window.internals.scrollEventHandlerCount(document)', '1'); + shouldBe('internals.scrollEventHandlerCount(document)', '1'); window.onscroll = null; - shouldBe('window.internals.scrollEventHandlerCount(document)', '0'); + shouldBe('internals.scrollEventHandlerCount(document)', '0'); })(); </script> </body>
diff --git a/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-reused-window-expected.txt b/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-reused-window-expected.txt index 1de3709..9af3de2 100644 --- a/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-reused-window-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-reused-window-expected.txt
@@ -6,5 +6,5 @@ PASS successfullyParsed is true TEST COMPLETE -PASS window.internals.scrollEventHandlerCount(newWindow.document) is 1 +PASS internals.scrollEventHandlerCount(newWindow.document) is 1
diff --git a/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-reused-window.html b/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-reused-window.html index 07b6c98a..ab6e15c 100644 --- a/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-reused-window.html +++ b/third_party/WebKit/LayoutTests/fast/events/scroll-event-handler-reused-window.html
@@ -18,7 +18,7 @@ newWindow.onscroll = function() {}; function concludeTest() { - shouldBe('window.internals.scrollEventHandlerCount(newWindow.document)', '1'); + shouldBe('internals.scrollEventHandlerCount(newWindow.document)', '1'); testRunner.notifyDone(); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/events/scroll-in-scaled-page-with-overflow-hidden.html b/third_party/WebKit/LayoutTests/fast/events/scroll-in-scaled-page-with-overflow-hidden.html index 470a76b..56a23f9 100644 --- a/third_party/WebKit/LayoutTests/fast/events/scroll-in-scaled-page-with-overflow-hidden.html +++ b/third_party/WebKit/LayoutTests/fast/events/scroll-in-scaled-page-with-overflow-hidden.html
@@ -25,7 +25,7 @@ // Force a layout. document.body.offsetLeft; - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); // Note that with ScrollTopLeftInterop enabled, document.scrollingElement is // null because document.body is potentially scrollable (with overflow:hidden
diff --git a/third_party/WebKit/LayoutTests/fast/events/scrollbar-double-click.html b/third_party/WebKit/LayoutTests/fast/events/scrollbar-double-click.html index 53d42c5..5ff42a3c 100644 --- a/third_party/WebKit/LayoutTests/fast/events/scrollbar-double-click.html +++ b/third_party/WebKit/LayoutTests/fast/events/scrollbar-double-click.html
@@ -27,6 +27,6 @@ function finished() { document.getElementById('console').innerHTML = "Scroll offset is " + document.getElementById('overflow').scrollTop; - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/events/stop-immediate-propagation.html b/third_party/WebKit/LayoutTests/fast/events/stop-immediate-propagation.html index 070f2062..54e6a1b 100644 --- a/third_party/WebKit/LayoutTests/fast/events/stop-immediate-propagation.html +++ b/third_party/WebKit/LayoutTests/fast/events/stop-immediate-propagation.html
@@ -2,7 +2,7 @@ <head> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function eventHandlerOne(event) {
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects-many.html b/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects-many.html index e2ab07c..3c5d67b 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects-many.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects-many.html
@@ -45,7 +45,7 @@ log('Missing window.internals'); internals.forceCompositingUpdate(document); - var rects = window.internals.touchEventTargetLayerRects(document); + var rects = internals.touchEventTargetLayerRects(document); log('Test node has ' + document.querySelectorAll('.child').length + ' children with ' + rects.length + ' rects'); if (rects.length != expectedRects) { log('FAIL - got ' + rects.length + ' rects, expected ' + expectedRects + '.');
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects-non-composited-scroll.html b/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects-non-composited-scroll.html index d19c39ab..7ecf57bc 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects-non-composited-scroll.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects-non-composited-scroll.html
@@ -90,7 +90,7 @@ window.scrollTo(0, 13); if (window.internals) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(false); + internals.settings.setPreferCompositingToLCDTextEnabled(false); } </script> </body>
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects-scroll.html b/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects-scroll.html index 3042c24..d1b4230 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects-scroll.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects-scroll.html
@@ -125,7 +125,7 @@ }; if (window.internals) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); } </script> </body>
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects-trigger-commit.html b/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects-trigger-commit.html index 3ad150a..03e034f 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects-trigger-commit.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects-trigger-commit.html
@@ -30,11 +30,11 @@ testRunner.dumpAsText(); if (window.internals) { - window.internals.forceCompositingUpdate(document); + internals.forceCompositingUpdate(document); document.getElementById("touchElement").addEventListener("touchmove", dummyListener, false); - window.internals.forceCompositingUpdate(document); + internals.forceCompositingUpdate(document); - var rects = window.internals.touchEventTargetLayerRects(document); + var rects = internals.touchEventTargetLayerRects(document); if (rects && rects.length == 1) document.getElementById("result").innerHTML = "PASS"; else
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects.html b/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects.html index e2f94c5a..2ffcbaa 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/compositor-touch-hit-rects.html
@@ -161,7 +161,7 @@ window.scrollTo(0, 13); if (window.internals) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(false); + internals.settings.setPreferCompositingToLCDTextEnabled(false); } </script> </body>
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/gesture-scrollbar.html b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/gesture-scrollbar.html index da513a7..cba9bf47 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/gesture-scrollbar.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/gesture-scrollbar.html
@@ -100,7 +100,7 @@ internals.settings.setMockScrollbarsEnabled(true); if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); if (window.eventSender) { description('This tests scroll gesture events on a scroll bar. ' +
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/pad-gesture-cancel.html b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/pad-gesture-cancel.html index 62aece2..bc2b0b1 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/pad-gesture-cancel.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/pad-gesture-cancel.html
@@ -33,7 +33,7 @@ testRunner.notifyDone(); } - if (window.testRunner && window.eventSender && window.eventSender.gestureFlingStart) { + if (window.testRunner && window.eventSender && eventSender.gestureFlingStart) { eventSender.gestureFlingStart(10, 11, 1000, 1000, "touchpad"); eventSender.gestureFlingCancel(); document.addEventListener("mousewheel", recordWheelEvent);
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/pad-gesture-fling.js b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/pad-gesture-fling.js index c7628b73a..cc290b8 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/pad-gesture-fling.js +++ b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/pad-gesture-fling.js
@@ -40,7 +40,7 @@ document.addEventListener("mousewheel", recordWheelEvent); -if (window.testRunner && window.eventSender && window.eventSender.gestureFlingStart) { +if (window.testRunner && window.eventSender && eventSender.gestureFlingStart) { // At least one wheel event must happen before touchpad fling start. eventSender.mouseMoveTo(10, 11); eventSender.mouseScrollBy(1, 1, false, true, 0, true, "phaseBegan");
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-fully-scrolled-iframe-propagates.html b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-fully-scrolled-iframe-propagates.html index 75919613..8abee07 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-fully-scrolled-iframe-propagates.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-fully-scrolled-iframe-propagates.html
@@ -105,7 +105,7 @@ description('This tests that a fling gesture sent to an iframe with no remaining scroll offset ' + 'is correctly targeting the parent container.'); - if (checkTestDependencies() && window.eventSender.gestureScrollUpdate) + if (checkTestDependencies() && eventSender.gestureScrollUpdate) firstGestureScroll(); else exitIfNecessary();
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-not-propagated.html b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-not-propagated.html index 18e8d44..2c799f1 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-not-propagated.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-not-propagated.html
@@ -129,7 +129,7 @@ 'inner div to an outer div when the inner div has no ' + 'remaining scroll offset when the preventPropagation flag is set for ' + 'the GestureScrollUpdate event type.'); - if (checkTestDependencies() && window.eventSender.gestureScrollUpdate) + if (checkTestDependencies() && eventSender.gestureScrollUpdate) firstGestureScroll(); else exitIfNecessary();
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-scaled.html b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-scaled.html index 4f60a9ea..ad3733c8 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-scaled.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-scaled.html
@@ -117,9 +117,9 @@ description('This tests gesture event scrolling of an overflow div with page scale.'); if (checkTestDependencies()) { - if (window.internals.runtimeFlags.fractionalScrollOffsetsEnabled) { + if (internals.runtimeFlags.fractionalScrollOffsetsEnabled) { debug("fractional scroll mode"); - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); scrollAmountX = ['90', '90']; scrollAmountY = ['47.5', '95']; } else {
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-zoomed.html b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-zoomed.html index beeacce..1d9a3a4 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-zoomed.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-div-zoomed.html
@@ -82,7 +82,7 @@ { debug("first gesture"); - window.internals.setZoomFactor(0.5); + internals.setZoomFactor(0.5); eventSender.gestureScrollBegin(45, 12); eventSender.gestureScrollUpdate(-40, 0); eventSender.gestureScrollEnd(0, 0); @@ -95,7 +95,7 @@ { debug("second gesture"); - window.internals.setZoomFactor(1.25); + internals.setZoomFactor(1.25); eventSender.gestureScrollBegin(12, 47); eventSender.gestureScrollUpdate(0, -40); eventSender.gestureScrollEnd(0, 0);
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-iframe-not-propagated.html b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-iframe-not-propagated.html index e18c022..8cd71f4 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-iframe-not-propagated.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-iframe-not-propagated.html
@@ -99,7 +99,7 @@ 'iframe to an outer div when the iframe has no remaining ' + 'scroll offset when the preventPropagation flag is set for the gesture '+ 'type GestureScrollUpdate.'); - if (checkTestDependencies() && window.eventSender.gestureScrollUpdate) + if (checkTestDependencies() && eventSender.gestureScrollUpdate) firstGestureScroll(); else exitIfNecessary();
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-input-field.html b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-input-field.html index c7618c0..b122ff84 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-input-field.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-input-field.html
@@ -180,7 +180,7 @@ if (window.eventSender) { description('This tests that an input text field can be properly scrolled with touch gestures'); - if (checkTestDependencies() && window.eventSender.gestureScrollUpdate) { + if (checkTestDependencies() && eventSender.gestureScrollUpdate) { calculateFullScroll(); testFlingGestureScroll(); testGestureScroll();
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-listbox.html b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-listbox.html index 963ccd8..f308ade 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-listbox.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-listbox.html
@@ -162,7 +162,7 @@ if (window.eventSender) { description('This tests that an input text field can be properly scrolled with touch gestures'); - if (checkTestDependencies() && window.eventSender.gestureScrollUpdate) { + if (checkTestDependencies() && eventSender.gestureScrollUpdate) { testFlingGestures(); testGestureScroll(); testHorizontalScroll();
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-page-not-propagated.html b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-page-not-propagated.html index 5e2fe74..03da226 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-page-not-propagated.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-page-not-propagated.html
@@ -140,7 +140,7 @@ description('This tests that a gesture scroll is not propagated from a div ' + 'to the page when the div has no remaining scroll offset when ' + 'the preventPropagation flag is set for the GestureScrollUpdate event.'); - if (checkTestDependencies() && window.eventSender.gestureScrollUpdate) + if (checkTestDependencies() && eventSender.gestureScrollUpdate) firstGestureScroll(); else exitIfNecessary();
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-page-zoomed.html b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-page-zoomed.html index 252f07db..a74d336 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-page-zoomed.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/gesture/touch-gesture-scroll-page-zoomed.html
@@ -93,7 +93,7 @@ { debug("first gesture"); - window.internals.setZoomFactor(0.5); + internals.setZoomFactor(0.5); eventSender.gestureScrollBegin(10, 72); eventSender.gestureScrollUpdate(0, -30); eventSender.gestureScrollUpdate(0, -40); @@ -111,7 +111,7 @@ eventSender.gestureScrollUpdate(0, 200); eventSender.gestureScrollEnd(0, 0); - window.internals.setZoomFactor(2.0); + internals.setZoomFactor(2.0); eventSender.gestureScrollBegin(799, 40); eventSender.gestureScrollUpdate(0, -40); eventSender.gestureScrollUpdate(0, -40);
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/layout-triggers.html b/third_party/WebKit/LayoutTests/fast/events/touch/layout-triggers.html index 79f1e6f..97f8565 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/layout-triggers.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/layout-triggers.html
@@ -14,7 +14,7 @@ // Dirty layout box.style.height = counter + 'px'; counter++; - window.internals.updateStyleAndReturnAffectedElementCount(); + internals.updateStyleAndReturnAffectedElementCount(); shouldNotBe('internals.needsLayoutCount()', '0', true); // Run the action under test
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/resources/compositor-touch-hit-rects.js b/third_party/WebKit/LayoutTests/fast/events/touch/resources/compositor-touch-hit-rects.js index 6b827a7..34c6067e 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/resources/compositor-touch-hit-rects.js +++ b/third_party/WebKit/LayoutTests/fast/events/touch/resources/compositor-touch-hit-rects.js
@@ -52,7 +52,7 @@ return; } - var rects = window.internals.touchEventTargetLayerRects(document); + var rects = internals.touchEventTargetLayerRects(document); if (rects.length == 0) log(testName + ': no rects'); @@ -118,9 +118,9 @@ if (window.testRunner) { if (visualize) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); else - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.documentElement.setAttribute('dumpRenderTree', 'true'); } else { // Note, this test can be run interactively in content-shell with @@ -130,7 +130,7 @@ } if (window.internals) { - window.internals.settings.setMockScrollbarsEnabled(true); + internals.settings.setMockScrollbarsEnabled(true); } window.onload = function() { @@ -147,7 +147,7 @@ // any subsequent touch rect updates are actually done because of // the event handler changes in the test itself. if (window.internals) - window.internals.forceCompositingUpdate(document); + internals.forceCompositingUpdate(document); testElement(tests[i]); }
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/script-tests/send-oncancel-event.js b/third_party/WebKit/LayoutTests/fast/events/touch/script-tests/send-oncancel-event.js index eb77187..3c21105 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/script-tests/send-oncancel-event.js +++ b/third_party/WebKit/LayoutTests/fast/events/touch/script-tests/send-oncancel-event.js
@@ -18,7 +18,7 @@ } if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); window.onload = function() { if (window.eventSender) {
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/touch-action-touch-handlers.html b/third_party/WebKit/LayoutTests/fast/events/touch/touch-action-touch-handlers.html index 2560b93..34b74c1 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/touch-action-touch-handlers.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/touch-action-touch-handlers.html
@@ -32,8 +32,8 @@ var nestedDocument; function getTouchHandlerCount(doc) { - window.internals.updateStyleAndReturnAffectedElementCount(); - return window.internals.touchStartOrMoveEventHandlerCount(doc); + internals.updateStyleAndReturnAffectedElementCount(); + return internals.touchStartOrMoveEventHandlerCount(doc); } function runTests() { @@ -98,7 +98,7 @@ nestedDocument.open('text/html', 'replace'); nestedDocument.write("<!DOCTYPE html>\n<div style='touch-action: none'></div>"); nestedDocument.close(); - window.internals.forceCompositingUpdate(document); + internals.forceCompositingUpdate(document); shouldBe("getTouchHandlerCount(nestedDocument)", "2"); shouldBe("getTouchHandlerCount(document)", "2"); }
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/touch-browser-zoom-scales-radius.html b/third_party/WebKit/LayoutTests/fast/events/touch/touch-browser-zoom-scales-radius.html index de44c94..39e5aaa7 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/touch-browser-zoom-scales-radius.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/touch-browser-zoom-scales-radius.html
@@ -40,14 +40,14 @@ shouldBe("radiusX", "4"); shouldBe("radiusY", "10"); - window.internals.setZoomFactor(2.0); + internals.setZoomFactor(2.0); debug("===Zoom 2X==="); sendTouchStart(100, 100, 4, 10); shouldBe("radiusX", "2"); shouldBe("radiusY", "5"); - window.internals.setZoomFactor(0.5); + internals.setZoomFactor(0.5); debug("===Zoom 0.5X==="); sendTouchStart(100, 100, 4, 10);
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/touch-handler-assert-input-range.html b/third_party/WebKit/LayoutTests/fast/events/touch/touch-handler-assert-input-range.html index aabd08d..50b6a97 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/touch-handler-assert-input-range.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/touch-handler-assert-input-range.html
@@ -19,14 +19,14 @@ // Verify we actually have a hit rect on the page. if (window.internals) { internals.forceCompositingUpdate(document); - rects = window.internals.touchEventTargetLayerRects(document); + rects = internals.touchEventTargetLayerRects(document); shouldBe("rects.length", "1"); } document.getElementById("frame").remove(); if (window.internals) { internals.forceCompositingUpdate(document); - rects = window.internals.touchEventTargetLayerRects(document); + rects = internals.touchEventTargetLayerRects(document); shouldBe("rects.length", "0"); } window.setTimeout(function() {
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/touch-handler-count-expected.txt b/third_party/WebKit/LayoutTests/fast/events/touch/touch-handler-count-expected.txt index e29342a39..cdcab5d 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/touch-handler-count-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/events/touch/touch-handler-count-expected.txt
@@ -4,130 +4,130 @@ Test addEventListener/removeEventListener on the document. -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 3 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 3 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 Test setting touch handlers on the document. -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 0 Test addEventListener/removeEventListener on the window. -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 3 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 3 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 Test setting touch handlers on the window. -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 0 Test addEventListener/removeEventListener on a div. -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 3 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 3 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 Test setting touch handlers on a div. -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 0 Test redudant addEventListener on a div. -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 Test addEventListener/removeEventListener on a new div. -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 0 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 0 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 0 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 0 Test setting touch handlers on a new div. -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 0 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 0 Test that nested Documents' touch handlers are properly tracked in their parent Document. -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(nestedDocument) is 2 -PASS window.internals.touchEndOrCancelEventHandlerCount(nestedDocument) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(nestedDocument) is 1 -PASS window.internals.touchEndOrCancelEventHandlerCount(nestedDocument) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(nestedDocument) is 2 -PASS window.internals.touchEndOrCancelEventHandlerCount(nestedDocument) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 2 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 2 -PASS window.internals.touchStartOrMoveEventHandlerCount(nestedDocument) is 1 -PASS window.internals.touchEndOrCancelEventHandlerCount(nestedDocument) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(nestedDocument) is 2 +PASS internals.touchEndOrCancelEventHandlerCount(nestedDocument) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(nestedDocument) is 1 +PASS internals.touchEndOrCancelEventHandlerCount(nestedDocument) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(nestedDocument) is 2 +PASS internals.touchEndOrCancelEventHandlerCount(nestedDocument) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 2 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 2 +PASS internals.touchStartOrMoveEventHandlerCount(nestedDocument) is 1 +PASS internals.touchEndOrCancelEventHandlerCount(nestedDocument) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 1 PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/touch-handler-count.html b/third_party/WebKit/LayoutTests/fast/events/touch/touch-handler-count.html index 4a2f211..eb65d10 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/touch-handler-count.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/touch-handler-count.html
@@ -7,106 +7,106 @@ (function() { var listener = function() { } - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); document.addEventListener('touchstart', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); document.addEventListener('touchmove', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); document.addEventListener('touchstart', listener, false); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '3'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '3'); document.removeEventListener('touchmove', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); document.removeEventListener('touchstart', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); // Try removing the capturing listener again. document.removeEventListener('touchstart', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); document.removeEventListener('touchmove', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); document.removeEventListener('touchstart', listener, false); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); })(); debug("Test setting touch handlers on the document."); (function() { - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); document.ontouchstart = function() { } document.ontouchmove = function() {} document.ontouchend = function() {} document.ontouchcancel = function() {} - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '2'); document.ontouchstart = function() { } - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '2'); document.ontouchstart = null; - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '2'); document.ontouchstart = null; - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '2'); document.ontouchend = null; - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '1'); document.ontouchmove = null; document.ontouchcancel = null; - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '0'); })(); debug("Test addEventListener/removeEventListener on the window."); (function() { var listener = function() { } - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); window.addEventListener('touchstart', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); window.addEventListener('touchmove', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); window.addEventListener('touchstart', listener, false); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '3'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '3'); window.removeEventListener('touchmove', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); window.removeEventListener('touchstart', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); // Try removing the capturing listener again. window.removeEventListener('touchstart', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); window.removeEventListener('touchmove', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); window.removeEventListener('touchstart', listener, false); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); })(); debug("Test setting touch handlers on the window."); (function() { - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); window.ontouchstart = function() { } window.ontouchmove = function() {} window.ontouchend = function() {} window.ontouchcancel = function() {} - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '2'); window.ontouchstart = function() { } - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '2'); window.ontouchstart = null; - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '2'); window.ontouchstart = null; - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '2'); window.ontouchend = null; - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '1'); window.ontouchmove = null; window.ontouchcancel = null; - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '0'); })(); debug("Test addEventListener/removeEventListener on a div."); @@ -114,55 +114,55 @@ var listener = function() { } var div = document.getElementById('touchtarget'); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); div.addEventListener('touchstart', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); div.addEventListener('touchmove', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); div.addEventListener('touchstart', listener, false); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '3'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '3'); div.removeEventListener('touchmove', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); div.removeEventListener('touchstart', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); // Try removing the capturing listener again. div.removeEventListener('touchstart', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); div.removeEventListener('touchmove', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); div.removeEventListener('touchstart', listener, false); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); })(); debug("Test setting touch handlers on a div."); (function() { var div = document.getElementById('touchtarget'); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); div.ontouchstart = function() { } div.ontouchmove = function() { } div.ontouchend = function() { } div.ontouchcancel = function() { } - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '2'); div.ontouchstart = function() { } - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '2'); div.ontouchstart = null; - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '2'); div.ontouchstart = null; - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '2'); div.ontouchend = null; - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '1'); div.ontouchmove = null; div.ontouchcancel = null; - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '0'); })(); debug("Test redudant addEventListener on a div."); @@ -170,14 +170,14 @@ var listener = function() { } var div = document.getElementById('touchtarget'); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); div.addEventListener('touchstart', listener, false); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); div.addEventListener('touchstart', listener, false); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); div.removeEventListener('touchstart', listener, false); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); })(); @@ -187,35 +187,35 @@ var touchtarget = document.getElementById('touchtarget'); var listener = function() { } - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '0'); div.addEventListener('touchstart', listener, true); div.addEventListener('touchmove', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '0'); touchtarget.appendChild(div); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '0'); div.addEventListener('touchend', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '1'); div.removeEventListener('touchstart', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); touchtarget.removeChild(div); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); div.removeEventListener('touchmove', listener, false); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); div.removeEventListener('touchmove', listener, true); div.removeEventListener('touchend', listener, true); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '0'); })(); debug("Test setting touch handlers on a new div."); @@ -223,32 +223,32 @@ var div = document.createElement('div'); var touchtarget = document.getElementById('touchtarget'); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); div.ontouchstart = function() { } div.ontouchmove = function() { } - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); touchtarget.appendChild(div); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '0'); div.ontouchend = function() { } - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '1'); div.ontouchstart = null; - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '1'); touchtarget.removeChild(div); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '1'); div.ontouchend = null; div.ontouchmove = null; - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '0'); })(); var nestedDocument; @@ -259,8 +259,8 @@ var touchtarget = document.getElementById('touchtarget'); touchtarget.ontouchend = function() {}; - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '1'); touchtarget.appendChild(iframe); @@ -268,34 +268,34 @@ nestedDocument.open('text/html', 'replace'); nestedDocument.write('<!DOCTYPE html>\n<script>\nwindow.ontouchstart=function(){};\n</' + 'script>\n' + '<div id=twoHandlers ontouchmove="function(){}" ontouchcancel="function(){}"></div>'); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(nestedDocument)', '2'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(nestedDocument)', '2'); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(nestedDocument)', '2'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(nestedDocument)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '2'); nestedDocument.write('<script>window.ontouchstart=undefined</' + 'script>\n'); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(nestedDocument)', '1'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(nestedDocument)', '2'); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(nestedDocument)', '1'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(nestedDocument)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '2'); nestedDocument.write('<script>document.addEventListener("touchmove", function(){});</' + 'script>\n'); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(nestedDocument)', '2'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(nestedDocument)', '2'); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '2'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(nestedDocument)', '2'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(nestedDocument)', '2'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '2'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '2'); nestedDocument.write('<script>document.getElementById("twoHandlers").remove();</' + 'script>\n'); gc(); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(nestedDocument)', '1'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(nestedDocument)', '1'); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(nestedDocument)', '1'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(nestedDocument)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '1'); nestedDocument.close(); touchtarget.removeChild(iframe); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '1'); })(); </script> </body>
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/touch-input-element-change-documents-expected.txt b/third_party/WebKit/LayoutTests/fast/events/touch/touch-input-element-change-documents-expected.txt index e578a79..917d96da 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/touch-input-element-change-documents-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/events/touch/touch-input-element-change-documents-expected.txt
@@ -3,15 +3,15 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 0 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchEndOrCancelEventHandlerCount(document) is 0 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchEndOrCancelEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/touch-input-element-change-documents.html b/third_party/WebKit/LayoutTests/fast/events/touch/touch-input-element-change-documents.html index c4c3479..222f0cf4 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/touch-input-element-change-documents.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/touch-input-element-change-documents.html
@@ -4,29 +4,29 @@ description("This test checks that we correctly update the touch event handler count when an Input element with default touch handlers changes documents."); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); // There is one touchable Input element in Audio's shadow DOM when controls are enabled. var input = document.createElement('audio'); input.setAttribute("controls", true); var container = document.getElementById('container'); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); container.appendChild(input); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '0'); input.ontouchend = function() { }; - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '1'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '1'); input.ontouchend = null; - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '1'); - shouldBe('window.internals.touchEndOrCancelEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '1'); + shouldBe('internals.touchEndOrCancelEventHandlerCount(document)', '0'); document.implementation.createDocument("", "", null).adoptNode(input); - shouldBe('window.internals.touchStartOrMoveEventHandlerCount(document)', '0'); + shouldBe('internals.touchStartOrMoveEventHandlerCount(document)', '0'); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/touch-rect-assert-first-layer-special.html b/third_party/WebKit/LayoutTests/fast/events/touch/touch-rect-assert-first-layer-special.html index 91fd0c0e..6bd5bec3 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/touch-rect-assert-first-layer-special.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/touch-rect-assert-first-layer-special.html
@@ -22,7 +22,7 @@ // Verify we actually have a hit rect in the document. if (window.internals) { internals.forceCompositingUpdate(document); - rects = window.internals.touchEventTargetLayerRects(document); + rects = internals.touchEventTargetLayerRects(document); shouldBe("rects.length", "1"); shouldBeEqualToString("rects[0].layerAssociatedNode.nodeName", "#document"); }
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/touch-rect-crash-on-unpromote-layer.html b/third_party/WebKit/LayoutTests/fast/events/touch/touch-rect-crash-on-unpromote-layer.html index a9926ce..9a40a33 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/touch-rect-crash-on-unpromote-layer.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/touch-rect-crash-on-unpromote-layer.html
@@ -30,8 +30,8 @@ var rects; if (window.internals) { // Ensure we've done a layout, updated compositing, and we have a hit rect on this composited layer. - window.internals.forceCompositingUpdate(document); - rects = window.internals.touchEventTargetLayerRects(document); + internals.forceCompositingUpdate(document); + rects = internals.touchEventTargetLayerRects(document); shouldBe("rects.length", "1"); shouldBeEqualToString("rects[0].layerAssociatedNode.id", "layer"); } @@ -42,7 +42,7 @@ // Verify we now have a hit rect on the document after layout and paint. runAfterLayoutAndPaint(function() { if (window.internals) { - rects = window.internals.touchEventTargetLayerRects(document); + rects = internals.touchEventTargetLayerRects(document); shouldBe("rects.length", "1"); shouldBeEqualToString("rects[0].layerAssociatedNode.nodeName", "#document"); }
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/touch-scaled-scrolled.html b/third_party/WebKit/LayoutTests/fast/events/touch/touch-scaled-scrolled.html index e9a0a1e..e34a082a 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/touch-scaled-scrolled.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/touch-scaled-scrolled.html
@@ -9,14 +9,14 @@ function touched(e) { document.getElementById("result").innerText = e.targetTouches[0].clientX + ', ' + e.targetTouches[0].clientY; if (window.testRunner) - window.testRunner.notifyDone() + testRunner.notifyDone() } function runTest() { // Scroll before scaling so we scroll the layout viewport rather than the visual. window.scrollTo(100,100); if (window.internals) - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); if (window.testRunner) { testRunner.dumpAsText();
diff --git a/third_party/WebKit/LayoutTests/fast/events/touch/touch-target-removed-crash.html b/third_party/WebKit/LayoutTests/fast/events/touch/touch-target-removed-crash.html index a62cbf6..10947f5 100644 --- a/third_party/WebKit/LayoutTests/fast/events/touch/touch-target-removed-crash.html +++ b/third_party/WebKit/LayoutTests/fast/events/touch/touch-target-removed-crash.html
@@ -5,18 +5,18 @@ <script> if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function crash() { var div = document.createElement('div'); div.ontouchstart = function() { }; document.body.appendChild(div); - window.internals.touchStartOrMoveEventHandlerCount(document); + internals.touchStartOrMoveEventHandlerCount(document); div.parentNode.removeChild(div); div = 0; if (window.GCController) GCController.collect(); - window.internals.touchStartOrMoveEventHandlerCount(document); + internals.touchStartOrMoveEventHandlerCount(document); } crash();
diff --git a/third_party/WebKit/LayoutTests/fast/events/wheel/wheel-fling-cancel.html b/third_party/WebKit/LayoutTests/fast/events/wheel/wheel-fling-cancel.html index 8407a818..a08af4c 100644 --- a/third_party/WebKit/LayoutTests/fast/events/wheel/wheel-fling-cancel.html +++ b/third_party/WebKit/LayoutTests/fast/events/wheel/wheel-fling-cancel.html
@@ -33,10 +33,10 @@ testRunner.notifyDone(); } - if (window.testRunner && window.eventSender && window.eventSender.gestureFlingStart) { + if (window.testRunner && window.eventSender && eventSender.gestureFlingStart) { eventSender.gestureFlingStart(10, 11, 1000, 1000, "touchpad"); - window.eventSender.mouseMoveTo(100, 100); - window.eventSender.mouseScrollBy(0, 1); + eventSender.mouseMoveTo(100, 100); + eventSender.mouseScrollBy(0, 1); document.addEventListener("mousewheel", recordWheelEvent); testRunner.waitUntilDone(); notifyWhenFlingIsOver();
diff --git a/third_party/WebKit/LayoutTests/fast/events/wheel/wheelevent-handler-count-expected.txt b/third_party/WebKit/LayoutTests/fast/events/wheel/wheelevent-handler-count-expected.txt index 2e1bedfc..16de033d 100644 --- a/third_party/WebKit/LayoutTests/fast/events/wheel/wheelevent-handler-count-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/events/wheel/wheelevent-handler-count-expected.txt
@@ -3,26 +3,26 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -PASS window.internals.wheelEventHandlerCount(document) is 0 -PASS window.internals.wheelEventHandlerCount(document) is 1 -PASS window.internals.wheelEventHandlerCount(document) is 2 -PASS window.internals.wheelEventHandlerCount(document) is 1 -PASS window.internals.wheelEventHandlerCount(document) is 1 -PASS window.internals.wheelEventHandlerCount(document) is 0 -PASS window.internals.wheelEventHandlerCount(document) is 0 -PASS window.internals.wheelEventHandlerCount(document) is 1 -PASS window.internals.wheelEventHandlerCount(document) is 1 -PASS window.internals.wheelEventHandlerCount(document) is 0 -PASS window.internals.wheelEventHandlerCount(document) is 0 -PASS window.internals.wheelEventHandlerCount(document) is 1 -PASS window.internals.wheelEventHandlerCount(document) is 2 -PASS window.internals.wheelEventHandlerCount(document) is 1 -PASS window.internals.wheelEventHandlerCount(document) is 1 -PASS window.internals.wheelEventHandlerCount(document) is 0 -PASS window.internals.wheelEventHandlerCount(document) is 0 -PASS window.internals.wheelEventHandlerCount(document) is 1 -PASS window.internals.wheelEventHandlerCount(document) is 1 -PASS window.internals.wheelEventHandlerCount(document) is 0 +PASS internals.wheelEventHandlerCount(document) is 0 +PASS internals.wheelEventHandlerCount(document) is 1 +PASS internals.wheelEventHandlerCount(document) is 2 +PASS internals.wheelEventHandlerCount(document) is 1 +PASS internals.wheelEventHandlerCount(document) is 1 +PASS internals.wheelEventHandlerCount(document) is 0 +PASS internals.wheelEventHandlerCount(document) is 0 +PASS internals.wheelEventHandlerCount(document) is 1 +PASS internals.wheelEventHandlerCount(document) is 1 +PASS internals.wheelEventHandlerCount(document) is 0 +PASS internals.wheelEventHandlerCount(document) is 0 +PASS internals.wheelEventHandlerCount(document) is 1 +PASS internals.wheelEventHandlerCount(document) is 2 +PASS internals.wheelEventHandlerCount(document) is 1 +PASS internals.wheelEventHandlerCount(document) is 1 +PASS internals.wheelEventHandlerCount(document) is 0 +PASS internals.wheelEventHandlerCount(document) is 0 +PASS internals.wheelEventHandlerCount(document) is 1 +PASS internals.wheelEventHandlerCount(document) is 1 +PASS internals.wheelEventHandlerCount(document) is 0 PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/events/wheel/wheelevent-handler-count.html b/third_party/WebKit/LayoutTests/fast/events/wheel/wheelevent-handler-count.html index e716aed..d8a856e 100644 --- a/third_party/WebKit/LayoutTests/fast/events/wheel/wheelevent-handler-count.html +++ b/third_party/WebKit/LayoutTests/fast/events/wheel/wheelevent-handler-count.html
@@ -6,63 +6,63 @@ // Test addEventListener/removeEventListener on the document. var listener = function() { } - shouldBe('window.internals.wheelEventHandlerCount(document)', '0'); + shouldBe('internals.wheelEventHandlerCount(document)', '0'); document.addEventListener('mousewheel', listener, true); - shouldBe('window.internals.wheelEventHandlerCount(document)', '1'); + shouldBe('internals.wheelEventHandlerCount(document)', '1'); document.addEventListener('mousewheel', listener, false); - shouldBe('window.internals.wheelEventHandlerCount(document)', '2'); + shouldBe('internals.wheelEventHandlerCount(document)', '2'); document.removeEventListener('mousewheel', listener, true); - shouldBe('window.internals.wheelEventHandlerCount(document)', '1'); + shouldBe('internals.wheelEventHandlerCount(document)', '1'); // Try removing the capturing listener again. document.removeEventListener('mousewheel', listener, true); - shouldBe('window.internals.wheelEventHandlerCount(document)', '1'); + shouldBe('internals.wheelEventHandlerCount(document)', '1'); document.removeEventListener('mousewheel', listener, false); - shouldBe('window.internals.wheelEventHandlerCount(document)', '0'); + shouldBe('internals.wheelEventHandlerCount(document)', '0'); })(); (function() { // Test setting onmousewheel on the document. - shouldBe('window.internals.wheelEventHandlerCount(document)', '0'); + shouldBe('internals.wheelEventHandlerCount(document)', '0'); document.onmousewheel = function() { } - shouldBe('window.internals.wheelEventHandlerCount(document)', '1'); + shouldBe('internals.wheelEventHandlerCount(document)', '1'); document.onmousewheel = function() { } - shouldBe('window.internals.wheelEventHandlerCount(document)', '1'); + shouldBe('internals.wheelEventHandlerCount(document)', '1'); document.onmousewheel = null; - shouldBe('window.internals.wheelEventHandlerCount(document)', '0'); + shouldBe('internals.wheelEventHandlerCount(document)', '0'); })(); (function() { // Test addEventListener/removeEventListener on the window. var listener = function() { } - shouldBe('window.internals.wheelEventHandlerCount(document)', '0'); + shouldBe('internals.wheelEventHandlerCount(document)', '0'); window.addEventListener('mousewheel', listener, true); - shouldBe('window.internals.wheelEventHandlerCount(document)', '1'); + shouldBe('internals.wheelEventHandlerCount(document)', '1'); window.addEventListener('mousewheel', listener, false); - shouldBe('window.internals.wheelEventHandlerCount(document)', '2'); + shouldBe('internals.wheelEventHandlerCount(document)', '2'); window.removeEventListener('mousewheel', listener, true); - shouldBe('window.internals.wheelEventHandlerCount(document)', '1'); + shouldBe('internals.wheelEventHandlerCount(document)', '1'); // Try removing the capturing listener again. window.removeEventListener('mousewheel', listener, true); - shouldBe('window.internals.wheelEventHandlerCount(document)', '1'); + shouldBe('internals.wheelEventHandlerCount(document)', '1'); window.removeEventListener('mousewheel', listener, false); - shouldBe('window.internals.wheelEventHandlerCount(document)', '0'); + shouldBe('internals.wheelEventHandlerCount(document)', '0'); })(); (function() { // Test setting onmousewheel on the window. - shouldBe('window.internals.wheelEventHandlerCount(document)', '0'); + shouldBe('internals.wheelEventHandlerCount(document)', '0'); window.onmousewheel = function() { } - shouldBe('window.internals.wheelEventHandlerCount(document)', '1'); + shouldBe('internals.wheelEventHandlerCount(document)', '1'); window.onmousewheel = function() { } - shouldBe('window.internals.wheelEventHandlerCount(document)', '1'); + shouldBe('internals.wheelEventHandlerCount(document)', '1'); window.onmousewheel = null; - shouldBe('window.internals.wheelEventHandlerCount(document)', '0'); + shouldBe('internals.wheelEventHandlerCount(document)', '0'); })(); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/forms/11423.html b/third_party/WebKit/LayoutTests/fast/forms/11423.html index 58f4e70..8a8379b8 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/11423.html +++ b/third_party/WebKit/LayoutTests/fast/forms/11423.html
@@ -11,7 +11,7 @@ } if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var textarea = document.getElementById("textarea"); textarea.focus();
diff --git a/third_party/WebKit/LayoutTests/fast/forms/25153.html b/third_party/WebKit/LayoutTests/fast/forms/25153.html index 1b1693fb..39a4fab 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/25153.html +++ b/third_party/WebKit/LayoutTests/fast/forms/25153.html
@@ -3,7 +3,7 @@ <div style="height: 1500px;"> <script> if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); textfield = document.getElementById("textfield"); // Click near the end of the field so that the caret after all of the text inside it. x = textfield.offsetParent.offsetLeft + textfield.offsetLeft + textfield.offsetWidth - 5;
diff --git a/third_party/WebKit/LayoutTests/fast/forms/4628409.html b/third_party/WebKit/LayoutTests/fast/forms/4628409.html index 30456787..2c6597dc 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/4628409.html +++ b/third_party/WebKit/LayoutTests/fast/forms/4628409.html
@@ -2,7 +2,7 @@ <textarea id="textarea" rows="1"></textarea> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var e = document.getElementById("textarea"); e.setSelectionRange(0, 0); e.rows = 0;
diff --git a/third_party/WebKit/LayoutTests/fast/forms/autofilled.html b/third_party/WebKit/LayoutTests/fast/forms/autofilled.html index ee322fc..b4524a1 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/autofilled.html +++ b/third_party/WebKit/LayoutTests/fast/forms/autofilled.html
@@ -35,13 +35,13 @@ shouldBe('foregroundOf(textarea1)', 'originalForeground'); shouldBe('backgroundOf(textarea1)', 'originalBackground'); - window.internals.setAutofilled(field, true); - window.internals.setAutofilled(search, true); - window.internals.setAutofilled(textarea1, true); - window.internals.setAutofilled(textarea2, true); - window.internals.setAutofilled(select1, true); - window.internals.setAutofilled(select2, true); - window.internals.setAutofilled(select3, true); + internals.setAutofilled(field, true); + internals.setAutofilled(search, true); + internals.setAutofilled(textarea1, true); + internals.setAutofilled(textarea2, true); + internals.setAutofilled(select1, true); + internals.setAutofilled(select2, true); + internals.setAutofilled(select3, true); shouldBeEqualToString('search.value', 'Search value'); @@ -70,9 +70,9 @@ shouldBe('foregroundOf(select2)', 'autofilledSelectForeground'); shouldBe('backgroundOf(select2)', 'autofilledSelectBackground'); - window.internals.setAutofilled(field, false); - window.internals.setAutofilled(textarea1, false); - window.internals.setAutofilled(select1, false); + internals.setAutofilled(field, false); + internals.setAutofilled(textarea1, false); + internals.setAutofilled(select1, false); // Cancel search by pressing cancel button var cancelPos = searchCancelButtonPosition(search);
diff --git a/third_party/WebKit/LayoutTests/fast/forms/button/button-value.html b/third_party/WebKit/LayoutTests/fast/forms/button/button-value.html index 13e7d16..3f365dca 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/button/button-value.html +++ b/third_party/WebKit/LayoutTests/fast/forms/button/button-value.html
@@ -3,7 +3,7 @@ <script> function test() { if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); } var but = document.getElementById('button'); but.value = 'Success';
diff --git a/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/date-picker-ax.html b/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/date-picker-ax.html index a79a892..1650ec1 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/date-picker-ax.html +++ b/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/date-picker-ax.html
@@ -11,7 +11,7 @@ <script> description('Tests if typing an arrow key dispatches |Focus| and |ActiveDescendantChanged| a11y events.'); -window.accessibilityController.setNotificationListener(function(axnode, type) { +accessibilityController.setNotificationListener(function(axnode, type) { if (type == 'Focus') { // Remove ',' to reduce platform differences. debug('Focused: ' + escapeHTML(accessibilityController.focusedElement.name.replace(/,/g, '')));
diff --git a/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/date-picker-open-without-focus.html b/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/date-picker-open-without-focus.html index 20aba9b..aac414e5 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/date-picker-open-without-focus.html +++ b/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/date-picker-open-without-focus.html
@@ -11,7 +11,7 @@ input.remove(); input.offsetTop; eventSender.keyDown("ArrowDown", ["altKey"]); -if (window.internals.pagePopupWindow) { +if (internals.pagePopupWindow) { testFailed('Popup was opened.'); finishJSTest(); } else {
diff --git a/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/month-picker-ax.html b/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/month-picker-ax.html index 9ef67fd..149afb6 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/month-picker-ax.html +++ b/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/month-picker-ax.html
@@ -11,7 +11,7 @@ <script> description('Tests if typing an arrow key dispatches |Focus| and |ActiveDescendantChanged| a11y events.'); -window.accessibilityController.setNotificationListener(function(axnode, type) { +accessibilityController.setNotificationListener(function(axnode, type) { if (type == 'Focus') { debug('Focused'); } else if (type == 'ActiveDescendantChanged') {
diff --git a/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/week-picker-ax.html b/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/week-picker-ax.html index d798fbb0..6912785 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/week-picker-ax.html +++ b/third_party/WebKit/LayoutTests/fast/forms/calendar-picker/week-picker-ax.html
@@ -11,7 +11,7 @@ <script> description('Tests if typing an arrow key dispatches |Focus| and |ActiveDescendantChanged| a11y events.'); -window.accessibilityController.setNotificationListener(function(axnode, type) { +accessibilityController.setNotificationListener(function(axnode, type) { if (type == 'Focus') { debug('Focused'); } else if (type == 'ActiveDescendantChanged') {
diff --git a/third_party/WebKit/LayoutTests/fast/forms/date-multiple-fields/resources/preserve-value-after-history-back-frame.html b/third_party/WebKit/LayoutTests/fast/forms/date-multiple-fields/resources/preserve-value-after-history-back-frame.html index 67e8cf42..c3553432 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/date-multiple-fields/resources/preserve-value-after-history-back-frame.html +++ b/third_party/WebKit/LayoutTests/fast/forms/date-multiple-fields/resources/preserve-value-after-history-back-frame.html
@@ -4,7 +4,7 @@ <input type="date" id="test2" min="1999-01-01" max="2000-12-31"> <script> function fieldsText(input) { - return window.internals.shadowRoot(input).textContent; + return internals.shadowRoot(input).textContent; } function back(newState) {
diff --git a/third_party/WebKit/LayoutTests/fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-mouse-events.html b/third_party/WebKit/LayoutTests/fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-mouse-events.html index 21a820c..3e90683 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-mouse-events.html +++ b/third_party/WebKit/LayoutTests/fast/forms/datetimelocal-multiple-fields/datetimelocal-multiple-fields-mouse-events.html
@@ -76,7 +76,7 @@ // With ICU 52 on Linux/Android, a comma is used to delimete date and time and // the hour and time field positions are shifted. - var commaOffset = window.internals.shadowRoot(input).textContent.indexOf(', ') == -1 ? 0 : 16; + var commaOffset = internals.shadowRoot(input).textContent.indexOf(', ') == -1 ? 0 : 16; debug(''); debug('==> Focus on the hour field.');
diff --git a/third_party/WebKit/LayoutTests/fast/forms/datetimelocal-multiple-fields/resources/preserve-value-after-history-back-frame.html b/third_party/WebKit/LayoutTests/fast/forms/datetimelocal-multiple-fields/resources/preserve-value-after-history-back-frame.html index 96a48378..13662298 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/datetimelocal-multiple-fields/resources/preserve-value-after-history-back-frame.html +++ b/third_party/WebKit/LayoutTests/fast/forms/datetimelocal-multiple-fields/resources/preserve-value-after-history-back-frame.html
@@ -4,7 +4,7 @@ <input type="datetime-local" id="test2" min="1999-01-01T00:00" max="2000-12-31T23:59"> <script> function fieldsText(input) { - return window.internals.shadowRoot(input).textContent; + return internals.shadowRoot(input).textContent; } // On Linux/Android with a newer ICU, date and time are separated by ','.
diff --git a/third_party/WebKit/LayoutTests/fast/forms/month-multiple-fields/resources/preserve-value-after-history-back-frame.html b/third_party/WebKit/LayoutTests/fast/forms/month-multiple-fields/resources/preserve-value-after-history-back-frame.html index 177be07b..7e4cc69 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/month-multiple-fields/resources/preserve-value-after-history-back-frame.html +++ b/third_party/WebKit/LayoutTests/fast/forms/month-multiple-fields/resources/preserve-value-after-history-back-frame.html
@@ -4,7 +4,7 @@ <input type="month" id="test2" min="1998-01" max="1999-12"> <script> function fieldsText(input) { - return window.internals.shadowRoot(input).textContent; + return internals.shadowRoot(input).textContent; } function back(newState) {
diff --git a/third_party/WebKit/LayoutTests/fast/forms/paste-multiline-text-input.html b/third_party/WebKit/LayoutTests/fast/forms/paste-multiline-text-input.html index ab94d4a3..27e9dcf1 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/paste-multiline-text-input.html +++ b/third_party/WebKit/LayoutTests/fast/forms/paste-multiline-text-input.html
@@ -2,7 +2,7 @@ <head> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function getInput() {
diff --git a/third_party/WebKit/LayoutTests/fast/forms/plaintext-mode-1.html b/third_party/WebKit/LayoutTests/fast/forms/plaintext-mode-1.html index 82ecc4f..457defa 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/plaintext-mode-1.html +++ b/third_party/WebKit/LayoutTests/fast/forms/plaintext-mode-1.html
@@ -26,7 +26,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var e = document.getElementById("textfield"); e.focus();
diff --git a/third_party/WebKit/LayoutTests/fast/forms/plaintext-mode-2.html b/third_party/WebKit/LayoutTests/fast/forms/plaintext-mode-2.html index 232128c1..5a64241 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/plaintext-mode-2.html +++ b/third_party/WebKit/LayoutTests/fast/forms/plaintext-mode-2.html
@@ -22,7 +22,7 @@ <ol id="console"></ol> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); var richcontent = document.getElementById("richcontent"); var s = window.getSelection(); @@ -37,6 +37,6 @@ function paste() { assert("document.execCommand", "Paste", true); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/fast/forms/radio/radio-input-keyboard-navigation.html b/third_party/WebKit/LayoutTests/fast/forms/radio/radio-input-keyboard-navigation.html index 40b9786..b05bfe1 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/radio/radio-input-keyboard-navigation.html +++ b/third_party/WebKit/LayoutTests/fast/forms/radio/radio-input-keyboard-navigation.html
@@ -29,7 +29,7 @@ document.querySelector("input").focus(); assert_exists(window, "eventSender"); for (var i = 0; i < 5; i++) { - window.eventSender.keyDown("ArrowDown"); + eventSender.keyDown("ArrowDown"); } assert_greater_than(document.getElementById("test1").scrollTop, 0); }, "Parent container should be scrolled while navigating through radio inputs");
diff --git a/third_party/WebKit/LayoutTests/fast/forms/range/range-drag-when-toggled-disabled.html b/third_party/WebKit/LayoutTests/fast/forms/range/range-drag-when-toggled-disabled.html index 745273d..cbfc344 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/range/range-drag-when-toggled-disabled.html +++ b/third_party/WebKit/LayoutTests/fast/forms/range/range-drag-when-toggled-disabled.html
@@ -73,7 +73,7 @@ // We want all mouse moves sent immediately. -window.eventSender.dragMode = false; +eventSender.dragMode = false; debug('Tests for range dragging while it toggles to be readonly.'); testInput('range1', 'readOnly');
diff --git a/third_party/WebKit/LayoutTests/fast/forms/reset-autofilled.html b/third_party/WebKit/LayoutTests/fast/forms/reset-autofilled.html index 7511385..64079a8 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/reset-autofilled.html +++ b/third_party/WebKit/LayoutTests/fast/forms/reset-autofilled.html
@@ -14,9 +14,9 @@ var select = document.getElementById('select'); var textarea = document.getElementById('textarea'); if (window.internals) { - window.internals.setAutofilled(field, true); - window.internals.setAutofilled(select, true); - window.internals.setAutofilled(textarea, true); + internals.setAutofilled(field, true); + internals.setAutofilled(select, true); + internals.setAutofilled(textarea, true); } else { testFailed('This test requires a LayoutTestController.'); return;
diff --git a/third_party/WebKit/LayoutTests/fast/forms/resources/form-and-frame-interaction-retains-values-main.html b/third_party/WebKit/LayoutTests/fast/forms/resources/form-and-frame-interaction-retains-values-main.html index b0e598d7..c5a4062c 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/resources/form-and-frame-interaction-retains-values-main.html +++ b/third_party/WebKit/LayoutTests/fast/forms/resources/form-and-frame-interaction-retains-values-main.html
@@ -3,9 +3,9 @@ <head> <script> if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.dumpChildFramesAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.dumpChildFramesAsText(); + testRunner.waitUntilDone(); } function performTest() { @@ -14,7 +14,7 @@ if(document.getElementById("text").value == "Correct Value") document.getElementById("result").innerHTML = "PASS"; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } else { document.getElementById("text").value = "Old Value"; window.frames[0].location = "form-and-frame-interaction-retains-values-submit.html";
diff --git a/third_party/WebKit/LayoutTests/fast/forms/resources/picker-common.js b/third_party/WebKit/LayoutTests/fast/forms/resources/picker-common.js index 10f89da..a9d89ae 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/resources/picker-common.js +++ b/third_party/WebKit/LayoutTests/fast/forms/resources/picker-common.js
@@ -45,7 +45,7 @@ eventSender.keyDown("ArrowDown", ["altKey"]); } } - popupWindow = window.internals.pagePopupWindow; + popupWindow = internals.pagePopupWindow; if (typeof callback === "function" && popupWindow) setPopupOpenCallback(callback); else if (typeof errorCallback === "function" && !popupWindow) @@ -56,7 +56,7 @@ eventSender.mouseMoveTo(x, y); eventSender.mouseDown(); eventSender.mouseUp(); - popupWindow = window.internals.pagePopupWindow; + popupWindow = internals.pagePopupWindow; if (typeof callback === "function" && popupWindow) setPopupOpenCallback(callback); else if (typeof errorCallback === "function" && !popupWindow)
diff --git a/third_party/WebKit/LayoutTests/fast/forms/resources/state-restore-empty-state-1.html b/third_party/WebKit/LayoutTests/fast/forms/resources/state-restore-empty-state-1.html index babc559f..f9a2a46 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/resources/state-restore-empty-state-1.html +++ b/third_party/WebKit/LayoutTests/fast/forms/resources/state-restore-empty-state-1.html
@@ -5,7 +5,7 @@ var states = internals.formControlStateOfHistoryItem(); shouldBe('states.length', '0'); } else { - debug('Need window.internals.formControlStateOfPreviousHistoryItem().'); + debug('Need internals.formControlStateOfPreviousHistoryItem().'); } jsTestIsAsync = true; finishJSTest();
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-ax.html b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-ax.html index cf4cbbf..0cf9a822 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-ax.html +++ b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-ax.html
@@ -15,7 +15,7 @@ <script> description('Tests if typing an arrow key dispatches a |MenuListItemSelected| a11y event.'); -window.accessibilityController.setNotificationListener(function(axnode, type) { +accessibilityController.setNotificationListener(function(axnode, type) { if (type == 'MenuListItemSelected') { testPassed('Received MenuListItemSelected'); finishJSTest();
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-crash-on-cancel.html b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-crash-on-cancel.html index c947db4..a010394 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-crash-on-cancel.html +++ b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-crash-on-cancel.html
@@ -23,7 +23,7 @@ openPicker(menu, test1, openPickerErrorCallback); description('Test for crbug.com/477932 . Pass if we don\'t crash.'); function test1() { - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; eventSender.keyDown('ArrowDown'); eventSender.keyDown('Escape');
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-event-order.html b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-event-order.html index b221357..1873a05 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-event-order.html +++ b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-event-order.html
@@ -30,13 +30,13 @@ openPicker(menu, test1, openPickerErrorCallback); function test1() { - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; menu.addEventListener('mouseup', recordEvent); menu.addEventListener('click', recordEvent); menu.addEventListener('change', recordEvent); eventSender.keyDown('ArrowDown'); eventSender.keyDown('Enter'); - shouldBeNull('window.internals.pagePopupWindow'); + shouldBeNull('internals.pagePopupWindow'); shouldBeEqualToString('menu.value', 'garply'); shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); shouldBeEqualToString('events[0]', 'change');
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-key-operations.html b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-key-operations.html index 26b08e0..1cd97f0 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-key-operations.html +++ b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-key-operations.html
@@ -31,7 +31,7 @@ function test1() { debug('==> Arrow keys + Enter'); - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; shouldBeEqualToString('picker._selectElement.value', '1'); shouldBeEqualToString('menu.value', 'bar'); shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); @@ -62,7 +62,7 @@ shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); eventSender.keyDown('Enter'); - shouldBeNull('window.internals.pagePopupWindow'); + shouldBeNull('internals.pagePopupWindow'); shouldBeEqualToString('menu.value', 'foo'); shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); @@ -73,7 +73,7 @@ function test2() { debug('==> Arrow keys + ESC'); - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; shouldBeEqualToString('picker._selectElement.value', '0'); shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); @@ -84,7 +84,7 @@ // Escape should close the popup and select that keyboard selected item. eventSender.keyDown('Escape'); - shouldBeNull('window.internals.pagePopupWindow'); + shouldBeNull('internals.pagePopupWindow'); shouldBeEqualToString('menu.value', 'bar'); shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); @@ -96,7 +96,7 @@ function testProvisionalSelectionAndBlur() { debug('==> Arrow keys + blur'); - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; shouldBeEqualToString('picker._selectElement.value', '0'); shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); @@ -107,7 +107,7 @@ // Blur should close the popup and select the provisional item. menu.blur(); - shouldBeNull('window.internals.pagePopupWindow'); + shouldBeNull('internals.pagePopupWindow'); shouldBeEqualToString('menu.value', 'bar'); shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); @@ -116,7 +116,7 @@ function test3() { debug('==> Typeahead + ESC'); - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; shouldBeEqualToString('picker._selectElement.value', '1'); shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); @@ -127,7 +127,7 @@ // Escape should close the popup and select that keyboard selected item. eventSender.keyDown('Escape'); - shouldBeNull('window.internals.pagePopupWindow'); + shouldBeNull('internals.pagePopupWindow'); shouldBeEqualToString('menu.value', 'garply'); shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); @@ -138,7 +138,7 @@ function test4() { debug('==> Hover + ESC'); - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; shouldBeEqualToString('picker._selectElement.value', '4'); shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); @@ -149,7 +149,7 @@ // Escape should close the popup. Simply hovering over an item should not select it. eventSender.keyDown('Escape'); - shouldBeNull('window.internals.pagePopupWindow'); + shouldBeNull('internals.pagePopupWindow'); shouldBeEqualToString('menu.value', 'garply'); shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); @@ -160,7 +160,7 @@ function test5() { debug('==> Hover + Invalid arrow + ESC'); - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; shouldBeEqualToString('picker._selectElement.value', '4'); shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); @@ -177,7 +177,7 @@ shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); eventSender.keyDown('Escape'); - shouldBeNull('window.internals.pagePopupWindow'); + shouldBeNull('internals.pagePopupWindow'); shouldBeEqualToString('menu.value', 'garply'); shouldBeEqualToString('internals.selectMenuListText(menu)', 'garply'); menu.selectedIndex = 0; @@ -189,7 +189,7 @@ function test6() { debug('==> Arrow key + Click'); - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; shouldBeEqualToString('picker._selectElement.value', '0'); shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); @@ -199,7 +199,7 @@ shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); clickElement(picker._selectElement.children[0]); - shouldBeNull('window.internals.pagePopupWindow'); + shouldBeNull('internals.pagePopupWindow'); shouldBeEqualToString('menu.value', 'foo'); shouldBeEqualToString('internals.selectMenuListText(menu)', 'foo'); @@ -211,10 +211,10 @@ function testEnterWithoutSelection() { debug('==> Enter with no selected OPTION'); - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; shouldBeEqualToString('picker._selectElement.value', ''); eventSender.keyDown('Enter'); - shouldBeNull('window.internals.pagePopupWindow'); + shouldBeNull('internals.pagePopupWindow'); shouldBeEqualToString('menu2.value', ''); finishJSTest();
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-mouse-operations.html b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-mouse-operations.html index c80fa52..3405105 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-mouse-operations.html +++ b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-mouse-operations.html
@@ -49,7 +49,7 @@ } openPicker(menu, test1, openPickerErrorCallback); function test1() { - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; shouldBeEqualToString('picker._selectElement.value', '1'); shouldBeEqualToString('menuElement.value', 'bar'); @@ -71,7 +71,7 @@ hoverOverElement(picker._selectElement.children[0]); hoverOverElement(menuElement); eventSender.mouseUp(); - shouldNotBe('window.internals.pagePopupWindow', 'null'); + shouldNotBe('internals.pagePopupWindow', 'null'); shouldBeEqualToString('picker._selectElement.value', '0'); shouldBeEqualToString('menuElement.value', 'bar'); @@ -79,7 +79,7 @@ shouldBe('mouseupEventCounter', '0'); clickElement(picker._selectElement.children[2]); - shouldBeNull('window.internals.pagePopupWindow'); + shouldBeNull('internals.pagePopupWindow'); shouldBeEqualToString('menuElement.value', 'baz'); shouldBe('clickEventCounter', '1'); @@ -91,7 +91,7 @@ } function test2() { - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; shouldBeEqualToString('picker._selectElement.value', '2'); shouldBeEqualToString('internals.selectMenuListText(menu)', 'baz'); @@ -104,7 +104,7 @@ eventSender.mouseMoveTo(300, 1); eventSender.mouseDown(); eventSender.mouseUp(); - shouldBeNull('window.internals.pagePopupWindow'); + shouldBeNull('internals.pagePopupWindow'); shouldBeEqualToString('menu.value', 'bar'); shouldBeEqualToString('internals.selectMenuListText(menu)', 'bar'); @@ -114,7 +114,7 @@ } function test3() { - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; // We had a bug that almost-invisible OPTION was selected and the popup was // scrolled. crbug.com/558287. eventSender.mouseMoveTo(10, picker._selectElement.offsetHeight - 2);
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-multiline-title.html b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-multiline-title.html index c677962..5e97a6a 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-multiline-title.html +++ b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-multiline-title.html
@@ -22,7 +22,7 @@ openPicker(menu, test1, openPickerErrorCallback); function test1() { - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; shouldBeEqualToString('picker._selectElement.options[0].title', 'bar\nbaz'); finishJSTest(); }
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-nested-style.html b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-nested-style.html index e5e13d8..acacd13d 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-nested-style.html +++ b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-nested-style.html
@@ -26,7 +26,7 @@ } openPicker(menu, test1, openPickerErrorCallback); function test1() { - params = window.internals.pagePopupWindow.global.params; + params = internals.pagePopupWindow.global.params; shouldBeEqualToString('params.children[1].type', 'optgroup'); shouldBeUndefined('params.children[1].children[0].type'); shouldBeEqualToString('params.children[1].children[0].style.color', '#000000');
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-non-latin-update-from-element.html b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-non-latin-update-from-element.html index 2148dba..12980de 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-non-latin-update-from-element.html +++ b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-non-latin-update-from-element.html
@@ -21,7 +21,7 @@ openPicker(menu, test1, openPickerErrorCallback); function test1() { - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; menuElement.style.color = 'rgb(123, 0, 0)';
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-open-partially-visible-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-open-partially-visible-expected.txt index be901bc..0b6725d 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-open-partially-visible-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-open-partially-visible-expected.txt
@@ -1,4 +1,4 @@ -PASS window.internals.pagePopupWindow.isWindowHidden() is false +PASS internals.pagePopupWindow.isWindowHidden() is false PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-open-partially-visible.html b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-open-partially-visible.html index 6521a1c..b5795a1 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-open-partially-visible.html +++ b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-open-partially-visible.html
@@ -20,11 +20,11 @@ openPicker(menu, testPartiallyVisible, openPickerErrorCallback); function testPartiallyVisible() { - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; function onUpdate() { setTimeout(function() { - shouldBeFalse('window.internals.pagePopupWindow.isWindowHidden()'); + shouldBeFalse('internals.pagePopupWindow.isWindowHidden()'); picker.removeListener('didUpdate', onUpdate); finishJSTest(); });
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-touch-operations-expected.txt b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-touch-operations-expected.txt index b51dc6a8..4e8c041 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-touch-operations-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-touch-operations-expected.txt
@@ -2,14 +2,14 @@ PASS menuElement.value is "bar" PASS picker._selectElement.value is "0" PASS picker._selectElement.value is "2" -PASS window.internals.pagePopupWindow is null +PASS internals.pagePopupWindow is null PASS menuElement.value is "baz" ==> Test disabled option PASS picker._selectElement.value is "2" PASS menuElement.value is "baz" PASS picker._selectElement.value is "2" PASS picker._selectElement.value is "2" -PASS window.internals.pagePopupWindow is not null +PASS internals.pagePopupWindow is not null PASS menuElement.value is "baz" ==> Test scrollable popup PASS picker._selectElement.value is "1" @@ -17,16 +17,16 @@ PASS picker._selectElement.value is "2" PASS picker._selectElement.value is "3" PASS picker._selectElement.value is "0" -PASS window.internals.pagePopupWindow is not null +PASS internals.pagePopupWindow is not null PASS menuElement2.value is "2" ==> Test popup closes on outside GestureTapDawn -PASS window.internals.pagePopupWindow is null +PASS internals.pagePopupWindow is null ==> Test popup doesn't reopen immediately after closing -PASS window.internals.pagePopupWindow is null -PASS window.internals.pagePopupWindow is null -PASS window.internals.pagePopupWindow is not null -PASS window.internals.pagePopupWindow is null -PASS window.internals.pagePopupWindow is null +PASS internals.pagePopupWindow is null +PASS internals.pagePopupWindow is null +PASS internals.pagePopupWindow is not null +PASS internals.pagePopupWindow is null +PASS internals.pagePopupWindow is null PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-touch-operations.html b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-touch-operations.html index 09d3f6d..59495d62 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-touch-operations.html +++ b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-touch-operations.html
@@ -48,7 +48,7 @@ var picker = null; eventSender.clearTouchPoints(); openPicker(menuElement, function () { - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; shouldBeEqualToString('picker._selectElement.value', '1'); shouldBeEqualToString('menuElement.value', 'bar'); @@ -65,7 +65,7 @@ eventSender.releaseTouchPoint(0); eventSender.touchEnd(); - shouldBeNull('window.internals.pagePopupWindow'); + shouldBeNull('internals.pagePopupWindow'); shouldBeEqualToString('menuElement.value', 'baz'); testDisabled(); @@ -78,7 +78,7 @@ debug("==> Test disabled option"); menuElement.options[0].disabled = true; openPicker(menuElement, () => { - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; shouldBeEqualToString('picker._selectElement.value', '2'); shouldBeEqualToString('menuElement.value', 'baz'); @@ -96,7 +96,7 @@ eventSender.releaseTouchPoint(0); eventSender.touchEnd(); - shouldNotBe('window.internals.pagePopupWindow', 'null'); + shouldNotBe('internals.pagePopupWindow', 'null'); shouldBeEqualToString('menuElement.value', 'baz'); test2(); @@ -109,7 +109,7 @@ function test2() { debug("==> Test scrollable popup"); openPicker(menuElement2, function () { - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; shouldBeEqualToString('picker._selectElement.value', '1'); shouldBeEqualToString('menuElement2.value', '2'); @@ -143,7 +143,7 @@ eventSender.touchEnd(); eventSender.gestureScrollEnd(0, 0); - shouldNotBe('window.internals.pagePopupWindow', 'null'); + shouldNotBe('internals.pagePopupWindow', 'null'); shouldBeEqualToString('menuElement2.value', '2'); test3(); @@ -154,7 +154,7 @@ eventSender.clearTouchPoints(); openPicker(menuElement, function () { eventSender.gestureTapDown(300, 300); - shouldBeNull('window.internals.pagePopupWindow'); + shouldBeNull('internals.pagePopupWindow'); test4(); }, function () { testFailed('picker didn\'t open') @@ -165,22 +165,22 @@ function test4() { debug("==> Test popup doesn't reopen immediately after closing"); eventSender.clearTouchPoints(); - shouldBeNull('window.internals.pagePopupWindow'); + shouldBeNull('internals.pagePopupWindow'); // Open the popup with a GestureTap. var position = elementCenterPosition(menuElement); eventSender.gestureTapDown(position[0], position[1]); - shouldBeNull('window.internals.pagePopupWindow'); + shouldBeNull('internals.pagePopupWindow'); eventSender.gestureTap(position[0], position[1]); - shouldNotBe('window.internals.pagePopupWindow', 'null'); + shouldNotBe('internals.pagePopupWindow', 'null'); // GestureTapDown on an open popup closes it. eventSender.gestureTapDown(position[0], position[1]); - shouldBeNull('window.internals.pagePopupWindow'); + shouldBeNull('internals.pagePopupWindow'); // The next GestureTap on the recently closed popup shouldn't open it. eventSender.gestureTap(position[0], position[1]); - shouldBeNull('window.internals.pagePopupWindow'); + shouldBeNull('internals.pagePopupWindow'); finishJSTest(); }
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-update-from-element.html b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-update-from-element.html index a993ac57..41d104d1 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-update-from-element.html +++ b/third_party/WebKit/LayoutTests/fast/forms/select-popup/popup-menu-update-from-element.html
@@ -25,7 +25,7 @@ openPicker(menu, test1, openPickerErrorCallback); function test1() { - picker = window.internals.pagePopupWindow.global.picker; + picker = internals.pagePopupWindow.global.picker; function onUpdate() { setTimeout(function() {
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select/listbox-typeahead-cyrillic.html b/third_party/WebKit/LayoutTests/fast/forms/select/listbox-typeahead-cyrillic.html index 03907bc..9a515734 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select/listbox-typeahead-cyrillic.html +++ b/third_party/WebKit/LayoutTests/fast/forms/select/listbox-typeahead-cyrillic.html
@@ -50,7 +50,7 @@ } if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); // Set the input focus to the <select> element. var node = document.getElementById("test");
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select/listbox-typeahead-greek.html b/third_party/WebKit/LayoutTests/fast/forms/select/listbox-typeahead-greek.html index 4e0ae27..912aedea 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select/listbox-typeahead-greek.html +++ b/third_party/WebKit/LayoutTests/fast/forms/select/listbox-typeahead-greek.html
@@ -42,7 +42,7 @@ } if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); // Set the input focus to the <select> element. var node = document.getElementById("test");
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select/select-autofilled.html b/third_party/WebKit/LayoutTests/fast/forms/select/select-autofilled.html index 80f2ce9..22ce265f 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select/select-autofilled.html +++ b/third_party/WebKit/LayoutTests/fast/forms/select/select-autofilled.html
@@ -21,6 +21,6 @@ <script> var select = document.getElementById('select'); if (window.internals) - window.internals.setAutofilled(select, true); + internals.setAutofilled(select, true); </script> </body>
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select/select-dirty-parent-pref-widths.html b/third_party/WebKit/LayoutTests/fast/forms/select/select-dirty-parent-pref-widths.html index 18a79cb5..05e95fe 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select/select-dirty-parent-pref-widths.html +++ b/third_party/WebKit/LayoutTests/fast/forms/select/select-dirty-parent-pref-widths.html
@@ -6,12 +6,12 @@ document.getElementById('sel1').style.display = ''; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } function main() { if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); setTimeout(go, 0); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select/select-empty-optgroup-crash.html b/third_party/WebKit/LayoutTests/fast/forms/select/select-empty-optgroup-crash.html index c21a814..81c35cdf 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select/select-empty-optgroup-crash.html +++ b/third_party/WebKit/LayoutTests/fast/forms/select/select-empty-optgroup-crash.html
@@ -3,7 +3,7 @@ function submitForm() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.getElementById("submitform").submit(); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/forms/select/select-listbox-focus-displaynone.html b/third_party/WebKit/LayoutTests/fast/forms/select/select-listbox-focus-displaynone.html index 61341d5e..d161a8f9 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/select/select-listbox-focus-displaynone.html +++ b/third_party/WebKit/LayoutTests/fast/forms/select/select-listbox-focus-displaynone.html
@@ -10,7 +10,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var selectable = document.getElementById('selectable'); var multiselect = document.getElementById('multiselect');
diff --git a/third_party/WebKit/LayoutTests/fast/forms/tab-in-input.html b/third_party/WebKit/LayoutTests/fast/forms/tab-in-input.html index 01a635a5..5ac439f 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/tab-in-input.html +++ b/third_party/WebKit/LayoutTests/fast/forms/tab-in-input.html
@@ -1,6 +1,6 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> You should see "\tHello World" in the text field below<br /> <input id="inputElem" type="text" value=" Hello World">
diff --git a/third_party/WebKit/LayoutTests/fast/forms/text/input-readonly-focus.html b/third_party/WebKit/LayoutTests/fast/forms/text/input-readonly-focus.html index b77e6c4..4f0966e 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/text/input-readonly-focus.html +++ b/third_party/WebKit/LayoutTests/fast/forms/text/input-readonly-focus.html
@@ -2,7 +2,7 @@ <head> <script> function runTest() { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var input = document.getElementById('i'); eventSender.mouseMoveTo(input.offsetLeft + input.offsetWidth / 2, input.offsetTop + input.offsetHeight / 2);
diff --git a/third_party/WebKit/LayoutTests/fast/forms/text/input-set-composition-scroll.html b/third_party/WebKit/LayoutTests/fast/forms/text/input-set-composition-scroll.html index b369cf0..c2594b1b 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/text/input-set-composition-scroll.html +++ b/third_party/WebKit/LayoutTests/fast/forms/text/input-set-composition-scroll.html
@@ -9,7 +9,7 @@ } if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var input = document.querySelector('input'); input.focus();
diff --git a/third_party/WebKit/LayoutTests/fast/forms/text/input-tab-shows-caret.html b/third_party/WebKit/LayoutTests/fast/forms/text/input-tab-shows-caret.html index 7f8266d..b2110d25 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/text/input-tab-shows-caret.html +++ b/third_party/WebKit/LayoutTests/fast/forms/text/input-tab-shows-caret.html
@@ -4,7 +4,7 @@ <input> <script type="text/javascript"> if (window.eventSender) - window.eventSender.keyDown("\t"); + eventSender.keyDown("\t"); </script> </body> </html> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/fast/forms/text/text-window-lost-focus-change-event.html b/third_party/WebKit/LayoutTests/fast/forms/text/text-window-lost-focus-change-event.html index 28c7829..4312adf0 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/text/text-window-lost-focus-change-event.html +++ b/third_party/WebKit/LayoutTests/fast/forms/text/text-window-lost-focus-change-event.html
@@ -25,8 +25,8 @@ document.execCommand('InsertText', false, 'hello world'); shouldEvaluateTo('blurEventCounter', 0); shouldEvaluateTo('changeEventCounter', 0); - window.testRunner.setMainFrameIsFirstResponder(true); - window.testRunner.setWindowIsKey(false); + testRunner.setMainFrameIsFirstResponder(true); + testRunner.setWindowIsKey(false); } if (window.testRunner) window.jsTestIsAsync = true;
diff --git a/third_party/WebKit/LayoutTests/fast/forms/text/textfield-focus-out.html b/third_party/WebKit/LayoutTests/fast/forms/text/textfield-focus-out.html index 2dbe4e0..821f167 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/text/textfield-focus-out.html +++ b/third_party/WebKit/LayoutTests/fast/forms/text/textfield-focus-out.html
@@ -10,7 +10,7 @@ function runTest() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var field1 = document.getElementById("field1"); var field2 = document.getElementById("field2");
diff --git a/third_party/WebKit/LayoutTests/fast/forms/textarea/textarea-hard-linewrap-empty.html b/third_party/WebKit/LayoutTests/fast/forms/textarea/textarea-hard-linewrap-empty.html index 1a6bdf7..cfaf51de 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/textarea/textarea-hard-linewrap-empty.html +++ b/third_party/WebKit/LayoutTests/fast/forms/textarea/textarea-hard-linewrap-empty.html
@@ -11,8 +11,8 @@ </form> <script> if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } if (document.URL.indexOf('?') == -1) { @@ -25,7 +25,7 @@ document.write("<div>Failure.</div><div>Expected: textarea=</div><div>Actual: " + formData + "</div>"); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script> </body>
diff --git a/third_party/WebKit/LayoutTests/fast/forms/textarea/textarea-linewrap-dynamic.html b/third_party/WebKit/LayoutTests/fast/forms/textarea/textarea-linewrap-dynamic.html index 982b31d..57abafca 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/textarea/textarea-linewrap-dynamic.html +++ b/third_party/WebKit/LayoutTests/fast/forms/textarea/textarea-linewrap-dynamic.html
@@ -8,8 +8,8 @@ <script> if (document.URL.indexOf('?') == -1) { if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } document.getElementById("textarea").removeAttribute("wrap"); document.f.submit(); @@ -20,7 +20,7 @@ else document.write("Failure. The form data that should have been submitted: textarea=123456789<br>This is what was actually submitted: " + formData); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script> </body>
diff --git a/third_party/WebKit/LayoutTests/fast/forms/textarea/textarea-setvalue-submit.html b/third_party/WebKit/LayoutTests/fast/forms/textarea/textarea-setvalue-submit.html index 23f8b86..ed2a91f 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/textarea/textarea-setvalue-submit.html +++ b/third_party/WebKit/LayoutTests/fast/forms/textarea/textarea-setvalue-submit.html
@@ -13,8 +13,8 @@ if (document.URL.indexOf('?') == -1) { if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } var textarea1 = document.getElementById("textarea1"); @@ -33,7 +33,7 @@ document.write("Failure. The value set in the textarea via javascript wasn't sent when the form was submitted. Expected: " + expected + ", Found: " + formData); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/forms/textfield-to-password-on-focus.html b/third_party/WebKit/LayoutTests/fast/forms/textfield-to-password-on-focus.html index dae7f4b..af15741d 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/textfield-to-password-on-focus.html +++ b/third_party/WebKit/LayoutTests/fast/forms/textfield-to-password-on-focus.html
@@ -4,8 +4,8 @@ <script src="../../resources/js-test.js"></script> <script> if (window.testRunner) { - window.testRunner.waitUntilDone(); - window.testRunner.dumpAsText(); + testRunner.waitUntilDone(); + testRunner.dumpAsText(); } function changeToPasswordField(textField) @@ -29,7 +29,7 @@ shouldBe('field.value', "'pass'"); isSuccessfullyParsed(); - window.testRunner.notifyDone(); + testRunner.notifyDone(); }, 0); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/forms/time-multiple-fields/resources/preserve-value-after-history-back-frame.html b/third_party/WebKit/LayoutTests/fast/forms/time-multiple-fields/resources/preserve-value-after-history-back-frame.html index ba1a3d7..87e20fa 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/time-multiple-fields/resources/preserve-value-after-history-back-frame.html +++ b/third_party/WebKit/LayoutTests/fast/forms/time-multiple-fields/resources/preserve-value-after-history-back-frame.html
@@ -4,7 +4,7 @@ <input type=time id=test2 step=1> <script> function fieldsText(input) { - return window.internals.shadowRoot(input).textContent; + return internals.shadowRoot(input).textContent; } function back(newState) {
diff --git a/third_party/WebKit/LayoutTests/fast/forms/ua-shadow-select-all-crash.html b/third_party/WebKit/LayoutTests/fast/forms/ua-shadow-select-all-crash.html index 17dd4b3..826bd70 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/ua-shadow-select-all-crash.html +++ b/third_party/WebKit/LayoutTests/fast/forms/ua-shadow-select-all-crash.html
@@ -5,7 +5,7 @@ <input type="text" id="input1"> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var button1 = document.getElementById('button1'); var input1 = document.getElementById('input1'); input1.setSelectionRange(0, 0);
diff --git a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/resources/preserve-value-after-history-back-frame.html b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/resources/preserve-value-after-history-back-frame.html index 45b9c62..9d7305b 100644 --- a/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/resources/preserve-value-after-history-back-frame.html +++ b/third_party/WebKit/LayoutTests/fast/forms/week-multiple-fields/resources/preserve-value-after-history-back-frame.html
@@ -4,7 +4,7 @@ <input type="week" id="test2" min="1998-W01" max="1999-W12"> <script> function fieldsText(input) { - return window.internals.shadowRoot(input).textContent; + return internals.shadowRoot(input).textContent; } function back(newState) {
diff --git a/third_party/WebKit/LayoutTests/fast/frames/frameElement-frame.html b/third_party/WebKit/LayoutTests/fast/frames/frameElement-frame.html index f0e2d76..d6d4e93 100644 --- a/third_party/WebKit/LayoutTests/fast/frames/frameElement-frame.html +++ b/third_party/WebKit/LayoutTests/fast/frames/frameElement-frame.html
@@ -1,6 +1,6 @@ <script> if (window.internals) - window.internals.runtimeFlags.implicitRootScrollerEnabled = false; + internals.runtimeFlags.implicitRootScrollerEnabled = false; </script> <frameset> <frame id="Mr. Frame" src="resources/frameElement-contents.html">
diff --git a/third_party/WebKit/LayoutTests/fast/frames/iframe-double-scale-contents.html b/third_party/WebKit/LayoutTests/fast/frames/iframe-double-scale-contents.html index 04e0554..4feeea3c 100644 --- a/third_party/WebKit/LayoutTests/fast/frames/iframe-double-scale-contents.html +++ b/third_party/WebKit/LayoutTests/fast/frames/iframe-double-scale-contents.html
@@ -22,8 +22,8 @@ function scalePage(scaleFactor) { if (window.internals) { - window.internals.setPageScaleFactorLimits(0.5, 4); - window.internals.setPageScaleFactor(scaleFactor); + internals.setPageScaleFactorLimits(0.5, 4); + internals.setPageScaleFactor(scaleFactor); } }
diff --git a/third_party/WebKit/LayoutTests/fast/frames/iframe-name-and-id.html b/third_party/WebKit/LayoutTests/fast/frames/iframe-name-and-id.html index 8f9f6e6e..090a425 100644 --- a/third_party/WebKit/LayoutTests/fast/frames/iframe-name-and-id.html +++ b/third_party/WebKit/LayoutTests/fast/frames/iframe-name-and-id.html
@@ -9,7 +9,7 @@ function test() { if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); } print("frames[0].name (should be frame0_name): " + frames[0].name);
diff --git a/third_party/WebKit/LayoutTests/fast/frames/navigation-in-pagehide.html b/third_party/WebKit/LayoutTests/fast/frames/navigation-in-pagehide.html index 37c2149..c84bb55 100644 --- a/third_party/WebKit/LayoutTests/fast/frames/navigation-in-pagehide.html +++ b/third_party/WebKit/LayoutTests/fast/frames/navigation-in-pagehide.html
@@ -39,7 +39,7 @@ if (window.location.hash == '#done') { if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); return; }
diff --git a/third_party/WebKit/LayoutTests/fast/frames/page-visibility-crash.html b/third_party/WebKit/LayoutTests/fast/frames/page-visibility-crash.html index f29379b8..24d26ccf 100644 --- a/third_party/WebKit/LayoutTests/fast/frames/page-visibility-crash.html +++ b/third_party/WebKit/LayoutTests/fast/frames/page-visibility-crash.html
@@ -3,8 +3,8 @@ <body> <script> if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } function finish() {
diff --git a/third_party/WebKit/LayoutTests/fast/frames/parser-append-subframe-count.html b/third_party/WebKit/LayoutTests/fast/frames/parser-append-subframe-count.html index 413ed32..0f0bfec 100644 --- a/third_party/WebKit/LayoutTests/fast/frames/parser-append-subframe-count.html +++ b/third_party/WebKit/LayoutTests/fast/frames/parser-append-subframe-count.html
@@ -2,7 +2,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); onload = function() { [].forEach.call(document.querySelectorAll('a *'), function(node) {
diff --git a/third_party/WebKit/LayoutTests/fast/frames/resources/sandboxed-iframe-attribute-test.js b/third_party/WebKit/LayoutTests/fast/frames/resources/sandboxed-iframe-attribute-test.js index 7112c73..ed762bb 100644 --- a/third_party/WebKit/LayoutTests/fast/frames/resources/sandboxed-iframe-attribute-test.js +++ b/third_party/WebKit/LayoutTests/fast/frames/resources/sandboxed-iframe-attribute-test.js
@@ -1,5 +1,5 @@ if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var failed = false; var frames = 0; /* number of allowed frames that called back */
diff --git a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-forms-dynamic.html b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-forms-dynamic.html index 6bdc581..3ba716d 100644 --- a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-forms-dynamic.html +++ b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-forms-dynamic.html
@@ -3,8 +3,8 @@ <script> if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } var submissionCount = 0; @@ -18,7 +18,7 @@ document.getElementById("test_status").innerHTML = (disallowedSubmission ? "FAIL" : "PASS"); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-forms.html b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-forms.html index c91c943d..95e929e 100644 --- a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-forms.html +++ b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-forms.html
@@ -3,8 +3,8 @@ <script> if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } var submissionCount = 0; @@ -18,7 +18,7 @@ document.getElementById("test_status").innerHTML = (disallowedSubmission ? "FAIL" : "PASS"); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-navigation-allowed.html b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-navigation-allowed.html index c89b9fe0..6fda2eb 100644 --- a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-navigation-allowed.html +++ b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-navigation-allowed.html
@@ -4,8 +4,8 @@ <script> if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } function childFrameWasNavigated() @@ -30,7 +30,7 @@ isSuccessfullyParsed(); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-navigation-parent.html b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-navigation-parent.html index c1732b81..29d5765a 100644 --- a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-navigation-parent.html +++ b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-navigation-parent.html
@@ -3,8 +3,8 @@ <script> if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } var navigatedFrames = 0; @@ -21,7 +21,7 @@ testStatus.innerHTML = 'FAIL: frames not navigated properly'; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } function countFrame()
diff --git a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-navigation-targetlink.html b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-navigation-targetlink.html index 4ab57b4..cac4e32 100644 --- a/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-navigation-targetlink.html +++ b/third_party/WebKit/LayoutTests/fast/frames/sandboxed-iframe-navigation-targetlink.html
@@ -3,8 +3,8 @@ <script> if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } var navigatedFrames = 0; @@ -21,7 +21,7 @@ testStatus.innerHTML = 'FAIL: frames not navigated properly'; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } function countFrame()
diff --git a/third_party/WebKit/LayoutTests/fast/gradients/crash-on-1px-border.html b/third_party/WebKit/LayoutTests/fast/gradients/crash-on-1px-border.html index ff71d2d..e64c619 100644 --- a/third_party/WebKit/LayoutTests/fast/gradients/crash-on-1px-border.html +++ b/third_party/WebKit/LayoutTests/fast/gradients/crash-on-1px-border.html
@@ -7,7 +7,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/fast/gradients/crash-on-degenerate-gradient.html b/third_party/WebKit/LayoutTests/fast/gradients/crash-on-degenerate-gradient.html index 2e6b88c..979dfa8 100644 --- a/third_party/WebKit/LayoutTests/fast/gradients/crash-on-degenerate-gradient.html +++ b/third_party/WebKit/LayoutTests/fast/gradients/crash-on-degenerate-gradient.html
@@ -1,7 +1,7 @@ <head> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/fast/gradients/css3-radial-gradient-crash.html b/third_party/WebKit/LayoutTests/fast/gradients/css3-radial-gradient-crash.html index 7d0f6c7..525e6fe 100644 --- a/third_party/WebKit/LayoutTests/fast/gradients/css3-radial-gradient-crash.html +++ b/third_party/WebKit/LayoutTests/fast/gradients/css3-radial-gradient-crash.html
@@ -1,7 +1,7 @@ <head> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/fast/harness/internals-observe-gc-expected.txt b/third_party/WebKit/LayoutTests/fast/harness/internals-observe-gc-expected.txt index beed683..f636ea0 100644 --- a/third_party/WebKit/LayoutTests/fast/harness/internals-observe-gc-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/harness/internals-observe-gc-expected.txt
@@ -1,4 +1,4 @@ -Tests that the window.internals.observeGC hook works. +Tests that the internals.observeGC hook works. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/WebKit/LayoutTests/fast/harness/internals-observe-gc.html b/third_party/WebKit/LayoutTests/fast/harness/internals-observe-gc.html index 5521c6c..285c1e08 100644 --- a/third_party/WebKit/LayoutTests/fast/harness/internals-observe-gc.html +++ b/third_party/WebKit/LayoutTests/fast/harness/internals-observe-gc.html
@@ -2,9 +2,9 @@ <script src="../../resources/js-test.js"></script> <body> <script> -description('Tests that the window.internals.observeGC hook works.'); +description('Tests that the internals.observeGC hook works.'); -shouldBe('typeof window.internals.observeGC', '"function"', +shouldBe('typeof internals.observeGC', '"function"', 'this test requires window.internals'); // "Generic Kid's Movie III": ... where nobody dies.
diff --git a/third_party/WebKit/LayoutTests/fast/hidpi/image-set-as-background-with-zoom.html b/third_party/WebKit/LayoutTests/fast/hidpi/image-set-as-background-with-zoom.html index a08e41b1..71c81b0 100644 --- a/third_party/WebKit/LayoutTests/fast/hidpi/image-set-as-background-with-zoom.html +++ b/third_party/WebKit/LayoutTests/fast/hidpi/image-set-as-background-with-zoom.html
@@ -8,7 +8,7 @@ </style> <script> if (window.eventSender) - window.eventSender.zoomPageIn(); + eventSender.zoomPageIn(); </script> <div>This test passes if the div below is a green square.</div> <div id=foo></div>
diff --git a/third_party/WebKit/LayoutTests/fast/hidpi/media-query-as-background-with-zoom.html b/third_party/WebKit/LayoutTests/fast/hidpi/media-query-as-background-with-zoom.html index 36de3e17..56175238 100644 --- a/third_party/WebKit/LayoutTests/fast/hidpi/media-query-as-background-with-zoom.html +++ b/third_party/WebKit/LayoutTests/fast/hidpi/media-query-as-background-with-zoom.html
@@ -12,7 +12,7 @@ <div id=foo></div> <script> if (window.eventSender) - window.eventSender.zoomPageIn(); + eventSender.zoomPageIn(); test(function() { var div = document.getElementById("foo"); var computedStyle = window.getComputedStyle(div, null);
diff --git a/third_party/WebKit/LayoutTests/fast/hidpi/static/popup-menu-with-scrollbar-appearance.html b/third_party/WebKit/LayoutTests/fast/hidpi/static/popup-menu-with-scrollbar-appearance.html index 916b9ce..6ffe1543 100644 --- a/third_party/WebKit/LayoutTests/fast/hidpi/static/popup-menu-with-scrollbar-appearance.html +++ b/third_party/WebKit/LayoutTests/fast/hidpi/static/popup-menu-with-scrollbar-appearance.html
@@ -34,13 +34,13 @@ </body> <script> var selector = document.querySelector('select'); - window.testRunner.dumpAsTextWithPixelResults(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsTextWithPixelResults(); + testRunner.waitUntilDone(); openPicker(selector, function() { - window.testRunner.notifyDone(); + testRunner.notifyDone(); }, function() { - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); </script> </html>
diff --git a/third_party/WebKit/LayoutTests/fast/history/multiple-classes-visited.html b/third_party/WebKit/LayoutTests/fast/history/multiple-classes-visited.html index ebbc24c1..ee9e9742 100644 --- a/third_party/WebKit/LayoutTests/fast/history/multiple-classes-visited.html +++ b/third_party/WebKit/LayoutTests/fast/history/multiple-classes-visited.html
@@ -5,7 +5,7 @@ jsTestIsAsync = true; if (window.testRunner) - window.testRunner.keepWebHistory(); + testRunner.keepWebHistory(); function compareStyles() {
diff --git a/third_party/WebKit/LayoutTests/fast/history/nested-visited-test.html b/third_party/WebKit/LayoutTests/fast/history/nested-visited-test.html index 105ced1..4442a20 100644 --- a/third_party/WebKit/LayoutTests/fast/history/nested-visited-test.html +++ b/third_party/WebKit/LayoutTests/fast/history/nested-visited-test.html
@@ -5,7 +5,7 @@ jsTestIsAsync = true; if (window.testRunner) - window.testRunner.keepWebHistory(); + testRunner.keepWebHistory(); function compareStyles() {
diff --git a/third_party/WebKit/LayoutTests/fast/history/scroll-restoration/scroll-restoration-scale-not-impacted.html b/third_party/WebKit/LayoutTests/fast/history/scroll-restoration/scroll-restoration-scale-not-impacted.html index 0f91a3bc..68190a7 100644 --- a/third_party/WebKit/LayoutTests/fast/history/scroll-restoration/scroll-restoration-scale-not-impacted.html +++ b/third_party/WebKit/LayoutTests/fast/history/scroll-restoration/scroll-restoration-scale-not-impacted.html
@@ -18,7 +18,7 @@ if (window.name != 'verification') { assert_array_equals([window.innerWidth, window.innerHeight], [800, 600], 'initial page size is valid'); if (window.internals) { - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); assert_array_equals([internals.visualViewportWidth(), internals.visualViewportHeight()], [400, 300], 'page is scaled'); } @@ -37,7 +37,7 @@ // clean up window.name = ''; if (window.internals) - setTimeout(function() {window.internals.setPageScaleFactor(1);}, 0); + setTimeout(function() {internals.setPageScaleFactor(1);}, 0); t.done(); } }));
diff --git a/third_party/WebKit/LayoutTests/fast/history/self-is-visited.html b/third_party/WebKit/LayoutTests/fast/history/self-is-visited.html index efefd67..bea2d8e 100644 --- a/third_party/WebKit/LayoutTests/fast/history/self-is-visited.html +++ b/third_party/WebKit/LayoutTests/fast/history/self-is-visited.html
@@ -5,7 +5,7 @@ jsTestIsAsync = true; if (window.testRunner) - window.testRunner.keepWebHistory(); + testRunner.keepWebHistory(); function compareStyles() {
diff --git a/third_party/WebKit/LayoutTests/fast/history/sibling-visited-test.html b/third_party/WebKit/LayoutTests/fast/history/sibling-visited-test.html index 17cd606..b8821b0 100644 --- a/third_party/WebKit/LayoutTests/fast/history/sibling-visited-test.html +++ b/third_party/WebKit/LayoutTests/fast/history/sibling-visited-test.html
@@ -5,7 +5,7 @@ jsTestIsAsync = true; if (window.testRunner) - window.testRunner.keepWebHistory(); + testRunner.keepWebHistory(); function compareStyles() {
diff --git a/third_party/WebKit/LayoutTests/fast/history/visited-generated-content-test.html b/third_party/WebKit/LayoutTests/fast/history/visited-generated-content-test.html index 2ece165..4ec9e56e 100644 --- a/third_party/WebKit/LayoutTests/fast/history/visited-generated-content-test.html +++ b/third_party/WebKit/LayoutTests/fast/history/visited-generated-content-test.html
@@ -13,9 +13,9 @@ <body onload="init()"> <script> if (window.testRunner) { - window.testRunner.keepWebHistory(); - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.keepWebHistory(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } var oVisitedLink, oUnvisitedLink; function init() { @@ -30,7 +30,7 @@ oVisitedLink.style.display = 'none'; oUnvisitedLink.style.display = 'none'; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }, 0); } function createInvisibleLink(sUrl) {
diff --git a/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-background-color.html b/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-background-color.html index 5a46860..1610463 100644 --- a/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-background-color.html +++ b/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-background-color.html
@@ -15,7 +15,7 @@ testRunner.layoutAndPaintAsyncThen(function(){ if (window.eventSender); eventSender.mouseMoveTo(anchor.offsetLeft + 1, anchor.offsetTop + 1); - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-border-color.html b/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-border-color.html index 86daa3d..353aea7 100644 --- a/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-border-color.html +++ b/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-border-color.html
@@ -15,7 +15,7 @@ testRunner.layoutAndPaintAsyncThen(function(){ if (window.eventSender); eventSender.mouseMoveTo(anchor.offsetLeft + 10, anchor.offsetTop + 10); - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-emphasis-color.html b/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-emphasis-color.html index 893f86c..84077a6 100644 --- a/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-emphasis-color.html +++ b/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-emphasis-color.html
@@ -19,7 +19,7 @@ testRunner.layoutAndPaintAsyncThen(function(){ if (window.eventSender); eventSender.mouseMoveTo(anchor.offsetLeft + 1, anchor.offsetTop + 1); - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-outline-color.html b/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-outline-color.html index daa72529..e748c1a6 100644 --- a/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-outline-color.html +++ b/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-outline-color.html
@@ -15,7 +15,7 @@ testRunner.layoutAndPaintAsyncThen(function(){ if (window.eventSender); eventSender.mouseMoveTo(anchor.offsetLeft + 1, anchor.offsetTop + 1); - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-text-decoration-color.html b/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-text-decoration-color.html index c91648a..27f9f9a 100644 --- a/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-text-decoration-color.html +++ b/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-text-decoration-color.html
@@ -18,7 +18,7 @@ testRunner.layoutAndPaintAsyncThen(function(){ if (window.eventSender); eventSender.mouseMoveTo(anchor.offsetLeft + 1, anchor.offsetTop + 1); - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-text-fill-color.html b/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-text-fill-color.html index f70206c..8dd6e23f 100644 --- a/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-text-fill-color.html +++ b/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-text-fill-color.html
@@ -18,7 +18,7 @@ testRunner.layoutAndPaintAsyncThen(function(){ if (window.eventSender); eventSender.mouseMoveTo(anchor.offsetLeft + 1, anchor.offsetTop + 1); - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-text-stroke-color.html b/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-text-stroke-color.html index a0c63c9b..ca567cc 100644 --- a/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-text-stroke-color.html +++ b/third_party/WebKit/LayoutTests/fast/history/visited-link-hover-text-stroke-color.html
@@ -18,7 +18,7 @@ testRunner.layoutAndPaintAsyncThen(function(){ if (window.eventSender); eventSender.mouseMoveTo(anchor.offsetLeft + 1, anchor.offsetTop + 1); - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/history/visited-link-hover.html b/third_party/WebKit/LayoutTests/fast/history/visited-link-hover.html index 3cc84f0..5e3053a 100644 --- a/third_party/WebKit/LayoutTests/fast/history/visited-link-hover.html +++ b/third_party/WebKit/LayoutTests/fast/history/visited-link-hover.html
@@ -18,7 +18,7 @@ testRunner.layoutAndPaintAsyncThen(function(){ if (window.eventSender); eventSender.mouseMoveTo(anchor.offsetLeft + 1, anchor.offsetTop + 1); - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/html/imports/import-insert-domcontentloaded.html b/third_party/WebKit/LayoutTests/fast/html/imports/import-insert-domcontentloaded.html index 37369a7b..962f5f2 100644 --- a/third_party/WebKit/LayoutTests/fast/html/imports/import-insert-domcontentloaded.html +++ b/third_party/WebKit/LayoutTests/fast/html/imports/import-insert-domcontentloaded.html
@@ -3,8 +3,8 @@ <head> <script> if (window.testRunner) { - window.testRunner.waitUntilDone(); - window.testRunner.dumpAsText(); + testRunner.waitUntilDone(); + testRunner.dumpAsText(); } document.addEventListener('DOMContentLoaded', function() { @@ -13,7 +13,7 @@ link.setAttribute('href', 'resources/hello.html'); document.head.appendChild(link); window.onload = function() { - window.testRunner.notifyDone(); + testRunner.notifyDone(); }; });
diff --git a/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-1.html b/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-1.html index 17ad1643e..b3eaf7fa 100644 --- a/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-1.html +++ b/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-1.html
@@ -12,7 +12,7 @@ <link rel="import" href="resources/nr1-i5.html"> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </head> </html>
diff --git a/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-2.html b/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-2.html index 09d6759..e399e9b 100644 --- a/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-2.html +++ b/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-2.html
@@ -14,7 +14,7 @@ <link rel="import" href="resources/nr2-i7.html"> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </head> </html>
diff --git a/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-3.html b/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-3.html index 3cb13fc..74cfe04 100644 --- a/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-3.html +++ b/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-3.html
@@ -15,7 +15,7 @@ <link rel="import" href="resources/nr3-i7.html"> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </head> </html>
diff --git a/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-4.html b/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-4.html index 0640f1a..6c6c94c 100644 --- a/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-4.html +++ b/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-4.html
@@ -15,7 +15,7 @@ <link rel="import" href="resources/nr4-ia.html"> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </head> </html>
diff --git a/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-5.html b/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-5.html index 22e0cf6e..e3238ff 100644 --- a/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-5.html +++ b/third_party/WebKit/LayoutTests/fast/html/imports/import-normalize-resolve-5.html
@@ -16,7 +16,7 @@ <link rel="import" href="resources/nr5-ia.html"> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </head> </html>
diff --git a/third_party/WebKit/LayoutTests/fast/html/layout-runs-and-floats-crash.html b/third_party/WebKit/LayoutTests/fast/html/layout-runs-and-floats-crash.html index c9b2c113..9d35e5a 100644 --- a/third_party/WebKit/LayoutTests/fast/html/layout-runs-and-floats-crash.html +++ b/third_party/WebKit/LayoutTests/fast/html/layout-runs-and-floats-crash.html
@@ -13,5 +13,5 @@ <p>This test passes if it doesn't crash</p> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/html/pending-stylesheet-crash.html b/third_party/WebKit/LayoutTests/fast/html/pending-stylesheet-crash.html index 117e0b3..1db20d7 100644 --- a/third_party/WebKit/LayoutTests/fast/html/pending-stylesheet-crash.html +++ b/third_party/WebKit/LayoutTests/fast/html/pending-stylesheet-crash.html
@@ -6,7 +6,7 @@ <script src="../../resources/gc.js"></script> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var link = document.createElement('link'); link.setAttribute('type', 'text/css');
diff --git a/third_party/WebKit/LayoutTests/fast/inline-block/inline-block-vertical-align-2.html b/third_party/WebKit/LayoutTests/fast/inline-block/inline-block-vertical-align-2.html index 71e8ee4..1be0b57b 100644 --- a/third_party/WebKit/LayoutTests/fast/inline-block/inline-block-vertical-align-2.html +++ b/third_party/WebKit/LayoutTests/fast/inline-block/inline-block-vertical-align-2.html
@@ -26,7 +26,7 @@ <p id="result"></p> <script type="text/javascript"> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var result = document.getElementById('result'); var outer = document.getElementById('outer'); var inner = document.getElementById('inner');
diff --git a/third_party/WebKit/LayoutTests/fast/inline/boundingBox-with-continuation.html b/third_party/WebKit/LayoutTests/fast/inline/boundingBox-with-continuation.html index cb98fe7..64796bac 100644 --- a/third_party/WebKit/LayoutTests/fast/inline/boundingBox-with-continuation.html +++ b/third_party/WebKit/LayoutTests/fast/inline/boundingBox-with-continuation.html
@@ -1,7 +1,7 @@ <!doctype html> <html> <head> <script> if (window.testRunner) - window.testRunner.dumpAsText() + testRunner.dumpAsText() function runTest() {
diff --git a/third_party/WebKit/LayoutTests/fast/inline/middle-continuation-inherits-visibility-from-inline-parent.html b/third_party/WebKit/LayoutTests/fast/inline/middle-continuation-inherits-visibility-from-inline-parent.html index 5fcb782..461478a 100644 --- a/third_party/WebKit/LayoutTests/fast/inline/middle-continuation-inherits-visibility-from-inline-parent.html +++ b/third_party/WebKit/LayoutTests/fast/inline/middle-continuation-inherits-visibility-from-inline-parent.html
@@ -14,7 +14,7 @@ if (window.eventSender) { eventSender.dragMode = false; eventSender.mouseMoveTo(10, 10); - var originalInfo = window.internals.getCurrentCursorInfo(); + var originalInfo = internals.getCurrentCursorInfo(); assert_equals(originalInfo, "type=Pointer hotSpot=0,0"); } }, 'crbug.com/706324: Middle continuations should inherit the style of their inline parent, so when the cursor is placed over the anonymous block it should remain a pointer.');
diff --git a/third_party/WebKit/LayoutTests/fast/inline/skipped-whitespace-boundingBox.html b/third_party/WebKit/LayoutTests/fast/inline/skipped-whitespace-boundingBox.html index a89af992..5ef95596 100644 --- a/third_party/WebKit/LayoutTests/fast/inline/skipped-whitespace-boundingBox.html +++ b/third_party/WebKit/LayoutTests/fast/inline/skipped-whitespace-boundingBox.html
@@ -3,7 +3,7 @@ <head> <script> if (window.testRunner) - window.testRunner.dumpAsText() + testRunner.dumpAsText() function runTest() {
diff --git a/third_party/WebKit/LayoutTests/fast/inline/skipped-whitespace-client-rect.html b/third_party/WebKit/LayoutTests/fast/inline/skipped-whitespace-client-rect.html index d638f68..12f5cdd 100644 --- a/third_party/WebKit/LayoutTests/fast/inline/skipped-whitespace-client-rect.html +++ b/third_party/WebKit/LayoutTests/fast/inline/skipped-whitespace-client-rect.html
@@ -3,7 +3,7 @@ <head> <script> if (window.testRunner) - window.testRunner.dumpAsText() + testRunner.dumpAsText() function runTest() {
diff --git a/third_party/WebKit/LayoutTests/fast/innerHTML/innerHTML-case.html b/third_party/WebKit/LayoutTests/fast/innerHTML/innerHTML-case.html index 000badc..cf01554d 100644 --- a/third_party/WebKit/LayoutTests/fast/innerHTML/innerHTML-case.html +++ b/third_party/WebKit/LayoutTests/fast/innerHTML/innerHTML-case.html
@@ -6,7 +6,7 @@ <script language="javascript"> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function log(message) { var console = document.getElementById("console");
diff --git a/third_party/WebKit/LayoutTests/fast/js/Promise-native-create.html b/third_party/WebKit/LayoutTests/fast/js/Promise-native-create.html index 6462d25..9a0cf6c 100644 --- a/third_party/WebKit/LayoutTests/fast/js/Promise-native-create.html +++ b/third_party/WebKit/LayoutTests/fast/js/Promise-native-create.html
@@ -10,7 +10,7 @@ description('Test Promise constructor inside Blink.'); var resolve; -var promise = window.internals.createResolvedPromise(undefined); +var promise = internals.createResolvedPromise(undefined); debug('constructor = ' + promise.constructor); debug('then = ' + promise.then);
diff --git a/third_party/WebKit/LayoutTests/fast/js/Promise-native-then.html b/third_party/WebKit/LayoutTests/fast/js/Promise-native-then.html index 3c5347b..cd62e64c 100644 --- a/third_party/WebKit/LayoutTests/fast/js/Promise-native-then.html +++ b/third_party/WebKit/LayoutTests/fast/js/Promise-native-then.html
@@ -13,12 +13,12 @@ var resolve; var promise = new Promise(function(r) { resolve = r; }); -var newPromise = window.internals.addOneToPromise(promise); +var newPromise = internals.addOneToPromise(promise); newPromise.then(function(result) { window.result = result; shouldBe('result', '11'); - return window.internals.addOneToPromise(result); + return internals.addOneToPromise(result); }).then(function(result) { window.result = result; shouldBe('result', '12');
diff --git a/third_party/WebKit/LayoutTests/fast/layout/border-image-outset-no-relayout.html b/third_party/WebKit/LayoutTests/fast/layout/border-image-outset-no-relayout.html index 94604da7..800440c 100644 --- a/third_party/WebKit/LayoutTests/fast/layout/border-image-outset-no-relayout.html +++ b/third_party/WebKit/LayoutTests/fast/layout/border-image-outset-no-relayout.html
@@ -18,12 +18,12 @@ document.body.offsetTop; if (window.internals) - shouldBe("window.internals.needsLayoutCount()", "0", true); + shouldBe("internals.needsLayoutCount()", "0", true); // Changing border-image-outset will cause a repaint but no layout. document.getElementById("test").style['border-image-outset'] = '5'; if (window.internals) { - shouldBe("window.internals.needsLayoutCount()", "0", true); + shouldBe("internals.needsLayoutCount()", "0", true); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/layout/common-ancestor-relayout-boundary-expected.txt b/third_party/WebKit/LayoutTests/fast/layout/common-ancestor-relayout-boundary-expected.txt index 98fcec6c..328e66a 100644 --- a/third_party/WebKit/LayoutTests/fast/layout/common-ancestor-relayout-boundary-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/layout/common-ancestor-relayout-boundary-expected.txt
@@ -1,5 +1,5 @@ -PASS window.internals.needsLayoutCount() is 4 -PASS window.internals.needsLayoutCount() is 0 +PASS internals.needsLayoutCount() is 4 +PASS internals.needsLayoutCount() is 0 PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fast/layout/common-ancestor-relayout-boundary.html b/third_party/WebKit/LayoutTests/fast/layout/common-ancestor-relayout-boundary.html index 3694ff48..3eebd922 100644 --- a/third_party/WebKit/LayoutTests/fast/layout/common-ancestor-relayout-boundary.html +++ b/third_party/WebKit/LayoutTests/fast/layout/common-ancestor-relayout-boundary.html
@@ -27,7 +27,7 @@ // Pass quiet=true here so that the added nodes from the shouldBe don't // mess up the needsLayoutCount on line 45. if (window.internals) - shouldBe("window.internals.needsLayoutCount()", "0", true); + shouldBe("internals.needsLayoutCount()", "0", true); dirtyLayout(); @@ -38,10 +38,10 @@ // / / // *div *div if (window.internals) - shouldBe("window.internals.needsLayoutCount()", "4"); + shouldBe("internals.needsLayoutCount()", "4"); document.documentElement.offsetTop; if (window.internals) - shouldBe("window.internals.needsLayoutCount()", "0"); + shouldBe("internals.needsLayoutCount()", "0"); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/layout/display-none-no-relayout.html b/third_party/WebKit/LayoutTests/fast/layout/display-none-no-relayout.html index eb6964e5..7b92182 100644 --- a/third_party/WebKit/LayoutTests/fast/layout/display-none-no-relayout.html +++ b/third_party/WebKit/LayoutTests/fast/layout/display-none-no-relayout.html
@@ -13,7 +13,7 @@ document.body.offsetTop; if (window.internals) - shouldBe("window.internals.needsLayoutCount()", "0", true); + shouldBe("internals.needsLayoutCount()", "0", true); var parent = document.getElementById("parent"); @@ -22,7 +22,7 @@ parent.className = "a"; if (window.internals) { - shouldBe("window.internals.updateStyleAndReturnAffectedElementCount()", "2", true); - shouldBe("window.internals.needsLayoutCount()", "0", true); + shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "2", true); + shouldBe("internals.needsLayoutCount()", "0", true); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/layout/layoutgeometry-saturated-offsets.html b/third_party/WebKit/LayoutTests/fast/layout/layoutgeometry-saturated-offsets.html index 7ec5a17..40b0592 100644 --- a/third_party/WebKit/LayoutTests/fast/layout/layoutgeometry-saturated-offsets.html +++ b/third_party/WebKit/LayoutTests/fast/layout/layoutgeometry-saturated-offsets.html
@@ -9,5 +9,5 @@ Tests correct edge-case handling saturated arithmetic for layout sizes. Passes if no crash. <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/fast/layout/outline-no-relayout.html b/third_party/WebKit/LayoutTests/fast/layout/outline-no-relayout.html index 37b133c..05c65d80 100644 --- a/third_party/WebKit/LayoutTests/fast/layout/outline-no-relayout.html +++ b/third_party/WebKit/LayoutTests/fast/layout/outline-no-relayout.html
@@ -6,12 +6,12 @@ document.body.offsetTop; if (window.internals) - shouldBe("window.internals.needsLayoutCount()", "0", true); + shouldBe("internals.needsLayoutCount()", "0", true); // Adding box-shadow will cause a repaint but no layout. document.getElementById("test").style['outline'] = 'solid black 5px;'; if (window.internals) { - shouldBe("window.internals.needsLayoutCount()", "0", true); + shouldBe("internals.needsLayoutCount()", "0", true); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/layout/shadow-box-no-relayout.html b/third_party/WebKit/LayoutTests/fast/layout/shadow-box-no-relayout.html index 9698f9cb..d0d7154 100644 --- a/third_party/WebKit/LayoutTests/fast/layout/shadow-box-no-relayout.html +++ b/third_party/WebKit/LayoutTests/fast/layout/shadow-box-no-relayout.html
@@ -6,12 +6,12 @@ document.body.offsetTop; if (window.internals) - shouldBe("window.internals.needsLayoutCount()", "0", true); + shouldBe("internals.needsLayoutCount()", "0", true); // Adding box-shadow will cause a repaint but no layout. document.getElementById("test").style['box-shadow'] = '5px 5px 5px rgba(0,0,0,0.3)'; if (window.internals) { - shouldBe("window.internals.needsLayoutCount()", "0", true); + shouldBe("internals.needsLayoutCount()", "0", true); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/lists/drag-into-marker.html b/third_party/WebKit/LayoutTests/fast/lists/drag-into-marker.html index 2813e7d..707eb27 100644 --- a/third_party/WebKit/LayoutTests/fast/lists/drag-into-marker.html +++ b/third_party/WebKit/LayoutTests/fast/lists/drag-into-marker.html
@@ -10,7 +10,7 @@ if (!window.testRunner) return; - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); var spanToDrag = document.getElementById("spanToDrag"); var x = spanToDrag.offsetLeft + spanToDrag.offsetWidth / 2; @@ -40,7 +40,7 @@ eventSender.mouseMoveTo(x, y); eventSender.mouseUp(); - window.testRunner.notifyDone(); + testRunner.notifyDone(); } runTest();
diff --git a/third_party/WebKit/LayoutTests/fast/lists/list-with-autosizing-crash.html b/third_party/WebKit/LayoutTests/fast/lists/list-with-autosizing-crash.html index efd6e66..423a8b4e 100644 --- a/third_party/WebKit/LayoutTests/fast/lists/list-with-autosizing-crash.html +++ b/third_party/WebKit/LayoutTests/fast/lists/list-with-autosizing-crash.html
@@ -10,8 +10,8 @@ <script> if (window.internals) { - window.internals.settings.setTextAutosizingEnabled(true); - window.internals.settings.setTextAutosizingWindowSizeOverride(320, 480); + internals.settings.setTextAutosizingEnabled(true); + internals.settings.setTextAutosizingWindowSizeOverride(320, 480); } if (window.testRunner)
diff --git a/third_party/WebKit/LayoutTests/fast/loader/unload-mutation-crash.html b/third_party/WebKit/LayoutTests/fast/loader/unload-mutation-crash.html index 3a8f323..d872b6a 100644 --- a/third_party/WebKit/LayoutTests/fast/loader/unload-mutation-crash.html +++ b/third_party/WebKit/LayoutTests/fast/loader/unload-mutation-crash.html
@@ -1,6 +1,6 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function start() { window.firstFrame = document.createElement('iframe');
diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-pixel-ratio-print.html b/third_party/WebKit/LayoutTests/fast/media/mq-pixel-ratio-print.html index 434f315e..f0b16ed0 100644 --- a/third_party/WebKit/LayoutTests/fast/media/mq-pixel-ratio-print.html +++ b/third_party/WebKit/LayoutTests/fast/media/mq-pixel-ratio-print.html
@@ -15,7 +15,7 @@ description("CSS3 media query test: -webkit-device-pixel-ratio combined with print.") if (window.testRunner && window.internals) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function resolutionFromStyle() { var width = getComputedStyle(document.getElementById("detector")).width; @@ -41,7 +41,7 @@ // Test printing. - window.internals.settings.setMediaTypeOverride("print"); + internals.settings.setMediaTypeOverride("print"); shouldBe("matchMedia('(-webkit-min-device-pixel-ratio: 3)').matches", "true"); // Should match the one requiring 'print' media type.
diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-resolution.html b/third_party/WebKit/LayoutTests/fast/media/mq-resolution.html index 2c77ede..df1cbf6 100644 --- a/third_party/WebKit/LayoutTests/fast/media/mq-resolution.html +++ b/third_party/WebKit/LayoutTests/fast/media/mq-resolution.html
@@ -18,7 +18,7 @@ description("CSS3 media query test: resolution query with dppx. Using style element, @media css rule.") if (window.testRunner && window.internals) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function resolutionFromStyle() { var width = getComputedStyle(document.getElementById("detector")).width; @@ -49,19 +49,19 @@ shouldBe("matchMedia('(min-resolution: 0dpi)').matches", "false"); shouldBe("matchMedia('(max-resolution: 0dpi)').matches", "false"); - window.testRunner.setBackingScaleFactor(1.5, function() {}); + testRunner.setBackingScaleFactor(1.5, function() {}); shouldBe("matchMedia('(resolution: 1.5dppx)').matches", "true"); shouldBe("resolutionFromStyle()", "1.5"); - window.testRunner.setBackingScaleFactor(2, function() {}); + testRunner.setBackingScaleFactor(2, function() {}); shouldBe("matchMedia('(resolution: 2dppx)').matches", "true"); shouldBe("resolutionFromStyle()", "2"); - window.testRunner.setBackingScaleFactor(1, function() {}); + testRunner.setBackingScaleFactor(1, function() {}); shouldBe("matchMedia('(resolution: 1dppx)').matches", "true"); shouldBe("resolutionFromStyle()", "1"); - window.testRunner.setBackingScaleFactor(2.25, function() {}); + testRunner.setBackingScaleFactor(2.25, function() {}); shouldBe("matchMedia('(resolution: 2.25dppx)').matches", "true"); shouldBe("resolutionFromStyle()", "2.25"); shouldBe("matchMedia('(resolution)').matches", "true"); @@ -75,7 +75,7 @@ // Test printing. - window.internals.settings.setMediaTypeOverride("print"); + internals.settings.setMediaTypeOverride("print"); shouldBe("matchMedia('(min-resolution: 300dpi)').matches", "true"); shouldBe("matchMedia('(min-resolution: 118dpcm)').matches", "true");
diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-scan-01.html b/third_party/WebKit/LayoutTests/fast/media/mq-scan-01.html index 6bf8620..7d8da166 100644 --- a/third_party/WebKit/LayoutTests/fast/media/mq-scan-01.html +++ b/third_party/WebKit/LayoutTests/fast/media/mq-scan-01.html
@@ -6,7 +6,7 @@ if (window.testRunner) { /* The scan media feature only applies to "tv" media. This test checks that we don't match any of the values for "screen". */ - window.internals.settings.setMediaTypeOverride("screen"); + internals.settings.setMediaTypeOverride("screen"); } </script> <style>
diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-scan-02.html b/third_party/WebKit/LayoutTests/fast/media/mq-scan-02.html index eb03e2a..2ac0bf2f 100644 --- a/third_party/WebKit/LayoutTests/fast/media/mq-scan-02.html +++ b/third_party/WebKit/LayoutTests/fast/media/mq-scan-02.html
@@ -8,7 +8,7 @@ platform interface, this test needs to be modified by a test override. For now, the implementation assumes a modern tv with progressive scan. We test that here. */ - window.internals.settings.setMediaTypeOverride("tv"); + internals.settings.setMediaTypeOverride("tv"); } </script> <style>
diff --git a/third_party/WebKit/LayoutTests/fast/media/mq-with-screen-size-in-physical-pixels-quirk.html b/third_party/WebKit/LayoutTests/fast/media/mq-with-screen-size-in-physical-pixels-quirk.html index d85c888..4d631cc 100644 --- a/third_party/WebKit/LayoutTests/fast/media/mq-with-screen-size-in-physical-pixels-quirk.html +++ b/third_party/WebKit/LayoutTests/fast/media/mq-with-screen-size-in-physical-pixels-quirk.html
@@ -8,7 +8,7 @@ description("This test verifies behavior of the ReportScreenSizeInPhysicalPixelsQuirk setting."); if (window.testRunner) - window.testRunner.setBackingScaleFactor(2, function() {}); + testRunner.setBackingScaleFactor(2, function() {}); else debug("WARN: This test depends on availability of window.testRunner."); @@ -19,7 +19,7 @@ shouldBeTrue("deviceHeightIsSameAsScreenHeight"); if (window.internals) - window.internals.settings.setReportScreenSizeInPhysicalPixelsQuirk(true); + internals.settings.setReportScreenSizeInPhysicalPixelsQuirk(true); else debug("WARN: This test depends on the ReportScreenSizeInPhysicalPixelsQuirk setting to be true.");
diff --git a/third_party/WebKit/LayoutTests/fast/media/print-restores-previous-mediatype.html b/third_party/WebKit/LayoutTests/fast/media/print-restores-previous-mediatype.html index e4dac18..a53347f1 100644 --- a/third_party/WebKit/LayoutTests/fast/media/print-restores-previous-mediatype.html +++ b/third_party/WebKit/LayoutTests/fast/media/print-restores-previous-mediatype.html
@@ -7,7 +7,7 @@ <script type="text/javascript" charset="utf-8"> if (window.testRunner) { testRunner.dumpAsText(); - window.internals.settings.setMediaTypeOverride("handheld"); + internals.settings.setMediaTypeOverride("handheld"); } function log(m)
diff --git a/third_party/WebKit/LayoutTests/fast/mediarecorder/BlobEvent-basic-expected.txt b/third_party/WebKit/LayoutTests/fast/mediarecorder/BlobEvent-basic-expected.txt deleted file mode 100644 index 4c77853..0000000 --- a/third_party/WebKit/LayoutTests/fast/mediarecorder/BlobEvent-basic-expected.txt +++ /dev/null
@@ -1,8 +0,0 @@ -This is a testharness.js-based test. -PASS BlobEvent creation and content management -PASS BlobEvent creation with timecode -FAIL BlobEvent needs two constructor parameters, type and BlobEventInit Test bug: need to pass exception to assert_throws() -FAIL BlobEvent needs the second constructor parameter to be a BlobEventInit Test bug: need to pass exception to assert_throws() -FAIL BlobEventInit needs a data parameter Test bug: need to pass exception to assert_throws() -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/fast/mediarecorder/BlobEvent-basic.html b/third_party/WebKit/LayoutTests/fast/mediarecorder/BlobEvent-basic.html index 7774df7c..b4c4fdda 100644 --- a/third_party/WebKit/LayoutTests/fast/mediarecorder/BlobEvent-basic.html +++ b/third_party/WebKit/LayoutTests/fast/mediarecorder/BlobEvent-basic.html
@@ -30,14 +30,14 @@ }, 'BlobEvent creation with timecode'); test(function() { - assert_throws(null, + assert_throws(new TypeError, function() { var blobEvent = new BlobEvent('BlobEvent'); }); }, 'BlobEvent needs two constructor parameters, type and BlobEventInit'); test(function() { var array = new Uint8Array([0x70, 0x71, 0x72, 0x73]); var blob = new Blob([array]); - assert_throws(null, + assert_throws(new TypeError, function() { var blobEvent = new BlobEvent(blob, {data : "blergh"}); }); @@ -46,7 +46,7 @@ test(function() { var array = new Uint8Array([0x70, 0x71, 0x72, 0x73]); var blob = new Blob([array]); - assert_throws(null, + assert_throws(new TypeError, function() { var blobEvent = new BlobEvent(blob, {timecode : 0.0}); });
diff --git a/third_party/WebKit/LayoutTests/fast/mediastream/getusermedia-expected.txt b/third_party/WebKit/LayoutTests/fast/mediastream/getusermedia-expected.txt index 176e0e3..e22dd9a 100644 --- a/third_party/WebKit/LayoutTests/fast/mediastream/getusermedia-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/mediastream/getusermedia-expected.txt
@@ -4,15 +4,15 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". -PASS window.internals.isUseCounted(document, GetUserMediaPrefixed) is false -PASS window.internals.isUseCounted(document, GetUserMediaLegacy) is false +PASS internals.isUseCounted(document, GetUserMediaPrefixed) is false +PASS internals.isUseCounted(document, GetUserMediaLegacy) is false PASS navigator.webkitGetUserMedia({audio:false, video:false}, error, error); threw exception TypeError: Failed to execute 'webkitGetUserMedia' on 'Navigator': At least one of audio and video must be requested. PASS navigator.webkitGetUserMedia({audio:true}, gotStreamNoMore, error); did not throw exception. PASS navigator.getUserMedia({audio:false, video:false}, error, error); threw exception TypeError: Failed to execute 'getUserMedia' on 'Navigator': At least one of audio and video must be requested. PASS navigator.getUserMedia({audio:true}, gotStream1, error); did not throw exception. -PASS window.internals.isUseCounted(document, GetUserMediaPrefixed) is true -PASS window.internals.isUseCounted(document, GetUserMediaLegacy) is true -PASS window.internals.isUseCounted(document, GetUserMediaPromise) is false +PASS internals.isUseCounted(document, GetUserMediaPrefixed) is true +PASS internals.isUseCounted(document, GetUserMediaLegacy) is true +PASS internals.isUseCounted(document, GetUserMediaPromise) is false PASS Stream generated. PASS stream.getAudioTracks().length is 1 PASS stream.getVideoTracks().length is 0
diff --git a/third_party/WebKit/LayoutTests/fast/mediastream/getusermedia.html b/third_party/WebKit/LayoutTests/fast/mediastream/getusermedia.html index 28db338..97b4a00 100644 --- a/third_party/WebKit/LayoutTests/fast/mediastream/getusermedia.html +++ b/third_party/WebKit/LayoutTests/fast/mediastream/getusermedia.html
@@ -88,8 +88,8 @@ var GetUserMediaPromise = 1402; if (window.internals) { - shouldBeFalse('window.internals.isUseCounted(document, GetUserMediaPrefixed)'); - shouldBeFalse('window.internals.isUseCounted(document, GetUserMediaLegacy)'); + shouldBeFalse('internals.isUseCounted(document, GetUserMediaPrefixed)'); + shouldBeFalse('internals.isUseCounted(document, GetUserMediaLegacy)'); } // Prefixed version @@ -100,9 +100,9 @@ shouldNotThrow("navigator.getUserMedia({audio:true}, gotStream1, error);"); if (window.internals) { - shouldBeTrue('window.internals.isUseCounted(document, GetUserMediaPrefixed)'); - shouldBeTrue('window.internals.isUseCounted(document, GetUserMediaLegacy)'); - shouldBeFalse('window.internals.isUseCounted(document, GetUserMediaPromise)'); + shouldBeTrue('internals.isUseCounted(document, GetUserMediaPrefixed)'); + shouldBeTrue('internals.isUseCounted(document, GetUserMediaLegacy)'); + shouldBeFalse('internals.isUseCounted(document, GetUserMediaPromise)'); } window.jsTestIsAsync = true;
diff --git a/third_party/WebKit/LayoutTests/fast/overflow/overflow-of-video-outline.html b/third_party/WebKit/LayoutTests/fast/overflow/overflow-of-video-outline.html index c30c719a..c0bef166 100644 --- a/third_party/WebKit/LayoutTests/fast/overflow/overflow-of-video-outline.html +++ b/third_party/WebKit/LayoutTests/fast/overflow/overflow-of-video-outline.html
@@ -7,7 +7,7 @@ </video> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); onload = runTest; var play_button = mediaControlsButton(video, "play-button"); @@ -25,6 +25,6 @@ function focusTimeline() { play_button.style.outline = ""; timeline.style.outline = "2px solid black"; - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/overflow/overflow-y-scroll.html b/third_party/WebKit/LayoutTests/fast/overflow/overflow-y-scroll.html index 73e6653..86be6bf 100644 --- a/third_party/WebKit/LayoutTests/fast/overflow/overflow-y-scroll.html +++ b/third_party/WebKit/LayoutTests/fast/overflow/overflow-y-scroll.html
@@ -3,7 +3,7 @@ <title>Bug 25313 : Missing scrollbars in GMail</title> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function inject() {
diff --git a/third_party/WebKit/LayoutTests/fast/replaced/image-map-cursor.html b/third_party/WebKit/LayoutTests/fast/replaced/image-map-cursor.html index 29b2203..01fcb3ce9 100644 --- a/third_party/WebKit/LayoutTests/fast/replaced/image-map-cursor.html +++ b/third_party/WebKit/LayoutTests/fast/replaced/image-map-cursor.html
@@ -13,7 +13,7 @@ if (window.testRunner) { eventSender.mouseMoveTo(50, 50); if (window.internals) - debug('Cursor Info: ' + window.internals.getCurrentCursorInfo()); + debug('Cursor Info: ' + internals.getCurrentCursorInfo()); finishJSTest(); } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/replaced/resources/focus-test.js b/third_party/WebKit/LayoutTests/fast/replaced/resources/focus-test.js index d8584ad..ad93d1e93 100644 --- a/third_party/WebKit/LayoutTests/fast/replaced/resources/focus-test.js +++ b/third_party/WebKit/LayoutTests/fast/replaced/resources/focus-test.js
@@ -15,7 +15,7 @@ ' PASS' : ' FAIL: focus style ' + [width, style, color].join(' ')); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } var element = document.getElementById('test');
diff --git a/third_party/WebKit/LayoutTests/fast/scroll-behavior/overflow-scroll-loses-composited-scrolling.html b/third_party/WebKit/LayoutTests/fast/scroll-behavior/overflow-scroll-loses-composited-scrolling.html index bd743f2..a2b8bd8 100644 --- a/third_party/WebKit/LayoutTests/fast/scroll-behavior/overflow-scroll-loses-composited-scrolling.html +++ b/third_party/WebKit/LayoutTests/fast/scroll-behavior/overflow-scroll-loses-composited-scrolling.html
@@ -42,7 +42,7 @@ window.onload = function() { if (window.internals) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); } window.requestAnimationFrame(startSmoothScroll);
diff --git a/third_party/WebKit/LayoutTests/fast/scroll-behavior/overflow-scroll-root-frame-animates.html b/third_party/WebKit/LayoutTests/fast/scroll-behavior/overflow-scroll-root-frame-animates.html index 9c13cc4..2105aab 100644 --- a/third_party/WebKit/LayoutTests/fast/scroll-behavior/overflow-scroll-root-frame-animates.html +++ b/third_party/WebKit/LayoutTests/fast/scroll-behavior/overflow-scroll-root-frame-animates.html
@@ -22,7 +22,7 @@ window.addEventListener("scroll", onWindowScroll); testRunner.layoutAndPaintAsyncThen(function() { - window.eventSender.keyDown('End'); + eventSender.keyDown('End'); }); }
diff --git a/third_party/WebKit/LayoutTests/fast/scroll-behavior/resources/scroll-interruption-test.js b/third_party/WebKit/LayoutTests/fast/scroll-behavior/resources/scroll-interruption-test.js index 94a7567..d9a3baa 100644 --- a/third_party/WebKit/LayoutTests/fast/scroll-behavior/resources/scroll-interruption-test.js +++ b/third_party/WebKit/LayoutTests/fast/scroll-behavior/resources/scroll-interruption-test.js
@@ -164,9 +164,9 @@ function interruptWithTouchScroll(smoothScrollTest) { if (window.eventSender) { - window.eventSender.gestureScrollBegin(smoothScrollTest.innerPoint.x, smoothScrollTest.innerPoint.y); - window.eventSender.gestureScrollUpdate(0, -10); - window.eventSender.gestureScrollEnd(0, 0); + eventSender.gestureScrollBegin(smoothScrollTest.innerPoint.x, smoothScrollTest.innerPoint.y); + eventSender.gestureScrollUpdate(0, -10); + eventSender.gestureScrollEnd(0, 0); } else { document.write("This test does not work in manual mode."); } @@ -198,8 +198,8 @@ function interruptWithWheelScroll(smoothScrollTest) { if (window.eventSender) { - window.eventSender.mouseMoveTo(smoothScrollTest.innerPoint.x, smoothScrollTest.innerPoint.y); - window.eventSender.mouseScrollBy(0, -10); + eventSender.mouseMoveTo(smoothScrollTest.innerPoint.x, smoothScrollTest.innerPoint.y); + eventSender.mouseScrollBy(0, -10); } else { document.write("This test does not work in manual mode."); }
diff --git a/third_party/WebKit/LayoutTests/fast/scroll-behavior/scroll-customization/scrollstate-distribute-to-scroll-chain-descendant.html b/third_party/WebKit/LayoutTests/fast/scroll-behavior/scroll-customization/scrollstate-distribute-to-scroll-chain-descendant.html index 90bc078..dd5b20f 100644 --- a/third_party/WebKit/LayoutTests/fast/scroll-behavior/scroll-customization/scrollstate-distribute-to-scroll-chain-descendant.html +++ b/third_party/WebKit/LayoutTests/fast/scroll-behavior/scroll-customization/scrollstate-distribute-to-scroll-chain-descendant.html
@@ -65,7 +65,7 @@ test(() => { var scrollState = new ScrollState( { deltaX: 100, isDirectManipulation: true}); - window.internals.setScrollChain(scrollState, elements); + internals.setScrollChain(scrollState, elements); scrollState.distributeToScrollChainDescendant(); assert_equals(remainingNumberOfTimesToBeCalled, 0); for (var i = 0; i < elementCount; ++i) { @@ -76,7 +76,7 @@ test(() => { var scrollState = new ScrollState({deltaX: 100, isDirectManipulation: true}); - window.internals.setScrollChain(scrollState, []); + internals.setScrollChain(scrollState, []); assert_equals(0, remainingNumberOfTimesToBeCalled); scrollState.distributeToScrollChainDescendant(); assert_equals(0, remainingNumberOfTimesToBeCalled);
diff --git a/third_party/WebKit/LayoutTests/fast/scroll-behavior/scroll-element-without-overflow.html b/third_party/WebKit/LayoutTests/fast/scroll-behavior/scroll-element-without-overflow.html index 352a31e2..535ea6b6 100644 --- a/third_party/WebKit/LayoutTests/fast/scroll-behavior/scroll-element-without-overflow.html +++ b/third_party/WebKit/LayoutTests/fast/scroll-behavior/scroll-element-without-overflow.html
@@ -2,7 +2,7 @@ <script> window.onload = function() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var element = document.getElementById("noOverflow"); element.scrollTo(10, 20);
diff --git a/third_party/WebKit/LayoutTests/fast/scroll-behavior/smooth-scroll/keyboard-scroll.html b/third_party/WebKit/LayoutTests/fast/scroll-behavior/smooth-scroll/keyboard-scroll.html index a5703a1..232e3147 100644 --- a/third_party/WebKit/LayoutTests/fast/scroll-behavior/smooth-scroll/keyboard-scroll.html +++ b/third_party/WebKit/LayoutTests/fast/scroll-behavior/smooth-scroll/keyboard-scroll.html
@@ -23,7 +23,7 @@ works as intended (tested via virtual suite virtual/threaded/)."); function runTestCase(testCase) { - window.eventSender.keyDown(testCase.key); + eventSender.keyDown(testCase.key); if (window.scrollX == testCase.expectedX && window.scrollY == testCase.expectedY) { testPassed(testCase.key + ' reached target'); startNextTestCase();
diff --git a/third_party/WebKit/LayoutTests/fast/scrolling/fractional-scroll-offset-document.html b/third_party/WebKit/LayoutTests/fast/scrolling/fractional-scroll-offset-document.html index c5bcc63..fce58cd 100644 --- a/third_party/WebKit/LayoutTests/fast/scrolling/fractional-scroll-offset-document.html +++ b/third_party/WebKit/LayoutTests/fast/scrolling/fractional-scroll-offset-document.html
@@ -35,9 +35,9 @@ function runTest() { if (window.eventSender) { - if (window.internals.runtimeFlags.fractionalScrollOffsetsEnabled) { + if (internals.runtimeFlags.fractionalScrollOffsetsEnabled) { debug("fractional scroll offset mode"); - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); useIntegerScrollOffset = true; } scroll();
diff --git a/third_party/WebKit/LayoutTests/fast/scrolling/fractional-scroll-offset-fixed-position-non-composited.html b/third_party/WebKit/LayoutTests/fast/scrolling/fractional-scroll-offset-fixed-position-non-composited.html index f1477df..f58727a 100644 --- a/third_party/WebKit/LayoutTests/fast/scrolling/fractional-scroll-offset-fixed-position-non-composited.html +++ b/third_party/WebKit/LayoutTests/fast/scrolling/fractional-scroll-offset-fixed-position-non-composited.html
@@ -26,7 +26,7 @@ <script> function runTest() { - window.internals.settings.setPreferCompositingToLCDTextEnabled(false); + internals.settings.setPreferCompositingToLCDTextEnabled(false); window.scrollTo(0, 1.5); document.getElementById('header').innerHTML = "scroll offset is " + window.scrollY; }
diff --git a/third_party/WebKit/LayoutTests/fast/scrolling/hover-during-scroll.html b/third_party/WebKit/LayoutTests/fast/scrolling/hover-during-scroll.html index ec78794..9472ad5b 100644 --- a/third_party/WebKit/LayoutTests/fast/scrolling/hover-during-scroll.html +++ b/third_party/WebKit/LayoutTests/fast/scrolling/hover-during-scroll.html
@@ -93,8 +93,8 @@ if (!window.testRunner || !window.eventSender) return; - if (!window.internals || !window.internals.setIsCursorVisible) { - debug("window.internals.setIsCursorVisible is required to run this test."); + if (!window.internals || !internals.setIsCursorVisible) { + debug("internals.setIsCursorVisible is required to run this test."); return; }
diff --git a/third_party/WebKit/LayoutTests/fast/scrolling/keyboard-scroll-page-scale.html b/third_party/WebKit/LayoutTests/fast/scrolling/keyboard-scroll-page-scale.html index 2b12835..7f9e749b 100644 --- a/third_party/WebKit/LayoutTests/fast/scrolling/keyboard-scroll-page-scale.html +++ b/third_party/WebKit/LayoutTests/fast/scrolling/keyboard-scroll-page-scale.html
@@ -14,19 +14,19 @@ function testArrowKeys() { // Test up and down. - window.eventSender.keyDown('ArrowDown'); + eventSender.keyDown('ArrowDown'); shouldBeGreaterThan('internals.visualViewportScrollY()', '0'); numScrolls = Math.ceil((pageHeight - internals.visualViewportHeight()) / internals.visualViewportScrollY()); for(var i = 0; i < numScrolls - 1; ++i) { - window.eventSender.keyDown('ArrowDown'); + eventSender.keyDown('ArrowDown'); } shouldBe('internals.visualViewportScrollY()', 'pageHeight - internals.visualViewportHeight()'); for(var i = 0; i < numScrolls; ++i) { - window.eventSender.keyDown('ArrowUp'); + eventSender.keyDown('ArrowUp'); } shouldBe('internals.visualViewportScrollY()', '0'); @@ -34,17 +34,17 @@ // Now test left and right. reset(); - window.eventSender.keyDown('ArrowRight'); + eventSender.keyDown('ArrowRight'); numScrolls = Math.ceil((pageWidth - internals.visualViewportWidth()) / internals.visualViewportScrollX()); for(var i = 0; i < numScrolls - 1; ++i) { - window.eventSender.keyDown('ArrowRight'); + eventSender.keyDown('ArrowRight'); } shouldBe('internals.visualViewportScrollX()', 'pageWidth - internals.visualViewportWidth()'); for(var i = 0; i < numScrolls; ++i) { - window.eventSender.keyDown('ArrowLeft'); + eventSender.keyDown('ArrowLeft'); } shouldBe('internals.visualViewportScrollX()', '0'); @@ -52,29 +52,29 @@ function testHomeEnd() { - window.eventSender.keyDown('End'); + eventSender.keyDown('End'); shouldBe('window.scrollY', 'pageHeight - window.innerHeight'); shouldBe('internals.visualViewportScrollY()', 'pageHeight - internals.visualViewportHeight()'); - window.eventSender.keyDown('Home'); + eventSender.keyDown('Home'); shouldBe('window.scrollY', '0'); shouldBe('internals.visualViewportScrollY()', '0'); } function testPageUpDown() { - window.eventSender.keyDown('PageDown'); + eventSender.keyDown('PageDown'); shouldBeGreaterThan('internals.visualViewportScrollY()', '0'); numScrolls = Math.ceil((pageHeight - internals.visualViewportHeight()) / internals.visualViewportScrollY()); for(var i = 0; i < numScrolls - 1; ++i) { - window.eventSender.keyDown('PageDown'); + eventSender.keyDown('PageDown'); } shouldBe('internals.visualViewportScrollY()', 'pageHeight - internals.visualViewportHeight()'); for(var i = 0; i < numScrolls; ++i) { - window.eventSender.keyDown('PageUp'); + eventSender.keyDown('PageUp'); } shouldBe('internals.visualViewportScrollY()', '0'); @@ -82,19 +82,19 @@ function testSpacebar() { - window.eventSender.keyDown(' '); + eventSender.keyDown(' '); shouldBeGreaterThan('internals.visualViewportScrollY()', '0'); numScrolls = Math.ceil((pageHeight - internals.visualViewportHeight()) / internals.visualViewportScrollY()); for(var i = 0; i < numScrolls - 1; ++i) { - window.eventSender.keyDown(' '); + eventSender.keyDown(' '); } shouldBe('internals.visualViewportScrollY()', 'pageHeight - internals.visualViewportHeight()'); for(var i = 0; i < numScrolls; ++i) { - window.eventSender.keyDown(' ', 'shiftKey'); + eventSender.keyDown(' ', 'shiftKey'); } shouldBe('internals.visualViewportScrollY()', '0');
diff --git a/third_party/WebKit/LayoutTests/fast/scrolling/resources/scrollable-area.js b/third_party/WebKit/LayoutTests/fast/scrolling/resources/scrollable-area.js index 43319c5..743441f 100644 --- a/third_party/WebKit/LayoutTests/fast/scrolling/resources/scrollable-area.js +++ b/third_party/WebKit/LayoutTests/fast/scrolling/resources/scrollable-area.js
@@ -1,7 +1,7 @@ var referenceResult = 0; var referenceResult2 = 0; var referenceIntermediateFunction = 0; -var isDRT = window.testRunner && window.internals && window.internals.numberOfScrollableAreas; +var isDRT = window.testRunner && window.internals && internals.numberOfScrollableAreas; function runTest(firstResult, intermediateFunction, secondResult) {
diff --git a/third_party/WebKit/LayoutTests/fast/scrolling/scroll-without-document-element-renderer.html b/third_party/WebKit/LayoutTests/fast/scrolling/scroll-without-document-element-renderer.html index 9d14ea0..51df3bc2 100644 --- a/third_party/WebKit/LayoutTests/fast/scrolling/scroll-without-document-element-renderer.html +++ b/third_party/WebKit/LayoutTests/fast/scrolling/scroll-without-document-element-renderer.html
@@ -2,13 +2,13 @@ <script> window.onload = function() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.documentElement.style.display = "none"; // Zoom so that the window becomes scrollable. if (window.internals) - window.internals.setPageScaleFactor(2.0); + internals.setPageScaleFactor(2.0); window.scrollBy(0, 1);
diff --git a/third_party/WebKit/LayoutTests/fast/scrolling/scroll-without-document-element.html b/third_party/WebKit/LayoutTests/fast/scrolling/scroll-without-document-element.html index ec86843..a9f54eb 100644 --- a/third_party/WebKit/LayoutTests/fast/scrolling/scroll-without-document-element.html +++ b/third_party/WebKit/LayoutTests/fast/scrolling/scroll-without-document-element.html
@@ -2,14 +2,14 @@ <script> window.onload = function() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); while (document.firstChild) document.removeChild(document.firstChild); // Zoom so that the window becomes scrollable. if (window.internals) - window.internals.setPageScaleFactor(2.0); + internals.setPageScaleFactor(2.0); window.scrollBy(0, 1); document.open();
diff --git a/third_party/WebKit/LayoutTests/fast/scrolling/scrollbar-tickmarks-hittest.html b/third_party/WebKit/LayoutTests/fast/scrolling/scrollbar-tickmarks-hittest.html index 9e1deb55..73dda35 100644 --- a/third_party/WebKit/LayoutTests/fast/scrolling/scrollbar-tickmarks-hittest.html +++ b/third_party/WebKit/LayoutTests/fast/scrolling/scrollbar-tickmarks-hittest.html
@@ -6,7 +6,7 @@ <script> description('Checks that clicking on scrollbar works when tickmarks are added.'); if (window.internals) { - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.runtimeFlags.overlayScrollbarsEnabled = true; } onload = function() @@ -17,7 +17,7 @@ var elt = document.getElementById('elt'); range.selectNodeContents(elt); if (window.internals) { - window.internals.addTextMatchMarker(range, 'kActive'); + internals.addTextMatchMarker(range, 'kActive'); } if (window.eventSender) { eventSender.mouseMoveTo(window.innerWidth - 1, 10);
diff --git a/third_party/WebKit/LayoutTests/fast/scrolling/scrollbar-tickmarks-styled-after-onload.html b/third_party/WebKit/LayoutTests/fast/scrolling/scrollbar-tickmarks-styled-after-onload.html index 99e8654d..01e69a93 100644 --- a/third_party/WebKit/LayoutTests/fast/scrolling/scrollbar-tickmarks-styled-after-onload.html +++ b/third_party/WebKit/LayoutTests/fast/scrolling/scrollbar-tickmarks-styled-after-onload.html
@@ -25,7 +25,7 @@ var elt = document.getElementById('elt'); range.selectNodeContents(elt); if (window.internals) { - window.internals.addTextMatchMarker(range, 'kActive'); + internals.addTextMatchMarker(range, 'kActive'); } if (window.testRunner) testRunner.dumpAsTextWithPixelResults();
diff --git a/third_party/WebKit/LayoutTests/fast/scrolling/scrollbar-tickmarks-styled.html b/third_party/WebKit/LayoutTests/fast/scrolling/scrollbar-tickmarks-styled.html index 9fd6263..803857fc 100644 --- a/third_party/WebKit/LayoutTests/fast/scrolling/scrollbar-tickmarks-styled.html +++ b/third_party/WebKit/LayoutTests/fast/scrolling/scrollbar-tickmarks-styled.html
@@ -24,7 +24,7 @@ var elt = document.getElementById('elt'); range.selectNodeContents(elt); if (window.internals) { - window.internals.addTextMatchMarker(range, 'kActive'); + internals.addTextMatchMarker(range, 'kActive'); } if (window.testRunner) testRunner.dumpAsTextWithPixelResults();
diff --git a/third_party/WebKit/LayoutTests/fast/scrolling/scrolling-apis-subpixel.html b/third_party/WebKit/LayoutTests/fast/scrolling/scrolling-apis-subpixel.html index a8029dd9..7fec007 100644 --- a/third_party/WebKit/LayoutTests/fast/scrolling/scrolling-apis-subpixel.html +++ b/third_party/WebKit/LayoutTests/fast/scrolling/scrolling-apis-subpixel.html
@@ -74,13 +74,13 @@ // By default we don't yet get fractional scroll offsets with more // granularity than the page zoom factor. -window.internals.settings.setPreferCompositingToLCDTextEnabled(false); +internals.settings.setPreferCompositingToLCDTextEnabled(false); testScroll(4.2, 4); testPageZoom(2); -if (window.internals.runtimeFlags.fractionalScrollOffsetsEnabled) { +if (internals.runtimeFlags.fractionalScrollOffsetsEnabled) { debug("Full fractional scroll offsets enabled"); - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); testScroll(4.2, 4.2); testPageZoom(2); }
diff --git a/third_party/WebKit/LayoutTests/fast/serviceworker/serviceworker-interface-expected.txt b/third_party/WebKit/LayoutTests/fast/serviceworker/serviceworker-interface-expected.txt deleted file mode 100644 index 4100efd..0000000 --- a/third_party/WebKit/LayoutTests/fast/serviceworker/serviceworker-interface-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL ServiceWorker interface Test bug: need to pass exception to assert_throws() -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/fast/serviceworker/serviceworker-interface.html b/third_party/WebKit/LayoutTests/fast/serviceworker/serviceworker-interface.html index 9a95bc0..6a945cc 100644 --- a/third_party/WebKit/LayoutTests/fast/serviceworker/serviceworker-interface.html +++ b/third_party/WebKit/LayoutTests/fast/serviceworker/serviceworker-interface.html
@@ -5,12 +5,12 @@ test(function() { assert_true('ServiceWorker' in window, 'the constructor should be defined'); - assert_throws(null, function() { new ServiceWorker(); }, + assert_throws(new TypeError, function() { new ServiceWorker(); }, 'the constructor should not be callable with "new"'); - assert_throws(null, function() { ServiceWorker(); }, + assert_throws(new TypeError, function() { ServiceWorker(); }, 'the constructor should not be callable'); assert_equals(Object.getPrototypeOf(ServiceWorker.prototype), - Worker.prototype, - 'ServiceWorker should extend Worker'); + EventTarget.prototype, + 'ServiceWorker should extend EventTarget'); }, 'ServiceWorker interface'); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/serviceworker/serviceworkercontainer-interface-expected.txt b/third_party/WebKit/LayoutTests/fast/serviceworker/serviceworkercontainer-interface-expected.txt deleted file mode 100644 index b0dea7af..0000000 --- a/third_party/WebKit/LayoutTests/fast/serviceworker/serviceworkercontainer-interface-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL ServiceWorkerContainer interface Test bug: need to pass exception to assert_throws() -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/fast/serviceworker/serviceworkercontainer-interface.html b/third_party/WebKit/LayoutTests/fast/serviceworker/serviceworkercontainer-interface.html index 6cb46359..88e28ce 100644 --- a/third_party/WebKit/LayoutTests/fast/serviceworker/serviceworkercontainer-interface.html +++ b/third_party/WebKit/LayoutTests/fast/serviceworker/serviceworkercontainer-interface.html
@@ -12,9 +12,9 @@ test(function() { assert_true('ServiceWorkerContainer' in window, 'the constructor should be defined'); - assert_throws(null, function() { new ServiceWorkerContainer(); }, + assert_throws(new TypeError, function() { new ServiceWorkerContainer(); }, 'the constructor should not be callable with "new"'); - assert_throws(null, function() { ServiceWorkerContainer(); }, + assert_throws(new TypeError, function() { ServiceWorkerContainer(); }, 'the constructor should not be callable'); }, 'ServiceWorkerContainer interface'); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-boundary-events.html b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-boundary-events.html index 0bbd4339..689768e 100644 --- a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-boundary-events.html +++ b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-boundary-events.html
@@ -15,7 +15,7 @@ testRunner.waitUntilDone(); if (window.internals) - window.internals.enableMockSpeechSynthesizer(window); + internals.enableMockSpeechSynthesizer(window); window.jsTestIsAsync = true;
diff --git a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-cancel-twice.html b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-cancel-twice.html index 64d82de38..b3819416 100644 --- a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-cancel-twice.html +++ b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-cancel-twice.html
@@ -12,7 +12,7 @@ description("This tests that cancelling an utterance a second time after garbage collection doesn't crash under ASAN."); if (window.internals) - window.internals.enableMockSpeechSynthesizer(window); + internals.enableMockSpeechSynthesizer(window); speechSynthesis.speak(new SpeechSynthesisUtterance("Hello")); speechSynthesis.cancel();
diff --git a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-cancel.html b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-cancel.html index 82825ed5..70ba83d 100644 --- a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-cancel.html +++ b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-cancel.html
@@ -15,7 +15,7 @@ testRunner.waitUntilDone(); if (window.internals) - window.internals.enableMockSpeechSynthesizer(window); + internals.enableMockSpeechSynthesizer(window); window.jsTestIsAsync = true;
diff --git a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-gc-utterance-crash.html b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-gc-utterance-crash.html index 0e9fc31..0a6355ad 100644 --- a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-gc-utterance-crash.html +++ b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-gc-utterance-crash.html
@@ -10,7 +10,7 @@ <script> if (window.internals) - window.internals.enableMockSpeechSynthesizer(window); + internals.enableMockSpeechSynthesizer(window); description("This tests that there isn't a crash if the utterance object is garbage-collected before speaking finishes.");
diff --git a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-mock-no-crash.html b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-mock-no-crash.html index a5d93b7..21812363 100644 --- a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-mock-no-crash.html +++ b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-mock-no-crash.html
@@ -7,7 +7,7 @@ description("This tests that the mock speech synthesizer is well behaved when attempting to pause/resume without first speaking."); if (window.internals) - window.internals.enableMockSpeechSynthesizer(window); + internals.enableMockSpeechSynthesizer(window); shouldBeUndefined("speechSynthesis.pause()"); shouldBeUndefined("speechSynthesis.resume()");
diff --git a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-pause-resume.html b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-pause-resume.html index ce43df3d..4da1d9ce 100644 --- a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-pause-resume.html +++ b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-pause-resume.html
@@ -14,7 +14,7 @@ if (window.testRunner) testRunner.waitUntilDone(); if (window.internals) - window.internals.enableMockSpeechSynthesizer(window); + internals.enableMockSpeechSynthesizer(window); window.jsTestIsAsync = true;
diff --git a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-speak-invalid-argument-throws.html b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-speak-invalid-argument-throws.html index 5040513..20de65a 100644 --- a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-speak-invalid-argument-throws.html +++ b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-speak-invalid-argument-throws.html
@@ -10,7 +10,7 @@ <script> if (window.internals) - window.internals.enableMockSpeechSynthesizer(window); + internals.enableMockSpeechSynthesizer(window); description("This tests that passing an argument other than a SpeechSynthesisUtterance to speechSynthesis.speak throws a TypeError exception.");
diff --git a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-speak-multiple.html b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-speak-multiple.html index 212d05c..887e88dd 100644 --- a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-speak-multiple.html +++ b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-speak-multiple.html
@@ -8,7 +8,7 @@ description("This tests that multiple speak utterances are handled in sequence."); if (window.internals) - window.internals.enableMockSpeechSynthesizer(window); + internals.enableMockSpeechSynthesizer(window); if (window.testRunner) testRunner.waitUntilDone();
diff --git a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-speak.html b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-speak.html index dfb993e..51debba 100644 --- a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-speak.html +++ b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-speak.html
@@ -10,7 +10,7 @@ <script> if (window.internals) - window.internals.enableMockSpeechSynthesizer(window); + internals.enableMockSpeechSynthesizer(window); description("This tests that the basic mechanisms of speaking text work, including sending the job and receiving the callback.");
diff --git a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-utterance-basics.html b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-utterance-basics.html index 3bd35cf..5ec406e 100644 --- a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-utterance-basics.html +++ b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-utterance-basics.html
@@ -5,7 +5,7 @@ <script> setup(function() { if (window.internals) - window.internals.enableMockSpeechSynthesizer(window); + internals.enableMockSpeechSynthesizer(window); }); test(function() {
diff --git a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-utterance-uses-voice.html b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-utterance-uses-voice.html index 97ef1b3..737a13c 100644 --- a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-utterance-uses-voice.html +++ b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-utterance-uses-voice.html
@@ -11,7 +11,7 @@ description("This tests that we can get synthesizer voices on the Mac"); if (window.internals) - window.internals.enableMockSpeechSynthesizer(window); + internals.enableMockSpeechSynthesizer(window); if (window.testRunner) testRunner.waitUntilDone();
diff --git a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-voices-changed.html b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-voices-changed.html index 176542a5..0496ec55 100644 --- a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-voices-changed.html +++ b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-voices-changed.html
@@ -16,7 +16,7 @@ debug('Initially, there are ' + list.length + ' voices.'); if (window.internals) - window.internals.enableMockSpeechSynthesizer(window); + internals.enableMockSpeechSynthesizer(window); list = speechSynthesis.getVoices(); debug('Now there are ' + list.length + ' voices.');
diff --git a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-voices.html b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-voices.html index 5731ceb1..e6feb25 100644 --- a/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-voices.html +++ b/third_party/WebKit/LayoutTests/fast/speechsynthesis/speech-synthesis-voices.html
@@ -9,7 +9,7 @@ <script> if (window.internals) - window.internals.enableMockSpeechSynthesizer(window); + internals.enableMockSpeechSynthesizer(window); description("This tests that we can get synthesizer voices on the Mac");
diff --git a/third_party/WebKit/LayoutTests/fast/table/simple_paint.html b/third_party/WebKit/LayoutTests/fast/table/simple_paint.html index faecb88..3252f6b 100644 --- a/third_party/WebKit/LayoutTests/fast/table/simple_paint.html +++ b/third_party/WebKit/LayoutTests/fast/table/simple_paint.html
@@ -8,14 +8,14 @@ </style> <script> if (window.testRunner) { - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); } function repaintTest() { var testCell = document.getElementById("testcell"); var offset = document.body.offsetTop; testCell.style.backgroundColor = "green"; if (window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } } </script>
diff --git a/third_party/WebKit/LayoutTests/fast/table/table-size-integer-overflow.html b/third_party/WebKit/LayoutTests/fast/table/table-size-integer-overflow.html index 8ca40be..507a7fa 100644 --- a/third_party/WebKit/LayoutTests/fast/table/table-size-integer-overflow.html +++ b/third_party/WebKit/LayoutTests/fast/table/table-size-integer-overflow.html
@@ -3,7 +3,7 @@ <script> window.onload = function() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var cell = document.getElementById("cell"); var text = cell.firstElementChild;
diff --git a/third_party/WebKit/LayoutTests/fast/text-autosizing/removing-clusters-while-disabled.html b/third_party/WebKit/LayoutTests/fast/text-autosizing/removing-clusters-while-disabled.html index 740f563..2f95b6a 100644 --- a/third_party/WebKit/LayoutTests/fast/text-autosizing/removing-clusters-while-disabled.html +++ b/third_party/WebKit/LayoutTests/fast/text-autosizing/removing-clusters-while-disabled.html
@@ -16,7 +16,7 @@ function enableAutosizing(enabled) { if (window.internals) - window.internals.settings.setTextAutosizingEnabled(enabled); + internals.settings.setTextAutosizingEnabled(enabled); } function addCluster() {
diff --git a/third_party/WebKit/LayoutTests/fast/text-autosizing/resources/autosizingTest.js b/third_party/WebKit/LayoutTests/fast/text-autosizing/resources/autosizingTest.js index f0e30d18..c05de8d 100644 --- a/third_party/WebKit/LayoutTests/fast/text-autosizing/resources/autosizingTest.js +++ b/third_party/WebKit/LayoutTests/fast/text-autosizing/resources/autosizingTest.js
@@ -1,16 +1,16 @@ function setWindowSizeOverride(width, height) { if (window.internals) - window.internals.settings.setTextAutosizingWindowSizeOverride(width, height); + internals.settings.setTextAutosizingWindowSizeOverride(width, height); } function setFontScaleFactor(scale) { if (window.internals) - window.internals.settings.setAccessibilityFontScaleFactor(scale); + internals.settings.setAccessibilityFontScaleFactor(scale); } function initAutosizingTest() { if (window.internals) { - window.internals.settings.setTextAutosizingEnabled(true); + internals.settings.setTextAutosizingEnabled(true); setWindowSizeOverride(320, 480); } else if (window.console && console.warn) { console.warn("This test depends on Text Autosizing being enabled. Run with content shell "
diff --git a/third_party/WebKit/LayoutTests/fast/text-autosizing/style-recalc-no-layout.html b/third_party/WebKit/LayoutTests/fast/text-autosizing/style-recalc-no-layout.html index f60a983..bbd3a36 100644 --- a/third_party/WebKit/LayoutTests/fast/text-autosizing/style-recalc-no-layout.html +++ b/third_party/WebKit/LayoutTests/fast/text-autosizing/style-recalc-no-layout.html
@@ -20,14 +20,14 @@ document.body.offsetTop; if (window.internals) - shouldBe("window.internals.needsLayoutCount()", "0", true); + shouldBe("internals.needsLayoutCount()", "0", true); // Should cause a repaint but no layout. document.querySelector('#autosize').style.color = 'green'; if (window.internals) { - shouldBe("window.internals.updateStyleAndReturnAffectedElementCount()", "1", true); - shouldBe("window.internals.needsLayoutCount()", "0", true); + shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "1", true); + shouldBe("internals.needsLayoutCount()", "0", true); } </script> </body>
diff --git a/third_party/WebKit/LayoutTests/fast/text/bdi-get-direction-crash.html b/third_party/WebKit/LayoutTests/fast/text/bdi-get-direction-crash.html index 083dae45..3aca7d1 100644 --- a/third_party/WebKit/LayoutTests/fast/text/bdi-get-direction-crash.html +++ b/third_party/WebKit/LayoutTests/fast/text/bdi-get-direction-crash.html
@@ -2,7 +2,7 @@ <html> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> <body> <pre dir="auto"><bdi>Run test:
diff --git a/third_party/WebKit/LayoutTests/fast/text/caps-lock-indicator-disabled.html b/third_party/WebKit/LayoutTests/fast/text/caps-lock-indicator-disabled.html index e92381e..30c6314 100644 --- a/third_party/WebKit/LayoutTests/fast/text/caps-lock-indicator-disabled.html +++ b/third_party/WebKit/LayoutTests/fast/text/caps-lock-indicator-disabled.html
@@ -3,6 +3,6 @@ <input id="password" type="password"> <script> if (window.internals) - window.internals.setCapsLockState(false); + internals.setCapsLockState(false); password.focus(); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/text/caps-lock-indicator-enabled-rtl.html b/third_party/WebKit/LayoutTests/fast/text/caps-lock-indicator-enabled-rtl.html index b7fcff92..d39fed75 100644 --- a/third_party/WebKit/LayoutTests/fast/text/caps-lock-indicator-enabled-rtl.html +++ b/third_party/WebKit/LayoutTests/fast/text/caps-lock-indicator-enabled-rtl.html
@@ -3,6 +3,6 @@ <input id="password" type="password" dir="rtl"> <script> if (window.internals) - window.internals.setCapsLockState(true); + internals.setCapsLockState(true); password.focus(); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/text/caps-lock-indicator-enabled.html b/third_party/WebKit/LayoutTests/fast/text/caps-lock-indicator-enabled.html index 7d6ae17..2b93ce7 100644 --- a/third_party/WebKit/LayoutTests/fast/text/caps-lock-indicator-enabled.html +++ b/third_party/WebKit/LayoutTests/fast/text/caps-lock-indicator-enabled.html
@@ -3,6 +3,6 @@ <input id="password" type="password"> <script> if (window.internals) - window.internals.setCapsLockState(true); + internals.setCapsLockState(true); password.focus(); </script>
diff --git a/third_party/WebKit/LayoutTests/fast/text/descent-clip-in-scaled-page-expected.html b/third_party/WebKit/LayoutTests/fast/text/descent-clip-in-scaled-page-expected.html index f28bfbcd..f333417da 100644 --- a/third_party/WebKit/LayoutTests/fast/text/descent-clip-in-scaled-page-expected.html +++ b/third_party/WebKit/LayoutTests/fast/text/descent-clip-in-scaled-page-expected.html
@@ -15,10 +15,10 @@ } </style> <script> - if (window.testRunner && window.testRunner.setTextSubpixelPositioning) - window.testRunner.setTextSubpixelPositioning(true); + if (window.testRunner && testRunner.setTextSubpixelPositioning) + testRunner.setTextSubpixelPositioning(true); if (window.internals) - window.internals.setPageScaleFactor(1.7); + internals.setPageScaleFactor(1.7); </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/fast/text/descent-clip-in-scaled-page.html b/third_party/WebKit/LayoutTests/fast/text/descent-clip-in-scaled-page.html index 04ab55b..ff8993b 100644 --- a/third_party/WebKit/LayoutTests/fast/text/descent-clip-in-scaled-page.html +++ b/third_party/WebKit/LayoutTests/fast/text/descent-clip-in-scaled-page.html
@@ -22,10 +22,10 @@ } </style> <script> - if (window.testRunner && window.testRunner.setTextSubpixelPositioning) - window.testRunner.setTextSubpixelPositioning(true); + if (window.testRunner && testRunner.setTextSubpixelPositioning) + testRunner.setTextSubpixelPositioning(true); if (window.internals) - window.internals.setPageScaleFactor(1.7); + internals.setPageScaleFactor(1.7); </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/fast/text/international/font-fallback-to-common-script.html b/third_party/WebKit/LayoutTests/fast/text/international/font-fallback-to-common-script.html index e44c4fc..48e3ffb 100644 --- a/third_party/WebKit/LayoutTests/fast/text/international/font-fallback-to-common-script.html +++ b/third_party/WebKit/LayoutTests/fast/text/international/font-fallback-to-common-script.html
@@ -3,11 +3,11 @@ <head> <script> if (window.internals) { - window.internals.settings.setStandardFontFamily("Times", "Hans"); - window.internals.settings.setStandardFontFamily("", "Hans"); - window.internals.settings.setStandardFontFamily("Ahem", "Zyyy"); + internals.settings.setStandardFontFamily("Times", "Hans"); + internals.settings.setStandardFontFamily("", "Hans"); + internals.settings.setStandardFontFamily("Ahem", "Zyyy"); - window.internals.settings.setSansSerifFontFamily("Ahem", "Zyyy"); + internals.settings.setSansSerifFontFamily("Ahem", "Zyyy"); } </script> </head>
diff --git a/third_party/WebKit/LayoutTests/fast/text/international/jpan-script-equivalence.html b/third_party/WebKit/LayoutTests/fast/text/international/jpan-script-equivalence.html index 5d5b750..aac34ed 100644 --- a/third_party/WebKit/LayoutTests/fast/text/international/jpan-script-equivalence.html +++ b/third_party/WebKit/LayoutTests/fast/text/international/jpan-script-equivalence.html
@@ -3,8 +3,8 @@ <head> <script> if (window.internals) { - window.internals.settings.setStandardFontFamily("Ahem", "Hrkt"); - window.internals.settings.setStandardFontFamily("Ahem", "Hang"); + internals.settings.setStandardFontFamily("Ahem", "Hrkt"); + internals.settings.setStandardFontFamily("Ahem", "Hang"); } </script> </head>
diff --git a/third_party/WebKit/LayoutTests/fast/text/international/lang-sensitive-fonts-xml.xhtml b/third_party/WebKit/LayoutTests/fast/text/international/lang-sensitive-fonts-xml.xhtml index 8c7e328..2857ccd 100644 --- a/third_party/WebKit/LayoutTests/fast/text/international/lang-sensitive-fonts-xml.xhtml +++ b/third_party/WebKit/LayoutTests/fast/text/international/lang-sensitive-fonts-xml.xhtml
@@ -4,8 +4,8 @@ <head> <script> if (window.internals) { - window.internals.settings.setStandardFontFamily("Ahem", "Hans"); - window.internals.settings.setFantasyFontFamily("Ahem", "Hans"); + internals.settings.setStandardFontFamily("Ahem", "Hans"); + internals.settings.setFantasyFontFamily("Ahem", "Hans"); } </script> </head>
diff --git a/third_party/WebKit/LayoutTests/fast/text/international/lang-sensitive-fonts.html b/third_party/WebKit/LayoutTests/fast/text/international/lang-sensitive-fonts.html index 1212358..62c1f73 100644 --- a/third_party/WebKit/LayoutTests/fast/text/international/lang-sensitive-fonts.html +++ b/third_party/WebKit/LayoutTests/fast/text/international/lang-sensitive-fonts.html
@@ -3,8 +3,8 @@ <head> <script> if (window.internals) { - window.internals.settings.setStandardFontFamily("Ahem", "Hans"); - window.internals.settings.setFantasyFontFamily("Ahem", "Hans"); + internals.settings.setStandardFontFamily("Ahem", "Hans"); + internals.settings.setFantasyFontFamily("Ahem", "Hans"); } </script> </head>
diff --git a/third_party/WebKit/LayoutTests/fast/text/international/locale-sensitive-fonts.html b/third_party/WebKit/LayoutTests/fast/text/international/locale-sensitive-fonts.html index 6a9e2a15..13c2b8e 100644 --- a/third_party/WebKit/LayoutTests/fast/text/international/locale-sensitive-fonts.html +++ b/third_party/WebKit/LayoutTests/fast/text/international/locale-sensitive-fonts.html
@@ -3,8 +3,8 @@ <head> <script> if (window.internals) { - window.internals.settings.setStandardFontFamily("Ahem", "Hans"); - window.internals.settings.setFantasyFontFamily("Ahem", "Hans"); + internals.settings.setStandardFontFamily("Ahem", "Hans"); + internals.settings.setFantasyFontFamily("Ahem", "Hans"); } </script> </head>
diff --git a/third_party/WebKit/LayoutTests/fast/text/selection/content-language-font-selection.html b/third_party/WebKit/LayoutTests/fast/text/selection/content-language-font-selection.html index 76b73d5..72a3e306 100644 --- a/third_party/WebKit/LayoutTests/fast/text/selection/content-language-font-selection.html +++ b/third_party/WebKit/LayoutTests/fast/text/selection/content-language-font-selection.html
@@ -4,7 +4,7 @@ <meta http-equiv="content-language" content="zh-TW"> <script> if (window.internals) - window.internals.settings.setStandardFontFamily("Ahem", "Hant"); + internals.settings.setStandardFontFamily("Ahem", "Hant"); </script> <title>Test font selection based on content-language</title> </head>
diff --git a/third_party/WebKit/LayoutTests/fast/text/selection/content-language-with-subtags.html b/third_party/WebKit/LayoutTests/fast/text/selection/content-language-with-subtags.html index c996a35..8e93a3f 100644 --- a/third_party/WebKit/LayoutTests/fast/text/selection/content-language-with-subtags.html +++ b/third_party/WebKit/LayoutTests/fast/text/selection/content-language-with-subtags.html
@@ -4,7 +4,7 @@ <meta http-equiv="content-language" content="zh_tw_foobar"> <script> if (window.internals) - window.internals.settings.setStandardFontFamily("Ahem", "Hant"); + internals.settings.setStandardFontFamily("Ahem", "Hant"); </script> <title>Test font selection based on content-language</title> </head>
diff --git a/third_party/WebKit/LayoutTests/fast/text/selection/hebrew-selection.html b/third_party/WebKit/LayoutTests/fast/text/selection/hebrew-selection.html index 8ff8da7..bb0d0dd 100644 --- a/third_party/WebKit/LayoutTests/fast/text/selection/hebrew-selection.html +++ b/third_party/WebKit/LayoutTests/fast/text/selection/hebrew-selection.html
@@ -17,10 +17,10 @@ var target = document.getElementById("target"); if (window.eventSender) { - window.eventSender.mouseMoveTo(target.offsetLeft + 5, target.offsetTop + 5); - window.eventSender.mouseDown(); - window.eventSender.mouseMoveTo(target.offsetLeft + 5 + width / 2, target.offsetTop + 5); - window.eventSender.mouseUp(); + eventSender.mouseMoveTo(target.offsetLeft + 5, target.offsetTop + 5); + eventSender.mouseDown(); + eventSender.mouseMoveTo(target.offsetLeft + 5 + width / 2, target.offsetTop + 5); + eventSender.mouseUp(); } </script> </body>
diff --git a/third_party/WebKit/LayoutTests/fast/text/selection/international-iteration-simple-text.html b/third_party/WebKit/LayoutTests/fast/text/selection/international-iteration-simple-text.html index 9eb0aa6..21765044 100644 --- a/third_party/WebKit/LayoutTests/fast/text/selection/international-iteration-simple-text.html +++ b/third_party/WebKit/LayoutTests/fast/text/selection/international-iteration-simple-text.html
@@ -9,7 +9,7 @@ </p> <script> if (window['testRunner']) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var xs=[ "el0=document.createElementNS('http://www.w3.org/2000/svg', 'svg'); document.body.appendChild(el0); ",
diff --git a/third_party/WebKit/LayoutTests/fast/text/selection/khmer-selection.html b/third_party/WebKit/LayoutTests/fast/text/selection/khmer-selection.html index 74e0b08..4a6ea939 100644 --- a/third_party/WebKit/LayoutTests/fast/text/selection/khmer-selection.html +++ b/third_party/WebKit/LayoutTests/fast/text/selection/khmer-selection.html
@@ -6,14 +6,14 @@ <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script> function main() { - window.eventSender.mouseMoveTo(5, 8); - window.eventSender.mouseDown(); + eventSender.mouseMoveTo(5, 8); + eventSender.mouseDown(); for (var x = 5; x < 600; x += 5) { - window.eventSender.mouseMoveTo(x, 8); + eventSender.mouseMoveTo(x, 8); } - window.eventSender.mouseUp(); + eventSender.mouseUp(); } </script> </head>
diff --git a/third_party/WebKit/LayoutTests/fast/text/selection/reset-drag-on-mouse-down.html b/third_party/WebKit/LayoutTests/fast/text/selection/reset-drag-on-mouse-down.html index 2fefb78..86d862a5 100644 --- a/third_party/WebKit/LayoutTests/fast/text/selection/reset-drag-on-mouse-down.html +++ b/third_party/WebKit/LayoutTests/fast/text/selection/reset-drag-on-mouse-down.html
@@ -3,7 +3,7 @@ if (!window.testRunner) return; - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); if (-1 == document.location.href.indexOf("?second")) { firstLoad(); @@ -13,7 +13,7 @@ } function firstLoad() { - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); var link_x = document.getElementById("link").offsetLeft; var link_y = document.getElementById("link").offsetTop; @@ -44,7 +44,7 @@ var result = range.toString().length > 0 ? "SUCCESS" : "FAILED"; document.getElementById("result").innerHTML = result; - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script> <p>Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=16479">bug
diff --git a/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-ltr.html b/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-ltr.html index b47b2af6..5390af3 100644 --- a/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-ltr.html +++ b/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-ltr.html
@@ -16,8 +16,8 @@ <div id="test"></div> </section> <script> - if (window.testRunner && window.testRunner.setTextSubpixelPositioning) - window.testRunner.setTextSubpixelPositioning(true); + if (window.testRunner && testRunner.setTextSubpixelPositioning) + testRunner.setTextSubpixelPositioning(true); var PANGRAM = 'Pack my box with five dozen liquor jugs.'; var results = runTest(document.getElementById('test'), PANGRAM);
diff --git a/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-pixel.html b/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-pixel.html index dec5329b..1268a390 100644 --- a/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-pixel.html +++ b/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-pixel.html
@@ -18,8 +18,8 @@ <div id="test"></div> </section> <script> - if (window.testRunner && window.testRunner.setTextSubpixelPositioning) - window.testRunner.setTextSubpixelPositioning(true); + if (window.testRunner && testRunner.setTextSubpixelPositioning) + testRunner.setTextSubpixelPositioning(true); var PANGRAM = 'Amazingly few discotheques provide jukeboxes.'; runTest(document.getElementById('test'), PANGRAM);
diff --git a/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-rtl.html b/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-rtl.html index 1204386..ac9cd65f 100644 --- a/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-rtl.html +++ b/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-rtl.html
@@ -16,8 +16,8 @@ <div id="test"></div> </section> <script> - if (window.testRunner && window.testRunner.setTextSubpixelPositioning) - window.testRunner.setTextSubpixelPositioning(true); + if (window.testRunner && testRunner.setTextSubpixelPositioning) + testRunner.setTextSubpixelPositioning(true); var PANGRAM = ' أبجد هوَّز حُطّي كلَمُن سَعْفَص قُرِشَت ثَخَدٌ ضَظَغ'; var results = runTest(document.getElementById('test'), PANGRAM);
diff --git a/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-vertical.html b/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-vertical.html index 90c3856..98e05ed 100644 --- a/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-vertical.html +++ b/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-vertical.html
@@ -31,8 +31,8 @@ <div id="test"></div> </section> <script> - if (window.testRunner && window.testRunner.setTextSubpixelPositioning) - window.testRunner.setTextSubpixelPositioning(true); + if (window.testRunner && testRunner.setTextSubpixelPositioning) + testRunner.setTextSubpixelPositioning(true); var PANGRAM = 'Flygande bäckasiner söka hwila på mjuka tuvor.'; var results = runTest(document.getElementById('test'), PANGRAM, 'vertical');
diff --git a/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-webfont.html b/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-webfont.html index bac6091..45f8baf 100644 --- a/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-webfont.html +++ b/third_party/WebKit/LayoutTests/fast/text/sub-pixel/text-scaling-webfont.html
@@ -27,8 +27,8 @@ <div id="test"></div> </section> <script> - if (window.testRunner && window.testRunner.setTextSubpixelPositioning) - window.testRunner.setTextSubpixelPositioning(true); + if (window.testRunner && testRunner.setTextSubpixelPositioning) + testRunner.setTextSubpixelPositioning(true); var PANGRAM = 'My faxed joke won a pager in the cable TV quiz show.';
diff --git a/third_party/WebKit/LayoutTests/fast/text/title-crash.html b/third_party/WebKit/LayoutTests/fast/text/title-crash.html index 946195a..1c75636 100644 --- a/third_party/WebKit/LayoutTests/fast/text/title-crash.html +++ b/third_party/WebKit/LayoutTests/fast/text/title-crash.html
@@ -1,6 +1,6 @@ <style>*{font-style:italic;font-size:1ex;}</style> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.documentElement.innerHTML = '<title>a</title>This test passes if it does not crash.' </script> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/fast/text/update-sans-serif-and-recalc-style-expected.html b/third_party/WebKit/LayoutTests/fast/text/update-sans-serif-and-recalc-style-expected.html index 066ba57b..fcebb77a 100644 --- a/third_party/WebKit/LayoutTests/fast/text/update-sans-serif-and-recalc-style-expected.html +++ b/third_party/WebKit/LayoutTests/fast/text/update-sans-serif-and-recalc-style-expected.html
@@ -4,7 +4,7 @@ </style> <script> if (window.internals) - window.internals.settings.setSansSerifFontFamily("Arial", "zyyy"); + internals.settings.setSansSerifFontFamily("Arial", "zyyy"); </script> <body> <div>
diff --git a/third_party/WebKit/LayoutTests/fast/text/update-sans-serif-and-recalc-style.html b/third_party/WebKit/LayoutTests/fast/text/update-sans-serif-and-recalc-style.html index 13b3137..93b3151 100644 --- a/third_party/WebKit/LayoutTests/fast/text/update-sans-serif-and-recalc-style.html +++ b/third_party/WebKit/LayoutTests/fast/text/update-sans-serif-and-recalc-style.html
@@ -4,12 +4,12 @@ </style> <script> if (window.internals) - window.internals.settings.setSansSerifFontFamily("Times", "zyyy"); + internals.settings.setSansSerifFontFamily("Times", "zyyy"); onload = function() { document.body.offsetLeft; if (window.internals) - window.internals.settings.setSansSerifFontFamily("Arial", "zyyy"); + internals.settings.setSansSerifFontFamily("Arial", "zyyy"); } </script> <body>
diff --git a/third_party/WebKit/LayoutTests/fast/webgl/canvas-getContext-crash.html b/third_party/WebKit/LayoutTests/fast/webgl/canvas-getContext-crash.html index 5799775..bba80f2 100644 --- a/third_party/WebKit/LayoutTests/fast/webgl/canvas-getContext-crash.html +++ b/third_party/WebKit/LayoutTests/fast/webgl/canvas-getContext-crash.html
@@ -7,7 +7,7 @@ function start() { if (window.internals) - window.internals.settings.setWebGL1Enabled(false); + internals.settings.setWebGL1Enabled(false); var canvas = document.getElementById('example'); var gl = canvas.getContext("webgl");
diff --git a/third_party/WebKit/LayoutTests/fast/webgl/canvas-to-data-url-expected.txt b/third_party/WebKit/LayoutTests/fast/webgl/canvas-to-data-url-expected.txt index 4b0327b..b4e1944 100644 --- a/third_party/WebKit/LayoutTests/fast/webgl/canvas-to-data-url-expected.txt +++ b/third_party/WebKit/LayoutTests/fast/webgl/canvas-to-data-url-expected.txt
@@ -3,12 +3,12 @@ TEST COMPLETE Check if back buffer (toDataURL) is equal to front buffer (getImageSourceURL) 1) when drawingBuffer is preserved. -PASS preserve_canvas3D.toDataURL('image/png') == window.internals.getImageSourceURL(preserve_canvas3D) is true +PASS preserve_canvas3D.toDataURL('image/png') == internals.getImageSourceURL(preserve_canvas3D) is true 2) when drawingBuffer is not preserved. -PASS nonpreserve_canvas3D.toDataURL('image/png') == window.internals.getImageSourceURL(nonpreserve_canvas3D) is true +PASS nonpreserve_canvas3D.toDataURL('image/png') == internals.getImageSourceURL(nonpreserve_canvas3D) is true Check if back buffer (toDataURL) is equal to front buffer (getImageSourceURL) one frame after drawing webgl contents. 1) when drawingBuffer is preserved. -PASS preserve_canvas3D.toDataURL('image/png') == window.internals.getImageSourceURL(preserve_canvas3D) is true +PASS preserve_canvas3D.toDataURL('image/png') == internals.getImageSourceURL(preserve_canvas3D) is true 2) when drawingBuffer is not preserved. They must be different. -PASS nonpreserve_canvas3D.toDataURL('image/png') != window.internals.getImageSourceURL(nonpreserve_canvas3D) is true +PASS nonpreserve_canvas3D.toDataURL('image/png') != internals.getImageSourceURL(nonpreserve_canvas3D) is true
diff --git a/third_party/WebKit/LayoutTests/fast/webgl/canvas-to-data-url.html b/third_party/WebKit/LayoutTests/fast/webgl/canvas-to-data-url.html index 790bd20..63cdfaf5 100644 --- a/third_party/WebKit/LayoutTests/fast/webgl/canvas-to-data-url.html +++ b/third_party/WebKit/LayoutTests/fast/webgl/canvas-to-data-url.html
@@ -21,9 +21,9 @@ function asyncTest() { debug("Check if back buffer (toDataURL) is equal to front buffer (getImageSourceURL) one frame after drawing webgl contents.") debug("1) when drawingBuffer is preserved.") - shouldBeTrue("preserve_canvas3D.toDataURL('image/png') == window.internals.getImageSourceURL(preserve_canvas3D)"); + shouldBeTrue("preserve_canvas3D.toDataURL('image/png') == internals.getImageSourceURL(preserve_canvas3D)"); debug("2) when drawingBuffer is not preserved. They must be different.") - shouldBeTrue("nonpreserve_canvas3D.toDataURL('image/png') != window.internals.getImageSourceURL(nonpreserve_canvas3D)"); + shouldBeTrue("nonpreserve_canvas3D.toDataURL('image/png') != internals.getImageSourceURL(nonpreserve_canvas3D)"); if (window.testRunner) testRunner.notifyDone(); } @@ -40,9 +40,9 @@ debug("Check if back buffer (toDataURL) is equal to front buffer (getImageSourceURL)") debug("1) when drawingBuffer is preserved.") - shouldBeTrue("preserve_canvas3D.toDataURL('image/png') == window.internals.getImageSourceURL(preserve_canvas3D)"); + shouldBeTrue("preserve_canvas3D.toDataURL('image/png') == internals.getImageSourceURL(preserve_canvas3D)"); debug("2) when drawingBuffer is not preserved.") - shouldBeTrue("nonpreserve_canvas3D.toDataURL('image/png') == window.internals.getImageSourceURL(nonpreserve_canvas3D)"); + shouldBeTrue("nonpreserve_canvas3D.toDataURL('image/png') == internals.getImageSourceURL(nonpreserve_canvas3D)"); if (window.testRunner) { testRunner.waitUntilDone();
diff --git a/third_party/WebKit/LayoutTests/fast/webgl/compressed-tex-image.html b/third_party/WebKit/LayoutTests/fast/webgl/compressed-tex-image.html index e2729a36..c1974c0d 100644 --- a/third_party/WebKit/LayoutTests/fast/webgl/compressed-tex-image.html +++ b/third_party/WebKit/LayoutTests/fast/webgl/compressed-tex-image.html
@@ -16,7 +16,7 @@ debug(""); if (window.internals) - window.internals.settings.setWebGLErrorsToConsoleEnabled(false); + internals.settings.setWebGLErrorsToConsoleEnabled(false); var wtu = WebGLTestUtils; var canvas = document.createElement("canvas");
diff --git a/third_party/WebKit/LayoutTests/fast/webgl/pixelated.html b/third_party/WebKit/LayoutTests/fast/webgl/pixelated.html index bfb195d..eacfbcf 100644 --- a/third_party/WebKit/LayoutTests/fast/webgl/pixelated.html +++ b/third_party/WebKit/LayoutTests/fast/webgl/pixelated.html
@@ -26,7 +26,7 @@ </script> <script> if (window.testRunner) { - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); } function draw(gl) {
diff --git a/third_party/WebKit/LayoutTests/fast/webgl/shader-deleted-by-accessor.html b/third_party/WebKit/LayoutTests/fast/webgl/shader-deleted-by-accessor.html index 6a3183e2..7534325a 100644 --- a/third_party/WebKit/LayoutTests/fast/webgl/shader-deleted-by-accessor.html +++ b/third_party/WebKit/LayoutTests/fast/webgl/shader-deleted-by-accessor.html
@@ -13,7 +13,7 @@ description("Verifies that WebGLRenderingContext::getAttachedShaders doesn't crash when an accessor property is defined on Array.prototype."); if (window.internals) - window.internals.settings.setWebGLErrorsToConsoleEnabled(false); + internals.settings.setWebGLErrorsToConsoleEnabled(false); context = create3DContext(); program = context.createProgram();
diff --git a/third_party/WebKit/LayoutTests/fast/webgl/webgl-texture-binding-preserved.html b/third_party/WebKit/LayoutTests/fast/webgl/webgl-texture-binding-preserved.html index 06e17aa..eb78136c 100644 --- a/third_party/WebKit/LayoutTests/fast/webgl/webgl-texture-binding-preserved.html +++ b/third_party/WebKit/LayoutTests/fast/webgl/webgl-texture-binding-preserved.html
@@ -18,7 +18,7 @@ } if (window.internals) - window.internals.settings.setWebGLErrorsToConsoleEnabled(false); + internals.settings.setWebGLErrorsToConsoleEnabled(false); var canvas; var context;
diff --git a/third_party/WebKit/LayoutTests/fast/workers/chromium/empty-worker-nocrash.html b/third_party/WebKit/LayoutTests/fast/workers/chromium/empty-worker-nocrash.html index a4d39f2e..c915129 100644 --- a/third_party/WebKit/LayoutTests/fast/workers/chromium/empty-worker-nocrash.html +++ b/third_party/WebKit/LayoutTests/fast/workers/chromium/empty-worker-nocrash.html
@@ -5,7 +5,7 @@ testRunner.dumpAsText(); testRunner.waitUntilDone(); } -setTimeout('window.testRunner.notifyDone()', 20); +setTimeout('testRunner.notifyDone()', 20); </script> <p>PASS</p> </html>
diff --git a/third_party/WebKit/LayoutTests/fast/workers/chromium/worker-document-leak.html b/third_party/WebKit/LayoutTests/fast/workers/chromium/worker-document-leak.html index 62175cc..824998ca 100644 --- a/third_party/WebKit/LayoutTests/fast/workers/chromium/worker-document-leak.html +++ b/third_party/WebKit/LayoutTests/fast/workers/chromium/worker-document-leak.html
@@ -38,15 +38,15 @@ function startTest() { gc(); - if (window.internals && window.internals.numberOfLiveDocuments) { - numLiveAtStart = window.internals.numberOfLiveDocuments(); + if (window.internals && internals.numberOfLiveDocuments) { + numLiveAtStart = internals.numberOfLiveDocuments(); // Depending on which tests ran before this one in DumpRenderTree, // their Document instances may not have been fully cleaned up yet. // When this test is run in isolation, there should be only one // live document at this point. runOneIteration(); } else { - debug("window.internals.numberOfLiveDocuments not available -- no point in running test"); + debug("internals.numberOfLiveDocuments not available -- no point in running test"); finishTest(); } } @@ -72,8 +72,8 @@ { gc(); - if (window.internals && window.internals.numberOfLiveDocuments) { - numLiveAtEnd = window.internals.numberOfLiveDocuments(); + if (window.internals && internals.numberOfLiveDocuments) { + numLiveAtEnd = internals.numberOfLiveDocuments(); // Under no circumstances should the number of live documents // at the end be more than 1 greater than the number at the // beginning (because of the iframe).
diff --git a/third_party/WebKit/LayoutTests/fast/writing-mode/auto-margins-across-boundaries.html b/third_party/WebKit/LayoutTests/fast/writing-mode/auto-margins-across-boundaries.html index 9879b84e..04f6ccf 100644 --- a/third_party/WebKit/LayoutTests/fast/writing-mode/auto-margins-across-boundaries.html +++ b/third_party/WebKit/LayoutTests/fast/writing-mode/auto-margins-across-boundaries.html
@@ -12,7 +12,7 @@ <div id="console"></div> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); test = document.getElementById("test"); rect = test.getBoundingClientRect(); if (rect.left != 110) {
diff --git a/third_party/WebKit/LayoutTests/fast/writing-mode/block-formatting-context.html b/third_party/WebKit/LayoutTests/fast/writing-mode/block-formatting-context.html index ee54a2f2..c6329ab5 100644 --- a/third_party/WebKit/LayoutTests/fast/writing-mode/block-formatting-context.html +++ b/third_party/WebKit/LayoutTests/fast/writing-mode/block-formatting-context.html
@@ -13,7 +13,7 @@ <div id="console"></div> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); test = document.getElementById("test"); rect = test.getBoundingClientRect(); if (rect.left != 100) {
diff --git a/third_party/WebKit/LayoutTests/fast/writing-mode/display-mutation.html b/third_party/WebKit/LayoutTests/fast/writing-mode/display-mutation.html index b72ee18..e0acd57c4 100644 --- a/third_party/WebKit/LayoutTests/fast/writing-mode/display-mutation.html +++ b/third_party/WebKit/LayoutTests/fast/writing-mode/display-mutation.html
@@ -2,7 +2,7 @@ <head> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function runTest() {
diff --git a/third_party/WebKit/LayoutTests/fast/writing-mode/percentage-padding.html b/third_party/WebKit/LayoutTests/fast/writing-mode/percentage-padding.html index c8e4c93..f14ee99 100644 --- a/third_party/WebKit/LayoutTests/fast/writing-mode/percentage-padding.html +++ b/third_party/WebKit/LayoutTests/fast/writing-mode/percentage-padding.html
@@ -17,7 +17,7 @@ <div id="console"></div> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); test = document.getElementById("test"); rect = test.getBoundingClientRect(); width = rect.right - rect.left;
diff --git a/third_party/WebKit/LayoutTests/fast/writing-mode/relative-positioning-percentages.html b/third_party/WebKit/LayoutTests/fast/writing-mode/relative-positioning-percentages.html index 8c541b2..beded54 100644 --- a/third_party/WebKit/LayoutTests/fast/writing-mode/relative-positioning-percentages.html +++ b/third_party/WebKit/LayoutTests/fast/writing-mode/relative-positioning-percentages.html
@@ -12,7 +12,7 @@ <div id="console" style="position:relative;top:100px"></div> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); test = document.getElementById("test"); rect = test.getBoundingClientRect(); parentRect = test.parentNode.getBoundingClientRect();
diff --git a/third_party/WebKit/LayoutTests/fast/xmlhttprequest/xmlhttprequest-sync-disabled.html b/third_party/WebKit/LayoutTests/fast/xmlhttprequest/xmlhttprequest-sync-disabled.html index bd8b6a42..ff8bd5a 100644 --- a/third_party/WebKit/LayoutTests/fast/xmlhttprequest/xmlhttprequest-sync-disabled.html +++ b/third_party/WebKit/LayoutTests/fast/xmlhttprequest/xmlhttprequest-sync-disabled.html
@@ -4,7 +4,7 @@ <script src="../../resources/js-test.js"></script> <script> if ('internals' in window) { - window.internals.settings.setSyncXHRInDocumentsEnabled(false); + internals.settings.setSyncXHRInDocumentsEnabled(false); } else { document.write('This test depends on the syncXHRInDocumentsEnabled setting being false, so run in DumpRenderTree or manually enable it'); }
diff --git a/third_party/WebKit/LayoutTests/flag-specific/enable-blink-features=LayoutNG/svg/as-image/svgview-references-use-counters-expected.txt b/third_party/WebKit/LayoutTests/flag-specific/enable-blink-features=LayoutNG/svg/as-image/svgview-references-use-counters-expected.txt index 6092959..1976e520 100644 --- a/third_party/WebKit/LayoutTests/flag-specific/enable-blink-features=LayoutNG/svg/as-image/svgview-references-use-counters-expected.txt +++ b/third_party/WebKit/LayoutTests/flag-specific/enable-blink-features=LayoutNG/svg/as-image/svgview-references-use-counters-expected.txt
@@ -1,9 +1,9 @@ -PASS window.internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGView) is false -PASS window.internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGViewElement) is false -PASS window.internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGView) is true -PASS window.internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGViewElement) is false -PASS window.internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGView) is true -PASS window.internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGViewElement) is true +PASS internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGView) is false +PASS internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGViewElement) is false +PASS internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGView) is true +PASS internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGViewElement) is false +PASS internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGView) is true +PASS internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGViewElement) is true PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/fullscreen/compositor-touch-hit-rects-fullscreen-video-controls.html b/third_party/WebKit/LayoutTests/fullscreen/compositor-touch-hit-rects-fullscreen-video-controls.html index e65bf6b..2de39b1 100644 --- a/third_party/WebKit/LayoutTests/fullscreen/compositor-touch-hit-rects-fullscreen-video-controls.html +++ b/third_party/WebKit/LayoutTests/fullscreen/compositor-touch-hit-rects-fullscreen-video-controls.html
@@ -21,15 +21,15 @@ document.addEventListener('touchstart', function() { }, {passive: false}); consoleWrite("Should have single rect on document before fullscreen"); - window.internals.forceCompositingUpdate(document); + internals.forceCompositingUpdate(document); logRects('handler'); waitForEvent(document, 'webkitfullscreenchange', function() { - if (window.internals.runtimeFlags.forceOverlayFullscreenVideoEnabled) + if (internals.runtimeFlags.forceOverlayFullscreenVideoEnabled) consoleWrite("Should report no rect or another rect which is not on the document"); else consoleWrite("Should keep rect on document"); - window.internals.forceCompositingUpdate(document); + internals.forceCompositingUpdate(document); logRects('handler'); endTest(); });
diff --git a/third_party/WebKit/LayoutTests/fullscreen/full-screen-not-enabled-when-unsupported.html b/third_party/WebKit/LayoutTests/fullscreen/full-screen-not-enabled-when-unsupported.html index b1730114..56fde02 100644 --- a/third_party/WebKit/LayoutTests/fullscreen/full-screen-not-enabled-when-unsupported.html +++ b/third_party/WebKit/LayoutTests/fullscreen/full-screen-not-enabled-when-unsupported.html
@@ -5,7 +5,7 @@ standard</div> <script src="full-screen-test.js"></script> <script> - window.internals.settings.setFullscreenSupported(false); + internals.settings.setFullscreenSupported(false); testExpected('document.webkitFullscreenEnabled', false);
diff --git a/third_party/WebKit/LayoutTests/fullscreen/full-screen-orientation-change.html b/third_party/WebKit/LayoutTests/fullscreen/full-screen-orientation-change.html index 9b44ef6..1a33454 100644 --- a/third_party/WebKit/LayoutTests/fullscreen/full-screen-orientation-change.html +++ b/third_party/WebKit/LayoutTests/fullscreen/full-screen-orientation-change.html
@@ -15,7 +15,7 @@ document.onwebkitfullscreenerror = t.unreached_func("fullscreen is not accepted when orientation is changed"); document.onwebkitfullscreenchange = t.step_func_done(); - window.testRunner.setMockScreenOrientation('landscape-primary'); + testRunner.setMockScreenOrientation('landscape-primary'); }); </script>
diff --git a/third_party/WebKit/LayoutTests/fullscreen/full-screen-request-not-supported.html b/third_party/WebKit/LayoutTests/fullscreen/full-screen-request-not-supported.html index db7d24ed..208111a 100644 --- a/third_party/WebKit/LayoutTests/fullscreen/full-screen-request-not-supported.html +++ b/third_party/WebKit/LayoutTests/fullscreen/full-screen-request-not-supported.html
@@ -5,7 +5,7 @@ in those platforms where fullscreen is not supported. <script> if (window.internals) { - window.internals.settings.setFullscreenSupported(false); + internals.settings.setFullscreenSupported(false); waitForEvent(document, 'webkitfullscreenchange', function() { logResult(false, 'Entered fullscreen.');
diff --git a/third_party/WebKit/LayoutTests/html/document_metadata/resources/head-check.js b/third_party/WebKit/LayoutTests/html/document_metadata/resources/head-check.js index cb4d34d..dfeadbd 100644 --- a/third_party/WebKit/LayoutTests/html/document_metadata/resources/head-check.js +++ b/third_party/WebKit/LayoutTests/html/document_metadata/resources/head-check.js
@@ -3,7 +3,7 @@ var iframe; if (window.testRunner) { - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); } function testAndLoadNext() { @@ -24,7 +24,7 @@ iframe.style.display = "none"; debug('<span class="pass">TEST COMPLETE</span>'); if (window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } } }
diff --git a/third_party/WebKit/LayoutTests/html/text_level_semantics/q-empty-crash.html b/third_party/WebKit/LayoutTests/html/text_level_semantics/q-empty-crash.html index fe98c57..b93c646 100644 --- a/third_party/WebKit/LayoutTests/html/text_level_semantics/q-empty-crash.html +++ b/third_party/WebKit/LayoutTests/html/text_level_semantics/q-empty-crash.html
@@ -4,6 +4,6 @@ <p>This test passes if it doesn't crash</p> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </html>
diff --git a/third_party/WebKit/LayoutTests/http/tests/activedomobject/media-expected.txt b/third_party/WebKit/LayoutTests/http/tests/activedomobject/media-expected.txt index e88c2b0..521736c 100644 --- a/third_party/WebKit/LayoutTests/http/tests/activedomobject/media-expected.txt +++ b/third_party/WebKit/LayoutTests/http/tests/activedomobject/media-expected.txt
@@ -2,8 +2,8 @@ Before Reparenting -PASS: window.internals.pausableObjectCount(document) should be '3' and is. -PASS: window.internals.pausableObjectCount(iframe) should be '3' and is. +PASS: internals.pausableObjectCount(document) should be '3' and is. +PASS: internals.pausableObjectCount(iframe) should be '3' and is. After Reparenting -PASS: window.internals.pausableObjectCount(document) should be '4' and is. -PASS: window.internals.pausableObjectCount(iframe) should be '2' and is. +PASS: internals.pausableObjectCount(document) should be '4' and is. +PASS: internals.pausableObjectCount(iframe) should be '2' and is.
diff --git a/third_party/WebKit/LayoutTests/http/tests/activedomobject/media.html b/third_party/WebKit/LayoutTests/http/tests/activedomobject/media.html index 46e1717c..9dd91094 100644 --- a/third_party/WebKit/LayoutTests/http/tests/activedomobject/media.html +++ b/third_party/WebKit/LayoutTests/http/tests/activedomobject/media.html
@@ -10,14 +10,14 @@ window.iframe = document.querySelector('iframe').contentDocument; log('Before Reparenting'); - shouldBe('window.internals.pausableObjectCount(document)', 3); - shouldBe('window.internals.pausableObjectCount(iframe)', 3); + shouldBe('internals.pausableObjectCount(document)', 3); + shouldBe('internals.pausableObjectCount(iframe)', 3); document.body.appendChild(window.iframe.querySelector('video')); log('After Reparenting'); - shouldBe('window.internals.pausableObjectCount(document)', 4); - shouldBe('window.internals.pausableObjectCount(iframe)', 2); + shouldBe('internals.pausableObjectCount(document)', 4); + shouldBe('internals.pausableObjectCount(iframe)', 2); } </script> </body>
diff --git a/third_party/WebKit/LayoutTests/http/tests/activedomobject/resources/activedomobject-test.js b/third_party/WebKit/LayoutTests/http/tests/activedomobject/resources/activedomobject-test.js index e041847..cb36494 100644 --- a/third_party/WebKit/LayoutTests/http/tests/activedomobject/resources/activedomobject-test.js +++ b/third_party/WebKit/LayoutTests/http/tests/activedomobject/resources/activedomobject-test.js
@@ -32,10 +32,10 @@ } if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); window.onload = function() { runTest(); - window.testRunner.notifyDone(); + testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/http/tests/cache/history-only-cached-subresource-loads-max-age-https.html b/third_party/WebKit/LayoutTests/http/tests/cache/history-only-cached-subresource-loads-max-age-https.html index 85c03b9..cf65583 100644 --- a/third_party/WebKit/LayoutTests/http/tests/cache/history-only-cached-subresource-loads-max-age-https.html +++ b/third_party/WebKit/LayoutTests/http/tests/cache/history-only-cached-subresource-loads-max-age-https.html
@@ -78,7 +78,7 @@ // Test completed. target.close(); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }, false);
diff --git a/third_party/WebKit/LayoutTests/http/tests/cache/history-only-cached-subresource-loads.html b/third_party/WebKit/LayoutTests/http/tests/cache/history-only-cached-subresource-loads.html index cf218b1..d248f70 100644 --- a/third_party/WebKit/LayoutTests/http/tests/cache/history-only-cached-subresource-loads.html +++ b/third_party/WebKit/LayoutTests/http/tests/cache/history-only-cached-subresource-loads.html
@@ -78,7 +78,7 @@ // Test completed. target.close(); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }, false);
diff --git a/third_party/WebKit/LayoutTests/http/tests/cache/image-with-dpr-header-cached.html b/third_party/WebKit/LayoutTests/http/tests/cache/image-with-dpr-header-cached.html index c1bb5963..1e17059 100644 --- a/third_party/WebKit/LayoutTests/http/tests/cache/image-with-dpr-header-cached.html +++ b/third_party/WebKit/LayoutTests/http/tests/cache/image-with-dpr-header-cached.html
@@ -8,7 +8,7 @@ if (window.sessionStorage.getItem("reloaded")) { window.sessionStorage.removeItem("reloaded"); if (window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } } else { window.sessionStorage.reloaded = "true";
diff --git a/third_party/WebKit/LayoutTests/http/tests/cache/post-with-cached-subresources.php b/third_party/WebKit/LayoutTests/http/tests/cache/post-with-cached-subresources.php index fb13f2c3..8464ea9 100644 --- a/third_party/WebKit/LayoutTests/http/tests/cache/post-with-cached-subresources.php +++ b/third_party/WebKit/LayoutTests/http/tests/cache/post-with-cached-subresources.php
@@ -46,7 +46,7 @@ // always PASS. echo "<script>"; echo "if (window.internals)"; - echo " window.internals.evictAllResources();"; + echo " internals.evictAllResources();"; echo "</script>"; echo "<img src='resources/post-image-to-verify.php?filename=post-with-cached-subresources.tmp' onload=\"logAndFinish('PASS');\" onerror=\"logAndFinish('FAIL');\"></img>"; } else {
diff --git a/third_party/WebKit/LayoutTests/http/tests/cache/smil-usecounter-in-cached-image-expected.txt b/third_party/WebKit/LayoutTests/http/tests/cache/smil-usecounter-in-cached-image-expected.txt index 868b437..dd634dd 100644 --- a/third_party/WebKit/LayoutTests/http/tests/cache/smil-usecounter-in-cached-image-expected.txt +++ b/third_party/WebKit/LayoutTests/http/tests/cache/smil-usecounter-in-cached-image-expected.txt
@@ -1,5 +1,5 @@ -PASS window.internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache) is false -PASS window.internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache) is true +PASS internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache) is false +PASS internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache) is true PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/http/tests/cache/smil-usecounter-in-cached-image.html b/third_party/WebKit/LayoutTests/http/tests/cache/smil-usecounter-in-cached-image.html index 5ddae3a..ced14f52 100644 --- a/third_party/WebKit/LayoutTests/http/tests/cache/smil-usecounter-in-cached-image.html +++ b/third_party/WebKit/LayoutTests/http/tests/cache/smil-usecounter-in-cached-image.html
@@ -12,9 +12,9 @@ window.location.reload(); } } else { - shouldBeFalse("window.internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache)"); + shouldBeFalse("internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache)"); img.onload = function() { - shouldBeTrue("window.internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache)"); + shouldBeTrue("internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache)"); finishJSTest(); } }
diff --git a/third_party/WebKit/LayoutTests/http/tests/credentialmanager/credentialscontainer-create-basics.html b/third_party/WebKit/LayoutTests/http/tests/credentialmanager/credentialscontainer-create-basics.html index 6bcf98d..a063a8b 100644 --- a/third_party/WebKit/LayoutTests/http/tests/credentialmanager/credentialscontainer-create-basics.html +++ b/third_party/WebKit/LayoutTests/http/tests/credentialmanager/credentialscontainer-create-basics.html
@@ -251,4 +251,23 @@ }); }, "navigator.credentials.create() with cross-platform authenticatorAttachment"); +promise_test(t => { + mockAuthenticator.reset(); + mockAuthenticator.setDefaultsForSuccessfulMakeCredential(); + var customMakeCredOptions = deepCopy(MAKE_CREDENTIAL_OPTIONS); + customMakeCredOptions.extensions = {cableRegistration: CABLE_REGISTRATION}; + return navigator.credentials.create({publicKey: customMakeCredOptions}).then(r => { + assertValidMakeCredentialResponse(r); +}, "navigator.credentials.create() with cableRegistration extension"); + +promise_test(_ => { + mockAuthenticator.reset(); + mockAuthenticator.setDefaultsForSuccessfulMakeCredential(); + var customMakeCredOptions = deepCopy(MAKE_CREDENTIAL_OPTIONS); + customMakeCredOptions.extensions = {cableAuthenticationData: [CABLE_AUTHENTICATION]}; + return promise_rejects(t, "NotSupportedError", + navigator.credentials.create({ publicKey : customMakeCredOptions})); + }); +}, "navigator.credentials.create() with cableAuthentication extension not supported"); + </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/credentialmanager/credentialscontainer-get-basics.html b/third_party/WebKit/LayoutTests/http/tests/credentialmanager/credentialscontainer-get-basics.html index 9b6f414e..108673f5 100644 --- a/third_party/WebKit/LayoutTests/http/tests/credentialmanager/credentialscontainer-get-basics.html +++ b/third_party/WebKit/LayoutTests/http/tests/credentialmanager/credentialscontainer-get-basics.html
@@ -188,4 +188,23 @@ }); }, "navigator.credentials.get() with missing user verification requirement"); +promise_test(t => { + mockAuthenticator.reset(); + mockAuthenticator.setDefaultsForSuccessfulGetAssertion(); + var customGetCredentialOptions = deepCopy(GET_CREDENTIAL_OPTIONS); + customGetCredentialOptions.extensions = {cableRegistration: CABLE_REGISTRATION}; + return promise_rejects(t, "NotSupportedError", + navigator.credentials.get({ publicKey : customGetCredentialOptions})); +}, "navigator.credentials.get() with cableRegistration extension not supported"); + +promise_test(_ => { + mockAuthenticator.reset(); + mockAuthenticator.setDefaultsForSuccessfulGetAssertion(); + var customGetCredentialOptions = deepCopy(GET_CREDENTIAL_OPTIONS); + customGetCredentialOptions.extensions = {cableAuthenticationData: [CABLE_AUTHENTICATION]}; + return navigator.credentials.get({publicKey: customGetCredentialOptions}).then(r => { + assertValidGetCredentialResponse(r); + }); +}, "navigator.credentials.get() with cableAuthentication extension"); + </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/credentialmanager/resources/test-inputs.js b/third_party/WebKit/LayoutTests/http/tests/credentialmanager/resources/test-inputs.js index acea8c0..328a083 100644 --- a/third_party/WebKit/LayoutTests/http/tests/credentialmanager/resources/test-inputs.js +++ b/third_party/WebKit/LayoutTests/http/tests/credentialmanager/resources/test-inputs.js
@@ -69,6 +69,17 @@ var ATTESTATION_OBJECT = new TextEncoder("utf-8").encode("attestationObject"); var AUTHENTICATOR_DATA = new TextEncoder("utf-8").encode("authenticatorData"); var SIGNATURE = new TextEncoder("utf-8").encode("signature"); +var CABLE_REGISTRATION = { + version: 1, + rpPublicKey: new TextEncoder("utf-8").encode("SixteenByteRpKey"), +}; + +var CABLE_AUTHENTICATION = { + version: 1, + clientEid: new TextEncoder("utf-8").encode("SixteenByteClEid"), + authenticatorEid: new TextEncoder("utf-8").encode("SixteenByteAuEid"), + sessionPreKey: new TextEncoder("utf-8").encode('x'.repeat(32)), +}; var CREATE_CREDENTIALS = "navigator.credentials.create({publicKey : MAKE_CREDENTIAL_OPTIONS})"
diff --git a/third_party/WebKit/LayoutTests/http/tests/css/font-face-src-cached.html b/third_party/WebKit/LayoutTests/http/tests/css/font-face-src-cached.html index e48c7b6..60ae883 100644 --- a/third_party/WebKit/LayoutTests/http/tests/css/font-face-src-cached.html +++ b/third_party/WebKit/LayoutTests/http/tests/css/font-face-src-cached.html
@@ -13,7 +13,7 @@ window.addEventListener('load', t.step_func(function() { if (window.internals) { // Check that the font face is in the Resource::Cached state. - assert_true(window.internals.isLoadingFromMemoryCache( + assert_true(internals.isLoadingFromMemoryCache( 'https://localhost:8443/css/resources/cors-ahem.php')) }
diff --git a/third_party/WebKit/LayoutTests/http/tests/css/image-value-cached.html b/third_party/WebKit/LayoutTests/http/tests/css/image-value-cached.html index 132d677..d9a5628 100644 --- a/third_party/WebKit/LayoutTests/http/tests/css/image-value-cached.html +++ b/third_party/WebKit/LayoutTests/http/tests/css/image-value-cached.html
@@ -12,7 +12,7 @@ window.addEventListener('load', t.step_func(function() { if (window.internals) { // Check that the image is in the Resource::Cached state. - assert_true(window.internals.isLoadingFromMemoryCache( + assert_true(internals.isLoadingFromMemoryCache( 'https://localhost:8443/css/resources/abe.png')) }
diff --git a/third_party/WebKit/LayoutTests/http/tests/css3/filters/fedisplacementmap-tainted.html b/third_party/WebKit/LayoutTests/http/tests/css3/filters/fedisplacementmap-tainted.html index 629ec90..0de055b9 100644 --- a/third_party/WebKit/LayoutTests/http/tests/css3/filters/fedisplacementmap-tainted.html +++ b/third_party/WebKit/LayoutTests/http/tests/css3/filters/fedisplacementmap-tainted.html
@@ -9,7 +9,7 @@ <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); // Passes if the output is a black square. var img = new Image(); // Use a cross-origin URL. @@ -20,6 +20,6 @@ // Fill rect will force resolving of the filter before drawImage. ctx.fillRect(-10, -10, 1, 1); ctx.drawImage(img, 0, 0); - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/device-mode/device-mode-toolbar-expected.txt b/third_party/WebKit/LayoutTests/http/tests/devtools/device-mode/device-mode-toolbar-expected.txt new file mode 100644 index 0000000..9145782f --- /dev/null +++ b/third_party/WebKit/LayoutTests/http/tests/devtools/device-mode/device-mode-toolbar-expected.txt
@@ -0,0 +1,15 @@ +Test toolbar state when switching modes. + +Type: None, Device: <no device> +Rotate: enabled, Width/Height: enabled +Type: None, Device: <no device> +Type: Responsive, Device: <no device> +Rotate: enabled, Width/Height: enabled +Type: None, Device: <no device> +Type: Device, Device: Fake Phone 1 +Rotate: enabled, Width/Height: enabled +Type: Responsive, Device: <no device> +Rotate: enabled, Width/Height: enabled +Type: Device, Device: Fake Phone 1 +Rotate: enabled, Width/Height: enabled +
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/device-mode/device-mode-toolbar.js b/third_party/WebKit/LayoutTests/http/tests/devtools/device-mode/device-mode-toolbar.js new file mode 100644 index 0000000..7b4d44fe --- /dev/null +++ b/third_party/WebKit/LayoutTests/http/tests/devtools/device-mode/device-mode-toolbar.js
@@ -0,0 +1,45 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +(async function() { + TestRunner.addResult(`Test toolbar state when switching modes.\n`); + await TestRunner.loadModule('device_mode_test_runner'); + + var phoneA = DeviceModeTestRunner.buildFakePhone(); + var view = new Emulation.DeviceModeView(); + var toolbar = view._toolbar; + var model = view._model; + var viewportSize = new UI.Size(800, 600); + model.setAvailableSize(viewportSize, viewportSize); + + // Check that default model has type None. + dumpInfo(); + + model.emulate(Emulation.DeviceModeModel.Type.None, null, null); + dumpType(); + toolbar._switchToResponsive(); + dumpInfo(); + + model.emulate(Emulation.DeviceModeModel.Type.None, null, null); + dumpType(); + toolbar._emulateDevice(phoneA); + dumpInfo(); + + toolbar._switchToResponsive(); + dumpInfo(); + + toolbar._emulateDevice(phoneA); + dumpInfo(); + + function dumpType() { + TestRunner.addResult(`Type: ${model.type()}, Device: ${model.device() ? model.device().title : '<no device>'}`); + } + + function dumpInfo() { + dumpType(); + TestRunner.addResult(`Rotate: ${toolbar._modeButton._enabled ? 'enabled': 'disabled'}, Width/Height: ${!toolbar._widthInput.disabled ? 'enabled': 'disabled'}`); + } + + TestRunner.completeTest(); +})();
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/highlight/highlight-node-scaled-and-scrolled.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/highlight/highlight-node-scaled-and-scrolled.js index ba78588..080a351 100644 --- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/highlight/highlight-node-scaled-and-scrolled.js +++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/highlight/highlight-node-scaled-and-scrolled.js
@@ -27,7 +27,7 @@ `); await TestRunner.evaluateInPagePromise(` if (window.internals) - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); // Fully scroll the visual viewport. internals.setVisualViewportOffset(1000, 1000); `);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/highlight/highlight-node-scaled.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/highlight/highlight-node-scaled.js index 680280b..f005682 100644 --- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/highlight/highlight-node-scaled.js +++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/highlight/highlight-node-scaled.js
@@ -27,7 +27,7 @@ `); await TestRunner.evaluateInPagePromise(` if (window.internals) - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); `); ElementsTestRunner.dumpInspectorHighlightJSON('div', TestRunner.completeTest.bind(TestRunner));
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/highlight/highlight-svg-root-zoomed.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/highlight/highlight-svg-root-zoomed.js index 92b9d224..6440977 100644 --- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/highlight/highlight-svg-root-zoomed.js +++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/highlight/highlight-svg-root-zoomed.js
@@ -60,7 +60,7 @@ `); await TestRunner.evaluateInPagePromise(` if (window.eventSender) - window.eventSender.zoomPageIn(); + eventSender.zoomPageIn(); `); ElementsTestRunner.dumpInspectorHighlightJSON('svg-root', TestRunner.completeTest.bind(TestRunner));
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/inspect-mode-shadow-text.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/inspect-mode-shadow-text.js index f32677f..b3e5f19 100644 --- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/inspect-mode-shadow-text.js +++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/inspect-mode-shadow-text.js
@@ -21,9 +21,9 @@ var rect = target.getBoundingClientRect(); // Simulate the mouse click over the target to trigger an event dispatch. if (window.eventSender) { - window.eventSender.mouseMoveTo(rect.left + 10, rect.top + 10); - window.eventSender.mouseDown(); - window.eventSender.mouseUp(); + eventSender.mouseMoveTo(rect.left + 10, rect.top + 10); + eventSender.mouseDown(); + eventSender.mouseUp(); } } `);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/inspect-pointer-events-none.js b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/inspect-pointer-events-none.js index 3ddb4d6..35a46ccb 100644 --- a/third_party/WebKit/LayoutTests/http/tests/devtools/elements/inspect-pointer-events-none.js +++ b/third_party/WebKit/LayoutTests/http/tests/devtools/elements/inspect-pointer-events-none.js
@@ -38,9 +38,9 @@ var rect = target.getBoundingClientRect(); // Simulate the mouse click over the target to trigger an event dispatch. if (window.eventSender) { - window.eventSender.mouseMoveTo(rect.left + rect.width / 2, rect.top + rect.height / 2, withShift ? "shiftKey" : ""); - window.eventSender.mouseDown(); - window.eventSender.mouseUp(); + eventSender.mouseMoveTo(rect.left + rect.width / 2, rect.top + rect.height / 2, withShift ? "shiftKey" : ""); + eventSender.mouseDown(); + eventSender.mouseUp(); } } `);
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/screen-orientation-resource.html b/third_party/WebKit/LayoutTests/http/tests/devtools/resources/screen-orientation-resource.html index b34b4a5c..9a4947b6 100644 --- a/third_party/WebKit/LayoutTests/http/tests/devtools/resources/screen-orientation-resource.html +++ b/third_party/WebKit/LayoutTests/http/tests/devtools/resources/screen-orientation-resource.html
@@ -1,6 +1,6 @@ <html> <script> -window.testRunner.disableMockScreenOrientation(); +testRunner.disableMockScreenOrientation(); var windowOrientationChangeEvent = false; var screenOrientationChangeEvent = false;
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/text-autosizing-override.js b/third_party/WebKit/LayoutTests/http/tests/devtools/text-autosizing-override.js index 123ca29..60dd9b34 100644 --- a/third_party/WebKit/LayoutTests/http/tests/devtools/text-autosizing-override.js +++ b/third_party/WebKit/LayoutTests/http/tests/devtools/text-autosizing-override.js
@@ -13,7 +13,7 @@ `); await TestRunner.evaluateInPagePromise(` if (window.internals) - window.internals.settings.setTextAutosizingWindowSizeOverride(320, 480); + internals.settings.setTextAutosizingWindowSizeOverride(320, 480); function getAutosizing() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-misc/timeline-event-dispatch.js b/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-misc/timeline-event-dispatch.js index 534ab24..9be8447c 100644 --- a/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-misc/timeline-event-dispatch.js +++ b/third_party/WebKit/LayoutTests/http/tests/devtools/tracing/timeline-misc/timeline-event-dispatch.js
@@ -25,8 +25,8 @@ // Simulate the mouse down over the target to trigger an EventDispatch if (window.eventSender) { - window.eventSender.mouseMoveTo(rect.left + rect.width / 2, rect.top + rect.height / 2); - window.eventSender.mouseDown(); + eventSender.mouseMoveTo(rect.left + rect.width / 2, rect.top + rect.height / 2); + eventSender.mouseDown(); } } `);
diff --git a/third_party/WebKit/LayoutTests/http/tests/images/image-decode-in-frame.html b/third_party/WebKit/LayoutTests/http/tests/images/image-decode-in-frame.html index fc54b7f4..b205d6b 100644 --- a/third_party/WebKit/LayoutTests/http/tests/images/image-decode-in-frame.html +++ b/third_party/WebKit/LayoutTests/http/tests/images/image-decode-in-frame.html
@@ -5,11 +5,11 @@ if (e.data !== "pass") { document.getElementById("error").innerHTML = "iframe decode failed."; } - window.testRunner.notifyDone(); + testRunner.notifyDone(); } if (window.testRunner) { - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); window.addEventListener("message", receiveMessage, false); } </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/incremental/doc-write-before-end.pl b/third_party/WebKit/LayoutTests/http/tests/incremental/doc-write-before-end.pl index 56bbe15b..f82c8ab 100755 --- a/third_party/WebKit/LayoutTests/http/tests/incremental/doc-write-before-end.pl +++ b/third_party/WebKit/LayoutTests/http/tests/incremental/doc-write-before-end.pl
@@ -11,7 +11,7 @@ print "\n"; print "\xef\xbb\xbf<!DOCTYPE html><body>"; -print "<script>if (window.testRunner) window.testRunner.dumpAsText();</script>"; +print "<script>if (window.testRunner) testRunner.dumpAsText();</script>"; print "<img src='404.gif' onerror='document.write(\"PASS\"); document.close()'>"; # Dump some spaces to bypass CFNetwork buffering. for ($count = 1; $count < 4000; $count++) {
diff --git a/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/resources/inspector-protocol-test.js b/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/resources/inspector-protocol-test.js index 8dd407f5..da46561 100644 --- a/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/resources/inspector-protocol-test.js +++ b/third_party/WebKit/LayoutTests/http/tests/inspector-protocol/resources/inspector-protocol-test.js
@@ -472,7 +472,7 @@ }; DevToolsAPI._completeTest = function() { - window.testRunner.notifyDone(); + testRunner.notifyDone(); }; DevToolsAPI._die = function(message, error) { @@ -538,9 +538,9 @@ }); }; -window.testRunner.dumpAsText(); -window.testRunner.waitUntilDone(); -window.testRunner.setCanOpenWindows(true); +testRunner.dumpAsText(); +testRunner.waitUntilDone(); +testRunner.setCanOpenWindows(true); window.addEventListener('load', () => { var params = new URLSearchParams(window.location.search);
diff --git a/third_party/WebKit/LayoutTests/http/tests/media/autoplay/document-user-activation-navigation-click.html b/third_party/WebKit/LayoutTests/http/tests/media/autoplay/document-user-activation-navigation-click.html index 1b90760..d798da83 100644 --- a/third_party/WebKit/LayoutTests/http/tests/media/autoplay/document-user-activation-navigation-click.html +++ b/third_party/WebKit/LayoutTests/http/tests/media/autoplay/document-user-activation-navigation-click.html
@@ -5,7 +5,7 @@ </body> <script> testRunner.waitUntilDone(); - window.internals.settings.setAutoplayPolicy('document-user-activation-required'); + internals.settings.setAutoplayPolicy('document-user-activation-required'); eventSender.mouseDown(); document.location.href = 'resources/test-autoplay.html';
diff --git a/third_party/WebKit/LayoutTests/http/tests/media/autoplay/document-user-activation-navigation-keypress.html b/third_party/WebKit/LayoutTests/http/tests/media/autoplay/document-user-activation-navigation-keypress.html index 6e1ce5f..711b76d 100644 --- a/third_party/WebKit/LayoutTests/http/tests/media/autoplay/document-user-activation-navigation-keypress.html +++ b/third_party/WebKit/LayoutTests/http/tests/media/autoplay/document-user-activation-navigation-keypress.html
@@ -5,7 +5,7 @@ </body> <script> testRunner.waitUntilDone(); - window.internals.settings.setAutoplayPolicy('document-user-activation-required'); + internals.settings.setAutoplayPolicy('document-user-activation-required'); document.querySelector('#target').focus(); eventSender.keyDown('a');
diff --git a/third_party/WebKit/LayoutTests/http/tests/media/autoplay/document-user-activation-navigation-nogesture.html b/third_party/WebKit/LayoutTests/http/tests/media/autoplay/document-user-activation-navigation-nogesture.html index 9eac848b..efcdb06 100644 --- a/third_party/WebKit/LayoutTests/http/tests/media/autoplay/document-user-activation-navigation-nogesture.html +++ b/third_party/WebKit/LayoutTests/http/tests/media/autoplay/document-user-activation-navigation-nogesture.html
@@ -5,7 +5,7 @@ </body> <script> testRunner.waitUntilDone(); - window.internals.settings.setAutoplayPolicy('document-user-activation-required'); + internals.settings.setAutoplayPolicy('document-user-activation-required'); document.location.href = 'resources/test-autoplay.html'; </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/media/autoplay/document-user-activation-navigation-tap.html b/third_party/WebKit/LayoutTests/http/tests/media/autoplay/document-user-activation-navigation-tap.html index 8b3ea6e8..cf721181 100644 --- a/third_party/WebKit/LayoutTests/http/tests/media/autoplay/document-user-activation-navigation-tap.html +++ b/third_party/WebKit/LayoutTests/http/tests/media/autoplay/document-user-activation-navigation-tap.html
@@ -5,7 +5,7 @@ </body> <script> testRunner.waitUntilDone(); - window.internals.settings.setAutoplayPolicy('document-user-activation-required'); + internals.settings.setAutoplayPolicy('document-user-activation-required'); var bounds = document.querySelector('#target').getBoundingClientRect(); var x = bounds.left + bounds.width / 2; var y = bounds.top + bounds.height / 2;
diff --git a/third_party/WebKit/LayoutTests/http/tests/media/autoplay/resources/autoplay-test.js b/third_party/WebKit/LayoutTests/http/tests/media/autoplay/resources/autoplay-test.js index 924b2d4..df00e2a 100644 --- a/third_party/WebKit/LayoutTests/http/tests/media/autoplay/resources/autoplay-test.js +++ b/third_party/WebKit/LayoutTests/http/tests/media/autoplay/resources/autoplay-test.js
@@ -10,7 +10,7 @@ function tearDown(result) { // Reset the flag state. - window.internals.settings.setAutoplayPolicy('no-user-gesture-required'); + internals.settings.setAutoplayPolicy('no-user-gesture-required'); let canAutoplay = true; // Ensure that play failed because autoplay was blocked. If playback failed @@ -105,7 +105,7 @@ } // Setup the flags before the test is run. -window.internals.settings.setAutoplayPolicy('document-user-activation-required'); +internals.settings.setAutoplayPolicy('document-user-activation-required'); // Setup the event listener to forward messages. window.addEventListener('message', (e) => { resultCallback(e.data); });
diff --git a/third_party/WebKit/LayoutTests/http/tests/media/autoplay/resources/test-autoplay.html b/third_party/WebKit/LayoutTests/http/tests/media/autoplay/resources/test-autoplay.html index e0c7dea..32e050b0 100644 --- a/third_party/WebKit/LayoutTests/http/tests/media/autoplay/resources/test-autoplay.html +++ b/third_party/WebKit/LayoutTests/http/tests/media/autoplay/resources/test-autoplay.html
@@ -4,7 +4,7 @@ <script> var jsTestIsAsync = true; function tearDown(result) { - window.internals.settings.setAutoplayPolicy('no-user-gesture-required'); + internals.settings.setAutoplayPolicy('no-user-gesture-required'); shouldBeUndefined(result); finishJSTest(); }
diff --git a/third_party/WebKit/LayoutTests/http/tests/media/autoplay/webaudio-autoplay-iframe-no-gesture.html b/third_party/WebKit/LayoutTests/http/tests/media/autoplay/webaudio-autoplay-iframe-no-gesture.html index 07d8a53..bab197c 100644 --- a/third_party/WebKit/LayoutTests/http/tests/media/autoplay/webaudio-autoplay-iframe-no-gesture.html +++ b/third_party/WebKit/LayoutTests/http/tests/media/autoplay/webaudio-autoplay-iframe-no-gesture.html
@@ -6,7 +6,7 @@ <script> async_test(t => { // Make sure this overrides any preset autoplay policy. - window.internals.settings.setAutoplayPolicy('document-user-activation-required'); + internals.settings.setAutoplayPolicy('document-user-activation-required'); // Setup the event listener. window.addEventListener('message', t.step_func_done((e) => {
diff --git a/third_party/WebKit/LayoutTests/http/tests/media/autoplay/webaudio-autoplay-iframe-with-gesture.html b/third_party/WebKit/LayoutTests/http/tests/media/autoplay/webaudio-autoplay-iframe-with-gesture.html index d90fbae..ccc12a2 100644 --- a/third_party/WebKit/LayoutTests/http/tests/media/autoplay/webaudio-autoplay-iframe-with-gesture.html +++ b/third_party/WebKit/LayoutTests/http/tests/media/autoplay/webaudio-autoplay-iframe-with-gesture.html
@@ -6,7 +6,7 @@ <script> async_test(t => { // Make sure this overrides any preset autoplay policy. - window.internals.settings.setAutoplayPolicy('document-user-activation-required'); + internals.settings.setAutoplayPolicy('document-user-activation-required'); // Setup the event listener. window.addEventListener('message', t.step_func_done((e) => {
diff --git a/third_party/WebKit/LayoutTests/http/tests/media/controls/toggle-class-with-state-source.html b/third_party/WebKit/LayoutTests/http/tests/media/controls/toggle-class-with-state-source.html index 2751f78..bfb7dea 100644 --- a/third_party/WebKit/LayoutTests/http/tests/media/controls/toggle-class-with-state-source.html +++ b/third_party/WebKit/LayoutTests/http/tests/media/controls/toggle-class-with-state-source.html
@@ -17,7 +17,7 @@ }); video.onloadeddata = t.step_func(() => { - const currentClass = window.internals.shadowRoot(video).firstChild.className; + const currentClass = internals.shadowRoot(video).firstChild.className; assert_true(currentClass == "phase-ready state-buffering" || currentClass == "phase-ready state-playing"); });
diff --git a/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-suspend-after-have-metadata.html b/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-suspend-after-have-metadata.html index 31946bb..4084dcd 100644 --- a/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-suspend-after-have-metadata.html +++ b/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-suspend-after-have-metadata.html
@@ -12,7 +12,7 @@ // Upgrade the stale flag to a higher state now to wakeup the element. In // a normal flow the stale flag can not be set prior to have future data. completeTestUponPlayback(test, mediaElement); - window.internals.forceStaleStateForMediaElement( + internals.forceStaleStateForMediaElement( mediaElement, HTMLMediaElement.HAVE_ENOUGH_DATA); });
diff --git a/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-suspend-before-have-metadata.html b/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-suspend-before-have-metadata.html index 8521045..b699b80c 100644 --- a/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-suspend-before-have-metadata.html +++ b/third_party/WebKit/LayoutTests/http/tests/media/media-source/mediasource-suspend-before-have-metadata.html
@@ -12,7 +12,7 @@ // Upgrade the stale flag to a higher state now to wakeup the element. In // a normal flow the stale flag can not be set prior to have future data. completeTestUponPlayback(test, mediaElement); - window.internals.forceStaleStateForMediaElement( + internals.forceStaleStateForMediaElement( mediaElement, HTMLMediaElement.HAVE_ENOUGH_DATA); });
diff --git a/third_party/WebKit/LayoutTests/http/tests/media/resources/autoplay-crossorigin-iframe.html b/third_party/WebKit/LayoutTests/http/tests/media/resources/autoplay-crossorigin-iframe.html index 1e99cfea..7100d91 100644 --- a/third_party/WebKit/LayoutTests/http/tests/media/resources/autoplay-crossorigin-iframe.html +++ b/third_party/WebKit/LayoutTests/http/tests/media/resources/autoplay-crossorigin-iframe.html
@@ -1,8 +1,8 @@ <!DOCTYPE html> <body></body> <script> -window.internals.settings.setAutoplayPolicy('user-gesture-required-for-cross-origin'); -window.internals.runtimeFlags.autoplayMutedVideosEnabled = true; +internals.settings.setAutoplayPolicy('user-gesture-required-for-cross-origin'); +internals.runtimeFlags.autoplayMutedVideosEnabled = true; { var video = document.createElement('video');
diff --git a/third_party/WebKit/LayoutTests/http/tests/media/video-controls-download-button-not-displayed-hide-download-ui.html b/third_party/WebKit/LayoutTests/http/tests/media/video-controls-download-button-not-displayed-hide-download-ui.html index 2c7c356abd..ae5a925a5 100644 --- a/third_party/WebKit/LayoutTests/http/tests/media/video-controls-download-button-not-displayed-hide-download-ui.html +++ b/third_party/WebKit/LayoutTests/http/tests/media/video-controls-download-button-not-displayed-hide-download-ui.html
@@ -6,7 +6,7 @@ <video controls></video> <script> async_test(function(t) { - window.internals.settings.setHideDownloadUI(true); + internals.settings.setHideDownloadUI(true); var video = document.querySelector("video"); video.src = "resources/test.ogv"; var controlID = "-internal-media-controls-download-button";
diff --git a/third_party/WebKit/LayoutTests/http/tests/mime/javascript-mimetype-usecounters.html b/third_party/WebKit/LayoutTests/http/tests/mime/javascript-mimetype-usecounters.html index 0bff814..2bd6e64 100644 --- a/third_party/WebKit/LayoutTests/http/tests/mime/javascript-mimetype-usecounters.html +++ b/third_party/WebKit/LayoutTests/http/tests/mime/javascript-mimetype-usecounters.html
@@ -22,7 +22,7 @@ CrossOriginApplicationScript, CrossOriginOtherScript]; function getUseCounters() { - return counters.map(counter => window.internals.isUseCounted(document, counter)); + return counters.map(counter => internals.isUseCounted(document, counter)); } function testCase(test, callback) { var previousCounters = getUseCounters();
diff --git a/third_party/WebKit/LayoutTests/http/tests/misc/authentication-redirect-4/resources/auth-echo.php b/third_party/WebKit/LayoutTests/http/tests/misc/authentication-redirect-4/resources/auth-echo.php index 164a00f6..3cb483e 100644 --- a/third_party/WebKit/LayoutTests/http/tests/misc/authentication-redirect-4/resources/auth-echo.php +++ b/third_party/WebKit/LayoutTests/http/tests/misc/authentication-redirect-4/resources/auth-echo.php
@@ -2,5 +2,5 @@ document.write(document.location); document.write(" loaded with HTTP authentication username '<? echo $_SERVER["PHP_AUTH_USER"] ?>' and password '<? echo $_SERVER["PHP_AUTH_PW"] ?>'"); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/misc/crash-multiple-family-fontface.html b/third_party/WebKit/LayoutTests/http/tests/misc/crash-multiple-family-fontface.html index eca8cb67..1aabb1a 100644 --- a/third_party/WebKit/LayoutTests/http/tests/misc/crash-multiple-family-fontface.html +++ b/third_party/WebKit/LayoutTests/http/tests/misc/crash-multiple-family-fontface.html
@@ -13,7 +13,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/post-301-response.html b/third_party/WebKit/LayoutTests/http/tests/navigation/post-301-response.html index 72063dd..166be024 100644 --- a/third_party/WebKit/LayoutTests/http/tests/navigation/post-301-response.html +++ b/third_party/WebKit/LayoutTests/http/tests/navigation/post-301-response.html
@@ -3,8 +3,8 @@ <script> var doTest = function () { if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } document.getElementById("form1").submit(); };
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/post-302-response.html b/third_party/WebKit/LayoutTests/http/tests/navigation/post-302-response.html index f8202ba..ca4d4bfd2 100644 --- a/third_party/WebKit/LayoutTests/http/tests/navigation/post-302-response.html +++ b/third_party/WebKit/LayoutTests/http/tests/navigation/post-302-response.html
@@ -3,8 +3,8 @@ <script> var doTest = function () { if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } document.getElementById("form1").submit(); };
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/post-303-response.html b/third_party/WebKit/LayoutTests/http/tests/navigation/post-303-response.html index ae2d8f92..354af5c7 100644 --- a/third_party/WebKit/LayoutTests/http/tests/navigation/post-303-response.html +++ b/third_party/WebKit/LayoutTests/http/tests/navigation/post-303-response.html
@@ -3,8 +3,8 @@ <script> var doTest = function () { if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } document.getElementById("form1").submit(); };
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/post-307-response.html b/third_party/WebKit/LayoutTests/http/tests/navigation/post-307-response.html index c914316..0b45a86 100644 --- a/third_party/WebKit/LayoutTests/http/tests/navigation/post-307-response.html +++ b/third_party/WebKit/LayoutTests/http/tests/navigation/post-307-response.html
@@ -3,8 +3,8 @@ <script> var doTest = function () { if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } document.getElementById("form1").submit(); };
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/post-redirect-get-reload.php b/third_party/WebKit/LayoutTests/http/tests/navigation/post-redirect-get-reload.php index 4eb2ea5..6d916ff 100644 --- a/third_party/WebKit/LayoutTests/http/tests/navigation/post-redirect-get-reload.php +++ b/third_party/WebKit/LayoutTests/http/tests/navigation/post-redirect-get-reload.php
@@ -23,7 +23,7 @@ } else { window.sessionStorage.clear(); testRunner.waitForPolicyDelegate(); - window.internals.forceReload(false); + internals.forceReload(false); } } </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/navigation/resources/back-send-referrer-helper.php b/third_party/WebKit/LayoutTests/http/tests/navigation/resources/back-send-referrer-helper.php index cfc1f5c4..6d9dd3c2 100644 --- a/third_party/WebKit/LayoutTests/http/tests/navigation/resources/back-send-referrer-helper.php +++ b/third_party/WebKit/LayoutTests/http/tests/navigation/resources/back-send-referrer-helper.php
@@ -24,7 +24,7 @@ history.go(-1); } else { if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/notifications/notification-properties-expected.txt b/third_party/WebKit/LayoutTests/http/tests/notifications/notification-properties-expected.txt deleted file mode 100644 index 5cbefc3..0000000 --- a/third_party/WebKit/LayoutTests/http/tests/notifications/notification-properties-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL Checks the properties exposed on the Notification object. Test bug: need to pass exception to assert_throws() -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/http/tests/notifications/notification-properties.html b/third_party/WebKit/LayoutTests/http/tests/notifications/notification-properties.html index 74fadebd..7e5e34e 100644 --- a/third_party/WebKit/LayoutTests/http/tests/notifications/notification-properties.html +++ b/third_party/WebKit/LayoutTests/http/tests/notifications/notification-properties.html
@@ -48,7 +48,7 @@ assert_array_equals(notification.actions, options.actions); // The `actions` field should be immutable. - assert_throws(null, () => notification.actions.push(null)); + assert_throws(new TypeError, () => notification.actions.push(null)); notification.actions.foo = 'bar'; assert_false(notification.actions.hasOwnProperty('foo')); @@ -106,7 +106,7 @@ assert_array_equals(vibrateNotification.vibrate, [1000]); // The `vibrate` property should be immutable. - assert_throws(null, () => vibrateNotification.vibrate.push(1000)); + assert_throws(new TypeError, () => vibrateNotification.vibrate.push(1000)); vibrateNotification.vibrate[0] = 2000; assert_equals(vibrateNotification.vibrate[0], 1000);
diff --git a/third_party/WebKit/LayoutTests/http/tests/notifications/serviceworker-notification-properties-expected.txt b/third_party/WebKit/LayoutTests/http/tests/notifications/serviceworker-notification-properties-expected.txt deleted file mode 100644 index c5ef03c..0000000 --- a/third_party/WebKit/LayoutTests/http/tests/notifications/serviceworker-notification-properties-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL Clicking on a notification displayed by a Service Worker the notificationclick event. assert_unreached: unexpected rejection: Test bug: need to pass exception to assert_throws() Reached unreachable code -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/http/tests/notifications/serviceworker-notification-properties.html b/third_party/WebKit/LayoutTests/http/tests/notifications/serviceworker-notification-properties.html index a47fa331..3a6ebc3e 100644 --- a/third_party/WebKit/LayoutTests/http/tests/notifications/serviceworker-notification-properties.html +++ b/third_party/WebKit/LayoutTests/http/tests/notifications/serviceworker-notification-properties.html
@@ -97,7 +97,7 @@ assert_object_is_superset(notifications[0], options, 'The Notification object properties must be the same in getNotifications.'); notifications[0].actions.foo = 'bar'; - assert_throws(null, () => notifications[0].actions.push({ title: 'Foo' })); + assert_throws(new TypeError, () => notifications[0].actions.push({ title: 'Foo' })); if (notifications[0].actions.length) { notifications[0].actions[0].title = 'Changed';
diff --git a/third_party/WebKit/LayoutTests/http/tests/origin_trials/resources/origintrials.js b/third_party/WebKit/LayoutTests/http/tests/origin_trials/resources/origintrials.js index 20bb20b..8922492 100644 --- a/third_party/WebKit/LayoutTests/http/tests/origin_trials/resources/origintrials.js +++ b/third_party/WebKit/LayoutTests/http/tests/origin_trials/resources/origintrials.js
@@ -6,7 +6,7 @@ // Verify that the given member exists, and returns an actual value // (i.e. not undefined). expect_member = (member_name, get_value_func) => { - var testObject = window.internals.originTrialsTest(); + var testObject = internals.originTrialsTest(); assert_idl_attribute(testObject, member_name); assert_true(get_value_func(testObject), 'Member should return boolean value'); @@ -15,7 +15,7 @@ // Verify that the given member exists on the returned dictionary, and returns // an actual value (i.e. not undefined). expect_dictionary_member = (dictionary_member_name) => { - var testObject = window.internals.originTrialsTest(); + var testObject = internals.originTrialsTest(); var dictionary = testObject.getDictionaryMethod(); assert_exists(dictionary, dictionary_member_name); assert_true(dictionary[dictionary_member_name], @@ -25,7 +25,7 @@ // Verify that the given member is accessed as part of dictionary input to a // method expect_input_dictionary_member = (dictionary_member_name) => { - var testObject = window.internals.originTrialsTest(); + var testObject = internals.originTrialsTest(); // Test via a getter in the object to see if the member is accessed var memberAccessed = false; @@ -45,7 +45,7 @@ // Verify that the given static member exists, and returns an actual value // (i.e. not undefined). expect_static_member = (member_name, get_value_func) => { - var testObject = window.internals.originTrialsTest(); + var testObject = internals.originTrialsTest(); var testInterface = testObject.constructor; assert_exists(testInterface, member_name); assert_true(get_value_func(testInterface), @@ -55,7 +55,7 @@ // Verify that the given constant exists, and returns the expected value, and // is not modifiable. expect_constant = (constant_name, constant_value, get_value_func) => { - var testObject = window.internals.originTrialsTest(); + var testObject = internals.originTrialsTest(); var testInterface = testObject.constructor; assert_exists(testInterface, constant_name); assert_equals(get_value_func(testInterface), constant_value, @@ -68,7 +68,7 @@ // Verify that given member does not exist, and does not provide a value // (i.e. is undefined). expect_member_fails = (member_name) => { - var testObject = window.internals.originTrialsTest(); + var testObject = internals.originTrialsTest(); assert_false(member_name in testObject); assert_not_exists(testObject, member_name); assert_equals(testObject[member_name], undefined); @@ -77,7 +77,7 @@ // Verify that the given member does not exist on the returned dictionary, and // does not provide a value (i.e. is undefined). expect_dictionary_member_fails = (dictionary_member_name) => { - var testObject = window.internals.originTrialsTest(); + var testObject = internals.originTrialsTest(); var dictionary = testObject.getDictionaryMethod(); assert_false(dictionary_member_name in dictionary); assert_not_exists(dictionary, dictionary_member_name); @@ -88,7 +88,7 @@ // Verify that the given member is not accessed as part of dictionary input to a // method expect_input_dictionary_member_fails = (dictionary_member_name) => { - var testObject = window.internals.originTrialsTest(); + var testObject = internals.originTrialsTest(); // Test via a getter in the object to see if the member is accessed var memberAccessed = false; @@ -108,7 +108,7 @@ // Verify that given static member does not exist, and does not provide a value // (i.e. is undefined). expect_static_member_fails = (member_name) => { - var testObject = window.internals.originTrialsTest(); + var testObject = internals.originTrialsTest(); var testInterface = testObject.constructor; assert_false(member_name in testInterface); assert_not_exists(testInterface, member_name); @@ -119,7 +119,7 @@ expect_failure = (skip_worker) => { test(() => { - var testObject = window.internals.originTrialsTest(); + var testObject = internals.originTrialsTest(); assert_idl_attribute(testObject, 'throwingAttribute'); assert_throws("NotSupportedError", () => { testObject.throwingAttribute; }, 'Accessing attribute should throw error');
diff --git a/third_party/WebKit/LayoutTests/http/tests/performance-timing/custom-user-timing/performanceobservers.js b/third_party/WebKit/LayoutTests/http/tests/performance-timing/custom-user-timing/performanceobservers.js index 086ae34..5c7ecb6 100644 --- a/third_party/WebKit/LayoutTests/http/tests/performance-timing/custom-user-timing/performanceobservers.js +++ b/third_party/WebKit/LayoutTests/http/tests/performance-timing/custom-user-timing/performanceobservers.js
@@ -10,7 +10,8 @@ if (ex.entryType === pe.entryType && ex.name === pe.name && (ex.detail === undefined || JSON.stringify(ex.detail) === JSON.stringify(pe.detail)) && - (ex.startTime === undefined || ex.startTime === pe.startTime)) { + (ex.startTime === undefined || ex.startTime === pe.startTime) && + (ex.duration === undefined || ex.duration === pe.duration)) { return ex; } } @@ -20,7 +21,7 @@ assert_equals(perfEntriesToCheck.length, expectedEntries.length, "performance entries must match"); - perfEntriesToCheck.forEach((pe) => { - assert_not_equals(findMatch(pe), null, "Entry matches"); + perfEntriesToCheck.forEach(function(pe) { + assert_not_equals(findMatch(pe), null, "Entry matches. Entry:" + JSON.stringify(pe) + ", All:" + JSON.stringify(expectedEntries)); }); } \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/http/tests/performance-timing/custom-user-timing/po-customusertiming-featuredetection.html b/third_party/WebKit/LayoutTests/http/tests/performance-timing/custom-user-timing/po-customusertiming-featuredetection.html new file mode 100644 index 0000000..66ff5a8 --- /dev/null +++ b/third_party/WebKit/LayoutTests/http/tests/performance-timing/custom-user-timing/po-customusertiming-featuredetection.html
@@ -0,0 +1,17 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Custom User Timing: L3 API returns a mark/measure object</title> +<script src="../../../../resources/testharness.js"></script> +<script src="../../../../resources/testharnessreport.js"></script> +<script src="performanceobservers.js"></script> +<p>Custom User Timing: L3 API returns a mark/measure object</p> +<div id="log"></div> +<script> + async_test(function (t) { + self.performance.clearMeasures(); + const measure = self.performance.measure("measure1", + { startTime: 12, endTime:23, detail: {info: 45 }}); + assert_equals(measure.startTime, 12); + t.done(); + }, "L3 measure API returns a measure object."); +</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/performance-timing/custom-user-timing/po-customusertiming-measure.html b/third_party/WebKit/LayoutTests/http/tests/performance-timing/custom-user-timing/po-customusertiming-measure.html new file mode 100644 index 0000000..062a8e3 --- /dev/null +++ b/third_party/WebKit/LayoutTests/http/tests/performance-timing/custom-user-timing/po-customusertiming-measure.html
@@ -0,0 +1,95 @@ +<!DOCTYPE HTML> +<meta charset=utf-8> +<title>Custom User Timing: measure</title> +<script src="../../../../resources/testharness.js"></script> +<script src="../../../../resources/testharnessreport.js"></script> +<script src="performanceobservers.js"></script> +<h1>Custom User Timing: measure</h1> +<p> +Custom User Timing: measure +</p> +<div id="log"></div> +<script> + async_test(function (t) { + let measureEntries = []; + const timeStamp1 = 784.4; + const timeStamp2 = 1234.5; + const timeStamp3 = 66.6; + const timeStamp4 = 5566; + const expectectedEntries = + [{ entryType: "measure", name: "measure1", detail: null, startTime: 0 }, + { entryType: "measure", name: "measure2", detail: null, startTime: 0 }, + { entryType: "measure", name: "measure3", detail: null, startTime: 0 }, + { entryType: "measure", name: "measure4", detail: null }, + { entryType: "measure", name: "measure5", detail: null }, + { entryType: "measure", name: "measure6", detail: null, startTime: 0 }, + { entryType: "measure", name: "measure7", detail: null, startTime: 0 }, + { entryType: "measure", name: "measure8", detail: null, startTime: timeStamp2 }, + { entryType: "measure", name: "measure9", detail: null, startTime: timeStamp2, duration: timeStamp3 - timeStamp2 }, + { entryType: "measure", name: "measure10", detail: null, startTime: timeStamp2, duration: timeStamp1 - timeStamp2 }, + { entryType: "measure", name: "measure11", detail: null, startTime: timeStamp1 }, + { entryType: "measure", name: "measure12", detail: null, startTime: timeStamp1, duration: timeStamp3 - timeStamp1 }, + { entryType: "measure", name: "measure13", detail: null, startTime: timeStamp1, duration: timeStamp2 - timeStamp1 }, + { entryType: "measure", name: "measure14", detail: null, startTime: 0 }, + { entryType: "measure", name: "measure15", detail: null, startTime: 0 }, + { entryType: "measure", name: "measure16", detail: null, startTime: 0 }, + { entryType: "measure", name: "measure17", detail: null, startTime: timeStamp1 }, + { entryType: "measure", name: "measure18", detail: null, startTime: timeStamp3 }, + { entryType: "measure", name: "measure19", detail: null, startTime: 0 }, + { entryType: "measure", name: "measure20", detail: null, startTime: 0 }, + { entryType: "measure", name: "measure21", detail: null, startTime: timeStamp3, duration: timeStamp1 - timeStamp3 }, + { entryType: "measure", name: "measure22", detail: null, startTime: timeStamp1, duration: timeStamp2 - timeStamp1 }, + { entryType: "measure", name: "measure23", detail: null, startTime: timeStamp1 }, + { entryType: "measure", name: "measure24", detail: {}, startTime: 0 }, + { entryType: "measure", name: "measure25", detail: { customInfo: 159 }, startTime: timeStamp3, duration: timeStamp2 - timeStamp3 }]; + const observer = new PerformanceObserver( + t.step_func(function (entryList, obs) { + measureEntries = + measureEntries.concat(entryList.getEntries()); + if (measureEntries.length >= expectectedEntries.length) { + checkEntries(measureEntries, expectectedEntries); + observer.disconnect(); + t.done(); + } + }) + ); + self.performance.clearMarks(); + self.performance.clearMeasures(); + observer.observe({ entryTypes: ["measure"] }); + self.performance.mark("mark1", { detail: { randomInfo: 3 }, startTime: timeStamp1 }); + self.performance.mark("mark2", timeStamp2); + + self.performance.measure("measure1"); + self.performance.measure("measure2", undefined); + self.performance.measure("measure3", null); + self.performance.measure("measure4", timeStamp1); + self.performance.measure("measure5", 'mark1'); + self.performance.measure("measure6", undefined, timeStamp1); + self.performance.measure("measure7", null, 'mark1'); + self.performance.measure("measure8", timeStamp2, null); + self.performance.measure("measure9", timeStamp2, timeStamp3); + self.performance.measure("measure10", timeStamp2, 'mark1'); + self.performance.measure("measure11", 'mark1', undefined); + self.performance.measure("measure12", 'mark1', timeStamp3); + self.performance.measure("measure13", 'mark1', 'mark2'); + self.performance.measure("measure14", {}); + self.performance.measure("measure15", { startTime: null }); + self.performance.measure("measure16", { startTime: undefined }); + self.performance.measure("measure17", { startTime: 'mark1' }); + self.performance.measure("measure18", { startTime: timeStamp3 }); + self.performance.measure("measure19", { endTime: undefined }); + self.performance.measure("measure20", { endTime: 'mark1' }); + self.performance.measure("measure21", { startTime: timeStamp3, endTime: 'mark1' }); + self.performance.measure("measure22", { startTime: timeStamp1, endTime: timeStamp2, detail: undefined }); + self.performance.measure("measure23", { startTime: 'mark1', endTime: undefined, detail: null }); + self.performance.measure("measure24", { startTime: null, endTime: timeStamp1, detail: {} }); + self.performance.measure("measure25", { startTime: timeStamp3, endTime: 'mark2', detail: { customInfo: 159 }}); + }, "measure entries' detail and start/end are customizable"); + + async_test(function (t) { + assert_throws("SyntaxError", function() { + self.performance.measure("wrongUsage1", {}, 12); + }); + t.done(); + }, "measure should throw exception when passing option object and end at the same time"); +</script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/preload/meta-viewport-link-headers.html b/third_party/WebKit/LayoutTests/http/tests/preload/meta-viewport-link-headers.html index 947bb3fd..0b13d90 100644 --- a/third_party/WebKit/LayoutTests/http/tests/preload/meta-viewport-link-headers.html +++ b/third_party/WebKit/LayoutTests/http/tests/preload/meta-viewport-link-headers.html
@@ -1,8 +1,8 @@ <!DOCTYPE html> <script> if (window.internals) { - window.internals.settings.setViewportEnabled(true); - window.internals.settings.setViewportMetaEnabled(true); + internals.settings.setViewportEnabled(true); + internals.settings.setViewportMetaEnabled(true); } if (window.testRunner) { testRunner.setCanOpenWindows(true);
diff --git a/third_party/WebKit/LayoutTests/http/tests/previews/client-lofi-sprite.html b/third_party/WebKit/LayoutTests/http/tests/previews/client-lofi-sprite.html index 9513678..9a164334 100644 --- a/third_party/WebKit/LayoutTests/http/tests/previews/client-lofi-sprite.html +++ b/third_party/WebKit/LayoutTests/http/tests/previews/client-lofi-sprite.html
@@ -12,7 +12,7 @@ <div id="sprite3"></div> <div id="sprite4"></div> <script> - window.internals.settings.setFetchImagePlaceholders(true); + internals.settings.setFetchImagePlaceholders(true); document.getElementById("sprite1").style.cssText = 'background: url(https://127.0.0.1:8443/resources/square200.png) 0 0;'; document.getElementById("sprite2").style.cssText = 'background: url(https://127.0.0.1:8443/resources/square200.png) 0 10px;'; document.getElementById("sprite3").style.cssText = 'background: url(https://127.0.0.1:8443/resources/square200.png) 10px 0;';
diff --git a/third_party/WebKit/LayoutTests/http/tests/push_messaging/pushmessagedata-expected.txt b/third_party/WebKit/LayoutTests/http/tests/push_messaging/pushmessagedata-expected.txt deleted file mode 100644 index 30fda97..0000000 --- a/third_party/WebKit/LayoutTests/http/tests/push_messaging/pushmessagedata-expected.txt +++ /dev/null
@@ -1,12 +0,0 @@ -This is a testharness.js-based test. -PASS PushMessageData initialization and accessor behaviour in a ServiceWorker. -PASS PushEvent can be initialized from ArrayBuffer, ArrayBufferView and USVStrings. -PASS PushMessageData is null by default. -PASS PushMessageData handling of ArrayBuffer content. -PASS PushMessageData handling of Blob content. -PASS PushMessageData handling of valid JSON content. -FAIL PushMessageData handling of invalid JSON content. Test bug: need to pass exception to assert_throws() -FAIL PushMessageData should not be constructable. Test bug: need to pass exception to assert_throws() -PASS PushEventInit data is not normalized -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/http/tests/push_messaging/resources/pushmessagedata-worker.js b/third_party/WebKit/LayoutTests/http/tests/push_messaging/resources/pushmessagedata-worker.js index 6b9a49f..f330a6f 100644 --- a/third_party/WebKit/LayoutTests/http/tests/push_messaging/resources/pushmessagedata-worker.js +++ b/third_party/WebKit/LayoutTests/http/tests/push_messaging/resources/pushmessagedata-worker.js
@@ -91,14 +91,14 @@ test(function() { // Note that we do not care about the exception code - it's pass through. - assert_throws(null, () => createPushMessageData('\\o/').json()); + assert_throws(new SyntaxError, () => createPushMessageData('\\o/').json()); }, 'PushMessageData handling of invalid JSON content.'); test(function() { - assert_throws(null, () => new PushMessageData()); - assert_throws(null, () => new PushMessageData('Hello, world!')); - assert_throws(null, () => new PushMessageData(new ArrayBuffer(8))); + assert_throws(new TypeError, () => new PushMessageData()); + assert_throws(new TypeError, () => new PushMessageData('Hello, world!')); + assert_throws(new TypeError, () => new PushMessageData(new ArrayBuffer(8))); }, 'PushMessageData should not be constructable.');
diff --git a/third_party/WebKit/LayoutTests/http/tests/resources/feature-policy-permissions-test.js b/third_party/WebKit/LayoutTests/http/tests/resources/feature-policy-permissions-test.js index a400d7b..cfc5a43 100644 --- a/third_party/WebKit/LayoutTests/http/tests/resources/feature-policy-permissions-test.js +++ b/third_party/WebKit/LayoutTests/http/tests/resources/feature-policy-permissions-test.js
@@ -1,6 +1,6 @@ function grant_permission(feature_name, url) { if (window.testRunner) { - window.testRunner.setPermission( + testRunner.setPermission( feature_name, 'granted', url, location.origin); } }
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/dangling-markup/a-ping-expected.txt b/third_party/WebKit/LayoutTests/http/tests/security/dangling-markup/a-ping-expected.txt index be7ce72f..bf1ba61 100644 --- a/third_party/WebKit/LayoutTests/http/tests/security/dangling-markup/a-ping-expected.txt +++ b/third_party/WebKit/LayoutTests/http/tests/security/dangling-markup/a-ping-expected.txt
@@ -1,4 +1,4 @@ -CONSOLE ERROR: line 10: This test relies on dumping data via `window.testRunner.dumpPingLoaderCallbacks()`. No URLs containing 'block' should be pinged. +CONSOLE ERROR: line 10: This test relies on dumping data via `testRunner.dumpPingLoaderCallbacks()`. No URLs containing 'block' should be pinged. PingLoader dispatched to 'http://127.0.0.1:8000/resources/square.png?1'. PingLoader dispatched to 'http://127.0.0.1:8000/resources/squ'. PingLoader dispatched to 'http://127.0.0.1:8000/security/dangling-markup/are.png?2'.
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/dangling-markup/a-ping.html b/third_party/WebKit/LayoutTests/http/tests/security/dangling-markup/a-ping.html index 85ab692c..0b0df89 100644 --- a/third_party/WebKit/LayoutTests/http/tests/security/dangling-markup/a-ping.html +++ b/third_party/WebKit/LayoutTests/http/tests/security/dangling-markup/a-ping.html
@@ -7,7 +7,7 @@ testRunner.overridePreference("WebKitHyperlinkAuditingEnabled", 1); testRunner.dumpPingLoaderCallbacks(); } - console.error("This test relies on dumping data via `window.testRunner.dumpPingLoaderCallbacks()`. No URLs containing 'block' should be pinged."); + console.error("This test relies on dumping data via `testRunner.dumpPingLoaderCallbacks()`. No URLs containing 'block' should be pinged."); </script> </head> <body>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/isolatedWorld/media-query-wrapper-leaks.html b/third_party/WebKit/LayoutTests/http/tests/security/isolatedWorld/media-query-wrapper-leaks.html index 3615cffe..2cc4030f 100644 --- a/third_party/WebKit/LayoutTests/http/tests/security/isolatedWorld/media-query-wrapper-leaks.html +++ b/third_party/WebKit/LayoutTests/http/tests/security/isolatedWorld/media-query-wrapper-leaks.html
@@ -16,7 +16,7 @@ ' document.querySelector("#result").innerHTML = query.expando === "nyan" ? "PASS" : "FAIL";'+ '});'); -window.internals.settings.setMediaTypeOverride("print"); +internals.settings.setMediaTypeOverride("print"); setTimeout(function () { testRunner.notifyDone(); }, 0); </script> </body>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/mixedContent/insecure-iframe-with-hsts.https.html b/third_party/WebKit/LayoutTests/http/tests/security/mixedContent/insecure-iframe-with-hsts.https.html index 425c6884..8ecda4e 100644 --- a/third_party/WebKit/LayoutTests/http/tests/security/mixedContent/insecure-iframe-with-hsts.https.html +++ b/third_party/WebKit/LayoutTests/http/tests/security/mixedContent/insecure-iframe-with-hsts.https.html
@@ -3,7 +3,7 @@ <script src="/resources/testharnessreport.js"></script> <body> <script> - window.testRunner.dumpFrameLoadCallbacks(); + testRunner.dumpFrameLoadCallbacks(); async_test(t => { fetch("https://hsts-example.test:8443/security/resources/hsts.php?as-fetch")
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/originHeader/resources/print-origin.cgi b/third_party/WebKit/LayoutTests/http/tests/security/originHeader/resources/print-origin.cgi index aba7de6..0e102d5 100755 --- a/third_party/WebKit/LayoutTests/http/tests/security/originHeader/resources/print-origin.cgi +++ b/third_party/WebKit/LayoutTests/http/tests/security/originHeader/resources/print-origin.cgi
@@ -9,6 +9,6 @@ print <<DONE <script> if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); </script> DONE
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-form-top.html b/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-form-top.html index f54103a..1a5c3ab 100644 --- a/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-form-top.html +++ b/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-form-top.html
@@ -2,8 +2,8 @@ <head> <script> if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } </script> </head>
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-modify-self.html b/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-modify-self.html index 2108130d..400bb3c1 100644 --- a/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-modify-self.html +++ b/third_party/WebKit/LayoutTests/http/tests/security/sandboxed-iframe-modify-self.html
@@ -3,7 +3,7 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); window.onload = function() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/subresourceIntegrity/subresource-integrity-invalid-integrity-console-messages.html b/third_party/WebKit/LayoutTests/http/tests/security/subresourceIntegrity/subresource-integrity-invalid-integrity-console-messages.html index 3254573..6f9197f 100644 --- a/third_party/WebKit/LayoutTests/http/tests/security/subresourceIntegrity/subresource-integrity-invalid-integrity-console-messages.html +++ b/third_party/WebKit/LayoutTests/http/tests/security/subresourceIntegrity/subresource-integrity-invalid-integrity-console-messages.html
@@ -6,7 +6,7 @@ <body> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); var count = 0; function checkDone() {
diff --git a/third_party/WebKit/LayoutTests/http/tests/security/w3c/cross-origin-objects.html b/third_party/WebKit/LayoutTests/http/tests/security/w3c/cross-origin-objects.html index 9573356e..6976d5ff 100644 --- a/third_party/WebKit/LayoutTests/http/tests/security/w3c/cross-origin-objects.html +++ b/third_party/WebKit/LayoutTests/http/tests/security/w3c/cross-origin-objects.html
@@ -24,7 +24,7 @@ } else { // The main content of the test. if (window.testRunner) - window.testRunner.setCanOpenWindows(); + testRunner.setCanOpenWindows(); /* * Setup boilerplate. This gives us a same-origin window "B" and a cross-origin
diff --git a/third_party/WebKit/LayoutTests/http/tests/text-autosizing/resources/autosizingTest.js b/third_party/WebKit/LayoutTests/http/tests/text-autosizing/resources/autosizingTest.js index f0e30d18..c05de8d 100644 --- a/third_party/WebKit/LayoutTests/http/tests/text-autosizing/resources/autosizingTest.js +++ b/third_party/WebKit/LayoutTests/http/tests/text-autosizing/resources/autosizingTest.js
@@ -1,16 +1,16 @@ function setWindowSizeOverride(width, height) { if (window.internals) - window.internals.settings.setTextAutosizingWindowSizeOverride(width, height); + internals.settings.setTextAutosizingWindowSizeOverride(width, height); } function setFontScaleFactor(scale) { if (window.internals) - window.internals.settings.setAccessibilityFontScaleFactor(scale); + internals.settings.setAccessibilityFontScaleFactor(scale); } function initAutosizingTest() { if (window.internals) { - window.internals.settings.setTextAutosizingEnabled(true); + internals.settings.setTextAutosizingEnabled(true); setWindowSizeOverride(320, 480); } else if (window.console && console.warn) { console.warn("This test depends on Text Autosizing being enabled. Run with content shell "
diff --git a/third_party/WebKit/LayoutTests/http/tests/wasm/wasm_downgrade_test.js b/third_party/WebKit/LayoutTests/http/tests/wasm/wasm_downgrade_test.js index ad735b8..a66e4f8 100644 --- a/third_party/WebKit/LayoutTests/http/tests/wasm/wasm_downgrade_test.js +++ b/third_party/WebKit/LayoutTests/http/tests/wasm/wasm_downgrade_test.js
@@ -18,7 +18,7 @@ function TestIncompatibleDowngrade() { return createWasmModule() .then((mod) => { - var buffer = window.internals.serializeWithInlineWasm(mod); + var buffer = internals.serializeWithInlineWasm(mod); var byteView = new Uint8Array(buffer); // The serialized payload starts with some serialization header, followed // by the wasm wire bytes. Those should start with the characters @@ -42,7 +42,7 @@ assert_true(invalidated, "the serialized blob should contain some non-null bytes."); - var deserialized = window.internals.deserializeBufferContainingWasm(byteView.buffer); + var deserialized = internals.deserializeBufferContainingWasm(byteView.buffer); assert_equals(deserialized, null); }); }
diff --git a/third_party/WebKit/LayoutTests/http/tests/webaudio/resources/autoplay-crossorigin-iframe.html b/third_party/WebKit/LayoutTests/http/tests/webaudio/resources/autoplay-crossorigin-iframe.html index b2ac702..0a85a534 100644 --- a/third_party/WebKit/LayoutTests/http/tests/webaudio/resources/autoplay-crossorigin-iframe.html +++ b/third_party/WebKit/LayoutTests/http/tests/webaudio/resources/autoplay-crossorigin-iframe.html
@@ -2,7 +2,7 @@ <body><span>click me</span></body> <script> if ('internals' in window) - window.internals.settings.setAutoplayPolicy('user-gesture-required'); + internals.settings.setAutoplayPolicy('user-gesture-required'); function synthesizeClick(callback) { document.onclick = callback;
diff --git a/third_party/WebKit/LayoutTests/http/tests/worklet/usecounter-on-addmodule.html b/third_party/WebKit/LayoutTests/http/tests/worklet/usecounter-on-addmodule.html index e9dcac7..4eebdbc 100644 --- a/third_party/WebKit/LayoutTests/http/tests/worklet/usecounter-on-addmodule.html +++ b/third_party/WebKit/LayoutTests/http/tests/worklet/usecounter-on-addmodule.html
@@ -11,9 +11,9 @@ const kFeature = 2364; test(() => { - assert_false(window.internals.isUseCounted(window.document, kFeature)); + assert_false(internals.isUseCounted(window.document, kFeature)); CSS.paintWorklet.addModule('resources/empty-worklet-script.js'); - assert_true(window.internals.isUseCounted(window.document, kFeature)); + assert_true(internals.isUseCounted(window.document, kFeature)); }, 'The usage count of Worklet.addModule() should be recorded in UseCounter.'); </script>
diff --git a/third_party/WebKit/LayoutTests/http/tests/xmlviewer/dumpAsText/frames.html b/third_party/WebKit/LayoutTests/http/tests/xmlviewer/dumpAsText/frames.html index e35f5a9..eb55b34 100644 --- a/third_party/WebKit/LayoutTests/http/tests/xmlviewer/dumpAsText/frames.html +++ b/third_party/WebKit/LayoutTests/http/tests/xmlviewer/dumpAsText/frames.html
@@ -5,7 +5,7 @@ function onload() { if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); } var iframesOpened = 0;
diff --git a/third_party/WebKit/LayoutTests/ietestcenter/css3/bordersbackgrounds/background-attachment-local-scrolling.htm b/third_party/WebKit/LayoutTests/ietestcenter/css3/bordersbackgrounds/background-attachment-local-scrolling.htm index be02c1c..b7e4943e 100644 --- a/third_party/WebKit/LayoutTests/ietestcenter/css3/bordersbackgrounds/background-attachment-local-scrolling.htm +++ b/third_party/WebKit/LayoutTests/ietestcenter/css3/bordersbackgrounds/background-attachment-local-scrolling.htm
@@ -49,7 +49,7 @@ <script> if (window.testRunner) { // Unfortunately, this needs to be a pixel test - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); } </script> @@ -83,7 +83,7 @@ function finished() { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script>
diff --git a/third_party/WebKit/LayoutTests/images/12-55.html b/third_party/WebKit/LayoutTests/images/12-55.html index 5746fb1f..79348c3d 100644 --- a/third_party/WebKit/LayoutTests/images/12-55.html +++ b/third_party/WebKit/LayoutTests/images/12-55.html
@@ -81,7 +81,7 @@ <input type="submit" onclick="location.reload()" value="Reload the page for new results"> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> </body> </html>
diff --git a/third_party/WebKit/LayoutTests/images/182.html b/third_party/WebKit/LayoutTests/images/182.html index 6fd326b..0fa0b87 100644 --- a/third_party/WebKit/LayoutTests/images/182.html +++ b/third_party/WebKit/LayoutTests/images/182.html
@@ -81,7 +81,7 @@ <input type="submit" onclick="location.reload()" value="Reload the page for new results"> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> </body> </html>
diff --git a/third_party/WebKit/LayoutTests/images/2-comp.html b/third_party/WebKit/LayoutTests/images/2-comp.html index 319d02d..a1c4f639 100644 --- a/third_party/WebKit/LayoutTests/images/2-comp.html +++ b/third_party/WebKit/LayoutTests/images/2-comp.html
@@ -11,7 +11,7 @@ <img src="resources/59.jpg"><img src="resources/2-comp.jpg?31"><br> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> </body> </html> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/images/2-dht.html b/third_party/WebKit/LayoutTests/images/2-dht.html index 2daa16b..de81b17 100644 --- a/third_party/WebKit/LayoutTests/images/2-dht.html +++ b/third_party/WebKit/LayoutTests/images/2-dht.html
@@ -81,7 +81,7 @@ <input type="submit" onclick="location.reload()" value="Reload the page for new results"> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> </body> </html>
diff --git a/third_party/WebKit/LayoutTests/images/23-55.html b/third_party/WebKit/LayoutTests/images/23-55.html index 0fc8b14..3f4ea29d 100644 --- a/third_party/WebKit/LayoutTests/images/23-55.html +++ b/third_party/WebKit/LayoutTests/images/23-55.html
@@ -81,7 +81,7 @@ <input type="submit" onclick="location.reload()" value="Reload the page for new results"> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> </body> </html>
diff --git a/third_party/WebKit/LayoutTests/images/55.html b/third_party/WebKit/LayoutTests/images/55.html index 73252c36..d5f721f 100644 --- a/third_party/WebKit/LayoutTests/images/55.html +++ b/third_party/WebKit/LayoutTests/images/55.html
@@ -81,7 +81,7 @@ <input type="submit" onclick="location.reload()" value="Reload the page for new results"> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> </body> </html>
diff --git a/third_party/WebKit/LayoutTests/images/cHRM_color_spin.html b/third_party/WebKit/LayoutTests/images/cHRM_color_spin.html index e728d9ba..5e493e95 100644 --- a/third_party/WebKit/LayoutTests/images/cHRM_color_spin.html +++ b/third_party/WebKit/LayoutTests/images/cHRM_color_spin.html
@@ -2,5 +2,5 @@ <img src="resources/cHRM_color_spin.png"> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script>
diff --git a/third_party/WebKit/LayoutTests/images/color-profile-drag-image.html b/third_party/WebKit/LayoutTests/images/color-profile-drag-image.html index 605451c3..dc2dc21 100644 --- a/third_party/WebKit/LayoutTests/images/color-profile-drag-image.html +++ b/third_party/WebKit/LayoutTests/images/color-profile-drag-image.html
@@ -66,7 +66,7 @@ } if (window.testRunner) - setTimeout(function() { window.testRunner.notifyDone() }, 100); + setTimeout(function() { testRunner.notifyDone() }, 100); } </script>
diff --git a/third_party/WebKit/LayoutTests/images/color-profile-image-canvas-pattern.html b/third_party/WebKit/LayoutTests/images/color-profile-image-canvas-pattern.html index 84b0520c..b4565fe 100644 --- a/third_party/WebKit/LayoutTests/images/color-profile-image-canvas-pattern.html +++ b/third_party/WebKit/LayoutTests/images/color-profile-image-canvas-pattern.html
@@ -39,7 +39,7 @@ ctx.restore(); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } if (window.testRunner) {
diff --git a/third_party/WebKit/LayoutTests/images/color-profile-image-canvas-svg.html b/third_party/WebKit/LayoutTests/images/color-profile-image-canvas-svg.html index 54e7fb1..41244a41 100644 --- a/third_party/WebKit/LayoutTests/images/color-profile-image-canvas-svg.html +++ b/third_party/WebKit/LayoutTests/images/color-profile-image-canvas-svg.html
@@ -37,7 +37,7 @@ canvas.getContext('2d').drawImage(image, 0, 0); if (window.testRunner) - setTimeout(function() { window.testRunner.notifyDone() }, 0); + setTimeout(function() { testRunner.notifyDone() }, 0); } if (window.testRunner) {
diff --git a/third_party/WebKit/LayoutTests/images/color-profile-image-canvas.html b/third_party/WebKit/LayoutTests/images/color-profile-image-canvas.html index 99bf3cd..760904e 100644 --- a/third_party/WebKit/LayoutTests/images/color-profile-image-canvas.html +++ b/third_party/WebKit/LayoutTests/images/color-profile-image-canvas.html
@@ -32,7 +32,7 @@ canvas.getContext('2d').drawImage(image, 0, 0, canvas.width, canvas.height); if (window.testRunner) - setTimeout(function() { window.testRunner.notifyDone() }, 0); + setTimeout(function() { testRunner.notifyDone() }, 0); } if (window.testRunner) {
diff --git a/third_party/WebKit/LayoutTests/images/color-profile-layer-filter.html b/third_party/WebKit/LayoutTests/images/color-profile-layer-filter.html index a97264b..f546543 100644 --- a/third_party/WebKit/LayoutTests/images/color-profile-layer-filter.html +++ b/third_party/WebKit/LayoutTests/images/color-profile-layer-filter.html
@@ -30,8 +30,8 @@ } if (window.testRunner) { - window.testRunner.dumpAsTextWithPixelResults(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsTextWithPixelResults(); + testRunner.waitUntilDone(); } </script> </html>
diff --git a/third_party/WebKit/LayoutTests/images/color-profile-reflection.html b/third_party/WebKit/LayoutTests/images/color-profile-reflection.html index ec58703..004baf67 100644 --- a/third_party/WebKit/LayoutTests/images/color-profile-reflection.html +++ b/third_party/WebKit/LayoutTests/images/color-profile-reflection.html
@@ -27,7 +27,7 @@ }; function done() { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script> </html>
diff --git a/third_party/WebKit/LayoutTests/images/crash-when-zoom-factor-changes.html b/third_party/WebKit/LayoutTests/images/crash-when-zoom-factor-changes.html index b4fd88e..73283505 100644 --- a/third_party/WebKit/LayoutTests/images/crash-when-zoom-factor-changes.html +++ b/third_party/WebKit/LayoutTests/images/crash-when-zoom-factor-changes.html
@@ -4,5 +4,5 @@ <script> if (window.testRunner) testRunner.dumpAsText(); - window.internals.setZoomFactor(0.75); + internals.setZoomFactor(0.75); </script>
diff --git a/third_party/WebKit/LayoutTests/images/jpeg-with-color-profile.html b/third_party/WebKit/LayoutTests/images/jpeg-with-color-profile.html index 53275a6..534a98e 100644 --- a/third_party/WebKit/LayoutTests/images/jpeg-with-color-profile.html +++ b/third_party/WebKit/LayoutTests/images/jpeg-with-color-profile.html
@@ -2,5 +2,5 @@ <img src="resources/red-at-12-oclock-with-color-profile.jpg" width="400px"> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script>
diff --git a/third_party/WebKit/LayoutTests/images/paletted-png-with-color-profile.html b/third_party/WebKit/LayoutTests/images/paletted-png-with-color-profile.html index 0f4b58c..e406f53 100644 --- a/third_party/WebKit/LayoutTests/images/paletted-png-with-color-profile.html +++ b/third_party/WebKit/LayoutTests/images/paletted-png-with-color-profile.html
@@ -1,5 +1,5 @@ <img src="resources/palatted-color-png-gamma-one-color-profile.png"> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script>
diff --git a/third_party/WebKit/LayoutTests/images/pixelated-background-image.html b/third_party/WebKit/LayoutTests/images/pixelated-background-image.html index 056a479..623a32e 100644 --- a/third_party/WebKit/LayoutTests/images/pixelated-background-image.html +++ b/third_party/WebKit/LayoutTests/images/pixelated-background-image.html
@@ -23,5 +23,5 @@ <script> // Ignore the render tree. if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script>
diff --git a/third_party/WebKit/LayoutTests/images/pixelated-border-image.html b/third_party/WebKit/LayoutTests/images/pixelated-border-image.html index c7ea51a..2e13902 100644 --- a/third_party/WebKit/LayoutTests/images/pixelated-border-image.html +++ b/third_party/WebKit/LayoutTests/images/pixelated-border-image.html
@@ -17,5 +17,5 @@ <script> // Ignore the render tree. if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script>
diff --git a/third_party/WebKit/LayoutTests/images/pixelated-canvas.html b/third_party/WebKit/LayoutTests/images/pixelated-canvas.html index 6caa2b9..1a778e0 100644 --- a/third_party/WebKit/LayoutTests/images/pixelated-canvas.html +++ b/third_party/WebKit/LayoutTests/images/pixelated-canvas.html
@@ -13,7 +13,7 @@ <script> // Ignore the render tree. if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); var canvas; var imageHandle;
diff --git a/third_party/WebKit/LayoutTests/images/pixelated-composited.html b/third_party/WebKit/LayoutTests/images/pixelated-composited.html index 39be5136..7ed4fcbb 100644 --- a/third_party/WebKit/LayoutTests/images/pixelated-composited.html +++ b/third_party/WebKit/LayoutTests/images/pixelated-composited.html
@@ -14,5 +14,5 @@ <script> // Ignore the render tree. if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script>
diff --git a/third_party/WebKit/LayoutTests/images/pixelated-image.html b/third_party/WebKit/LayoutTests/images/pixelated-image.html index c05c19c..2934e77 100644 --- a/third_party/WebKit/LayoutTests/images/pixelated-image.html +++ b/third_party/WebKit/LayoutTests/images/pixelated-image.html
@@ -13,5 +13,5 @@ <script> // Ignore the render tree. if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/images/pixelated-svg-image.html b/third_party/WebKit/LayoutTests/images/pixelated-svg-image.html index ba29c84..ad1a98e6 100644 --- a/third_party/WebKit/LayoutTests/images/pixelated-svg-image.html +++ b/third_party/WebKit/LayoutTests/images/pixelated-svg-image.html
@@ -11,5 +11,5 @@ <script> // Ignore the render tree. if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/images/png-color-profile-ignore-gamma.html b/third_party/WebKit/LayoutTests/images/png-color-profile-ignore-gamma.html index aaf5640..a41e596 100644 --- a/third_party/WebKit/LayoutTests/images/png-color-profile-ignore-gamma.html +++ b/third_party/WebKit/LayoutTests/images/png-color-profile-ignore-gamma.html
@@ -2,5 +2,5 @@ <img src="resources/png-color-profile-and-gamma-chunk.png"> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script>
diff --git a/third_party/WebKit/LayoutTests/images/png-missing-plte-before-trns-crash.html b/third_party/WebKit/LayoutTests/images/png-missing-plte-before-trns-crash.html index f38f9f0..19eea2a 100644 --- a/third_party/WebKit/LayoutTests/images/png-missing-plte-before-trns-crash.html +++ b/third_party/WebKit/LayoutTests/images/png-missing-plte-before-trns-crash.html
@@ -3,5 +3,5 @@ <p>PASS</p> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script>
diff --git a/third_party/WebKit/LayoutTests/images/png-suite/test.html b/third_party/WebKit/LayoutTests/images/png-suite/test.html index 4bb7c88..9d3dae9 100644 --- a/third_party/WebKit/LayoutTests/images/png-suite/test.html +++ b/third_party/WebKit/LayoutTests/images/png-suite/test.html
@@ -185,5 +185,5 @@ <img src=samples/z09n2c08.png> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script>
diff --git a/third_party/WebKit/LayoutTests/images/png-with-color-profile.html b/third_party/WebKit/LayoutTests/images/png-with-color-profile.html index 653e10c..7763b16 100644 --- a/third_party/WebKit/LayoutTests/images/png-with-color-profile.html +++ b/third_party/WebKit/LayoutTests/images/png-with-color-profile.html
@@ -2,5 +2,5 @@ <img src="resources/red-at-12-oclock-with-color-profile.png" width="400px"> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script>
diff --git a/third_party/WebKit/LayoutTests/images/resources/color-checker-munsell-chart.js b/third_party/WebKit/LayoutTests/images/resources/color-checker-munsell-chart.js index 384f04c..4b213b4 100644 --- a/third_party/WebKit/LayoutTests/images/resources/color-checker-munsell-chart.js +++ b/third_party/WebKit/LayoutTests/images/resources/color-checker-munsell-chart.js
@@ -122,5 +122,5 @@ log('\nResult: total RMS color error: ' + Math.sqrt(totalSquaredError / 24.0).toFixed(2)); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }
diff --git a/third_party/WebKit/LayoutTests/images/rgb-jpeg-endian-pixels.html b/third_party/WebKit/LayoutTests/images/rgb-jpeg-endian-pixels.html index a56a5b3..18cb65a 100644 --- a/third_party/WebKit/LayoutTests/images/rgb-jpeg-endian-pixels.html +++ b/third_party/WebKit/LayoutTests/images/rgb-jpeg-endian-pixels.html
@@ -10,8 +10,8 @@ <script> if (window.testRunner) { - window.testRunner.waitUntilDone(); - window.testRunner.dumpAsText(); + testRunner.waitUntilDone(); + testRunner.dumpAsText(); } function log(message) @@ -71,6 +71,6 @@ } if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script>
diff --git a/third_party/WebKit/LayoutTests/images/rgb-jpeg-with-adobe-marker-only.html b/third_party/WebKit/LayoutTests/images/rgb-jpeg-with-adobe-marker-only.html index affeedbe..6dbf02e 100644 --- a/third_party/WebKit/LayoutTests/images/rgb-jpeg-with-adobe-marker-only.html +++ b/third_party/WebKit/LayoutTests/images/rgb-jpeg-with-adobe-marker-only.html
@@ -2,6 +2,6 @@ <img src="resources/rgb-jpeg-with-adobe-marker-only.jpg"> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script>
diff --git a/third_party/WebKit/LayoutTests/images/rgb-png-with-cmyk-color-profile.html b/third_party/WebKit/LayoutTests/images/rgb-png-with-cmyk-color-profile.html index 2aae7a2..e7957f8 100644 --- a/third_party/WebKit/LayoutTests/images/rgb-png-with-cmyk-color-profile.html +++ b/third_party/WebKit/LayoutTests/images/rgb-png-with-cmyk-color-profile.html
@@ -2,5 +2,5 @@ <img src="resources/rgb-png-with-cmyk-color-profile.png" width="600px" height="213px"> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script>
diff --git a/third_party/WebKit/LayoutTests/images/size-failure.html b/third_party/WebKit/LayoutTests/images/size-failure.html index b4da4b5..611c742b 100644 --- a/third_party/WebKit/LayoutTests/images/size-failure.html +++ b/third_party/WebKit/LayoutTests/images/size-failure.html
@@ -10,8 +10,8 @@ if (!window.testRunner) return; // Force a pixel dump to cover raterization issues if any. - window.testRunner.capturePixelsAsyncThen(function() { - window.testRunner.notifyDone(); + testRunner.capturePixelsAsyncThen(function() { + testRunner.notifyDone(); }); }; </script>
diff --git a/third_party/WebKit/LayoutTests/images/webp-color-profile-lossless.html b/third_party/WebKit/LayoutTests/images/webp-color-profile-lossless.html index 2ab46bc..fb75f5a 100644 --- a/third_party/WebKit/LayoutTests/images/webp-color-profile-lossless.html +++ b/third_party/WebKit/LayoutTests/images/webp-color-profile-lossless.html
@@ -2,5 +2,5 @@ <img src="resources/webp-color-profile-lossless.webp"> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script>
diff --git a/third_party/WebKit/LayoutTests/images/webp-color-profile-lossy-alpha.html b/third_party/WebKit/LayoutTests/images/webp-color-profile-lossy-alpha.html index 94c74e924..5e588ca 100644 --- a/third_party/WebKit/LayoutTests/images/webp-color-profile-lossy-alpha.html +++ b/third_party/WebKit/LayoutTests/images/webp-color-profile-lossy-alpha.html
@@ -2,5 +2,5 @@ <img src="resources/webp-color-profile-lossy-alpha.webp"> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script>
diff --git a/third_party/WebKit/LayoutTests/images/webp-color-profile-lossy.html b/third_party/WebKit/LayoutTests/images/webp-color-profile-lossy.html index c234807f..2eb220a 100644 --- a/third_party/WebKit/LayoutTests/images/webp-color-profile-lossy.html +++ b/third_party/WebKit/LayoutTests/images/webp-color-profile-lossy.html
@@ -2,5 +2,5 @@ <img src="resources/webp-color-profile-lossy.webp" width="400px"> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script>
diff --git a/third_party/WebKit/LayoutTests/images/ycbcr-with-cmyk-color-profile.html b/third_party/WebKit/LayoutTests/images/ycbcr-with-cmyk-color-profile.html index 389e60f9..9aeeb37 100644 --- a/third_party/WebKit/LayoutTests/images/ycbcr-with-cmyk-color-profile.html +++ b/third_party/WebKit/LayoutTests/images/ycbcr-with-cmyk-color-profile.html
@@ -3,5 +3,5 @@ <img src="resources/ycbcr-with-no-color-profile.jpg" width="350" height="350"> <script> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); </script>
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/input/dispatchKeyEvent-focus.js b/third_party/WebKit/LayoutTests/inspector-protocol/input/dispatchKeyEvent-focus.js index 5216cc6..33bd837 100644 --- a/third_party/WebKit/LayoutTests/inspector-protocol/input/dispatchKeyEvent-focus.js +++ b/third_party/WebKit/LayoutTests/inspector-protocol/input/dispatchKeyEvent-focus.js
@@ -45,7 +45,7 @@ await session.evaluate(` window.logs = []; - window.internals.setFocused(false); + internals.setFocused(false); document.querySelector('#foo').addEventListener('focus', () => logs.push('focus foo'), false); document.querySelector('#foo').addEventListener('blur', () => logs.push('blur foo'), false); document.querySelector('#bar').addEventListener('focus', () => logs.push('focus bar'), false); @@ -62,7 +62,7 @@ logs.push('value of foo:' + document.getElementById('foo').value); logs.push('value of bar:' + document.getElementById('bar').value); logs.push('value of baz:' + document.getElementById('baz').value); - window.internals.setFocused(true); + internals.setFocused(true); logs.join('\\n') `)); testRunner.completeTest();
diff --git a/third_party/WebKit/LayoutTests/media/autoplay-document-move.html b/third_party/WebKit/LayoutTests/media/autoplay-document-move.html index 8047a64..4f5d90d 100644 --- a/third_party/WebKit/LayoutTests/media/autoplay-document-move.html +++ b/third_party/WebKit/LayoutTests/media/autoplay-document-move.html
@@ -16,7 +16,7 @@ }, 'internals are exposed'); async_test(function(t) { - window.internals.settings.setAutoplayPolicy('no-user-gesture-required'); + internals.settings.setAutoplayPolicy('no-user-gesture-required'); var v = createAndMoveVideo(); assert_true(v.paused, 'Video should be paused before calling play()'); @@ -28,7 +28,7 @@ }, 'Test that video should autoplay without gesture requirement'); async_test(function(t) { - window.internals.settings.setAutoplayPolicy('user-gesture-required'); + internals.settings.setAutoplayPolicy('user-gesture-required'); var v = createAndMoveVideo(); assert_true(v.paused, 'Video should be paused before calling play()');
diff --git a/third_party/WebKit/LayoutTests/media/autoplay-from-mediastream-to-src.html b/third_party/WebKit/LayoutTests/media/autoplay-from-mediastream-to-src.html index 2e653ba..94b3e901 100644 --- a/third_party/WebKit/LayoutTests/media/autoplay-from-mediastream-to-src.html +++ b/third_party/WebKit/LayoutTests/media/autoplay-from-mediastream-to-src.html
@@ -4,11 +4,11 @@ <script src="../resources/testharnessreport.js"></script> <script> test(function() { - assert_true(!!window.internals && !!window.internals.settings, + assert_true(!!window.internals && !!internals.settings, "This test only works when run as a layout test!"); }, "Prerequisites to running the rest of the tests"); - window.internals.settings.setAutoplayPolicy('user-gesture-required'); + internals.settings.setAutoplayPolicy('user-gesture-required'); async_test(function(t) { var v = document.createElement('video');
diff --git a/third_party/WebKit/LayoutTests/media/autoplay-muted-datasaver-off.html b/third_party/WebKit/LayoutTests/media/autoplay-muted-datasaver-off.html index 6072c64..a0b796b 100644 --- a/third_party/WebKit/LayoutTests/media/autoplay-muted-datasaver-off.html +++ b/third_party/WebKit/LayoutTests/media/autoplay-muted-datasaver-off.html
@@ -7,8 +7,8 @@ </head> <body> <script> - window.internals.settings.setAutoplayPolicy('user-gesture-required'); - window.internals.runtimeFlags.autoplayMutedVideosEnabled = true; + internals.settings.setAutoplayPolicy('user-gesture-required'); + internals.runtimeFlags.autoplayMutedVideosEnabled = true; internals.setSaveDataEnabled(false); promise_test(function(t)
diff --git a/third_party/WebKit/LayoutTests/media/autoplay-muted-datasaver-on.html b/third_party/WebKit/LayoutTests/media/autoplay-muted-datasaver-on.html index e4310ca..f29e122 100644 --- a/third_party/WebKit/LayoutTests/media/autoplay-muted-datasaver-on.html +++ b/third_party/WebKit/LayoutTests/media/autoplay-muted-datasaver-on.html
@@ -7,8 +7,8 @@ </head> <body> <script> - window.internals.settings.setAutoplayPolicy('user-gesture-required'); - window.internals.runtimeFlags.autoplayMutedVideosEnabled = true; + internals.settings.setAutoplayPolicy('user-gesture-required'); + internals.runtimeFlags.autoplayMutedVideosEnabled = true; internals.setSaveDataEnabled(true); promise_test(function(t)
diff --git a/third_party/WebKit/LayoutTests/media/autoplay-muted.html b/third_party/WebKit/LayoutTests/media/autoplay-muted.html index 9fa0f0b..665e0a0 100644 --- a/third_party/WebKit/LayoutTests/media/autoplay-muted.html +++ b/third_party/WebKit/LayoutTests/media/autoplay-muted.html
@@ -7,14 +7,14 @@ <script> test(function() { assert_true(!!window.internals - && !!window.internals.settings - && !!window.internals.runtimeFlags + && !!internals.settings + && !!internals.runtimeFlags && !!window.eventSender, "This test only works when run as a layout test!"); }, "Prerequisites to running the rest of the tests"); - window.internals.settings.setAutoplayPolicy('user-gesture-required'); - window.internals.runtimeFlags.autoplayMutedVideosEnabled = true; + internals.settings.setAutoplayPolicy('user-gesture-required'); + internals.runtimeFlags.autoplayMutedVideosEnabled = true; testRunner.setAutoplayAllowed(true); function createMutedMediaElement(type) {
diff --git a/third_party/WebKit/LayoutTests/media/autoplay-never-visible.html b/third_party/WebKit/LayoutTests/media/autoplay-never-visible.html index 3765e05..4badd84 100644 --- a/third_party/WebKit/LayoutTests/media/autoplay-never-visible.html +++ b/third_party/WebKit/LayoutTests/media/autoplay-never-visible.html
@@ -4,8 +4,8 @@ <script src="../resources/testharnessreport.js"></script> <body> <script> - window.internals.settings.setAutoplayPolicy('user-gesture-required'); - window.internals.runtimeFlags.autoplayMutedVideosEnabled = true; + internals.settings.setAutoplayPolicy('user-gesture-required'); + internals.runtimeFlags.autoplayMutedVideosEnabled = true; async_test(function(t) { // Create a video off screen.
diff --git a/third_party/WebKit/LayoutTests/media/autoplay-non-whitelisted-scope.html b/third_party/WebKit/LayoutTests/media/autoplay-non-whitelisted-scope.html index 322f344..689c9c6 100644 --- a/third_party/WebKit/LayoutTests/media/autoplay-non-whitelisted-scope.html +++ b/third_party/WebKit/LayoutTests/media/autoplay-non-whitelisted-scope.html
@@ -8,12 +8,12 @@ test(function() { assert_true(!!window.internals - && !!window.internals.settings, + && !!internals.settings, "This test only works when run as a layout test!"); }, "Prerequisites to running the rest of the tests"); -window.internals.settings.setAutoplayPolicy('user-gesture-required'); -window.internals.settings.setMediaPlaybackGestureWhitelistScope( +internals.settings.setAutoplayPolicy('user-gesture-required'); +internals.settings.setMediaPlaybackGestureWhitelistScope( document.URL.substring(0, document.URL.lastIndexOf('/') + 1) + "foo/"); testRunner.setAutoplayAllowed(true);
diff --git a/third_party/WebKit/LayoutTests/media/autoplay-unmute-offscreen.html b/third_party/WebKit/LayoutTests/media/autoplay-unmute-offscreen.html index df248c60..19b478f3 100644 --- a/third_party/WebKit/LayoutTests/media/autoplay-unmute-offscreen.html +++ b/third_party/WebKit/LayoutTests/media/autoplay-unmute-offscreen.html
@@ -4,8 +4,8 @@ <script src="../resources/testharnessreport.js"></script> <body> <script> - window.internals.settings.setAutoplayPolicy('user-gesture-required'); - window.internals.runtimeFlags.autoplayMutedVideosEnabled = true; + internals.settings.setAutoplayPolicy('user-gesture-required'); + internals.runtimeFlags.autoplayMutedVideosEnabled = true; async_test(function(t) { // Create a video off screen that will be unmuted before moving on screen.
diff --git a/third_party/WebKit/LayoutTests/media/autoplay-when-visible-multiple-times.html b/third_party/WebKit/LayoutTests/media/autoplay-when-visible-multiple-times.html index c54d48e..9403c5e8 100644 --- a/third_party/WebKit/LayoutTests/media/autoplay-when-visible-multiple-times.html +++ b/third_party/WebKit/LayoutTests/media/autoplay-when-visible-multiple-times.html
@@ -4,8 +4,8 @@ <script src="../resources/testharnessreport.js"></script> <body> <script> - window.internals.settings.setAutoplayPolicy('user-gesture-required'); - window.internals.runtimeFlags.autoplayMutedVideosEnabled = true; + internals.settings.setAutoplayPolicy('user-gesture-required'); + internals.runtimeFlags.autoplayMutedVideosEnabled = true; var gCycleCount = 0;
diff --git a/third_party/WebKit/LayoutTests/media/autoplay-when-visible.html b/third_party/WebKit/LayoutTests/media/autoplay-when-visible.html index 116a624b..8876a53b 100644 --- a/third_party/WebKit/LayoutTests/media/autoplay-when-visible.html +++ b/third_party/WebKit/LayoutTests/media/autoplay-when-visible.html
@@ -4,8 +4,8 @@ <script src="../resources/testharnessreport.js"></script> <body> <script> - window.internals.settings.setAutoplayPolicy('user-gesture-required'); - window.internals.runtimeFlags.autoplayMutedVideosEnabled = true; + internals.settings.setAutoplayPolicy('user-gesture-required'); + internals.runtimeFlags.autoplayMutedVideosEnabled = true; async_test(function(t) { // Create a video off screen.
diff --git a/third_party/WebKit/LayoutTests/media/autoplay-whitelisted-scope.html b/third_party/WebKit/LayoutTests/media/autoplay-whitelisted-scope.html index 849625e..492cbf6 100644 --- a/third_party/WebKit/LayoutTests/media/autoplay-whitelisted-scope.html +++ b/third_party/WebKit/LayoutTests/media/autoplay-whitelisted-scope.html
@@ -8,12 +8,12 @@ test(function() { assert_true(!!window.internals - && !!window.internals.settings, + && !!internals.settings, "This test only works when run as a layout test!"); }, "Prerequisites to running the rest of the tests"); -window.internals.settings.setAutoplayPolicy('user-gesture-required'); -window.internals.settings.setMediaPlaybackGestureWhitelistScope( +internals.settings.setAutoplayPolicy('user-gesture-required'); +internals.settings.setMediaPlaybackGestureWhitelistScope( document.URL.substring(0, document.URL.lastIndexOf('/') + 1) );
diff --git a/third_party/WebKit/LayoutTests/media/autoplay/document-user-activation.html b/third_party/WebKit/LayoutTests/media/autoplay/document-user-activation.html index 16635b4..3c08c85 100644 --- a/third_party/WebKit/LayoutTests/media/autoplay/document-user-activation.html +++ b/third_party/WebKit/LayoutTests/media/autoplay/document-user-activation.html
@@ -8,10 +8,10 @@ <script> promise_test(t => { t.add_cleanup(() => { - window.internals.settings.setAutoplayPolicy('no-user-gesture-required'); + internals.settings.setAutoplayPolicy('no-user-gesture-required'); }); - window.internals.settings.setAutoplayPolicy('document-user-activation-required'); + internals.settings.setAutoplayPolicy('document-user-activation-required'); var video = document.createElement('video'); video.src = '../content/test.ogv'; @@ -20,10 +20,10 @@ promise_test(t => { t.add_cleanup(() => { - window.internals.settings.setAutoplayPolicy('no-user-gesture-required'); + internals.settings.setAutoplayPolicy('no-user-gesture-required'); }); - window.internals.settings.setAutoplayPolicy('document-user-activation-required'); + internals.settings.setAutoplayPolicy('document-user-activation-required'); document.querySelector('#target').focus(); eventSender.keyDown('a'); @@ -34,10 +34,10 @@ promise_test(t => { t.add_cleanup(() => { - window.internals.settings.setAutoplayPolicy('no-user-gesture-required'); + internals.settings.setAutoplayPolicy('no-user-gesture-required'); }); - window.internals.settings.setAutoplayPolicy('document-user-activation-required'); + internals.settings.setAutoplayPolicy('document-user-activation-required'); var bounds = document.querySelector('#target').getBoundingClientRect(); var x = bounds.left + bounds.width / 2; var y = bounds.top + bounds.height / 2; @@ -62,10 +62,10 @@ promise_test(t => { t.add_cleanup(() => { - window.internals.settings.setAutoplayPolicy('no-user-gesture-required'); + internals.settings.setAutoplayPolicy('no-user-gesture-required'); }); - window.internals.settings.setAutoplayPolicy('document-user-activation-required'); + internals.settings.setAutoplayPolicy('document-user-activation-required'); var bounds = document.querySelector('#target').getBoundingClientRect(); var x = bounds.left + bounds.width / 2; var y = bounds.top + bounds.height / 2; @@ -90,10 +90,10 @@ promise_test(t => { t.add_cleanup(() => { - window.internals.settings.setAutoplayPolicy('no-user-gesture-required'); + internals.settings.setAutoplayPolicy('no-user-gesture-required'); }); - window.internals.settings.setAutoplayPolicy('document-user-activation-required'); + internals.settings.setAutoplayPolicy('document-user-activation-required'); var bounds = document.querySelector('#target').getBoundingClientRect(); var x = bounds.left + bounds.width / 2; var y = bounds.top + bounds.height / 2; @@ -116,11 +116,11 @@ promise_test(t => { t.add_cleanup(() => { - window.internals.settings.setAutoplayPolicy('no-user-gesture-required'); + internals.settings.setAutoplayPolicy('no-user-gesture-required'); document.body.removeChild(document.querySelector('iframe')); }); - window.internals.settings.setAutoplayPolicy('document-user-activation-required'); + internals.settings.setAutoplayPolicy('document-user-activation-required'); var iframe = document.createElement('iframe'); return new Promise((resolve, reject) => { @@ -148,11 +148,11 @@ promise_test(t => { t.add_cleanup(() => { - window.internals.settings.setAutoplayPolicy('no-user-gesture-required'); + internals.settings.setAutoplayPolicy('no-user-gesture-required'); document.body.removeChild(document.querySelector('iframe')); }); - window.internals.settings.setAutoplayPolicy('document-user-activation-required'); + internals.settings.setAutoplayPolicy('document-user-activation-required'); var iframe = document.createElement('iframe'); return new Promise((resolve, reject) => {
diff --git a/third_party/WebKit/LayoutTests/media/autoplay/muted-change-src.html b/third_party/WebKit/LayoutTests/media/autoplay/muted-change-src.html index fb64a1e..e6d9932a 100644 --- a/third_party/WebKit/LayoutTests/media/autoplay/muted-change-src.html +++ b/third_party/WebKit/LayoutTests/media/autoplay/muted-change-src.html
@@ -6,11 +6,11 @@ <script> async_test(t => { t.add_cleanup(() => { - window.internals.settings.setAutoplayPolicy('no-user-gesture-required'); - window.internals.runtimeFlags.autoplayMutedVideosEnabled = false; + internals.settings.setAutoplayPolicy('no-user-gesture-required'); + internals.runtimeFlags.autoplayMutedVideosEnabled = false; }); - window.internals.settings.setAutoplayPolicy('document-user-activation-required'); - window.internals.runtimeFlags.autoplayMutedVideosEnabled = true; + internals.settings.setAutoplayPolicy('document-user-activation-required'); + internals.runtimeFlags.autoplayMutedVideosEnabled = true; var video = document.querySelector('video'); video.src = '../content/test.ogv';
diff --git a/third_party/WebKit/LayoutTests/media/autoplay/resources/document-user-activation-iframe.html b/third_party/WebKit/LayoutTests/media/autoplay/resources/document-user-activation-iframe.html index 74aaf667..729b783 100644 --- a/third_party/WebKit/LayoutTests/media/autoplay/resources/document-user-activation-iframe.html +++ b/third_party/WebKit/LayoutTests/media/autoplay/resources/document-user-activation-iframe.html
@@ -1,6 +1,6 @@ <!DOCTYPE html> <script> -window.internals.settings.setAutoplayPolicy('document-user-activation-required'); +internals.settings.setAutoplayPolicy('document-user-activation-required'); window.addEventListener('message', e => { if (e.data.command == 'play') {
diff --git a/third_party/WebKit/LayoutTests/media/autoplay/webaudio-autoplay-no-gesture.html b/third_party/WebKit/LayoutTests/media/autoplay/webaudio-autoplay-no-gesture.html index dd48234..16131dea 100644 --- a/third_party/WebKit/LayoutTests/media/autoplay/webaudio-autoplay-no-gesture.html +++ b/third_party/WebKit/LayoutTests/media/autoplay/webaudio-autoplay-no-gesture.html
@@ -5,7 +5,7 @@ <script> test(t => { // Make sure this overrides any preset autoplay policy. - window.internals.settings.setAutoplayPolicy('document-user-activation-required'); + internals.settings.setAutoplayPolicy('document-user-activation-required'); try { const ac = new AudioContext();
diff --git a/third_party/WebKit/LayoutTests/media/controls-volume-slider-keynav.html b/third_party/WebKit/LayoutTests/media/controls-volume-slider-keynav.html index cb7a9425..350116d4 100644 --- a/third_party/WebKit/LayoutTests/media/controls-volume-slider-keynav.html +++ b/third_party/WebKit/LayoutTests/media/controls-volume-slider-keynav.html
@@ -7,7 +7,7 @@ <script> async_test(function(t) { // This test is not valid for modern media controls. - if (window.internals.runtimeFlags.modernMediaControlsEnabled) + if (internals.runtimeFlags.modernMediaControlsEnabled) t.done(); var audio = document.querySelector("audio");
diff --git a/third_party/WebKit/LayoutTests/media/controls-volume-slider.html b/third_party/WebKit/LayoutTests/media/controls-volume-slider.html index dcfb4ec..6b41b75 100644 --- a/third_party/WebKit/LayoutTests/media/controls-volume-slider.html +++ b/third_party/WebKit/LayoutTests/media/controls-volume-slider.html
@@ -7,7 +7,7 @@ <script> async_test(function(t) { // This test is not valid for modern media controls. - if (window.internals.runtimeFlags.modernMediaControlsEnabled) + if (internals.runtimeFlags.modernMediaControlsEnabled) t.done(); var audio = document.querySelector("audio");
diff --git a/third_party/WebKit/LayoutTests/media/controls/modern/quirks-mode-timeline-is-not-hidden.html b/third_party/WebKit/LayoutTests/media/controls/modern/quirks-mode-timeline-is-not-hidden.html index 08bdfb27..8b177767 100644 --- a/third_party/WebKit/LayoutTests/media/controls/modern/quirks-mode-timeline-is-not-hidden.html +++ b/third_party/WebKit/LayoutTests/media/controls/modern/quirks-mode-timeline-is-not-hidden.html
@@ -12,7 +12,7 @@ video.onloadedmetadata = t.step_func_done(() => { const timelineContainer = timelineElement(video); - const timeline = window.internals.shadowRoot(timelineContainer).firstChild; + const timeline = internals.shadowRoot(timelineContainer).firstChild; const timelineHeight = getComputedStyle(timeline).getPropertyValue("height"); assert_not_equals(timelineHeight, "0px"); });
diff --git a/third_party/WebKit/LayoutTests/media/controls/overlay-play-button.js b/third_party/WebKit/LayoutTests/media/controls/overlay-play-button.js index b0b50b99..f997882 100644 --- a/third_party/WebKit/LayoutTests/media/controls/overlay-play-button.js +++ b/third_party/WebKit/LayoutTests/media/controls/overlay-play-button.js
@@ -19,7 +19,7 @@ function overlayPlayButton(videoElement) { var controlID = '-webkit-media-controls-overlay-play-button'; var button = mediaControlsElement( - window.internals.shadowRoot(videoElement).firstChild, + internals.shadowRoot(videoElement).firstChild, controlID); if (!button) throw 'Failed to find overlay play button';
diff --git a/third_party/WebKit/LayoutTests/media/controls/video-controls-with-cast-rendering.html b/third_party/WebKit/LayoutTests/media/controls/video-controls-with-cast-rendering.html index 2f5d9ed..ead172b8 100644 --- a/third_party/WebKit/LayoutTests/media/controls/video-controls-with-cast-rendering.html +++ b/third_party/WebKit/LayoutTests/media/controls/video-controls-with-cast-rendering.html
@@ -18,7 +18,7 @@ </div> <script> if (window.internals) - window.internals.settings.setMockScrollbarsEnabled(true); + internals.settings.setMockScrollbarsEnabled(true); var videos = document.getElementsByTagName('video'); for (var i = 0; i < videos.length; ++i) {
diff --git a/third_party/WebKit/LayoutTests/media/controls/video-overlay-cast-dark-rendering.html b/third_party/WebKit/LayoutTests/media/controls/video-overlay-cast-dark-rendering.html index 8920852..ee88b3c 100644 --- a/third_party/WebKit/LayoutTests/media/controls/video-overlay-cast-dark-rendering.html +++ b/third_party/WebKit/LayoutTests/media/controls/video-overlay-cast-dark-rendering.html
@@ -17,7 +17,7 @@ </div> <script> if (window.internals) - window.internals.settings.setMockScrollbarsEnabled(true); + internals.settings.setMockScrollbarsEnabled(true); var videos = document.getElementsByTagName('video'); waitForMultipleEvents("canplaythrough", videos.length, function() {
diff --git a/third_party/WebKit/LayoutTests/media/controls/video-overlay-cast-light-rendering.html b/third_party/WebKit/LayoutTests/media/controls/video-overlay-cast-light-rendering.html index 9a7a288..72f6d40e 100644 --- a/third_party/WebKit/LayoutTests/media/controls/video-overlay-cast-light-rendering.html +++ b/third_party/WebKit/LayoutTests/media/controls/video-overlay-cast-light-rendering.html
@@ -17,7 +17,7 @@ </div> <script> if (window.internals) - window.internals.settings.setMockScrollbarsEnabled(true); + internals.settings.setMockScrollbarsEnabled(true); var videos = document.getElementsByTagName('video'); waitForMultipleEvents("canplaythrough", videos.length, function() {
diff --git a/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-utils.js b/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-utils.js index a8d5829..20268e4 100644 --- a/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-utils.js +++ b/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-utils.js
@@ -337,10 +337,10 @@ function verifyMediaKeyAndMediaKeySessionCount( expectedMediaKeysCount, expectedMediaKeySessionCount, description) { - assert_equals(window.internals.mediaKeysCount(), + assert_equals(internals.mediaKeysCount(), expectedMediaKeysCount, description + ', MediaKeys:'); - assert_equals(window.internals.mediaKeySessionCount(), + assert_equals(internals.mediaKeySessionCount(), expectedMediaKeySessionCount, description + ', MediaKeySession:'); }
diff --git a/third_party/WebKit/LayoutTests/media/media-controls.js b/third_party/WebKit/LayoutTests/media/media-controls.js index 9cf97e5b..52ba91f 100644 --- a/third_party/WebKit/LayoutTests/media/media-controls.js +++ b/third_party/WebKit/LayoutTests/media/media-controls.js
@@ -18,7 +18,7 @@ function mediaControls(videoElement) { var controlID = '-webkit-media-controls'; - var element = mediaControlsElement(window.internals.shadowRoot(videoElement).firstChild, controlID); + var element = mediaControlsElement(internals.shadowRoot(videoElement).firstChild, controlID); if (!element) throw 'Failed to find media controls'; return element; @@ -26,7 +26,7 @@ function castButton(videoElement) { var controlID = '-internal-media-controls-cast-button'; - var button = mediaControlsElement(window.internals.shadowRoot(videoElement).firstChild, controlID); + var button = mediaControlsElement(internals.shadowRoot(videoElement).firstChild, controlID); if (!button) throw 'Failed to find cast button'; return button; @@ -34,7 +34,7 @@ function downloadButton(videoElement) { var controlID = '-internal-media-controls-download-button'; - var button = mediaControlsElement(window.internals.shadowRoot(videoElement).firstChild, controlID); + var button = mediaControlsElement(internals.shadowRoot(videoElement).firstChild, controlID); if (!button) throw 'Failed to find download button'; return button; @@ -42,7 +42,7 @@ function fullscreenButton(videoElement) { var controlID = '-webkit-media-controls-fullscreen-button'; - var button = mediaControlsElement(window.internals.shadowRoot(videoElement).firstChild, controlID); + var button = mediaControlsElement(internals.shadowRoot(videoElement).firstChild, controlID); if (!button) throw 'Failed to find fullscreen button'; return button; @@ -51,7 +51,7 @@ function overlayCastButton(videoElement) { var controlID = '-internal-media-controls-overlay-cast-button'; - var button = mediaControlsElement(window.internals.shadowRoot(videoElement).firstChild, controlID); + var button = mediaControlsElement(internals.shadowRoot(videoElement).firstChild, controlID); if (!button) throw 'Failed to find cast button'; return button; @@ -60,7 +60,7 @@ function overflowButton(videoElement) { var controlID = '-internal-media-controls-overflow-button'; - var button = mediaControlsElement(window.internals.shadowRoot(videoElement).firstChild, controlID); + var button = mediaControlsElement(internals.shadowRoot(videoElement).firstChild, controlID); if (!button) throw 'Failed to find overflow button'; return button; @@ -69,7 +69,7 @@ function textTrackMenu(video) { var controlID = '-internal-media-controls-text-track-list'; - var element = mediaControlsElement(window.internals.shadowRoot(video).firstChild, controlID); + var element = mediaControlsElement(internals.shadowRoot(video).firstChild, controlID); if (!element) throw 'Failed to find the overflow menu'; return element; @@ -78,7 +78,7 @@ function overflowMenu(video) { var controlID = '-internal-media-controls-overflow-menu-list'; - var element = mediaControlsElement(window.internals.shadowRoot(video).firstChild, controlID); + var element = mediaControlsElement(internals.shadowRoot(video).firstChild, controlID); if (!element) throw 'Failed to find the overflow menu'; return element; @@ -256,7 +256,7 @@ function timelineThumb(videoElement) { const timeline = timelineElement(videoElement); - const thumb = window.internals.shadowRoot(timeline).getElementById('thumb'); + const thumb = internals.shadowRoot(timeline).getElementById('thumb'); if (!thumb) throw 'Failed to find timeline thumb'; return thumb; @@ -264,7 +264,7 @@ function scrubbingMessageElement(videoElement) { var controlID = '-internal-media-controls-scrubbing-message'; - var button = mediaControlsElement(window.internals.shadowRoot(videoElement).firstChild, controlID); + var button = mediaControlsElement(internals.shadowRoot(videoElement).firstChild, controlID); if (!button) throw 'Failed to find scrubbing message element'; return button; @@ -376,7 +376,7 @@ } function checkControlsClassName(videoElement, className) { - assert_equals(window.internals.shadowRoot(videoElement).firstChild.className, className); + assert_equals(internals.shadowRoot(videoElement).firstChild.className, className); } function mediaControlsOverlayPlayButton(videoElement) { @@ -386,7 +386,7 @@ function mediaControlsOverlayPlayButtonInternal(videoElement) { var controlID = '-internal-media-controls-overlay-play-button-internal'; var element = mediaControlsElement( - window.internals.shadowRoot( + internals.shadowRoot( mediaControlsOverlayPlayButton(videoElement)).firstChild, controlID); if (!element) throw 'Failed to find the internal overlay play button'; @@ -396,7 +396,7 @@ function pictureInPictureInterstitial(videoElement) { var controlID = '-internal-picture-in-picture-icon'; - var interstitial = getElementByPseudoId(window.internals.shadowRoot(videoElement).firstChild, controlID); + var interstitial = getElementByPseudoId(internals.shadowRoot(videoElement).firstChild, controlID); if (!interstitial) throw 'Failed to find picture in picture interstitial'; return interstitial; @@ -510,7 +510,7 @@ function enableTestMode(video) { if (window.internals) - window.internals.setMediaControlsTestMode(video, true); + internals.setMediaControlsTestMode(video, true); } function enableImmersiveMode(t) { @@ -520,6 +520,6 @@ const oldImmersive = internals.settings.immersiveModeEnabled; internals.settings.setImmersiveModeEnabled(true); t.add_cleanup(() => { - window.internals.settings.setImmersiveModeEnabled(oldImmersive); + internals.settings.setImmersiveModeEnabled(oldImmersive); }); }
diff --git a/third_party/WebKit/LayoutTests/media/picture-in-picture/picture-in-picture-enabled.html b/third_party/WebKit/LayoutTests/media/picture-in-picture/picture-in-picture-enabled.html index 7576e095..5f7b4631 100644 --- a/third_party/WebKit/LayoutTests/media/picture-in-picture/picture-in-picture-enabled.html +++ b/third_party/WebKit/LayoutTests/media/picture-in-picture/picture-in-picture-enabled.html
@@ -10,7 +10,7 @@ promise_test(t => { assert_true(document.pictureInPictureEnabled); - window.internals.settings.setPictureInPictureEnabled(false); + internals.settings.setPictureInPictureEnabled(false); assert_false(document.pictureInPictureEnabled); return promise_rejects(t, 'NotSupportedError',
diff --git a/third_party/WebKit/LayoutTests/media/picture-in-picture/utils.js b/third_party/WebKit/LayoutTests/media/picture-in-picture/utils.js index bc2e67e..50a500e 100644 --- a/third_party/WebKit/LayoutTests/media/picture-in-picture/utils.js +++ b/third_party/WebKit/LayoutTests/media/picture-in-picture/utils.js
@@ -27,7 +27,7 @@ { var elementId = '-internal-media-interstitial'; var interstitial = mediaControlsElement( - window.internals.shadowRoot(video).firstChild, + internals.shadowRoot(video).firstChild, elementId); if (!interstitial) throw 'Failed to find picture in picture interstitial.';
diff --git a/third_party/WebKit/LayoutTests/media/play-promise-crash.html b/third_party/WebKit/LayoutTests/media/play-promise-crash.html index da5cf53e..2330121 100644 --- a/third_party/WebKit/LayoutTests/media/play-promise-crash.html +++ b/third_party/WebKit/LayoutTests/media/play-promise-crash.html
@@ -7,7 +7,7 @@ <script src="../resources/testharness.js"></script> <script src="../resources/testharnessreport.js"></script> <script> - window.internals.settings.setAutoplayPolicy('user-gesture-required'); + internals.settings.setAutoplayPolicy('user-gesture-required'); async_test(function(t) { var video = document.createElement('video');
diff --git a/third_party/WebKit/LayoutTests/media/remove-from-document-config-controls-no-crash.html b/third_party/WebKit/LayoutTests/media/remove-from-document-config-controls-no-crash.html index c7c78ce..bdc41def 100644 --- a/third_party/WebKit/LayoutTests/media/remove-from-document-config-controls-no-crash.html +++ b/third_party/WebKit/LayoutTests/media/remove-from-document-config-controls-no-crash.html
@@ -21,7 +21,7 @@ return; } var video = document.getElementById('v'); - var videoShadow = window.internals.shadowRoot(video); + var videoShadow = internals.shadowRoot(video); traverse(videoShadow); document.body.removeChild(video); @@ -36,7 +36,7 @@ if (node.childNodes) Array.prototype.forEach.call(node.childNodes, traverse); if (node.localName == 'input') - traverse(window.internals.shadowRoot(node)); + traverse(internals.shadowRoot(node)); } window.onload = runTest; </script>
diff --git a/third_party/WebKit/LayoutTests/media/resources/munsell-video-chart.js b/third_party/WebKit/LayoutTests/media/resources/munsell-video-chart.js index ac9dfdd..8efbe02 100644 --- a/third_party/WebKit/LayoutTests/media/resources/munsell-video-chart.js +++ b/third_party/WebKit/LayoutTests/media/resources/munsell-video-chart.js
@@ -149,5 +149,5 @@ log('\nResult: total RMS color error: ' + Math.sqrt(totalSquaredError / 30.0).toFixed(2)); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }
diff --git a/third_party/WebKit/LayoutTests/media/suspend-util.js b/third_party/WebKit/LayoutTests/media/suspend-util.js index 9e1dca5..7390a9b5 100644 --- a/third_party/WebKit/LayoutTests/media/suspend-util.js +++ b/third_party/WebKit/LayoutTests/media/suspend-util.js
@@ -2,7 +2,7 @@ // |callback| will be called once the suspend is detected. function suspendMediaElement(video, expectedState, callback) { var pollSuspendState = function() { - if (!window.internals.isMediaElementSuspended(video)) { + if (!internals.isMediaElementSuspended(video)) { window.requestAnimationFrame(pollSuspendState); return; } @@ -11,14 +11,14 @@ }; window.requestAnimationFrame(pollSuspendState); - window.internals.forceStaleStateForMediaElement(video, expectedState); + internals.forceStaleStateForMediaElement(video, expectedState); } // Calls play() on |video| and executes t.done() when currentTime > 0. function completeTestUponPlayback(t, video) { var timeWatcher = t.step_func(function() { if (video.currentTime > 0) { - assert_false(window.internals.isMediaElementSuspended(video)); + assert_false(internals.isMediaElementSuspended(video)); t.done(); } else { window.requestAnimationFrame(timeWatcher); @@ -35,7 +35,7 @@ var eventListener = t.step_func(function() { assert_equals(expectSuspend, - window.internals.isMediaElementSuspended(video)); + internals.isMediaElementSuspended(video)); if (!expectSuspend) { t.done(); return; @@ -55,7 +55,7 @@ // We can't force a suspend state until loading has started. video.addEventListener('loadstart', t.step_func(function() { suspendMediaElement(video, expectedState, t.step_func(function() { - assert_true(window.internals.isMediaElementSuspended(video)); + assert_true(internals.isMediaElementSuspended(video)); completeTestUponPlayback(t, video); })); }), false);
diff --git a/third_party/WebKit/LayoutTests/media/track/track-cue-rendering-overscan.html b/third_party/WebKit/LayoutTests/media/track/track-cue-rendering-overscan.html index de9b4ad..0b3bbbb 100644 --- a/third_party/WebKit/LayoutTests/media/track/track-cue-rendering-overscan.html +++ b/third_party/WebKit/LayoutTests/media/track/track-cue-rendering-overscan.html
@@ -4,7 +4,7 @@ <script src="../../resources/testharness.js"></script> <script src="../../resources/testharnessreport.js"></script> <script> - setup(function() { window.internals.settings.setTextTrackMarginPercentage(5); }); + setup(function() { internals.settings.setTextTrackMarginPercentage(5); }); var makeTest = function(time, edgeName, marginAssertFunc) { var expectedText = "Checks " + edgeName + " margin";
diff --git a/third_party/WebKit/LayoutTests/media/video-controls-fullscreen-not-supported.html b/third_party/WebKit/LayoutTests/media/video-controls-fullscreen-not-supported.html index 47254eb..2e6c52b 100644 --- a/third_party/WebKit/LayoutTests/media/video-controls-fullscreen-not-supported.html +++ b/third_party/WebKit/LayoutTests/media/video-controls-fullscreen-not-supported.html
@@ -9,7 +9,7 @@ </head> <body> <script> - window.internals.settings.setFullscreenSupported(false); + internals.settings.setFullscreenSupported(false); fullscreen_not_supported_test(); </script> </body>
diff --git a/third_party/WebKit/LayoutTests/media/video-controls-rendering.html b/third_party/WebKit/LayoutTests/media/video-controls-rendering.html index 7a796ee..efb2a61 100644 --- a/third_party/WebKit/LayoutTests/media/video-controls-rendering.html +++ b/third_party/WebKit/LayoutTests/media/video-controls-rendering.html
@@ -14,7 +14,7 @@ </div> <script> if (window.internals) - window.internals.settings.setMockScrollbarsEnabled(true); + internals.settings.setMockScrollbarsEnabled(true); const videos = document.getElementsByTagName('video'); for (var i = 0; i < videos.length; ++i) { enableTestMode(videos[i]);
diff --git a/third_party/WebKit/LayoutTests/media/video-default-poster.html b/third_party/WebKit/LayoutTests/media/video-default-poster.html index e45b01b7..9830e6b 100644 --- a/third_party/WebKit/LayoutTests/media/video-default-poster.html +++ b/third_party/WebKit/LayoutTests/media/video-default-poster.html
@@ -8,9 +8,9 @@ } if (window.internals) { var default_poster = 'content/greenbox.png'; - window.internals.settings.setDefaultVideoPosterURL(default_poster); + internals.settings.setDefaultVideoPosterURL(default_poster); addEventListener("load", function() { - var poster = window.internals.getImageSourceURL(document.getElementById("video-no-poster")); + var poster = internals.getImageSourceURL(document.getElementById("video-no-poster")); if (poster) { if (poster == default_poster) document.getElementById("result-no-poster").innerText = "PASS"; @@ -19,7 +19,7 @@ } else document.getElementById("result-no-poster").innerText = "FAIL: image source is null"; - poster = window.internals.getImageSourceURL(document.getElementById("video-has-poster")); + poster = internals.getImageSourceURL(document.getElementById("video-has-poster")); if (poster) { if (poster == "content/abe.png") document.getElementById("result-has-poster").innerText = "PASS"; @@ -28,7 +28,7 @@ } else document.getElementById("result-has-poster").innerText = "FAIL: image source is null"; - poster = window.internals.getImageSourceURL(document.getElementById("video-has-empty-poster")); + poster = internals.getImageSourceURL(document.getElementById("video-has-empty-poster")); if (poster) { if (poster == default_poster) document.getElementById("result-has-empty-poster").innerText = "PASS";
diff --git a/third_party/WebKit/LayoutTests/media/video-no-default-poster.html b/third_party/WebKit/LayoutTests/media/video-no-default-poster.html index 368ba06..22e9e84 100644 --- a/third_party/WebKit/LayoutTests/media/video-no-default-poster.html +++ b/third_party/WebKit/LayoutTests/media/video-no-default-poster.html
@@ -9,13 +9,13 @@ if (window.internals) { addEventListener("load", function() { - var poster = window.internals.getImageSourceURL(document.getElementById("video-no-poster")); + var poster = internals.getImageSourceURL(document.getElementById("video-no-poster")); if (poster) document.getElementById("result-no-poster").innerText = "FAIL : poster was added."; else document.getElementById("result-no-poster").innerText = "PASS"; - poster = window.internals.getImageSourceURL(document.getElementById("video-has-poster")); + poster = internals.getImageSourceURL(document.getElementById("video-has-poster")); if (poster) { if (poster == "content/abe.png") document.getElementById("result-has-poster").innerText = "PASS";
diff --git a/third_party/WebKit/LayoutTests/media/video-zoom.html b/third_party/WebKit/LayoutTests/media/video-zoom.html index 77841ebb2..3c008be 100644 --- a/third_party/WebKit/LayoutTests/media/video-zoom.html +++ b/third_party/WebKit/LayoutTests/media/video-zoom.html
@@ -4,7 +4,7 @@ <script src=media-file.js></script> <script> if (window.internals) - window.internals.settings.setMockScrollbarsEnabled(true); + internals.settings.setMockScrollbarsEnabled(true); function init() {
diff --git a/third_party/WebKit/LayoutTests/mhtml/cid_in_html_iframe.html b/third_party/WebKit/LayoutTests/mhtml/cid_in_html_iframe.html index 67fdf93..9c6fc347 100644 --- a/third_party/WebKit/LayoutTests/mhtml/cid_in_html_iframe.html +++ b/third_party/WebKit/LayoutTests/mhtml/cid_in_html_iframe.html
@@ -1,6 +1,6 @@ <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> <iframe src="cid:xxxxxx"></iframe> <p>
diff --git a/third_party/WebKit/LayoutTests/mhtml/cid_in_html_resource.html b/third_party/WebKit/LayoutTests/mhtml/cid_in_html_resource.html index eb4adce..e256452 100644 --- a/third_party/WebKit/LayoutTests/mhtml/cid_in_html_resource.html +++ b/third_party/WebKit/LayoutTests/mhtml/cid_in_html_resource.html
@@ -1,7 +1,7 @@ <head> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> <link rel="stylesheet" type="text/css" href="cid:xxxxxx"> <style type="text/css">
diff --git a/third_party/WebKit/LayoutTests/mojo/codec-expected.txt b/third_party/WebKit/LayoutTests/mojo/codec-expected.txt deleted file mode 100644 index e2316d6..0000000 --- a/third_party/WebKit/LayoutTests/mojo/codec-expected.txt +++ /dev/null
@@ -1,11 +0,0 @@ -This is a testharness.js-based test. -PASS bar -PASS foo -PASS named region -PASS single boolean struct -PASS types -PASS align -PASS utf8 -FAIL typed pointer validation Test bug: need to pass exception to assert_throws() -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/mojo/codec.html b/third_party/WebKit/LayoutTests/mojo/codec.html index 9390069b..7f382fd 100644 --- a/third_party/WebKit/LayoutTests/mojo/codec.html +++ b/third_party/WebKit/LayoutTests/mojo/codec.html
@@ -290,7 +290,7 @@ var encoder = new mojo.internal.MessageV0Builder(42, 24).createEncoder(8); invalidExamples.forEach(function(invalid) { - assert_throws(null, function() { + assert_throws(new Error, function() { method.apply(encoder, baseArgs.concat(invalid)); }); });
diff --git a/third_party/WebKit/LayoutTests/mojo/union-expected.txt b/third_party/WebKit/LayoutTests/mojo/union-expected.txt deleted file mode 100644 index 222f8043..0000000 --- a/third_party/WebKit/LayoutTests/mojo/union-expected.txt +++ /dev/null
@@ -1,10 +0,0 @@ -This is a testharness.js-based test. -FAIL constructors Test bug: need to pass exception to assert_throws() -FAIL basic encoding Test bug: need to pass exception to assert_throws() -PASS unions in array encoding -PASS unions in map encoding -PASS nested unions encoding -PASS null union member validation -PASS null union validation -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/mojo/union.html b/third_party/WebKit/LayoutTests/mojo/union.html index 3eae565..3c99760 100644 --- a/third_party/WebKit/LayoutTests/mojo/union.html +++ b/third_party/WebKit/LayoutTests/mojo/union.html
@@ -20,20 +20,20 @@ var u = new mojo.test.PodUnion({fUint64: 64}); assert_equals(u.fUint64, 64); assert_equals(u.$tag, mojo.test.PodUnion.Tags.fUint64); - assert_throws(null, function() {var v = u.fUint32;}); + assert_throws(new ReferenceError, function() {var v = u.fUint32;}); - assert_throws(null, function() { + assert_throws(new TypeError, function() { var u = new mojo.test.PodUnion({ fUint64: 64, fUint32: 32, }); }); - assert_throws(null, function() { + assert_throws(new ReferenceError, function() { var u = new mojo.test.PodUnion({ foo: 64 }); }); - assert_throws(null, function() { + assert_throws(new TypeError, function() { var u = new mojo.test.PodUnion([1,2,3,4]); }); }, 'constructors'); @@ -104,7 +104,7 @@ // Encoding a union with no member set is an error. var s = new mojo.test.WrapperStruct({ objectUnion: new mojo.test.ObjectUnion()}); - assert_throws(null, function() { + assert_throws(new TypeError, function() { structEncodeDecode(s); }); }, 'basic encoding');
diff --git a/third_party/WebKit/LayoutTests/navigator_language/navigator_language.html b/third_party/WebKit/LayoutTests/navigator_language/navigator_language.html index bcae825..59396eba 100644 --- a/third_party/WebKit/LayoutTests/navigator_language/navigator_language.html +++ b/third_party/WebKit/LayoutTests/navigator_language/navigator_language.html
@@ -19,7 +19,7 @@ received = true; } - window.testRunner.setAcceptLanguages('klingon'); + testRunner.setAcceptLanguages('klingon'); assert_true(received); }, "Test that the languagechange event fires on window.onlanguagechange"); @@ -29,7 +29,7 @@ received = true; }); - window.testRunner.setAcceptLanguages('klingon-FR'); + testRunner.setAcceptLanguages('klingon-FR'); assert_true(received); }, "Test that the languagechange event fires on window.addEventListener('languagechange')"); @@ -37,7 +37,7 @@ window.received = false; // We need a global variable here. document.body.setAttribute('onlanguagechange', 'window.received = true;'); - window.testRunner.setAcceptLanguages('klingon-US'); + testRunner.setAcceptLanguages('klingon-US'); assert_true(window.received); }, "Test that the languagechange event fires on body onlanguagechange attribute"); @@ -50,7 +50,7 @@ fromWindowHandler = true; } - window.testRunner.setAcceptLanguages('klingon'); + testRunner.setAcceptLanguages('klingon'); assert_equals(window.received, 1); assert_true(fromWindowHandler); @@ -62,7 +62,7 @@ } document.body.setAttribute('onlanguagechange', 'window.received++;'); - window.testRunner.setAcceptLanguages('klingon-FR'); + testRunner.setAcceptLanguages('klingon-FR'); assert_equals(window.received, 1); assert_false(fromWindowHandler); }, "Test that the languagechange event fires on body onlanguagechange attribute XOR window.onlanguagechange"); @@ -73,8 +73,8 @@ eventsCount++; } - window.testRunner.setAcceptLanguages('klingon-US'); - window.testRunner.setAcceptLanguages('klingon-US'); + testRunner.setAcceptLanguages('klingon-US'); + testRunner.setAcceptLanguages('klingon-US'); assert_equals(eventsCount, 1); }, "Test that changing the language to the same value doesn't fire an event.") @@ -85,7 +85,7 @@ assert_false(e.bubbles); }); - window.testRunner.setAcceptLanguages('klingon'); + testRunner.setAcceptLanguages('klingon'); }, "Test properties of the fired event."); test(function() { @@ -110,7 +110,7 @@ for (var i = 0; i < testValues.length; ++i) { var data = testValues[i]; - window.testRunner.setAcceptLanguages(data.accept_languages); + testRunner.setAcceptLanguages(data.accept_languages); assert_equals(eventsCount, i + 1); assert_equals(navigator.languages.length, data.languages.length); @@ -126,7 +126,7 @@ assert_equals(navigator.languages, navigator.languages); assert_equals(navigator.languages, previous); - window.testRunner.setAcceptLanguages('fr-FR'); + testRunner.setAcceptLanguages('fr-FR'); assert_not_equals(navigator.languages, previous); }, "Test navigator.languages' caching behaviour.");
diff --git a/third_party/WebKit/LayoutTests/navigator_webdriver/navigator_webdriver_enabled.html b/third_party/WebKit/LayoutTests/navigator_webdriver/navigator_webdriver_enabled.html index 1d4ce7eb..8240541 100644 --- a/third_party/WebKit/LayoutTests/navigator_webdriver/navigator_webdriver_enabled.html +++ b/third_party/WebKit/LayoutTests/navigator_webdriver/navigator_webdriver_enabled.html
@@ -6,14 +6,14 @@ test(function() { assert_true(!!window.internals - && !!window.internals.runtimeFlags, + && !!internals.runtimeFlags, "This test only works when run as a layout test!"); }, "Prerequisites to running the rest of the tests"); -window.internals.runtimeFlags.automationControlledEnabled = true; +internals.runtimeFlags.automationControlledEnabled = true; test(function() { - assert_true(window.internals.runtimeFlags.automationControlledEnabled); + assert_true(internals.runtimeFlags.automationControlledEnabled); assert_true("webdriver" in window.navigator); assert_true(navigator.webdriver); }, "Test if Navigator implements NavigatorAutomationInformation interface");
diff --git a/third_party/WebKit/LayoutTests/netinfo/basic-operation.html b/third_party/WebKit/LayoutTests/netinfo/basic-operation.html index d8396ac..5475ce92 100644 --- a/third_party/WebKit/LayoutTests/netinfo/basic-operation.html +++ b/third_party/WebKit/LayoutTests/netinfo/basic-operation.html
@@ -7,7 +7,7 @@ <script> description('Tests the basic operation of NetInfo.'); -shouldBe('typeof window.internals.observeGC', '"function"', +shouldBe('typeof internals.observeGC', '"function"', 'this test requires window.internals'); shouldBeDefined("navigator.connection");
diff --git a/third_party/WebKit/LayoutTests/netinfo/estimate-basic-operation.html b/third_party/WebKit/LayoutTests/netinfo/estimate-basic-operation.html index 2b06ca38..d67f476 100644 --- a/third_party/WebKit/LayoutTests/netinfo/estimate-basic-operation.html +++ b/third_party/WebKit/LayoutTests/netinfo/estimate-basic-operation.html
@@ -7,7 +7,7 @@ <script> description('Tests the basic operation of NetInfo.'); -shouldBe('typeof window.internals.observeGC', '"function"', +shouldBe('typeof internals.observeGC', '"function"', 'this test requires window.internals'); shouldBeDefined("navigator.connection");
diff --git a/third_party/WebKit/LayoutTests/netinfo/estimate-multiple-frames.html b/third_party/WebKit/LayoutTests/netinfo/estimate-multiple-frames.html index 56e2456..85aaccd3 100644 --- a/third_party/WebKit/LayoutTests/netinfo/estimate-multiple-frames.html +++ b/third_party/WebKit/LayoutTests/netinfo/estimate-multiple-frames.html
@@ -8,7 +8,7 @@ description('Tests using NetInfo from multiple frames.'); -shouldBe('typeof window.internals.observeGC', '"function"', +shouldBe('typeof internals.observeGC', '"function"', 'this test requires window.internals'); var childFrame = document.createElement('iframe');
diff --git a/third_party/WebKit/LayoutTests/netinfo/estimate-web-worker.html b/third_party/WebKit/LayoutTests/netinfo/estimate-web-worker.html index 363514b..98cf797 100644 --- a/third_party/WebKit/LayoutTests/netinfo/estimate-web-worker.html +++ b/third_party/WebKit/LayoutTests/netinfo/estimate-web-worker.html
@@ -8,7 +8,7 @@ description('Tests that web-workers have access to NetInfo.'); -shouldBe('typeof window.internals.observeGC', '"function"', +shouldBe('typeof internals.observeGC', '"function"', 'this test requires window.internals'); var worker = new Worker("resources/web-worker.js");
diff --git a/third_party/WebKit/LayoutTests/netinfo/gc-frame-listeners.html b/third_party/WebKit/LayoutTests/netinfo/gc-frame-listeners.html index ed3fc21..0c601e27 100644 --- a/third_party/WebKit/LayoutTests/netinfo/gc-frame-listeners.html +++ b/third_party/WebKit/LayoutTests/netinfo/gc-frame-listeners.html
@@ -8,7 +8,7 @@ description('Tests that listeners in closed frames are collected.'); -shouldBe('typeof window.internals.observeGC', '"function"', +shouldBe('typeof internals.observeGC', '"function"', 'this test requires window.internals'); var childFrame;
diff --git a/third_party/WebKit/LayoutTests/netinfo/gc-unused-listeners.html b/third_party/WebKit/LayoutTests/netinfo/gc-unused-listeners.html index 6ff207c..669bca53 100644 --- a/third_party/WebKit/LayoutTests/netinfo/gc-unused-listeners.html +++ b/third_party/WebKit/LayoutTests/netinfo/gc-unused-listeners.html
@@ -8,7 +8,7 @@ description('Tests that unused listeners are collected.'); -shouldBe('typeof window.internals.observeGC', '"function"', +shouldBe('typeof internals.observeGC', '"function"', 'this test requires window.internals'); let callback = function(e) {
diff --git a/third_party/WebKit/LayoutTests/netinfo/gc-used-listeners.html b/third_party/WebKit/LayoutTests/netinfo/gc-used-listeners.html index 2b5e81b..73a129cd 100644 --- a/third_party/WebKit/LayoutTests/netinfo/gc-used-listeners.html +++ b/third_party/WebKit/LayoutTests/netinfo/gc-used-listeners.html
@@ -8,7 +8,7 @@ description('Tests that used listeners are not collected.'); -shouldBe('typeof window.internals.observeGC', '"function"', +shouldBe('typeof internals.observeGC', '"function"', 'this test requires window.internals'); var callback = function(e) {
diff --git a/third_party/WebKit/LayoutTests/netinfo/multiple-frames.html b/third_party/WebKit/LayoutTests/netinfo/multiple-frames.html index f1886f3..584930df 100644 --- a/third_party/WebKit/LayoutTests/netinfo/multiple-frames.html +++ b/third_party/WebKit/LayoutTests/netinfo/multiple-frames.html
@@ -8,7 +8,7 @@ description('Tests using NetInfo from multiple frames.'); -shouldBe('typeof window.internals.observeGC', '"function"', +shouldBe('typeof internals.observeGC', '"function"', 'this test requires window.internals'); var childFrame = document.createElement('iframe');
diff --git a/third_party/WebKit/LayoutTests/netinfo/saveData-basic-operation.html b/third_party/WebKit/LayoutTests/netinfo/saveData-basic-operation.html index 7e8cc4c4..4690729a 100644 --- a/third_party/WebKit/LayoutTests/netinfo/saveData-basic-operation.html +++ b/third_party/WebKit/LayoutTests/netinfo/saveData-basic-operation.html
@@ -7,7 +7,7 @@ <script> description('Tests the basic operation of saveData attribute in NetInfo.'); -shouldBe('typeof window.internals.observeGC', '"function"', +shouldBe('typeof internals.observeGC', '"function"', 'this test requires window.internals'); shouldBeDefined("navigator.connection");
diff --git a/third_party/WebKit/LayoutTests/netinfo/unregister-during-event.html b/third_party/WebKit/LayoutTests/netinfo/unregister-during-event.html index 48c2c625..bcab5fc 100644 --- a/third_party/WebKit/LayoutTests/netinfo/unregister-during-event.html +++ b/third_party/WebKit/LayoutTests/netinfo/unregister-during-event.html
@@ -8,7 +8,7 @@ description("Tests that it's okay to unregister the event listener while handling the event."); -shouldBe('typeof window.internals.observeGC', '"function"', +shouldBe('typeof internals.observeGC', '"function"', 'this test requires window.internals'); var otherHandler = function(e) {
diff --git a/third_party/WebKit/LayoutTests/netinfo/web-worker.html b/third_party/WebKit/LayoutTests/netinfo/web-worker.html index de586b6..589bf5f 100644 --- a/third_party/WebKit/LayoutTests/netinfo/web-worker.html +++ b/third_party/WebKit/LayoutTests/netinfo/web-worker.html
@@ -8,7 +8,7 @@ description('Tests that web-workers have access to NetInfo.'); -shouldBe('typeof window.internals.observeGC', '"function"', +shouldBe('typeof internals.observeGC', '"function"', 'this test requires window.internals'); var worker = new Worker("resources/web-worker.js");
diff --git a/third_party/WebKit/LayoutTests/nfc/idl-NFC-expected.txt b/third_party/WebKit/LayoutTests/nfc/idl-NFC-expected.txt deleted file mode 100644 index 6dac303..0000000 --- a/third_party/WebKit/LayoutTests/nfc/idl-NFC-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL NFC IDL test Test bug: need to pass exception to assert_throws() -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/nfc/idl-NFC.html b/third_party/WebKit/LayoutTests/nfc/idl-NFC.html index 1ca2eebe..9796bcd1 100644 --- a/third_party/WebKit/LayoutTests/nfc/idl-NFC.html +++ b/third_party/WebKit/LayoutTests/nfc/idl-NFC.html
@@ -3,9 +3,9 @@ <script src="../resources/testharnessreport.js"></script> <script> test(function() { - assert_throws(null, function() { new NFC(); }, + assert_throws(new TypeError, function() { new NFC(); }, 'the constructor should not be callable with "new"'); - assert_throws(null, function() { NFC(); }, + assert_throws(new TypeError, function() { NFC(); }, 'the constructor should not be callable'); // Test that navigator.nfc.push exists
diff --git a/third_party/WebKit/LayoutTests/paint/images/image-backgrounds-not-antialiased-expected.html b/third_party/WebKit/LayoutTests/paint/images/image-backgrounds-not-antialiased-expected.html index 0547d40..978a6f3e 100644 --- a/third_party/WebKit/LayoutTests/paint/images/image-backgrounds-not-antialiased-expected.html +++ b/third_party/WebKit/LayoutTests/paint/images/image-backgrounds-not-antialiased-expected.html
@@ -21,6 +21,6 @@ function finishTest() { if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/paint/images/image-backgrounds-not-antialiased.html b/third_party/WebKit/LayoutTests/paint/images/image-backgrounds-not-antialiased.html index acfb287..6d4ef73 100644 --- a/third_party/WebKit/LayoutTests/paint/images/image-backgrounds-not-antialiased.html +++ b/third_party/WebKit/LayoutTests/paint/images/image-backgrounds-not-antialiased.html
@@ -22,6 +22,6 @@ function finishTest() { if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/paint/input/textarea-crash.html b/third_party/WebKit/LayoutTests/paint/input/textarea-crash.html index af2bb94..a792f55 100644 --- a/third_party/WebKit/LayoutTests/paint/input/textarea-crash.html +++ b/third_party/WebKit/LayoutTests/paint/input/textarea-crash.html
@@ -4,7 +4,7 @@ </textarea> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); if (!window.eventSender) { console.log('This test requires eventSender.'); } else {
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/4774354.html b/third_party/WebKit/LayoutTests/paint/invalidation/4774354.html index 6a491049..e19259a 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/4774354.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/4774354.html
@@ -3,7 +3,7 @@ function step1() { if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); // Wait for the frame to load. window.setTimeout(step2, 100); } @@ -30,7 +30,7 @@ var sel = frame.getSelection(); sel.setBaseAndExtent(text, 5, text, text.length); if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script>
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/background/background-image-paint-invalidation-large-abspos-div.html b/third_party/WebKit/LayoutTests/paint/invalidation/background/background-image-paint-invalidation-large-abspos-div.html index cf0dc2d..2e4e943 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/background/background-image-paint-invalidation-large-abspos-div.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/background/background-image-paint-invalidation-large-abspos-div.html
@@ -6,7 +6,7 @@ <img src="../resources/ducky.png"></img> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); window.onload = function() { document.body.style.background = 'url(../resources/ducky.png)'; window.scrollTo(0, 3000);
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/background/background-scaling.html b/third_party/WebKit/LayoutTests/paint/invalidation/background/background-scaling.html index 4f136b6..cafa7d9 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/background/background-scaling.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/background/background-scaling.html
@@ -4,8 +4,8 @@ <script type="text/javascript"> window.onload = function() { if (window.internals) { - window.internals.setPageScaleFactorLimits(0.25, 0.25); - window.internals.setPageScaleFactor(0.25); + internals.setPageScaleFactorLimits(0.25, 0.25); + internals.setPageScaleFactor(0.25); } } </script>
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/background/full-viewport-repaint-for-background-attachment-fixed.html b/third_party/WebKit/LayoutTests/paint/invalidation/background/full-viewport-repaint-for-background-attachment-fixed.html index 8e601da..f0972dd5 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/background/full-viewport-repaint-for-background-attachment-fixed.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/background/full-viewport-repaint-for-background-attachment-fixed.html
@@ -9,7 +9,7 @@ <script src="../resources/text-based-repaint.js" type="text/javascript"></script> <script> if (window.testRunner) - window.internals.settings.setPreferCompositingToLCDTextEnabled(false); + internals.settings.setPreferCompositingToLCDTextEnabled(false); function repaintTest() { window.scrollTo(0, 1000);
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/background/obscured-background-no-repaint.html b/third_party/WebKit/LayoutTests/paint/invalidation/background/obscured-background-no-repaint.html index 8bfe36d..5552f12 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/background/obscured-background-no-repaint.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/background/obscured-background-no-repaint.html
@@ -53,7 +53,7 @@ internals.runtimeFlags.paintUnderInvalidationCheckingEnabled = true; function finish() { - var layerTree = window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + var layerTree = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); var invalidations = JSON.parse(layerTree)["objectPaintInvalidations"]; // Passes if there is no invalidations other than imgForAdvanceImageAnimation, // or only invalidations because of background obscuration change.
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/background/view-background-from-body-1.html b/third_party/WebKit/LayoutTests/paint/invalidation/background/view-background-from-body-1.html index e68b75d..7736f8269 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/background/view-background-from-body-1.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/background/view-background-from-body-1.html
@@ -2,7 +2,7 @@ <!-- The html element steals body's red background whether body has a box or not. --> <script type="text/javascript"> if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); function runTest() { document.body.style.display = "none";
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/compositing/fixed-pos-with-abs-pos-child-scroll.html b/third_party/WebKit/LayoutTests/paint/invalidation/compositing/fixed-pos-with-abs-pos-child-scroll.html index ce52fe74..9dabb27 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/compositing/fixed-pos-with-abs-pos-child-scroll.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/compositing/fixed-pos-with-abs-pos-child-scroll.html
@@ -28,12 +28,12 @@ } if (window.internals) { - window.internals.settings.setPreferCompositingToLCDTextEnabled(false); + internals.settings.setPreferCompositingToLCDTextEnabled(false); } window.onload = function() { if (window.internals) - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); window.scrollTo(0, 500); @@ -43,7 +43,7 @@ runAfterLayoutAndPaint(function() { if (window.internals) document.getElementById('layers').textContent = - window.internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); + internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); if (window.testRunner) testRunner.notifyDone();
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/compositing/page-scale-repaint.html b/third_party/WebKit/LayoutTests/paint/invalidation/compositing/page-scale-repaint.html index 9b71df5a..ddb8c51a 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/compositing/page-scale-repaint.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/compositing/page-scale-repaint.html
@@ -20,8 +20,8 @@ testRunner.waitUntilDone(); runAfterLayoutAndPaint(function() { if (window.internals) { - window.internals.setPageScaleFactorLimits(0.5, 0.5); - window.internals.setPageScaleFactor(0.5); + internals.setPageScaleFactorLimits(0.5, 0.5); + internals.setPageScaleFactor(0.5); } if (window.testRunner) testRunner.notifyDone();
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/compositing/remove-subframe-composited-nonstacking-ancestor.html b/third_party/WebKit/LayoutTests/paint/invalidation/compositing/remove-subframe-composited-nonstacking-ancestor.html index 3fbc26df..03e7796 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/compositing/remove-subframe-composited-nonstacking-ancestor.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/compositing/remove-subframe-composited-nonstacking-ancestor.html
@@ -1,7 +1,7 @@ <!doctype HTML> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> Test passes if it does not crash. <div style="backface-visibility: hidden"></div>
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/compositing/scrolling-neg-z-index-descendants-should-cause-repaint.html b/third_party/WebKit/LayoutTests/paint/invalidation/compositing/scrolling-neg-z-index-descendants-should-cause-repaint.html index ddb860b..9d071c1 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/compositing/scrolling-neg-z-index-descendants-should-cause-repaint.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/compositing/scrolling-neg-z-index-descendants-should-cause-repaint.html
@@ -2,7 +2,7 @@ <script src="../resources/text-based-repaint.js"></script> <script> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(false); + internals.settings.setPreferCompositingToLCDTextEnabled(false); function repaintTest() { container.scrollTop = 100;
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/compositing/scrolling-without-painting.html b/third_party/WebKit/LayoutTests/paint/invalidation/compositing/scrolling-without-painting.html index 4a08341d..7ab866d1 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/compositing/scrolling-without-painting.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/compositing/scrolling-without-painting.html
@@ -24,7 +24,7 @@ <script src="../resources/text-based-repaint.js"></script> <script type="text/javascript"> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); function repaintTest() { // Scroll down. This should not cause any more repaints to the
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/compositing/updating-scrolling-content.html b/third_party/WebKit/LayoutTests/paint/invalidation/compositing/updating-scrolling-content.html index 4c5b709..959ad65 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/compositing/updating-scrolling-content.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/compositing/updating-scrolling-content.html
@@ -28,7 +28,7 @@ <script src="../resources/text-based-repaint.js"></script> <script type="text/javascript"> if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); window.addEventListener('load', function() { var scroller = document.getElementById('scroller');
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/forms/textarea-custom-resizer.html b/third_party/WebKit/LayoutTests/paint/invalidation/forms/textarea-custom-resizer.html index 47ecf335..2a1a2c1 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/forms/textarea-custom-resizer.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/forms/textarea-custom-resizer.html
@@ -7,12 +7,12 @@ <textarea id="target" style="width: 200px; height: 200px;"></textarea> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); onload = function() { requestAnimationFrame(function() { target.style.width = "400px"; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); } </script>
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/invalidate-when-receiving-paint-layer.html b/third_party/WebKit/LayoutTests/paint/invalidation/invalidate-when-receiving-paint-layer.html index d68bbb45..1ccf7504c 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/invalidate-when-receiving-paint-layer.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/invalidate-when-receiving-paint-layer.html
@@ -8,7 +8,7 @@ <script src="../../resources/run-after-layout-and-paint.js"></script> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); onload = function() { runAfterLayoutAndPaint(function() { target.style.opacity = 0.2;
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/overflow/overflow-outline-repaint.html b/third_party/WebKit/LayoutTests/paint/invalidation/overflow/overflow-outline-repaint.html index b272714..4f4ce74 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/overflow/overflow-outline-repaint.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/overflow/overflow-outline-repaint.html
@@ -4,7 +4,7 @@ function runTest() { if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); document.getElementById("z").lastChild.data='Excellent! Test'; } </script>
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/position/absolute-layer-specified-left-or-right-auto-width-moved-vertically.html b/third_party/WebKit/LayoutTests/paint/invalidation/position/absolute-layer-specified-left-or-right-auto-width-moved-vertically.html index 14f8c3b..07954c5 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/position/absolute-layer-specified-left-or-right-auto-width-moved-vertically.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/position/absolute-layer-specified-left-or-right-auto-width-moved-vertically.html
@@ -14,7 +14,7 @@ document.body.offsetTop; var layerTree = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + internals.stopTrackingRepaints(document); document.getElementById('result').textContent = layerTree.indexOf('repaint') == -1 ? 'SUCCESS' : 'FAIL'; }
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/position/fixed-position-layer-moved.html b/third_party/WebKit/LayoutTests/paint/invalidation/position/fixed-position-layer-moved.html index f5d3fcd..c6da18ab 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/position/fixed-position-layer-moved.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/position/fixed-position-layer-moved.html
@@ -14,7 +14,7 @@ document.body.offsetTop; var layerTree = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + internals.stopTrackingRepaints(document); document.getElementById('result').textContent = layerTree.indexOf('repaint') == -1 ? 'SUCCESS' : 'FAIL'; }; </script>
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/position/relayout-fixed-position-after-scale.html b/third_party/WebKit/LayoutTests/paint/invalidation/position/relayout-fixed-position-after-scale.html index b4ac9030..a6af0c39 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/position/relayout-fixed-position-after-scale.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/position/relayout-fixed-position-after-scale.html
@@ -30,8 +30,8 @@ <script> function runTest() { if (window.internals && window.eventSender) { - window.internals.setPageScaleFactorLimits(0.5, 4); - window.internals.setPageScaleFactor(0.5); + internals.setPageScaleFactorLimits(0.5, 4); + internals.setPageScaleFactor(0.5); // Force scrollbar to hide and re-layout immediately. var spacer = document.getElementById('spacer');
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/requestAnimation-translation-leave-traces.html b/third_party/WebKit/LayoutTests/paint/invalidation/requestAnimation-translation-leave-traces.html index 8c17382..f234010 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/requestAnimation-translation-leave-traces.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/requestAnimation-translation-leave-traces.html
@@ -35,7 +35,7 @@ } else { if (window.internals) { var layerTree = internals.layerTreeAsText(document, internals.LAYER_TREE_INCLUDES_PAINT_INVALIDATIONS); - window.internals.stopTrackingRepaints(document); + internals.stopTrackingRepaints(document); document.getElementById("result").textContent = "Tested locations: " + testedLocations + '\n' + layerTree; } if (window.testRunner)
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/resize-iframe-text.html b/third_party/WebKit/LayoutTests/paint/invalidation/resize-iframe-text.html index 97f825e7..5359dda 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/resize-iframe-text.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/resize-iframe-text.html
@@ -6,7 +6,7 @@ // otherwise be promoted to rootScroller which changes painting and // invalidation. if (window.internals) - window.internals.runtimeFlags.implicitRootScrollerEnabled = false; + internals.runtimeFlags.implicitRootScrollerEnabled = false; if (window.testRunner) testRunner.useUnfortunateSynchronousResizeMode(); onload = function() {
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/resources/fixed-move-after-keyboard-scroll-iframe.html b/third_party/WebKit/LayoutTests/paint/invalidation/resources/fixed-move-after-keyboard-scroll-iframe.html index c665be43..f73ea302 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/resources/fixed-move-after-keyboard-scroll-iframe.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/resources/fixed-move-after-keyboard-scroll-iframe.html
@@ -16,11 +16,11 @@ document.getElementById('toMove').style.left = "150px"; document.getElementById('toMove').style.backgroundColor = "green"; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); document.addEventListener("scroll", runRepaintTestAfterDisplay, false); </script>
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/resources/repaint-with-scrollbar-change.html b/third_party/WebKit/LayoutTests/paint/invalidation/resources/repaint-with-scrollbar-change.html index 84bf00b..be2da413 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/resources/repaint-with-scrollbar-change.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/resources/repaint-with-scrollbar-change.html
@@ -41,7 +41,7 @@ } if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); window.scrollTo(0, 4000); runAfterLayoutAndPaint(runRepaintTest);
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/resources/text-based-repaint.js b/third_party/WebKit/LayoutTests/paint/invalidation/resources/text-based-repaint.js index 046c0cb..a7de637 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/resources/text-based-repaint.js +++ b/third_party/WebKit/LayoutTests/paint/invalidation/resources/text-based-repaint.js
@@ -29,7 +29,7 @@ testRunner.dumpAsText(); testRunner.layoutAndPaintAsyncThen(function() { - window.internals.startTrackingRepaints(document); + internals.startTrackingRepaints(document); repaintTest(); if (!window.testIsAsync) finishRepaintTest(); @@ -84,7 +84,7 @@ if (window.layerTreeAsTextAdditionalFlags) flags |= window.layerTreeAsTextAdditionalFlags; - var layersWithInvalidationsText = window.internals.layerTreeAsText(document, flags); + var layersWithInvalidationsText = internals.layerTreeAsText(document, flags); checkObjectPaintInvalidations(layersWithInvalidationsText);
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/scale-page-shrink.html b/third_party/WebKit/LayoutTests/paint/invalidation/scale-page-shrink.html index a69583f..90079c2 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/scale-page-shrink.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/scale-page-shrink.html
@@ -10,10 +10,10 @@ function runTest() { if (window.testRunner) - window.testRunner.dumpAsTextWithPixelResults(); + testRunner.dumpAsTextWithPixelResults(); if (window.internals) { - window.internals.setPageScaleFactorLimits(0.25, 0.25); - window.internals.setPageScaleFactor(0.25); + internals.setPageScaleFactorLimits(0.25, 0.25); + internals.setPageScaleFactor(0.25); } } </script>
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/scroll/fixed-move-after-keyboard-scroll.html b/third_party/WebKit/LayoutTests/paint/invalidation/scroll/fixed-move-after-keyboard-scroll.html index d88be2d..4482dddb 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/scroll/fixed-move-after-keyboard-scroll.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/scroll/fixed-move-after-keyboard-scroll.html
@@ -11,7 +11,7 @@ frames[0].focus(); if (window.eventSender) { - window.eventSender.keyDown("PageDown"); + eventSender.keyDown("PageDown"); } } </script>
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/scroll/invalidate-caret-in-composited-scrolling-container.html b/third_party/WebKit/LayoutTests/paint/invalidation/scroll/invalidate-caret-in-composited-scrolling-container.html index 62e5fd7..4a0d229 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/scroll/invalidate-caret-in-composited-scrolling-container.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/scroll/invalidate-caret-in-composited-scrolling-container.html
@@ -6,7 +6,7 @@ window.testIsAsync = true; onload = runRepaintTest; if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); function repaintTest() { root.focus();
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/scroll/invalidate-caret-in-non-composited-scrolling-container.html b/third_party/WebKit/LayoutTests/paint/invalidation/scroll/invalidate-caret-in-non-composited-scrolling-container.html index ebea84f0..dcd95ff 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/scroll/invalidate-caret-in-non-composited-scrolling-container.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/scroll/invalidate-caret-in-non-composited-scrolling-container.html
@@ -6,7 +6,7 @@ window.testIsAsync = true; onload = runRepaintTest; if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(false); + internals.settings.setPreferCompositingToLCDTextEnabled(false); function repaintTest() { root.focus();
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects.html b/third_party/WebKit/LayoutTests/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects.html index b0f44c5d..0d0e9e7 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/scroll/scroll-descendant-with-cached-cliprects.html
@@ -2,7 +2,7 @@ <script> if (window.testRunner) { window.enablePixelTesting = true; - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); } function repaintTest() { window.scrollBy(0,200);
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/selection/selection-in-composited-scrolling-container.html b/third_party/WebKit/LayoutTests/paint/invalidation/selection/selection-in-composited-scrolling-container.html index d4afee2..0e886f7 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/selection/selection-in-composited-scrolling-container.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/selection/selection-in-composited-scrolling-container.html
@@ -5,7 +5,7 @@ window.testIsAsync = true; onload = runRepaintAndPixelTest; if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(true); + internals.settings.setPreferCompositingToLCDTextEnabled(true); function repaintTest() { target.focus();
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/selection/selection-in-non-composited-scrolling-container.html b/third_party/WebKit/LayoutTests/paint/invalidation/selection/selection-in-non-composited-scrolling-container.html index 53da250..9f4151bd 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/selection/selection-in-non-composited-scrolling-container.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/selection/selection-in-non-composited-scrolling-container.html
@@ -5,7 +5,7 @@ window.testIsAsync = true; onload = runRepaintAndPixelTest; if (window.internals) - window.internals.settings.setPreferCompositingToLCDTextEnabled(false); + internals.settings.setPreferCompositingToLCDTextEnabled(false); function repaintTest() { target.focus();
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/svg/animated-svg-as-image-no-fixed-intrinsic-size.html b/third_party/WebKit/LayoutTests/paint/invalidation/svg/animated-svg-as-image-no-fixed-intrinsic-size.html index e351212..d4718c9 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/svg/animated-svg-as-image-no-fixed-intrinsic-size.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/svg/animated-svg-as-image-no-fixed-intrinsic-size.html
@@ -12,7 +12,7 @@ // The animation lasts 100ms so skip 12 (12*1s/120=100ms) frames to be sure. for (var i = 0; i < 12; i++) - window.internals.advanceImageAnimation(image); + internals.advanceImageAnimation(image); window.requestAnimationFrame(function() { finishRepaintTest();
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/svg/animated-svg-as-image-same-image.html b/third_party/WebKit/LayoutTests/paint/invalidation/svg/animated-svg-as-image-same-image.html index 0ef628c..a2cb4b6 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/svg/animated-svg-as-image-same-image.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/svg/animated-svg-as-image-same-image.html
@@ -12,8 +12,8 @@ // The animation lasts 100ms so skip 12 (12*1s/120=100ms) frames to be sure. for (var i = 0; i < 12; i++) { - window.internals.advanceImageAnimation(imageA); - window.internals.advanceImageAnimation(imageB); + internals.advanceImageAnimation(imageA); + internals.advanceImageAnimation(imageB); } window.requestAnimationFrame(function() {
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/svg/animated-svg-as-image.html b/third_party/WebKit/LayoutTests/paint/invalidation/svg/animated-svg-as-image.html index 204c3b14..e71af52 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/svg/animated-svg-as-image.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/svg/animated-svg-as-image.html
@@ -12,8 +12,8 @@ // The animation lasts 100ms so skip 12 frames (12*1s/120=100ms) to be sure. for (var i = 0; i < 12; i++) { - window.internals.advanceImageAnimation(imageA); - window.internals.advanceImageAnimation(imageB); + internals.advanceImageAnimation(imageA); + internals.advanceImageAnimation(imageB); } window.requestAnimationFrame(function() {
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/svg/feImage-target-reappend-to-document.svg b/third_party/WebKit/LayoutTests/paint/invalidation/svg/feImage-target-reappend-to-document.svg index dd3ed31..a6a2bc8 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/svg/feImage-target-reappend-to-document.svg +++ b/third_party/WebKit/LayoutTests/paint/invalidation/svg/feImage-target-reappend-to-document.svg
@@ -20,7 +20,7 @@ var greenImage = document.getElementById("feimage-green"); document.getElementById("filter").removeChild(greenImage); - window.testRunner.layoutAndPaintAsyncThen(function() { + testRunner.layoutAndPaintAsyncThen(function() { document.getElementById("filter").appendChild(greenImage); finishRepaintTest(); });
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-late-mask-and-object-creation.svg b/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-late-mask-and-object-creation.svg index 5414b426..bd34aaca 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-late-mask-and-object-creation.svg +++ b/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-late-mask-and-object-creation.svg
@@ -10,7 +10,7 @@ var content = document.getElementById("content"); function repaintTest() { - window.testRunner.layoutAndPaintAsyncThen(createObject); + testRunner.layoutAndPaintAsyncThen(createObject); } function createObject() @@ -23,7 +23,7 @@ rect.setAttribute("mask", "url(#dynMask)"); content.appendChild(rect); - window.testRunner.layoutAndPaintAsyncThen(createMask); + testRunner.layoutAndPaintAsyncThen(createMask); } function createMask()
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/svg/repaint-svg-after-style-change.html b/third_party/WebKit/LayoutTests/paint/invalidation/svg/repaint-svg-after-style-change.html index ffb03c8c..83896dc 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/svg/repaint-svg-after-style-change.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/svg/repaint-svg-after-style-change.html
@@ -16,14 +16,14 @@ var blinker = document.getElementById('blinker'); if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); window.setTimeout(function () { blinker.style.display = 'none'; window.setTimeout(function () { blinker.style.display = ''; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }, 50); }, 50);
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/svg/text-match-svg.html b/third_party/WebKit/LayoutTests/paint/invalidation/svg/text-match-svg.html index 496f629..57da5388 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/svg/text-match-svg.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/svg/text-match-svg.html
@@ -6,8 +6,8 @@ var elem = document.getElementById(id).firstChild; range.setStart(elem, start); range.setEnd(elem, end); - window.internals.addTextMatchMarker(range, active); - window.internals.setMarkedTextMatchesAreHighlighted(document, true); + internals.addTextMatchMarker(range, active); + internals.setMarkedTextMatchesAreHighlighted(document, true); } function highlightTest() { highlightRange('1', 2, 5, 'kActive');
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/table/display-table-row-crash.html b/third_party/WebKit/LayoutTests/paint/invalidation/table/display-table-row-crash.html index 62d1e57..760ae27 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/table/display-table-row-crash.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/table/display-table-row-crash.html
@@ -7,6 +7,6 @@ <div id="splitter"></div> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); document.getElementById("splitter").style.display = "table-row"; </script>
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/text-match-pre-wrapped-text.html b/third_party/WebKit/LayoutTests/paint/invalidation/text-match-pre-wrapped-text.html index bf720a52..78bb353c 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/text-match-pre-wrapped-text.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/text-match-pre-wrapped-text.html
@@ -10,8 +10,8 @@ range.setStart(elem, start); range.setEnd(elem, end); if (window.internals) { - window.internals.addTextMatchMarker(range, active); - window.internals.setMarkedTextMatchesAreHighlighted(document, true); + internals.addTextMatchMarker(range, active); + internals.setMarkedTextMatchesAreHighlighted(document, true); } }
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/text-match-transparent-text.html b/third_party/WebKit/LayoutTests/paint/invalidation/text-match-transparent-text.html index 2747cd29..05f74d1 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/text-match-transparent-text.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/text-match-transparent-text.html
@@ -5,8 +5,8 @@ var elem = document.getElementById(id).firstChild; range.setStart(elem, start); range.setEnd(elem, end); - window.internals.addTextMatchMarker(range, active); - window.internals.setMarkedTextMatchesAreHighlighted(document, true); + internals.addTextMatchMarker(range, active); + internals.setMarkedTextMatchesAreHighlighted(document, true); } function highlightTest() { highlightRange('1', 2, 5, 'kActive');
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/text-match.html b/third_party/WebKit/LayoutTests/paint/invalidation/text-match.html index 3c8a1ea..26490c2 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/text-match.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/text-match.html
@@ -6,8 +6,8 @@ var elem = document.getElementById(id).firstChild; range.setStart(elem, start); range.setEnd(elem, end); - window.internals.addTextMatchMarker(range, active); - window.internals.setMarkedTextMatchesAreHighlighted(document, true); + internals.addTextMatchMarker(range, active); + internals.setMarkedTextMatchesAreHighlighted(document, true); } function highlightTest() { highlightRange('1', 2, 5, 'kActive');
diff --git a/third_party/WebKit/LayoutTests/paint/invalidation/update-visual-rects-after-compositing-change.html b/third_party/WebKit/LayoutTests/paint/invalidation/update-visual-rects-after-compositing-change.html index b860013..1fcfb6e8 100644 --- a/third_party/WebKit/LayoutTests/paint/invalidation/update-visual-rects-after-compositing-change.html +++ b/third_party/WebKit/LayoutTests/paint/invalidation/update-visual-rects-after-compositing-change.html
@@ -28,7 +28,7 @@ } function checkResult() { - var clientRect = window.internals.visualRect(myspan.firstChild); + var clientRect = internals.visualRect(myspan.firstChild); // Check that the visual rect for the child has been initialized // to a non-zero (and hence presumably correct) size. assert_true(clientRect.width > 0);
diff --git a/third_party/WebKit/LayoutTests/paint/lists/invalidate-list-marker-color.html b/third_party/WebKit/LayoutTests/paint/lists/invalidate-list-marker-color.html index 27285e24..ba7538c 100644 --- a/third_party/WebKit/LayoutTests/paint/lists/invalidate-list-marker-color.html +++ b/third_party/WebKit/LayoutTests/paint/lists/invalidate-list-marker-color.html
@@ -11,13 +11,13 @@ </ul> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); onload = function() { requestAnimationFrame(function() { target.style.color = 'black'; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); }; </script>
diff --git a/third_party/WebKit/LayoutTests/paint/selection/text-selection-editing-crash.html b/third_party/WebKit/LayoutTests/paint/selection/text-selection-editing-crash.html index 753a20f..5782df1 100644 --- a/third_party/WebKit/LayoutTests/paint/selection/text-selection-editing-crash.html +++ b/third_party/WebKit/LayoutTests/paint/selection/text-selection-editing-crash.html
@@ -11,8 +11,8 @@ <div class="box"> <script> if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } document.designMode = 'on'; @@ -26,6 +26,6 @@ document.execCommand("forwardDelete"); window.requestAnimationFrame(function() { - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); </script>
diff --git a/third_party/WebKit/LayoutTests/platform/linux/http/tests/security/w3c/cross-origin-objects-expected.txt b/third_party/WebKit/LayoutTests/platform/linux/http/tests/security/w3c/cross-origin-objects-expected.txt deleted file mode 100644 index 1a84457..0000000 --- a/third_party/WebKit/LayoutTests/platform/linux/http/tests/security/w3c/cross-origin-objects-expected.txt +++ /dev/null
@@ -1,22 +0,0 @@ -This is a testharness.js-based test. -FAIL Basic sanity-checking Test bug: need to pass exception to assert_throws() -FAIL Only whitelisted properties are accessible cross-origin Test bug: need to pass exception to assert_throws() -FAIL [[GetPrototypeOf]] should return null Test bug: need to pass exception to assert_throws() -FAIL [[SetPrototypeOf]] should throw Test bug: need to pass exception to assert_throws() -PASS [[IsExtensible]] should return true for cross-origin objects -FAIL [[PreventExtensions]] should throw for cross-origin objects Test bug: need to pass exception to assert_throws() -FAIL [[GetOwnProperty]] - Properties on cross-origin objects should be reported |own| Blocked a frame with origin "http://web-platform.test:8000" from accessing a cross-origin frame. -FAIL [[GetOwnProperty]] - Property descriptors for cross-origin properties should be set up correctly assert_equals: property descriptor for postMessage should have writable: false expected false but got true -FAIL [[Delete]] Should throw on cross-origin objects Test bug: need to pass exception to assert_throws() -FAIL [[DefineOwnProperty]] Should throw for cross-origin objects Test bug: need to pass exception to assert_throws() -PASS [[Enumerate]] should return an empty iterator -FAIL [[OwnPropertyKeys]] should return all properties from cross-origin objects assert_array_equals: Object.getOwnPropertyNames() gives the right answer for cross-origin Location lengths differ, expected 2 got 3 -PASS A and B jointly observe the same identity for cross-origin Window and Location -PASS Cross-origin functions get local Function.prototype -FAIL Cross-origin Window accessors get local Function.prototype Cannot read property 'name' of undefined -FAIL Same-origin observers get different functions for cross-origin objects assert_true: same-origin Window functions get their own object expected true got false -FAIL Same-origin obsevers get different accessors for cross-origin Window assert_true: different Window accessors per-incumbent script settings object expected true got false -FAIL Same-origin observers get different accessors for cross-origin Location Blocked a frame with origin "http://web-platform.test:8000" from accessing a cross-origin frame. -PASS Cross-origin object identity preserved across document.domain -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/platform/mac/http/tests/security/w3c/cross-origin-objects-expected.txt b/third_party/WebKit/LayoutTests/platform/mac/http/tests/security/w3c/cross-origin-objects-expected.txt deleted file mode 100644 index 1a84457..0000000 --- a/third_party/WebKit/LayoutTests/platform/mac/http/tests/security/w3c/cross-origin-objects-expected.txt +++ /dev/null
@@ -1,22 +0,0 @@ -This is a testharness.js-based test. -FAIL Basic sanity-checking Test bug: need to pass exception to assert_throws() -FAIL Only whitelisted properties are accessible cross-origin Test bug: need to pass exception to assert_throws() -FAIL [[GetPrototypeOf]] should return null Test bug: need to pass exception to assert_throws() -FAIL [[SetPrototypeOf]] should throw Test bug: need to pass exception to assert_throws() -PASS [[IsExtensible]] should return true for cross-origin objects -FAIL [[PreventExtensions]] should throw for cross-origin objects Test bug: need to pass exception to assert_throws() -FAIL [[GetOwnProperty]] - Properties on cross-origin objects should be reported |own| Blocked a frame with origin "http://web-platform.test:8000" from accessing a cross-origin frame. -FAIL [[GetOwnProperty]] - Property descriptors for cross-origin properties should be set up correctly assert_equals: property descriptor for postMessage should have writable: false expected false but got true -FAIL [[Delete]] Should throw on cross-origin objects Test bug: need to pass exception to assert_throws() -FAIL [[DefineOwnProperty]] Should throw for cross-origin objects Test bug: need to pass exception to assert_throws() -PASS [[Enumerate]] should return an empty iterator -FAIL [[OwnPropertyKeys]] should return all properties from cross-origin objects assert_array_equals: Object.getOwnPropertyNames() gives the right answer for cross-origin Location lengths differ, expected 2 got 3 -PASS A and B jointly observe the same identity for cross-origin Window and Location -PASS Cross-origin functions get local Function.prototype -FAIL Cross-origin Window accessors get local Function.prototype Cannot read property 'name' of undefined -FAIL Same-origin observers get different functions for cross-origin objects assert_true: same-origin Window functions get their own object expected true got false -FAIL Same-origin obsevers get different accessors for cross-origin Window assert_true: different Window accessors per-incumbent script settings object expected true got false -FAIL Same-origin observers get different accessors for cross-origin Location Blocked a frame with origin "http://web-platform.test:8000" from accessing a cross-origin frame. -PASS Cross-origin object identity preserved across document.domain -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-event-order-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-event-order-expected.txt index 385add7..0229626 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-event-order-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-event-order-expected.txt
@@ -1,4 +1,4 @@ -PASS window.internals.pagePopupWindow is null +PASS internals.pagePopupWindow is null PASS menu.value is "garply" PASS internals.selectMenuListText(menu) is "garply" PASS events[0] is "change"
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-key-operations-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-key-operations-expected.txt index b1c7b70..7315caf 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-key-operations-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-key-operations-expected.txt
@@ -18,7 +18,7 @@ PASS picker._selectElement.value is "0" PASS menu.value is "bar" PASS internals.selectMenuListText(menu) is "foo" -PASS window.internals.pagePopupWindow is null +PASS internals.pagePopupWindow is null PASS menu.value is "foo" PASS internals.selectMenuListText(menu) is "foo" ==> Arrow keys + ESC @@ -27,7 +27,7 @@ PASS picker._selectElement.value is "1" PASS menu.value is "foo" PASS internals.selectMenuListText(menu) is "bar" -PASS window.internals.pagePopupWindow is null +PASS internals.pagePopupWindow is null PASS menu.value is "bar" PASS internals.selectMenuListText(menu) is "bar" ==> Arrow keys + blur @@ -36,7 +36,7 @@ PASS picker._selectElement.value is "1" PASS menu.value is "foo" PASS internals.selectMenuListText(menu) is "bar" -PASS window.internals.pagePopupWindow is null +PASS internals.pagePopupWindow is null PASS menu.value is "bar" PASS internals.selectMenuListText(menu) is "bar" ==> Typeahead + ESC @@ -45,7 +45,7 @@ PASS picker._selectElement.value is "4" PASS menu.value is "bar" PASS internals.selectMenuListText(menu) is "garply" -PASS window.internals.pagePopupWindow is null +PASS internals.pagePopupWindow is null PASS menu.value is "garply" PASS internals.selectMenuListText(menu) is "garply" ==> Hover + ESC @@ -54,7 +54,7 @@ PASS picker._selectElement.value is "0" PASS menu.value is "garply" PASS internals.selectMenuListText(menu) is "garply" -PASS window.internals.pagePopupWindow is null +PASS internals.pagePopupWindow is null PASS menu.value is "garply" PASS internals.selectMenuListText(menu) is "garply" ==> Hover + Invalid arrow + ESC @@ -66,7 +66,7 @@ PASS picker._selectElement.value is "0" PASS menu.value is "garply" PASS internals.selectMenuListText(menu) is "garply" -PASS window.internals.pagePopupWindow is null +PASS internals.pagePopupWindow is null PASS menu.value is "garply" PASS internals.selectMenuListText(menu) is "garply" ==> Arrow key + Click @@ -75,12 +75,12 @@ PASS picker._selectElement.value is "1" PASS menu.value is "foo" PASS internals.selectMenuListText(menu) is "bar" -PASS window.internals.pagePopupWindow is null +PASS internals.pagePopupWindow is null PASS menu.value is "foo" PASS internals.selectMenuListText(menu) is "foo" ==> Enter with no selected OPTION PASS picker._selectElement.value is "" -PASS window.internals.pagePopupWindow is null +PASS internals.pagePopupWindow is null PASS menu2.value is "" PASS successfullyParsed is true
diff --git a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-mouse-operations-expected.txt b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-mouse-operations-expected.txt index ef1d6716..3ea8864 100644 --- a/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-mouse-operations-expected.txt +++ b/third_party/WebKit/LayoutTests/platform/win/fast/forms/select-popup/popup-menu-mouse-operations-expected.txt
@@ -6,12 +6,12 @@ PASS menuElement.value is "bar" PASS picker._selectElement.value is "1" PASS menuElement.value is "bar" -PASS window.internals.pagePopupWindow is not null +PASS internals.pagePopupWindow is not null PASS picker._selectElement.value is "0" PASS menuElement.value is "bar" PASS clickEventCounter is 0 PASS mouseupEventCounter is 0 -PASS window.internals.pagePopupWindow is null +PASS internals.pagePopupWindow is null PASS menuElement.value is "baz" PASS clickEventCounter is 1 PASS mouseupEventCounter is 1 @@ -20,7 +20,7 @@ PASS picker._selectElement.value is "1" PASS menu.value is "baz" PASS internals.selectMenuListText(menu) is "bar" -PASS window.internals.pagePopupWindow is null +PASS internals.pagePopupWindow is null PASS menu.value is "bar" PASS internals.selectMenuListText(menu) is "bar" PASS picker._selectElement.selectedOptions[0].label is "option20"
diff --git a/third_party/WebKit/LayoutTests/platform/win7/http/tests/security/w3c/cross-origin-objects-expected.txt b/third_party/WebKit/LayoutTests/platform/win7/http/tests/security/w3c/cross-origin-objects-expected.txt deleted file mode 100644 index 1a84457..0000000 --- a/third_party/WebKit/LayoutTests/platform/win7/http/tests/security/w3c/cross-origin-objects-expected.txt +++ /dev/null
@@ -1,22 +0,0 @@ -This is a testharness.js-based test. -FAIL Basic sanity-checking Test bug: need to pass exception to assert_throws() -FAIL Only whitelisted properties are accessible cross-origin Test bug: need to pass exception to assert_throws() -FAIL [[GetPrototypeOf]] should return null Test bug: need to pass exception to assert_throws() -FAIL [[SetPrototypeOf]] should throw Test bug: need to pass exception to assert_throws() -PASS [[IsExtensible]] should return true for cross-origin objects -FAIL [[PreventExtensions]] should throw for cross-origin objects Test bug: need to pass exception to assert_throws() -FAIL [[GetOwnProperty]] - Properties on cross-origin objects should be reported |own| Blocked a frame with origin "http://web-platform.test:8000" from accessing a cross-origin frame. -FAIL [[GetOwnProperty]] - Property descriptors for cross-origin properties should be set up correctly assert_equals: property descriptor for postMessage should have writable: false expected false but got true -FAIL [[Delete]] Should throw on cross-origin objects Test bug: need to pass exception to assert_throws() -FAIL [[DefineOwnProperty]] Should throw for cross-origin objects Test bug: need to pass exception to assert_throws() -PASS [[Enumerate]] should return an empty iterator -FAIL [[OwnPropertyKeys]] should return all properties from cross-origin objects assert_array_equals: Object.getOwnPropertyNames() gives the right answer for cross-origin Location lengths differ, expected 2 got 3 -PASS A and B jointly observe the same identity for cross-origin Window and Location -PASS Cross-origin functions get local Function.prototype -FAIL Cross-origin Window accessors get local Function.prototype Cannot read property 'name' of undefined -FAIL Same-origin observers get different functions for cross-origin objects assert_true: same-origin Window functions get their own object expected true got false -FAIL Same-origin obsevers get different accessors for cross-origin Window assert_true: different Window accessors per-incumbent script settings object expected true got false -FAIL Same-origin observers get different accessors for cross-origin Location Blocked a frame with origin "http://web-platform.test:8000" from accessing a cross-origin frame. -PASS Cross-origin object identity preserved across document.domain -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/plugins/page-scale-does-not-affect-plugin-height.html b/third_party/WebKit/LayoutTests/plugins/page-scale-does-not-affect-plugin-height.html index 5ea43ec..e5dd4d53 100644 --- a/third_party/WebKit/LayoutTests/plugins/page-scale-does-not-affect-plugin-height.html +++ b/third_party/WebKit/LayoutTests/plugins/page-scale-does-not-affect-plugin-height.html
@@ -5,7 +5,7 @@ testRunner.dumpAsText(); if (window.internals) - window.internals.setPageScaleFactor(1.5); + internals.setPageScaleFactor(1.5); document.body.innerHTML = "This test checks that page scale does not affect a plugin object's height when it depends on the window height."
diff --git a/third_party/WebKit/LayoutTests/plugins/plugin-initiate-popup-window.html b/third_party/WebKit/LayoutTests/plugins/plugin-initiate-popup-window.html index 01ceb74..d51ebec8 100644 --- a/third_party/WebKit/LayoutTests/plugins/plugin-initiate-popup-window.html +++ b/third_party/WebKit/LayoutTests/plugins/plugin-initiate-popup-window.html
@@ -13,8 +13,8 @@ if (!window.testRunner) return; // Record current window count. - window.windowCount = window.testRunner.windowCount(); - console.log("window count: " + window.testRunner.windowCount()); + window.windowCount = testRunner.windowCount(); + console.log("window count: " + testRunner.windowCount()); // Send a mouse-click event to set the input focus to the test plugin. eventSender.mouseMoveTo(0, 0); eventSender.mouseMoveTo(20, 20); @@ -26,8 +26,8 @@ function popup_by_mousedown() { window.open("about:blank", "_blank"); // Check the new opened window and logging the result. - console.log("window count: " + window.testRunner.windowCount()); - if (window.testRunner.windowCount() == (window.windowCount + 1)) { + console.log("window count: " + testRunner.windowCount()); + if (testRunner.windowCount() == (window.windowCount + 1)) { document.getElementById("mousedown_output").innerHTML = "PASSED"; window.windowCount++; } @@ -48,8 +48,8 @@ // Open a new window. window.open("about:blank", "_blank"); // Check the new opened window and logging the result. - console.log("window count: " + window.testRunner.windowCount()); - if (window.testRunner.windowCount() == (window.windowCount + 1)) + console.log("window count: " + testRunner.windowCount()); + if (testRunner.windowCount() == (window.windowCount + 1)) document.getElementById("keydown_output").innerHTML = "PASSED"; // Wait for plugin stopping and ending this test. setTimeout(end_test, 100);
diff --git a/third_party/WebKit/LayoutTests/plugins/re-request-touch-events-crash-expected.txt b/third_party/WebKit/LayoutTests/plugins/re-request-touch-events-crash-expected.txt index c4a496c9..6b0670b 100644 --- a/third_party/WebKit/LayoutTests/plugins/re-request-touch-events-crash-expected.txt +++ b/third_party/WebKit/LayoutTests/plugins/re-request-touch-events-crash-expected.txt
@@ -1,5 +1,5 @@ -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 1 -PASS window.internals.touchStartOrMoveEventHandlerCount(document) is 0 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 1 +PASS internals.touchStartOrMoveEventHandlerCount(document) is 0 PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/plugins/re-request-touch-events-crash.html b/third_party/WebKit/LayoutTests/plugins/re-request-touch-events-crash.html index b04d7d02..685b44c 100644 --- a/third_party/WebKit/LayoutTests/plugins/re-request-touch-events-crash.html +++ b/third_party/WebKit/LayoutTests/plugins/re-request-touch-events-crash.html
@@ -15,9 +15,9 @@ // Force the plugin to initialize touch_plugin.offsetTop; - shouldBe("window.internals.touchStartOrMoveEventHandlerCount(document)", "1") + shouldBe("internals.touchStartOrMoveEventHandlerCount(document)", "1") touch_plugin.parentNode.removeChild(touch_plugin); - shouldBe("window.internals.touchStartOrMoveEventHandlerCount(document)", "0") + shouldBe("internals.touchStartOrMoveEventHandlerCount(document)", "0") } </script>
diff --git a/third_party/WebKit/LayoutTests/plugins/request-low-latency-touch.html b/third_party/WebKit/LayoutTests/plugins/request-low-latency-touch.html index c9874bb..fc8007b 100644 --- a/third_party/WebKit/LayoutTests/plugins/request-low-latency-touch.html +++ b/third_party/WebKit/LayoutTests/plugins/request-low-latency-touch.html
@@ -10,7 +10,7 @@ // ensure layout is valid. touch_plugin.offsetLeft; - assert_equals(window.internals.touchStartOrMoveEventHandlerCount(document), 1, "One touch event handler registered."); + assert_equals(internals.touchStartOrMoveEventHandlerCount(document), 1, "One touch event handler registered."); }, "raw handler added"); </script>
diff --git a/third_party/WebKit/LayoutTests/plugins/webview-plugin-border-radius.html b/third_party/WebKit/LayoutTests/plugins/webview-plugin-border-radius.html index e90acd0..702dcc55 100644 --- a/third_party/WebKit/LayoutTests/plugins/webview-plugin-border-radius.html +++ b/third_party/WebKit/LayoutTests/plugins/webview-plugin-border-radius.html
@@ -11,13 +11,13 @@ <script> onload = function() { if (window.testRunner) { - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); // Need to paint two frames in order to allow the plugin to properly load. // TODO(chrishtr): find out why and fix. requestAnimationFrame(function() { requestAnimationFrame(function() { requestAnimationFrame(function() { - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); }); });
diff --git a/third_party/WebKit/LayoutTests/plugins/webview-plugin-lifecycle.html b/third_party/WebKit/LayoutTests/plugins/webview-plugin-lifecycle.html index 4175edc..89e5019 100644 --- a/third_party/WebKit/LayoutTests/plugins/webview-plugin-lifecycle.html +++ b/third_party/WebKit/LayoutTests/plugins/webview-plugin-lifecycle.html
@@ -10,13 +10,13 @@ <script> onload = function() { if (window.testRunner) { - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); // Need to paint two frames in order to allow the plugin to properly load. // TODO(chrishtr): find out why and fix. requestAnimationFrame(function() { requestAnimationFrame(function() { requestAnimationFrame(function() { - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); }); });
diff --git a/third_party/WebKit/LayoutTests/plugins/webview-plugin-nested-iframe-scroll.html b/third_party/WebKit/LayoutTests/plugins/webview-plugin-nested-iframe-scroll.html index e87127e2..f4a0a50 100644 --- a/third_party/WebKit/LayoutTests/plugins/webview-plugin-nested-iframe-scroll.html +++ b/third_party/WebKit/LayoutTests/plugins/webview-plugin-nested-iframe-scroll.html
@@ -3,13 +3,13 @@ <script> onload = function() { if (window.testRunner) { - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); // Need to paint two frames in order to allow the plugin to properly load. // TODO(chrishtr): find out why and fix. requestAnimationFrame(function() { requestAnimationFrame(function() { requestAnimationFrame(function() { - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); }); });
diff --git a/third_party/WebKit/LayoutTests/plugins/webview-plugin-scroll.html b/third_party/WebKit/LayoutTests/plugins/webview-plugin-scroll.html index aaeb146..2e8f0d5 100644 --- a/third_party/WebKit/LayoutTests/plugins/webview-plugin-scroll.html +++ b/third_party/WebKit/LayoutTests/plugins/webview-plugin-scroll.html
@@ -19,13 +19,13 @@ onload = function() { window.scrollBy(0, 100); if (window.testRunner) { - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); // Need to paint two frames in order to allow the plugin to properly load. // TODO(chrishtr): find out why and fix. requestAnimationFrame(function() { requestAnimationFrame(function() { requestAnimationFrame(function() { - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); }); });
diff --git a/third_party/WebKit/LayoutTests/plugins/webview-plugin-type-change.html b/third_party/WebKit/LayoutTests/plugins/webview-plugin-type-change.html index 34b05da..8db662c 100644 --- a/third_party/WebKit/LayoutTests/plugins/webview-plugin-type-change.html +++ b/third_party/WebKit/LayoutTests/plugins/webview-plugin-type-change.html
@@ -11,12 +11,12 @@ document.querySelector('embed').addEventListener('message', function(message) { if (message.data == 'loaded') if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); }); onload = function() { document.getElementById('plugin').setAttribute('type', 'application/x-blink-test-plugin'); if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); } </script>
diff --git a/third_party/WebKit/LayoutTests/pointer-lock/mouse-event-delivery.html b/third_party/WebKit/LayoutTests/pointer-lock/mouse-event-delivery.html index f08b805..5c8f71f1 100644 --- a/third_party/WebKit/LayoutTests/pointer-lock/mouse-event-delivery.html +++ b/third_party/WebKit/LayoutTests/pointer-lock/mouse-event-delivery.html
@@ -47,9 +47,9 @@ targetdiv2.onmousedown = eventNotExpected; document.body.onmousedown = eventExpected; if (window.eventSender) { - window.eventSender.leapForward(1000); - window.eventSender.mouseDown(); - window.eventSender.mouseUp(); + eventSender.leapForward(1000); + eventSender.mouseDown(); + eventSender.mouseUp(); } doNextStepWithUserGesture(); }, @@ -64,9 +64,9 @@ targetdiv2.onmousedown = eventExpected; document.body.onmousedown = eventExpected; if (window.eventSender) { - window.eventSender.leapForward(1000); - window.eventSender.mouseDown(); - window.eventSender.mouseUp(); + eventSender.leapForward(1000); + eventSender.mouseDown(); + eventSender.mouseUp(); } doNextStepWithUserGesture(); }, @@ -80,18 +80,18 @@ targetdiv2.ondblclick = eventExpected; debug(" Creating a click and dblclick."); if (window.eventSender) { - window.eventSender.leapForward(1000); - window.eventSender.mouseDown(); - window.eventSender.mouseUp(); - window.eventSender.mouseDown(); - window.eventSender.mouseUp(); + eventSender.leapForward(1000); + eventSender.mouseDown(); + eventSender.mouseUp(); + eventSender.mouseDown(); + eventSender.mouseUp(); } debug(" Ensuring no false dblclicks if we continue."); if (window.eventSender) { - window.eventSender.mouseDown(); - window.eventSender.mouseUp(); - window.eventSender.mouseDown(); - window.eventSender.mouseUp(); + eventSender.mouseDown(); + eventSender.mouseUp(); + eventSender.mouseDown(); + eventSender.mouseUp(); } doNextStepWithUserGesture(); },
diff --git a/third_party/WebKit/LayoutTests/printing/single-line-must-not-be-split-into-two-pages.html b/third_party/WebKit/LayoutTests/printing/single-line-must-not-be-split-into-two-pages.html index bb78f9d..4a072dea 100644 --- a/third_party/WebKit/LayoutTests/printing/single-line-must-not-be-split-into-two-pages.html +++ b/third_party/WebKit/LayoutTests/printing/single-line-must-not-be-split-into-two-pages.html
@@ -31,7 +31,7 @@ } document.getElementById("renderingArea1").innerHTML = str; if (window.internals) - document.getElementById("nonOverflowedLines").innerText = window.internals.elementLayoutTreeAsText(document.getElementById("renderingArea1")); + document.getElementById("nonOverflowedLines").innerText = internals.elementLayoutTreeAsText(document.getElementById("renderingArea1")); str = ""; for (var i = 0; i < 400; i++) { @@ -39,7 +39,7 @@ } document.getElementById("renderingArea2").innerHTML = str; if (window.internals) - document.getElementById("overflowedLines").innerText = window.internals.elementLayoutTreeAsText(document.getElementById("renderingArea2")); + document.getElementById("overflowedLines").innerText = internals.elementLayoutTreeAsText(document.getElementById("renderingArea2")); // To test manually, comment out the following two lines, // print this page, and check if no lines are split across two pages.
diff --git a/third_party/WebKit/LayoutTests/resources/dump-as-markup.js b/third_party/WebKit/LayoutTests/resources/dump-as-markup.js index e068429..c21f1a81 100644 --- a/third_party/WebKit/LayoutTests/resources/dump-as-markup.js +++ b/third_party/WebKit/LayoutTests/resources/dump-as-markup.js
@@ -205,7 +205,7 @@ } if (!Markup._useHTML5libOutputFormat && window.internals) { - var pseudoId = window.internals.shadowPseudoId(node); + var pseudoId = internals.shadowPseudoId(node); if (pseudoId) str += Markup._indent(depth + 1) + 'shadow:pseudoId="' + pseudoId + '"'; } @@ -246,7 +246,7 @@ Markup._getShadowHostIfPossible = function (node, depth) { if (!Markup._useHTML5libOutputFormat && node.nodeType == Node.ELEMENT_NODE && window.internals) { - var root = window.internals.shadowRoot(node); + var root = internals.shadowRoot(node); if (root) { return Markup._get(root, depth + 1); }
diff --git a/third_party/WebKit/LayoutTests/resources/js-test.js b/third_party/WebKit/LayoutTests/resources/js-test.js index d5795d49..c3e77a3 100644 --- a/third_party/WebKit/LayoutTests/resources/js-test.js +++ b/third_party/WebKit/LayoutTests/resources/js-test.js
@@ -748,11 +748,11 @@ // that something is dead need to use this asynchronous collectGarbage // function. function asyncGC(callback) { - var documentsBefore = window.internals.numberOfLiveDocuments(); + var documentsBefore = internals.numberOfLiveDocuments(); GCController.collectAll(); // FIXME: we need a better way of waiting for chromium events to happen setTimeout(function () { - var documentsAfter = window.internals.numberOfLiveDocuments(); + var documentsAfter = internals.numberOfLiveDocuments(); if (documentsAfter < documentsBefore) asyncGC(callback); else
diff --git a/third_party/WebKit/LayoutTests/rootscroller/gesture-scroll-document-not-root-scroller.html b/third_party/WebKit/LayoutTests/rootscroller/gesture-scroll-document-not-root-scroller.html index 59adca455..527547a 100644 --- a/third_party/WebKit/LayoutTests/rootscroller/gesture-scroll-document-not-root-scroller.html +++ b/third_party/WebKit/LayoutTests/rootscroller/gesture-scroll-document-not-root-scroller.html
@@ -92,7 +92,7 @@ .then(waitForScroll) .then(() => { if (window.internals) { - assert_equals(window.internals.effectiveRootScroller(document), + assert_equals(internals.effectiveRootScroller(document), rootscroller, "Failed to set root scroller"); }
diff --git a/third_party/WebKit/LayoutTests/rootscroller/keyboard-scroll-document-not-root-scroller.html b/third_party/WebKit/LayoutTests/rootscroller/keyboard-scroll-document-not-root-scroller.html index 6ce0683..19ec8b4 100644 --- a/third_party/WebKit/LayoutTests/rootscroller/keyboard-scroll-document-not-root-scroller.html +++ b/third_party/WebKit/LayoutTests/rootscroller/keyboard-scroll-document-not-root-scroller.html
@@ -3,7 +3,7 @@ <script src="../resources/testharnessreport.js"></script> <script> if (window.internals) - window.internals.settings.setScrollAnimatorEnabled(false); + internals.settings.setScrollAnimatorEnabled(false); </script> <style> ::-webkit-scrollbar { @@ -77,7 +77,7 @@ // events. return click(100, 100).then( () => { if (window.internals) { - assert_equals(window.internals.effectiveRootScroller(document), + assert_equals(internals.effectiveRootScroller(document), rootscroller, "Failed to set root scroller"); }
diff --git a/third_party/WebKit/LayoutTests/rootscroller/rootscroller-during-fullscreen.html b/third_party/WebKit/LayoutTests/rootscroller/rootscroller-during-fullscreen.html index c7c87fc..a0df859 100644 --- a/third_party/WebKit/LayoutTests/rootscroller/rootscroller-during-fullscreen.html +++ b/third_party/WebKit/LayoutTests/rootscroller/rootscroller-during-fullscreen.html
@@ -40,12 +40,12 @@ await nFrames(2); test.step(() => { assert_equals( - window.internals.effectiveRootScroller(document), + internals.effectiveRootScroller(document), document, "Entering fullscreen should reset root document's effective " + "root scroller"); assert_equals( - window.internals.effectiveRootScroller(childDocument), + internals.effectiveRootScroller(childDocument), childDocument, "Entering fullscreen should reset iframe's effective root " + "scroller"); @@ -55,12 +55,12 @@ await nFrames(2); test.step(() => { assert_equals( - window.internals.effectiveRootScroller(document), + internals.effectiveRootScroller(document), iframe, "Exiting fullscreen should set the iframe back as the root " + "document's effective root scroller."); assert_equals( - window.internals.effectiveRootScroller(childDocument), + internals.effectiveRootScroller(childDocument), scroller, "Exiting fullscreen should set the scroller div back as the " + "iframe's effective root scroller."); @@ -90,12 +90,12 @@ test.step(() => { assert_equals( - window.internals.effectiveRootScroller(document), + internals.effectiveRootScroller(document), iframe, "Root document should initially have iframe as effective root " + "scroller"); assert_equals( - window.internals.effectiveRootScroller(childDocument), + internals.effectiveRootScroller(childDocument), scroller, "Iframe should initially have scroller div as effective root " + "scroller");
diff --git a/third_party/WebKit/LayoutTests/rootscroller/set-rootscroller-before-load.html b/third_party/WebKit/LayoutTests/rootscroller/set-rootscroller-before-load.html index b23bd029..6f9aabf 100644 --- a/third_party/WebKit/LayoutTests/rootscroller/set-rootscroller-before-load.html +++ b/third_party/WebKit/LayoutTests/rootscroller/set-rootscroller-before-load.html
@@ -9,7 +9,7 @@ // NOTE: It is important that this test be run with the Android viewport // flags turned on. if (window.internals) { - window.internals.setBrowserControlsState(100, 0, false); + internals.setBrowserControlsState(100, 0, false); testRunner.setShouldGeneratePixelResults(true); }
diff --git a/third_party/WebKit/LayoutTests/screen_orientation/orientation-reading.html b/third_party/WebKit/LayoutTests/screen_orientation/orientation-reading.html index 79bffed..ad7e461a 100644 --- a/third_party/WebKit/LayoutTests/screen_orientation/orientation-reading.html +++ b/third_party/WebKit/LayoutTests/screen_orientation/orientation-reading.html
@@ -36,7 +36,7 @@ var orientationAngle = screen.orientation.angle; if (window.testRunner) - window.testRunner.setMockScreenOrientation('landscape-primary'); + testRunner.setMockScreenOrientation('landscape-primary'); assert_equals(screen.orientation, orientation); assert_equals(screen.orientation.type, orientation.type);
diff --git a/third_party/WebKit/LayoutTests/screen_orientation/orientationchange-event-subframe.html b/third_party/WebKit/LayoutTests/screen_orientation/orientationchange-event-subframe.html index 0e19bbb..265726ff8 100644 --- a/third_party/WebKit/LayoutTests/screen_orientation/orientationchange-event-subframe.html +++ b/third_party/WebKit/LayoutTests/screen_orientation/orientationchange-event-subframe.html
@@ -25,7 +25,7 @@ } function changeOrientation() { - window.testRunner.setMockScreenOrientation(orientations[getNextIndex()]); + testRunner.setMockScreenOrientation(orientations[getNextIndex()]); currentIndex = getNextIndex(); }
diff --git a/third_party/WebKit/LayoutTests/screen_orientation/orientationchange-event.html b/third_party/WebKit/LayoutTests/screen_orientation/orientationchange-event.html index 2d1d728..f846177 100644 --- a/third_party/WebKit/LayoutTests/screen_orientation/orientationchange-event.html +++ b/third_party/WebKit/LayoutTests/screen_orientation/orientationchange-event.html
@@ -40,7 +40,7 @@ }); function runNoChangeTest() { - window.testRunner.setMockScreenOrientation(orientations[currentIndex]); + testRunner.setMockScreenOrientation(orientations[currentIndex]); noChangeTest.step(function() { assert_equals(screen.orientation.type, orientations[currentIndex]); @@ -53,7 +53,7 @@ var i = 0; function runChangeTest() { - window.testRunner.setMockScreenOrientation(orientations[getNextIndex()]); + testRunner.setMockScreenOrientation(orientations[getNextIndex()]); currentIndex = getNextIndex(); orientationChangeEventContinuation = function() {
diff --git a/third_party/WebKit/LayoutTests/screen_orientation/page-visibility.html b/third_party/WebKit/LayoutTests/screen_orientation/page-visibility.html index 73c19e4c..964e30d 100644 --- a/third_party/WebKit/LayoutTests/screen_orientation/page-visibility.html +++ b/third_party/WebKit/LayoutTests/screen_orientation/page-visibility.html
@@ -34,7 +34,7 @@ }); if (window.testRunner) - window.testRunner.setMockScreenOrientation("landscape-primary"); + testRunner.setMockScreenOrientation("landscape-primary"); orientationChangeEventContinuation = function() { eventVisibleTest.step(function() { @@ -56,7 +56,7 @@ }); if (window.testRunner) - window.testRunner.setMockScreenOrientation("portrait-primary"); + testRunner.setMockScreenOrientation("portrait-primary"); noEventHiddenTest.step(function() { assert_equals(orientationChangeEventListenerCalls, 1);
diff --git a/third_party/WebKit/LayoutTests/screen_orientation/screenorientation-detached-notify-no-crash.html b/third_party/WebKit/LayoutTests/screen_orientation/screenorientation-detached-notify-no-crash.html index 087f4898..37a6df8 100644 --- a/third_party/WebKit/LayoutTests/screen_orientation/screenorientation-detached-notify-no-crash.html +++ b/third_party/WebKit/LayoutTests/screen_orientation/screenorientation-detached-notify-no-crash.html
@@ -10,7 +10,7 @@ function changeOrientationAndDetach() { // Dispatch an orientationchange event; this is handled asynchronously, // queueing a task/timer to do the actual dispatch. - window.testRunner.setMockScreenOrientation('portrait-secondary'); + testRunner.setMockScreenOrientation('portrait-secondary'); // Detach the iframe while the event dispatch is in-flight. If // the screen orientation controller is finalized during the
diff --git a/third_party/WebKit/LayoutTests/screen_orientation/window-orientationchange-event-subframe.html b/third_party/WebKit/LayoutTests/screen_orientation/window-orientationchange-event-subframe.html index 3be5a28..5f280a5 100644 --- a/third_party/WebKit/LayoutTests/screen_orientation/window-orientationchange-event-subframe.html +++ b/third_party/WebKit/LayoutTests/screen_orientation/window-orientationchange-event-subframe.html
@@ -34,7 +34,7 @@ } function changeOrientation() { - window.testRunner.setMockScreenOrientation(orientations[getNextIndex()]); + testRunner.setMockScreenOrientation(orientations[getNextIndex()]); currentIndex = getNextIndex(); ++numOrientationChanges; }
diff --git a/third_party/WebKit/LayoutTests/screen_orientation/window-orientationchange-event.html b/third_party/WebKit/LayoutTests/screen_orientation/window-orientationchange-event.html index b8ac713..739b360 100644 --- a/third_party/WebKit/LayoutTests/screen_orientation/window-orientationchange-event.html +++ b/third_party/WebKit/LayoutTests/screen_orientation/window-orientationchange-event.html
@@ -42,7 +42,7 @@ }); function runNoChangeTest() { - window.testRunner.setMockScreenOrientation(orientations[currentIndex]); + testRunner.setMockScreenOrientation(orientations[currentIndex]); setTimeout(function() { noChangeTest.step(function() { @@ -57,7 +57,7 @@ var i = 0; function runChangeTest() { - window.testRunner.setMockScreenOrientation(orientations[getNextIndex()]); + testRunner.setMockScreenOrientation(orientations[getNextIndex()]); currentIndex = getNextIndex(); setTimeout(function() {
diff --git a/third_party/WebKit/LayoutTests/scrollbars/auto-scrollbar-fades-out.html b/third_party/WebKit/LayoutTests/scrollbars/auto-scrollbar-fades-out.html index e01bb80..68906bf 100644 --- a/third_party/WebKit/LayoutTests/scrollbars/auto-scrollbar-fades-out.html +++ b/third_party/WebKit/LayoutTests/scrollbars/auto-scrollbar-fades-out.html
@@ -1,14 +1,14 @@ <!DOCTYPE html> <script> if (window.internals) { - window.internals.runtimeFlags.overlayScrollbarsEnabled = true; - window.internals.settings.setMockScrollbarsEnabled(true); + internals.runtimeFlags.overlayScrollbarsEnabled = true; + internals.settings.setMockScrollbarsEnabled(true); window.onload = function() { var div = document.getElementById('iframe') .contentDocument .getElementById('target'); - window.internals.setScrollbarVisibilityInScrollableArea(div, false); + internals.setScrollbarVisibilityInScrollableArea(div, false); } } </script>
diff --git a/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-adjust-on-inactive-pseudo.html b/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-adjust-on-inactive-pseudo.html index 9e740ce..cad1c77 100644 --- a/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-adjust-on-inactive-pseudo.html +++ b/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-adjust-on-inactive-pseudo.html
@@ -46,5 +46,5 @@ document.body.offsetTop; // setWindowIsKey shall set the focus of the window. if (window.testRunner) - window.testRunner.setWindowIsKey(false); + testRunner.setWindowIsKey(false); </script> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-inactive-only-on-windowinactive-selector.html b/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-inactive-only-on-windowinactive-selector.html index fea77338..491fd4e 100644 --- a/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-inactive-only-on-windowinactive-selector.html +++ b/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-inactive-only-on-windowinactive-selector.html
@@ -21,6 +21,6 @@ window.onload = function() { // setWindowIsKey shall set the focus of the window. if (window.testRunner) - window.testRunner.setWindowIsKey(false); + testRunner.setWindowIsKey(false); } </script> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-thumb-focus-iframe-inactive-pseudo.html b/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-thumb-focus-iframe-inactive-pseudo.html index 31cf063..dc8e6a42 100644 --- a/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-thumb-focus-iframe-inactive-pseudo.html +++ b/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-thumb-focus-iframe-inactive-pseudo.html
@@ -42,6 +42,6 @@ ifra.focus(); // setWindowIsKey shall set the focus of the window. if (window.testRunner) - window.testRunner.setWindowIsKey(false); + testRunner.setWindowIsKey(false); } </script> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-thumb-inactive-pseudo.html b/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-thumb-inactive-pseudo.html index 91044175..bb6bc31 100644 --- a/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-thumb-inactive-pseudo.html +++ b/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-thumb-inactive-pseudo.html
@@ -40,6 +40,6 @@ window.onload = function() { // setWindowIsKey shall set the focus of the window. if (window.testRunner) - window.testRunner.setWindowIsKey(false); + testRunner.setWindowIsKey(false); } </script> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-thumb-width-changed-on-inactive-pseudo.html b/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-thumb-width-changed-on-inactive-pseudo.html index a856bf7..e90d65bd 100644 --- a/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-thumb-width-changed-on-inactive-pseudo.html +++ b/third_party/WebKit/LayoutTests/scrollbars/custom-scrollbar-thumb-width-changed-on-inactive-pseudo.html
@@ -119,6 +119,6 @@ window.onload = function() { // setWindowIsKey shall set the focus of the window. if (window.testRunner) - window.testRunner.setWindowIsKey(false); + testRunner.setWindowIsKey(false); } </script> \ No newline at end of file
diff --git a/third_party/WebKit/LayoutTests/scrollbars/scrollbar-click-does-not-blur-content.html b/third_party/WebKit/LayoutTests/scrollbars/scrollbar-click-does-not-blur-content.html index 67ddf5f..58a940e 100644 --- a/third_party/WebKit/LayoutTests/scrollbars/scrollbar-click-does-not-blur-content.html +++ b/third_party/WebKit/LayoutTests/scrollbars/scrollbar-click-does-not-blur-content.html
@@ -25,7 +25,7 @@ document.getElementById('console').innerHTML = "FAIL"; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } window.onload = runTest;
diff --git a/third_party/WebKit/LayoutTests/scrollbars/scrollbar-iframe-click-does-not-blur-content.html b/third_party/WebKit/LayoutTests/scrollbars/scrollbar-iframe-click-does-not-blur-content.html index 7d9a9a2..8533c97 100644 --- a/third_party/WebKit/LayoutTests/scrollbars/scrollbar-iframe-click-does-not-blur-content.html +++ b/third_party/WebKit/LayoutTests/scrollbars/scrollbar-iframe-click-does-not-blur-content.html
@@ -35,7 +35,7 @@ document.getElementById('console').innerHTML = "FAIL"; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script>
diff --git a/third_party/WebKit/LayoutTests/scrollbars/scrollbar-initial-position.html b/third_party/WebKit/LayoutTests/scrollbars/scrollbar-initial-position.html index 5b5a96e..6daf63ce 100644 --- a/third_party/WebKit/LayoutTests/scrollbars/scrollbar-initial-position.html +++ b/third_party/WebKit/LayoutTests/scrollbars/scrollbar-initial-position.html
@@ -59,7 +59,7 @@ eventSender.mouseMoveTo(50, 50); } if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); </script> </body> </html>
diff --git a/third_party/WebKit/LayoutTests/scrollbars/scrollbar-middleclick-nopaste.html b/third_party/WebKit/LayoutTests/scrollbars/scrollbar-middleclick-nopaste.html index 7d9b7a1..877e07ede 100644 --- a/third_party/WebKit/LayoutTests/scrollbars/scrollbar-middleclick-nopaste.html +++ b/third_party/WebKit/LayoutTests/scrollbars/scrollbar-middleclick-nopaste.html
@@ -34,7 +34,7 @@ document.getElementById('console').innerHTML = "FAIL"; } if (window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } } </script>
diff --git a/third_party/WebKit/LayoutTests/scrollbars/scrollbar-miss-mousemove-disabled.html b/third_party/WebKit/LayoutTests/scrollbars/scrollbar-miss-mousemove-disabled.html index 8c79e465..f1763d7 100644 --- a/third_party/WebKit/LayoutTests/scrollbars/scrollbar-miss-mousemove-disabled.html +++ b/third_party/WebKit/LayoutTests/scrollbars/scrollbar-miss-mousemove-disabled.html
@@ -139,7 +139,7 @@ { document.getElementById('console').innerHTML = "Text is \"" + document.form1.text1.value + "\""; - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script> </body>
diff --git a/third_party/WebKit/LayoutTests/scrollbars/scrollbar-miss-mousemove.html b/third_party/WebKit/LayoutTests/scrollbars/scrollbar-miss-mousemove.html index 9f034ed..9fbaed6 100644 --- a/third_party/WebKit/LayoutTests/scrollbars/scrollbar-miss-mousemove.html +++ b/third_party/WebKit/LayoutTests/scrollbars/scrollbar-miss-mousemove.html
@@ -30,7 +30,7 @@ { document.getElementById('console').innerHTML = "Scroll offset is " + document.getElementById('overflow').scrollTop; - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script> </body>
diff --git a/third_party/WebKit/LayoutTests/scrollbars/scrollevent-iframe-no-scrolling-wheel.html b/third_party/WebKit/LayoutTests/scrollbars/scrollevent-iframe-no-scrolling-wheel.html index 7cea9160..07f768a 100644 --- a/third_party/WebKit/LayoutTests/scrollbars/scrollevent-iframe-no-scrolling-wheel.html +++ b/third_party/WebKit/LayoutTests/scrollbars/scrollevent-iframe-no-scrolling-wheel.html
@@ -9,13 +9,13 @@ { document.getElementById('console').innerHTML = "Not scrolled by WheelEvent: SUCCESS"; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } function scrollEventFired() { document.getElementById('console').innerHTML = "Scrolled by WheelEvent: FAILED (Should not be scrolled)."; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } function runTest() {
diff --git a/third_party/WebKit/LayoutTests/scrollbars/scrollevent-iframe-no-scrolling.html b/third_party/WebKit/LayoutTests/scrollbars/scrollevent-iframe-no-scrolling.html index 15776345..4dbcd0d 100644 --- a/third_party/WebKit/LayoutTests/scrollbars/scrollevent-iframe-no-scrolling.html +++ b/third_party/WebKit/LayoutTests/scrollbars/scrollevent-iframe-no-scrolling.html
@@ -9,13 +9,13 @@ { document.getElementById('console').innerHTML = "Scrolled by JavaScript scrollTo(): FAILED"; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } function scrollEventFired() { document.getElementById('console').innerHTML = "Scrolled by JavaScript scrollTo(): PASS"; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } function runTest() {
diff --git a/third_party/WebKit/LayoutTests/scrollingcoordinator/non-fast-scrollable-region-scaled-iframe.html b/third_party/WebKit/LayoutTests/scrollingcoordinator/non-fast-scrollable-region-scaled-iframe.html index 6950de1..184dd56 100644 --- a/third_party/WebKit/LayoutTests/scrollingcoordinator/non-fast-scrollable-region-scaled-iframe.html +++ b/third_party/WebKit/LayoutTests/scrollingcoordinator/non-fast-scrollable-region-scaled-iframe.html
@@ -28,12 +28,12 @@ onload = function() { if (window.internals) - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); else - testFailed('This test requires window.internals.setPageScaleFactor to be available.'); + testFailed('This test requires internals.setPageScaleFactor to be available.'); runAfterLayoutAndPaint(function(){ - nonFastScrollableRects = window.internals.nonFastScrollableRects(document); + nonFastScrollableRects = internals.nonFastScrollableRects(document); shouldBe('nonFastScrollableRects.length', '1'); shouldBeEqualToString('rectToString(nonFastScrollableRects[0])', '[110, 110, 120, 120]');
diff --git a/third_party/WebKit/LayoutTests/scrollingcoordinator/non-fast-scrollable-region-transformed-iframe.html b/third_party/WebKit/LayoutTests/scrollingcoordinator/non-fast-scrollable-region-transformed-iframe.html index 1c03740..b7de1a46 100644 --- a/third_party/WebKit/LayoutTests/scrollingcoordinator/non-fast-scrollable-region-transformed-iframe.html +++ b/third_party/WebKit/LayoutTests/scrollingcoordinator/non-fast-scrollable-region-transformed-iframe.html
@@ -45,7 +45,7 @@ onload = function() { runAfterLayoutAndPaint(function(){ - nonFastScrollableRects = window.internals.nonFastScrollableRects(document); + nonFastScrollableRects = internals.nonFastScrollableRects(document); shouldBe('nonFastScrollableRects.length', '1'); shouldBeEqualToString('rectToString(nonFastScrollableRects[0])', '[146, 146, 240, 240]');
diff --git a/third_party/WebKit/LayoutTests/scrollingcoordinator/non-fast-scrollable-visibility-change-expected.txt b/third_party/WebKit/LayoutTests/scrollingcoordinator/non-fast-scrollable-visibility-change-expected.txt index b2680ed8d..c6a7206 100644 --- a/third_party/WebKit/LayoutTests/scrollingcoordinator/non-fast-scrollable-visibility-change-expected.txt +++ b/third_party/WebKit/LayoutTests/scrollingcoordinator/non-fast-scrollable-visibility-change-expected.txt
@@ -11,22 +11,22 @@ PASS document.getElementById("div").style.display is "block" PASS nonFastScrollableRects.length is 1 PASS rectToString(nonFastScrollableRects[0]) is "[0, 350, 200, 200]" -PASS window.internals.needsLayoutCount() is 0 +PASS internals.needsLayoutCount() is 0 PASS nonFastScrollableRects.length is 2 PASS rectToString(nonFastScrollableRects[0]) is "[0, 50, 200, 200]" PASS rectToString(nonFastScrollableRects[1]) is "[0, 350, 200, 200]" -PASS window.internals.needsLayoutCount() is 0 +PASS internals.needsLayoutCount() is 0 PASS nonFastScrollableRects.length is 1 PASS rectToString(nonFastScrollableRects[0]) is "[0, 50, 200, 200]" running tests for non-fast scrollable iframe PASS document.getElementById("iframe").style.display is "block" PASS nonFastScrollableRects.length is 1 PASS rectToString(nonFastScrollableRects[0]) is "[0, 350, 222, 222]" -PASS window.internals.needsLayoutCount() is 0 +PASS internals.needsLayoutCount() is 0 PASS nonFastScrollableRects.length is 2 PASS rectToString(nonFastScrollableRects[0]) is "[0, 50, 222, 222]" PASS rectToString(nonFastScrollableRects[1]) is "[0, 350, 222, 222]" -PASS window.internals.needsLayoutCount() is 0 +PASS internals.needsLayoutCount() is 0 PASS nonFastScrollableRects.length is 1 PASS rectToString(nonFastScrollableRects[0]) is "[0, 50, 222, 222]" PASS successfullyParsed is true
diff --git a/third_party/WebKit/LayoutTests/scrollingcoordinator/non-fast-scrollable-visibility-change.html b/third_party/WebKit/LayoutTests/scrollingcoordinator/non-fast-scrollable-visibility-change.html index a4b1c9fb..1544483d 100644 --- a/third_party/WebKit/LayoutTests/scrollingcoordinator/non-fast-scrollable-visibility-change.html +++ b/third_party/WebKit/LayoutTests/scrollingcoordinator/non-fast-scrollable-visibility-change.html
@@ -90,7 +90,7 @@ // Execute tests for given non-fast scrollable type. function runTest(type, elemToShowExpected, elemToHideExpected) { // Hide all sections that are not relevant to this test to ensure - // |window.internals.nonFastScrollableRects| returns only the relevant non- + // |internals.nonFastScrollableRects| returns only the relevant non- // fast scrollable regions. showSectionIf(function(section){return section.id == type;}); @@ -111,7 +111,7 @@ // Change visibility (hidden -> visible), which should not cause any layout, // and verify that non-fast scrollable areas are correctly updated. elemToShow.style.visibility = 'visible'; - shouldBe('window.internals.needsLayoutCount()', '0'); + shouldBe('internals.needsLayoutCount()', '0'); runAfterLayoutAndPaint(function() { nonFastScrollableRects = internals.nonFastScrollableRects(document); @@ -121,7 +121,7 @@ // Change visibility (visible -> hidden) elemToHide.style.visibility = 'hidden'; - shouldBe('window.internals.needsLayoutCount()', '0'); + shouldBe('internals.needsLayoutCount()', '0'); runAfterLayoutAndPaint(function() { nonFastScrollableRects = internals.nonFastScrollableRects(document);
diff --git a/third_party/WebKit/LayoutTests/scrollingcoordinator/plugin-with-wheel-handler.html b/third_party/WebKit/LayoutTests/scrollingcoordinator/plugin-with-wheel-handler.html index 3f1208e..b6d74933 100644 --- a/third_party/WebKit/LayoutTests/scrollingcoordinator/plugin-with-wheel-handler.html +++ b/third_party/WebKit/LayoutTests/scrollingcoordinator/plugin-with-wheel-handler.html
@@ -12,7 +12,7 @@ if (window.internals) { shouldBe('internals.nonFastScrollableRects(document).length', '1'); } else { - debug('This test requires access to window.internals.nonFastScrollableRects.'); + debug('This test requires access to internals.nonFastScrollableRects.'); } finishJSTest();
diff --git a/third_party/WebKit/LayoutTests/scrollingcoordinator/resources/non-fast-scrollable-region-testing.js b/third_party/WebKit/LayoutTests/scrollingcoordinator/resources/non-fast-scrollable-region-testing.js index 72a0d912..9ed252a 100644 --- a/third_party/WebKit/LayoutTests/scrollingcoordinator/resources/non-fast-scrollable-region-testing.js +++ b/third_party/WebKit/LayoutTests/scrollingcoordinator/resources/non-fast-scrollable-region-testing.js
@@ -2,7 +2,7 @@ // so if we don't set it immediately, they won't repaint/relayout // correctly! http://crbug.com/365509 if (window.internals) - window.internals.settings.setMockScrollbarsEnabled(true); + internals.settings.setMockScrollbarsEnabled(true); // Draws green overlays for non-fast scrollable regions. This provides a visual // feedback that is useful when running the test interactively. @@ -13,7 +13,7 @@ overlay.style.top = 0; overlay.style.opacity = 0.5; - var rects = window.internals.nonFastScrollableRects(document); + var rects = internals.nonFastScrollableRects(document); for (var i = 0; i < rects.length; i++) { var rect = rects[i]; var patch = document.createElement("div");
diff --git a/third_party/WebKit/LayoutTests/shadow-dom/event-composed-ua.html b/third_party/WebKit/LayoutTests/shadow-dom/event-composed-ua.html index 3bb6520..5347415 100644 --- a/third_party/WebKit/LayoutTests/shadow-dom/event-composed-ua.html +++ b/third_party/WebKit/LayoutTests/shadow-dom/event-composed-ua.html
@@ -12,17 +12,17 @@ const input2 = document.querySelector('#input2'); function click(x, y) { - window.eventSender.mouseMoveTo(x, y); - window.eventSender.mouseDown(); - window.eventSender.mouseUp(); + eventSender.mouseMoveTo(x, y); + eventSender.mouseDown(); + eventSender.mouseUp(); } function doubleClick(x, y) { - window.eventSender.mouseMoveTo(x, y); - window.eventSender.mouseDown(); - window.eventSender.mouseUp(); - window.eventSender.mouseDown(); - window.eventSender.mouseUp(); + eventSender.mouseMoveTo(x, y); + eventSender.mouseDown(); + eventSender.mouseUp(); + eventSender.mouseDown(); + eventSender.mouseUp(); } const composedEventTypes = [ @@ -60,14 +60,14 @@ // For keypress input.focus(); -window.eventSender.keyDown(' '); +eventSender.keyDown(' '); // For wheel -window.eventSender.mouseMoveTo(input.offsetLeft + 5, input.offsetTop + 5); -window.eventSender.mouseScrollBy(-1, -2); +eventSender.mouseMoveTo(input.offsetLeft + 5, input.offsetTop + 5); +eventSender.mouseScrollBy(-1, -2); // For composition input.focus(); -window.textInputController.setMarkedText('1', 0, 1); -window.textInputController.insertText('1'); +textInputController.setMarkedText('1', 0, 1); +textInputController.insertText('1'); </script>
diff --git a/third_party/WebKit/LayoutTests/shadow-dom/focus-navigation-with-delegatesFocus-expected.txt b/third_party/WebKit/LayoutTests/shadow-dom/focus-navigation-with-delegatesFocus-expected.txt index 8f0cb3a..572adba4 100644 --- a/third_party/WebKit/LayoutTests/shadow-dom/focus-navigation-with-delegatesFocus-expected.txt +++ b/third_party/WebKit/LayoutTests/shadow-dom/focus-navigation-with-delegatesFocus-expected.txt
@@ -2,7 +2,7 @@ Testing shadow host with possible combinations of mode, tabindex and delegatesFocus (1/8) Testing tab navigation order without tabindex and delegatesFocus=false -PASS window.internals.shadowRoot(hostDiv).delegatesFocus is false +PASS internals.shadowRoot(hostDiv).delegatesFocus is false PASS hostDiv.tabIndex is -1 Should move from input-before to host-div/inner-input in forward PASS @@ -13,7 +13,7 @@ Should move from host-div/inner-input to input-before in backward PASS (2/8) Testing tab navigation order without tabindex and delegatesFocus=true -PASS window.internals.shadowRoot(hostDiv).delegatesFocus is true +PASS internals.shadowRoot(hostDiv).delegatesFocus is true PASS hostDiv.tabIndex is 0 Should move from input-before to host-div/inner-input in forward PASS @@ -24,7 +24,7 @@ Should move from host-div/inner-input to input-before in backward PASS (3/8) Testing tab navigation order with tabindex=0 and delegatesFocus=false -PASS window.internals.shadowRoot(hostDiv).delegatesFocus is false +PASS internals.shadowRoot(hostDiv).delegatesFocus is false PASS hostDiv.getAttribute("tabindex") is "0" Should move from input-before to host-div in forward PASS @@ -39,7 +39,7 @@ Should move from host-div to input-before in backward PASS (4/8)Testing tab navigation order with tabindex=0 and delegatesFocus=true -PASS window.internals.shadowRoot(hostDiv).delegatesFocus is true +PASS internals.shadowRoot(hostDiv).delegatesFocus is true PASS hostDiv.getAttribute("tabindex") is "0" Should move from input-before to host-div/inner-input in forward PASS @@ -50,21 +50,21 @@ Should move from host-div/inner-input to input-before in backward PASS (5/8) Testing tab navigation order with tabindex=-1 and delegatesFocus=false -PASS window.internals.shadowRoot(hostDiv).delegatesFocus is false +PASS internals.shadowRoot(hostDiv).delegatesFocus is false PASS hostDiv.getAttribute("tabindex") is "-1" Should move from input-before to input-after in forward PASS Should move from input-after to input-before in backward PASS (6/8) Testing tab navigation order with tabindex=-1 and delegatesFocus=true -PASS window.internals.shadowRoot(hostDiv).delegatesFocus is true +PASS internals.shadowRoot(hostDiv).delegatesFocus is true PASS hostDiv.getAttribute("tabindex") is "-1" Should move from input-before to input-after in forward PASS Should move from input-after to input-before in backward PASS (7/8) Testing tab navigation order with tabindex=1 and delegatesFocus=false -PASS window.internals.shadowRoot(hostDiv).delegatesFocus is false +PASS internals.shadowRoot(hostDiv).delegatesFocus is false PASS hostDiv.getAttribute("tabindex") is "1" Should move from input-before to input-after in forward PASS @@ -79,7 +79,7 @@ Should move from input-after to input-before in backward PASS (8/8) Testing tab navigation order with tabindex=1 and delegatesFocus=true -PASS window.internals.shadowRoot(hostDiv).delegatesFocus is true +PASS internals.shadowRoot(hostDiv).delegatesFocus is true PASS hostDiv.getAttribute("tabindex") is "1" Should move from input-before to input-after in forward PASS @@ -90,7 +90,7 @@ Should move from input-after to input-before in backward PASS (1/8) Testing tab navigation order without tabindex and delegatesFocus=false -PASS window.internals.shadowRoot(hostDiv).delegatesFocus is false +PASS internals.shadowRoot(hostDiv).delegatesFocus is false PASS hostDiv.tabIndex is -1 Should move from input-before to host-div/inner-input in forward PASS @@ -101,7 +101,7 @@ Should move from host-div/inner-input to input-before in backward PASS (2/8) Testing tab navigation order without tabindex and delegatesFocus=true -PASS window.internals.shadowRoot(hostDiv).delegatesFocus is true +PASS internals.shadowRoot(hostDiv).delegatesFocus is true PASS hostDiv.tabIndex is 0 Should move from input-before to host-div/inner-input in forward PASS @@ -112,7 +112,7 @@ Should move from host-div/inner-input to input-before in backward PASS (3/8) Testing tab navigation order with tabindex=0 and delegatesFocus=false -PASS window.internals.shadowRoot(hostDiv).delegatesFocus is false +PASS internals.shadowRoot(hostDiv).delegatesFocus is false PASS hostDiv.getAttribute("tabindex") is "0" Should move from input-before to host-div in forward PASS @@ -127,7 +127,7 @@ Should move from host-div to input-before in backward PASS (4/8)Testing tab navigation order with tabindex=0 and delegatesFocus=true -PASS window.internals.shadowRoot(hostDiv).delegatesFocus is true +PASS internals.shadowRoot(hostDiv).delegatesFocus is true PASS hostDiv.getAttribute("tabindex") is "0" Should move from input-before to host-div/inner-input in forward PASS @@ -138,21 +138,21 @@ Should move from host-div/inner-input to input-before in backward PASS (5/8) Testing tab navigation order with tabindex=-1 and delegatesFocus=false -PASS window.internals.shadowRoot(hostDiv).delegatesFocus is false +PASS internals.shadowRoot(hostDiv).delegatesFocus is false PASS hostDiv.getAttribute("tabindex") is "-1" Should move from input-before to input-after in forward PASS Should move from input-after to input-before in backward PASS (6/8) Testing tab navigation order with tabindex=-1 and delegatesFocus=true -PASS window.internals.shadowRoot(hostDiv).delegatesFocus is true +PASS internals.shadowRoot(hostDiv).delegatesFocus is true PASS hostDiv.getAttribute("tabindex") is "-1" Should move from input-before to input-after in forward PASS Should move from input-after to input-before in backward PASS (7/8) Testing tab navigation order with tabindex=1 and delegatesFocus=false -PASS window.internals.shadowRoot(hostDiv).delegatesFocus is false +PASS internals.shadowRoot(hostDiv).delegatesFocus is false PASS hostDiv.getAttribute("tabindex") is "1" Should move from input-before to input-after in forward PASS @@ -167,7 +167,7 @@ Should move from input-after to input-before in backward PASS (8/8) Testing tab navigation order with tabindex=1 and delegatesFocus=true -PASS window.internals.shadowRoot(hostDiv).delegatesFocus is true +PASS internals.shadowRoot(hostDiv).delegatesFocus is true PASS hostDiv.getAttribute("tabindex") is "1" Should move from input-before to input-after in forward PASS
diff --git a/third_party/WebKit/LayoutTests/shadow-dom/focus-navigation-with-delegatesFocus.html b/third_party/WebKit/LayoutTests/shadow-dom/focus-navigation-with-delegatesFocus.html index ed5737ca..879da866 100644 --- a/third_party/WebKit/LayoutTests/shadow-dom/focus-navigation-with-delegatesFocus.html +++ b/third_party/WebKit/LayoutTests/shadow-dom/focus-navigation-with-delegatesFocus.html
@@ -33,7 +33,7 @@ debug('(1/8) Testing tab navigation order without tabindex and delegatesFocus=false'); prepareDOMTree(sandbox, mode, null, false); hostDiv = document.getElementById('host-div'); - shouldBe('window.internals.shadowRoot(hostDiv).delegatesFocus', 'false'); + shouldBe('internals.shadowRoot(hostDiv).delegatesFocus', 'false'); shouldBe('hostDiv.tabIndex', '-1'); expectedOrder = [ @@ -51,7 +51,7 @@ debug('(2/8) Testing tab navigation order without tabindex and delegatesFocus=true'); prepareDOMTree(sandbox, mode, null, true); hostDiv = document.getElementById('host-div'); - shouldBe('window.internals.shadowRoot(hostDiv).delegatesFocus', 'true'); + shouldBe('internals.shadowRoot(hostDiv).delegatesFocus', 'true'); shouldBe('hostDiv.tabIndex', '0'); var expectedOrder = [ @@ -69,7 +69,7 @@ debug('(3/8) Testing tab navigation order with tabindex=0 and delegatesFocus=false'); prepareDOMTree(sandbox, mode, 0, false); hostDiv = document.getElementById('host-div'); - shouldBe('window.internals.shadowRoot(hostDiv).delegatesFocus', 'false'); + shouldBe('internals.shadowRoot(hostDiv).delegatesFocus', 'false'); shouldBeEqualToString('hostDiv.getAttribute("tabindex")', '0'); expectedOrder = [ @@ -88,7 +88,7 @@ debug('(4/8)Testing tab navigation order with tabindex=0 and delegatesFocus=true'); prepareDOMTree(sandbox, mode, 0, true); hostDiv = document.getElementById('host-div'); - shouldBe('window.internals.shadowRoot(hostDiv).delegatesFocus', 'true'); + shouldBe('internals.shadowRoot(hostDiv).delegatesFocus', 'true'); shouldBeEqualToString('hostDiv.getAttribute("tabindex")', '0'); expectedOrder = [ @@ -107,7 +107,7 @@ debug('(5/8) Testing tab navigation order with tabindex=-1 and delegatesFocus=false'); prepareDOMTree(sandbox, mode, -1, false); hostDiv = document.getElementById('host-div'); - shouldBe('window.internals.shadowRoot(hostDiv).delegatesFocus', 'false'); + shouldBe('internals.shadowRoot(hostDiv).delegatesFocus', 'false'); shouldBeEqualToString('hostDiv.getAttribute("tabindex")', '-1'); expectedOrder = [ @@ -124,7 +124,7 @@ debug('(6/8) Testing tab navigation order with tabindex=-1 and delegatesFocus=true'); prepareDOMTree(sandbox, mode, -1, true); hostDiv = document.getElementById('host-div'); - shouldBe('window.internals.shadowRoot(hostDiv).delegatesFocus', 'true'); + shouldBe('internals.shadowRoot(hostDiv).delegatesFocus', 'true'); shouldBeEqualToString('hostDiv.getAttribute("tabindex")', '-1'); expectedOrder = [ @@ -142,7 +142,7 @@ debug('(7/8) Testing tab navigation order with tabindex=1 and delegatesFocus=false'); prepareDOMTree(sandbox, mode, 1, false); hostDiv = document.getElementById('host-div'); - shouldBe('window.internals.shadowRoot(hostDiv).delegatesFocus', 'false'); + shouldBe('internals.shadowRoot(hostDiv).delegatesFocus', 'false'); shouldBeEqualToString('hostDiv.getAttribute("tabindex")', '1'); expectedOrder = [ @@ -161,7 +161,7 @@ debug('(8/8) Testing tab navigation order with tabindex=1 and delegatesFocus=true'); prepareDOMTree(sandbox, mode, 1, true); hostDiv = document.getElementById('host-div'); - shouldBe('window.internals.shadowRoot(hostDiv).delegatesFocus', 'true'); + shouldBe('internals.shadowRoot(hostDiv).delegatesFocus', 'true'); shouldBeEqualToString('hostDiv.getAttribute("tabindex")', '1'); expectedOrder = [
diff --git a/third_party/WebKit/LayoutTests/shadow-dom/fullscreen-element-in-shadow-complex.html b/third_party/WebKit/LayoutTests/shadow-dom/fullscreen-element-in-shadow-complex.html index 6cdeea5..304464a7 100644 --- a/third_party/WebKit/LayoutTests/shadow-dom/fullscreen-element-in-shadow-complex.html +++ b/third_party/WebKit/LayoutTests/shadow-dom/fullscreen-element-in-shadow-complex.html
@@ -71,8 +71,8 @@ // 'FullscreenUnprefixed' runtime flag dynamically. Until the // flag is turned on, document.webkitFullscreenElement leaks the // fullscreen element under shadow roots. - window.internals.runtimeFlags.fullscreenUnprefixedEnabled = false; - assert_false(window.internals.runtimeFlags.fullscreenUnprefixedEnabled); + internals.runtimeFlags.fullscreenUnprefixedEnabled = false; + assert_false(internals.runtimeFlags.fullscreenUnprefixedEnabled); assert_equals(document.webkitFullscreenElement, canvas); assert_equals(document.webkitCurrentFullScreenElement, canvas);
diff --git a/third_party/WebKit/LayoutTests/shadow-dom/fullscreen-element-in-shadow-simple.html b/third_party/WebKit/LayoutTests/shadow-dom/fullscreen-element-in-shadow-simple.html index 6766d58..380514c6 100644 --- a/third_party/WebKit/LayoutTests/shadow-dom/fullscreen-element-in-shadow-simple.html +++ b/third_party/WebKit/LayoutTests/shadow-dom/fullscreen-element-in-shadow-simple.html
@@ -40,8 +40,8 @@ // 'FullscreenUnprefixed' runtime flag dynamically. Until the // flag is turned on, document.webkitFullscreenElement leaks the // fullscreen element under shadow roots. - window.internals.runtimeFlags.fullscreenUnprefixedEnabled = false; - assert_false(window.internals.runtimeFlags.fullscreenUnprefixedEnabled); + internals.runtimeFlags.fullscreenUnprefixedEnabled = false; + assert_false(internals.runtimeFlags.fullscreenUnprefixedEnabled); assert_equals(document.webkitFullscreenElement, canvas); assert_equals(document.webkitCurrentFullScreenElement, canvas);
diff --git a/third_party/WebKit/LayoutTests/shadow-dom/resources/focus-utils.js b/third_party/WebKit/LayoutTests/shadow-dom/resources/focus-utils.js index 5c3f471..764ca94 100644 --- a/third_party/WebKit/LayoutTests/shadow-dom/resources/focus-utils.js +++ b/third_party/WebKit/LayoutTests/shadow-dom/resources/focus-utils.js
@@ -8,7 +8,7 @@ return element; } if (isShadowHost(element)) { - let shadowRoot = window.internals.shadowRoot(element); + let shadowRoot = internals.shadowRoot(element); if (shadowRoot) { if (shadowRoot.activeElement) return innermostActiveElement(shadowRoot.activeElement);
diff --git a/third_party/WebKit/LayoutTests/shadow-dom/v0/fullscreen-element-in-v0.html b/third_party/WebKit/LayoutTests/shadow-dom/v0/fullscreen-element-in-v0.html index 076ec88..5e5fb17 100644 --- a/third_party/WebKit/LayoutTests/shadow-dom/v0/fullscreen-element-in-v0.html +++ b/third_party/WebKit/LayoutTests/shadow-dom/v0/fullscreen-element-in-v0.html
@@ -41,8 +41,8 @@ // 'FullscreenUnprefixed' runtime flag dynamically. Until the // flag is turned on, document.webkitFullscreenElement leaks the // fullscreen element under shadow roots. - window.internals.runtimeFlags.fullscreenUnprefixedEnabled = false; - assert_false(window.internals.runtimeFlags.fullscreenUnprefixedEnabled); + internals.runtimeFlags.fullscreenUnprefixedEnabled = false; + assert_false(internals.runtimeFlags.fullscreenUnprefixedEnabled); assert_equals(document.webkitFullscreenElement, canvas); assert_equals(document.webkitCurrentFullScreenElement, canvas);
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/observer-expected.txt b/third_party/WebKit/LayoutTests/storage/indexeddb/observer-expected.txt deleted file mode 100644 index 88829c2..0000000 --- a/third_party/WebKit/LayoutTests/storage/indexeddb/observer-expected.txt +++ /dev/null
@@ -1,7 +0,0 @@ -This is a testharness.js-based test. -PASS Registering observe call with empty transaction -FAIL Cannot observe during version change Test bug: need to pass exception to assert_throws() -PASS Abort transaction associated with observer -PASS Aborted transaction not recorded by observer -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/observer-worker-expected.txt b/third_party/WebKit/LayoutTests/storage/indexeddb/observer-worker-expected.txt deleted file mode 100644 index 88829c2..0000000 --- a/third_party/WebKit/LayoutTests/storage/indexeddb/observer-worker-expected.txt +++ /dev/null
@@ -1,7 +0,0 @@ -This is a testharness.js-based test. -PASS Registering observe call with empty transaction -FAIL Cannot observe during version change Test bug: need to pass exception to assert_throws() -PASS Abort transaction associated with observer -PASS Aborted transaction not recorded by observer -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/resources/observer.js b/third_party/WebKit/LayoutTests/storage/indexeddb/resources/observer.js index f5b08d68..2c1eeb2 100644 --- a/third_party/WebKit/LayoutTests/storage/indexeddb/resources/observer.js +++ b/third_party/WebKit/LayoutTests/storage/indexeddb/resources/observer.js
@@ -25,7 +25,7 @@ delete_then_open(t, dbname, function(t, db, request) { request.result.createObjectStore('store'); - assert_throws(null, function() { + assert_throws("TransactionInactiveError", function() { obs.observe(db, request.transaction, { operationTypes: ['put'] }); }); t.done(); @@ -79,4 +79,4 @@ }); }, 'Aborted transaction not recorded by observer'); -done(); \ No newline at end of file +done();
diff --git a/third_party/WebKit/LayoutTests/storage/resources/storage-close-idle-localstorage-databases-immediately.html b/third_party/WebKit/LayoutTests/storage/resources/storage-close-idle-localstorage-databases-immediately.html index 4e0a446..df3dd47 100644 --- a/third_party/WebKit/LayoutTests/storage/resources/storage-close-idle-localstorage-databases-immediately.html +++ b/third_party/WebKit/LayoutTests/storage/resources/storage-close-idle-localstorage-databases-immediately.html
@@ -3,7 +3,7 @@ function swingBack() { if (window.testRunner) { - window.testRunner.closeIdleLocalStorageDatabases(); + testRunner.closeIdleLocalStorageDatabases(); } location.href='../domstorage/localstorage/close-idle-localstorage-databases-immediately.html'; }
diff --git a/third_party/WebKit/LayoutTests/svg/animations/animate-list-crash.svg b/third_party/WebKit/LayoutTests/svg/animations/animate-list-crash.svg index f1ddfad7..89d66d4 100644 --- a/third_party/WebKit/LayoutTests/svg/animations/animate-list-crash.svg +++ b/third_party/WebKit/LayoutTests/svg/animations/animate-list-crash.svg
@@ -18,7 +18,7 @@ <![CDATA[ document.getElementById("log").appendChild(document.createTextNode("PASS")); if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); ]]> </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/as-background-image/tiled-background-image-expected.html b/third_party/WebKit/LayoutTests/svg/as-background-image/tiled-background-image-expected.html index 018d567..cc05a3b 100644 --- a/third_party/WebKit/LayoutTests/svg/as-background-image/tiled-background-image-expected.html +++ b/third_party/WebKit/LayoutTests/svg/as-background-image/tiled-background-image-expected.html
@@ -20,7 +20,7 @@ <script> function setScale() { if (window.internals) - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); } </script> </head>
diff --git a/third_party/WebKit/LayoutTests/svg/as-background-image/tiled-background-image.html b/third_party/WebKit/LayoutTests/svg/as-background-image/tiled-background-image.html index f22bf8c..9c1eb49d 100644 --- a/third_party/WebKit/LayoutTests/svg/as-background-image/tiled-background-image.html +++ b/third_party/WebKit/LayoutTests/svg/as-background-image/tiled-background-image.html
@@ -41,7 +41,7 @@ <script> function setScale() { if (window.internals) - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); } </script> </head>
diff --git a/third_party/WebKit/LayoutTests/svg/as-image/animated-use-as-image-crash.html b/third_party/WebKit/LayoutTests/svg/as-image/animated-use-as-image-crash.html index 77d298aa..872a956 100644 --- a/third_party/WebKit/LayoutTests/svg/as-image/animated-use-as-image-crash.html +++ b/third_party/WebKit/LayoutTests/svg/as-image/animated-use-as-image-crash.html
@@ -9,7 +9,7 @@ } window.onload = function() { - window.internals.advanceImageAnimation(image); + internals.advanceImageAnimation(image); window.requestAnimationFrame(function() { testRunner.notifyDone() });
diff --git a/third_party/WebKit/LayoutTests/svg/as-image/image-respects-pageScaleFactor-change.html b/third_party/WebKit/LayoutTests/svg/as-image/image-respects-pageScaleFactor-change.html index 6ea9421..7a9fbcd7 100644 --- a/third_party/WebKit/LayoutTests/svg/as-image/image-respects-pageScaleFactor-change.html +++ b/third_party/WebKit/LayoutTests/svg/as-image/image-respects-pageScaleFactor-change.html
@@ -10,13 +10,13 @@ if (!window.internals) return; - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); setTimeout(increasePageScale, 0); } function increasePageScale() { - window.internals.setPageScaleFactor(4); + internals.setPageScaleFactor(4); if (window.testRunner) testRunner.notifyDone();
diff --git a/third_party/WebKit/LayoutTests/svg/as-image/image-respects-pageScaleFactor.html b/third_party/WebKit/LayoutTests/svg/as-image/image-respects-pageScaleFactor.html index 60b611c..80dbd3a 100644 --- a/third_party/WebKit/LayoutTests/svg/as-image/image-respects-pageScaleFactor.html +++ b/third_party/WebKit/LayoutTests/svg/as-image/image-respects-pageScaleFactor.html
@@ -5,7 +5,7 @@ if (!window.internals) return; - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); } window.onload = init; </script>
diff --git a/third_party/WebKit/LayoutTests/svg/as-image/smil-usecounter-in-css-image-expected.txt b/third_party/WebKit/LayoutTests/svg/as-image/smil-usecounter-in-css-image-expected.txt index 868b437..dd634dd 100644 --- a/third_party/WebKit/LayoutTests/svg/as-image/smil-usecounter-in-css-image-expected.txt +++ b/third_party/WebKit/LayoutTests/svg/as-image/smil-usecounter-in-css-image-expected.txt
@@ -1,5 +1,5 @@ -PASS window.internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache) is false -PASS window.internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache) is true +PASS internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache) is false +PASS internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache) is true PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/svg/as-image/smil-usecounter-in-css-image.html b/third_party/WebKit/LayoutTests/svg/as-image/smil-usecounter-in-css-image.html index 1f8dcd1a..98555e0 100644 --- a/third_party/WebKit/LayoutTests/svg/as-image/smil-usecounter-in-css-image.html +++ b/third_party/WebKit/LayoutTests/svg/as-image/smil-usecounter-in-css-image.html
@@ -12,10 +12,10 @@ var SVGSMILAnimationInImageRegardlessOfCache = 768; // From UseCounter.h window.jsTestIsAsync = true; -shouldBeFalse("window.internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache)"); +shouldBeFalse("internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache)"); window.onload = function() { - shouldBeTrue("window.internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache)"); + shouldBeTrue("internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache)"); finishJSTest(); } </script>
diff --git a/third_party/WebKit/LayoutTests/svg/as-image/smil-usecounter-in-image-expected.txt b/third_party/WebKit/LayoutTests/svg/as-image/smil-usecounter-in-image-expected.txt index 868b437..dd634dd 100644 --- a/third_party/WebKit/LayoutTests/svg/as-image/smil-usecounter-in-image-expected.txt +++ b/third_party/WebKit/LayoutTests/svg/as-image/smil-usecounter-in-image-expected.txt
@@ -1,5 +1,5 @@ -PASS window.internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache) is false -PASS window.internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache) is true +PASS internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache) is false +PASS internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache) is true PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/svg/as-image/smil-usecounter-in-image.html b/third_party/WebKit/LayoutTests/svg/as-image/smil-usecounter-in-image.html index 9df4183..9bd8ec8 100644 --- a/third_party/WebKit/LayoutTests/svg/as-image/smil-usecounter-in-image.html +++ b/third_party/WebKit/LayoutTests/svg/as-image/smil-usecounter-in-image.html
@@ -4,11 +4,11 @@ var SVGSMILAnimationInImageRegardlessOfCache = 768; // From UseCounter.h window.jsTestIsAsync = true; -shouldBeFalse("window.internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache)"); +shouldBeFalse("internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache)"); var img = new Image(); img.onload = function() { - shouldBeTrue("window.internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache)"); + shouldBeTrue("internals.isUseCounted(document, SVGSMILAnimationInImageRegardlessOfCache)"); finishJSTest(); } img.src = "resources/animated-rect-color.svg";
diff --git a/third_party/WebKit/LayoutTests/svg/as-image/svgview-references-use-counters-expected.txt b/third_party/WebKit/LayoutTests/svg/as-image/svgview-references-use-counters-expected.txt index ef24e5b..3c71ae77 100644 --- a/third_party/WebKit/LayoutTests/svg/as-image/svgview-references-use-counters-expected.txt +++ b/third_party/WebKit/LayoutTests/svg/as-image/svgview-references-use-counters-expected.txt
@@ -1,9 +1,9 @@ -PASS window.internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGView) is false -PASS window.internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGViewElement) is false -PASS window.internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGView) is true -PASS window.internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGViewElement) is false -PASS window.internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGView) is true -PASS window.internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGViewElement) is true +PASS internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGView) is false +PASS internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGViewElement) is false +PASS internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGView) is true +PASS internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGViewElement) is false +PASS internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGView) is true +PASS internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGViewElement) is true PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/svg/as-image/svgview-references-use-counters.html b/third_party/WebKit/LayoutTests/svg/as-image/svgview-references-use-counters.html index 743622d51..4854050 100644 --- a/third_party/WebKit/LayoutTests/svg/as-image/svgview-references-use-counters.html +++ b/third_party/WebKit/LayoutTests/svg/as-image/svgview-references-use-counters.html
@@ -20,8 +20,8 @@ obj.onload = function() { runAfterLayoutAndPaint(function() { - shouldBeFalse("window.internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGView)"); - shouldBeFalse("window.internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGViewElement)"); + shouldBeFalse("internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGView)"); + shouldBeFalse("internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGViewElement)"); var obj = document.createElement('object'); obj.data = "resources/svglogo.svg#svgView(viewBox(0,0,150,150))"; @@ -29,8 +29,8 @@ obj.onload = function() { runAfterLayoutAndPaint(function() { - shouldBeTrue("window.internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGView)"); - shouldBeFalse("window.internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGViewElement)"); + shouldBeTrue("internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGView)"); + shouldBeFalse("internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGViewElement)"); var obj = document.createElement('object'); obj.data = "resources/svglogo-viewbox.svg#original"; @@ -38,8 +38,8 @@ obj.onload = function() { runAfterLayoutAndPaint(function() { - shouldBeTrue("window.internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGView)"); - shouldBeTrue("window.internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGViewElement)"); + shouldBeTrue("internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGView)"); + shouldBeTrue("internals.isUseCounted(document.querySelector('object').contentDocument, SVGSVGElementFragmentSVGViewElement)"); finishJSTest(); }); };
diff --git a/third_party/WebKit/LayoutTests/svg/css/stroke-opacity-change-no-layout-expected.txt b/third_party/WebKit/LayoutTests/svg/css/stroke-opacity-change-no-layout-expected.txt index 929ea74b..319a0de76 100644 --- a/third_party/WebKit/LayoutTests/svg/css/stroke-opacity-change-no-layout-expected.txt +++ b/third_party/WebKit/LayoutTests/svg/css/stroke-opacity-change-no-layout-expected.txt
@@ -1,5 +1,5 @@ PASS successfullyParsed is true TEST COMPLETE -PASS window.internals.needsLayoutCount() is 0 +PASS internals.needsLayoutCount() is 0 Change of stroke-opacity should cause style recalc only, no layout.
diff --git a/third_party/WebKit/LayoutTests/svg/css/stroke-opacity-change-no-layout.html b/third_party/WebKit/LayoutTests/svg/css/stroke-opacity-change-no-layout.html index cd31109c..a192437 100644 --- a/third_party/WebKit/LayoutTests/svg/css/stroke-opacity-change-no-layout.html +++ b/third_party/WebKit/LayoutTests/svg/css/stroke-opacity-change-no-layout.html
@@ -7,12 +7,12 @@ onload = function() { document.body.offsetTop; if (window.internals) - shouldBe("window.internals.needsLayoutCount()", "0", true); + shouldBe("internals.needsLayoutCount()", "0", true); document.getElementById('rect').style.strokeOpacity = '0.5'; if (window.internals) { - shouldBe("window.internals.updateStyleAndReturnAffectedElementCount()", "1", true); - shouldBe("window.internals.needsLayoutCount()", "0"); + shouldBe("internals.updateStyleAndReturnAffectedElementCount()", "1", true); + shouldBe("internals.needsLayoutCount()", "0"); } }; </script>
diff --git a/third_party/WebKit/LayoutTests/svg/custom/anchor-on-use.svg b/third_party/WebKit/LayoutTests/svg/custom/anchor-on-use.svg index b8827f3..ae8f11b 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/anchor-on-use.svg +++ b/third_party/WebKit/LayoutTests/svg/custom/anchor-on-use.svg
@@ -1,7 +1,7 @@ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" onload="clickLinkNow()"> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function clickLinkNow() { if (window.eventSender) {
diff --git a/third_party/WebKit/LayoutTests/svg/custom/baseval-animval-equality.svg b/third_party/WebKit/LayoutTests/svg/custom/baseval-animval-equality.svg index 662a266f..8996c45 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/baseval-animval-equality.svg +++ b/third_party/WebKit/LayoutTests/svg/custom/baseval-animval-equality.svg
@@ -10,7 +10,7 @@ <script type="text/javascript"> <![CDATA[ if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); function log(message) { var logDiv = document.getElementById('log');
diff --git a/third_party/WebKit/LayoutTests/svg/custom/boundingBox.html b/third_party/WebKit/LayoutTests/svg/custom/boundingBox.html index fe4a0d0..d0f6cf0 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/boundingBox.html +++ b/third_party/WebKit/LayoutTests/svg/custom/boundingBox.html
@@ -3,7 +3,7 @@ <head> <script> if (window.testRunner) - window.testRunner.dumpAsText() + testRunner.dumpAsText() function runTest() {
diff --git a/third_party/WebKit/LayoutTests/svg/custom/font-face-name-without-name-attr.svg b/third_party/WebKit/LayoutTests/svg/custom/font-face-name-without-name-attr.svg index 609029d..dc73dee9 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/font-face-name-without-name-attr.svg +++ b/third_party/WebKit/LayoutTests/svg/custom/font-face-name-without-name-attr.svg
@@ -9,6 +9,6 @@ <text font-family="svgtest" x="0" y="1cm">This test passes if WebKit doesn't crash.</text> <script> if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/custom/getBBox-empty-container.html b/third_party/WebKit/LayoutTests/svg/custom/getBBox-empty-container.html index e8d3cf4..d6e6b7e 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/getBBox-empty-container.html +++ b/third_party/WebKit/LayoutTests/svg/custom/getBBox-empty-container.html
@@ -5,7 +5,7 @@ <script type="text/javascript"> function checkBoundingBoxesEqual() { if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); // Ensure both boxes are the same size, meaning the empty <g> does not affect the bbox size. var bboxA = document.getElementById('ga').getBBox();
diff --git a/third_party/WebKit/LayoutTests/svg/custom/gradient-attr-update.svg b/third_party/WebKit/LayoutTests/svg/custom/gradient-attr-update.svg index 5b1e36d..5be642f7 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/gradient-attr-update.svg +++ b/third_party/WebKit/LayoutTests/svg/custom/gradient-attr-update.svg
@@ -3,7 +3,7 @@ <svg version="1.1" baseProfile="basic" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg-root" width="100%" height="100%" onload="pageLoaded()"> <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function myfunc() { var myRect = document.getElementById("rect");
diff --git a/third_party/WebKit/LayoutTests/svg/custom/hit-test-path-stroke.svg b/third_party/WebKit/LayoutTests/svg/custom/hit-test-path-stroke.svg index 85345fa5..02fc482a 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/hit-test-path-stroke.svg +++ b/third_party/WebKit/LayoutTests/svg/custom/hit-test-path-stroke.svg
@@ -16,7 +16,7 @@ <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function clickLinkNow() { if (window.eventSender) {
diff --git a/third_party/WebKit/LayoutTests/svg/custom/hit-test-path.svg b/third_party/WebKit/LayoutTests/svg/custom/hit-test-path.svg index 1ca8ca8..64f6571 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/hit-test-path.svg +++ b/third_party/WebKit/LayoutTests/svg/custom/hit-test-path.svg
@@ -16,7 +16,7 @@ <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function clickLinkNow() { if (window.eventSender) {
diff --git a/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-all.svg b/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-all.svg index a3de14c..98d286a 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-all.svg +++ b/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-all.svg
@@ -15,7 +15,7 @@ <svg version="1.1" baseProfile="basic" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg-root" width="100%" height="100%" viewBox="0 0 480 360" onload="clickLinkNow()"> <script type="text/ecmascript"><![CDATA[ if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function clickLinkNow() { if (window.eventSender) {
diff --git a/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-preserveAspectRatio.svg b/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-preserveAspectRatio.svg index 6f651468..0c260adc 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-preserveAspectRatio.svg +++ b/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-preserveAspectRatio.svg
@@ -15,7 +15,7 @@ <svg version="1.1" baseProfile="basic" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg-root" width="100%" height="100%" viewBox="0 0 480 360" onload="clickLinkNow()"> <script type="text/ecmascript"><![CDATA[ if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function clickLinkNow() { if (window.eventSender) {
diff --git a/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-transform.svg b/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-transform.svg index 400fdfe..e61c4eb 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-transform.svg +++ b/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-transform.svg
@@ -15,7 +15,7 @@ <svg version="1.1" baseProfile="basic" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg-root" width="100%" height="100%" viewBox="0 0 480 360" onload="clickLinkNow()"> <script type="text/ecmascript"><![CDATA[ if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function clickLinkNow() { if (window.eventSender) {
diff --git a/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-viewBox-transform.svg b/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-viewBox-transform.svg index 0ea9648..65c4a63 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-viewBox-transform.svg +++ b/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-viewBox-transform.svg
@@ -15,7 +15,7 @@ <svg version="1.1" baseProfile="basic" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg-root" width="100%" height="100%" viewBox="0 0 480 360" onload="clickLinkNow()"> <script type="text/ecmascript"><![CDATA[ if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function clickLinkNow() { if (window.eventSender) {
diff --git a/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-viewBox.svg b/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-viewBox.svg index df0201d..1046940 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-viewBox.svg +++ b/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-viewBox.svg
@@ -15,7 +15,7 @@ <svg version="1.1" baseProfile="basic" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg-root" width="100%" height="100%" viewBox="0 0 480 360" onload="clickLinkNow()"> <script type="text/ecmascript"><![CDATA[ if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function clickLinkNow() { if (window.eventSender) {
diff --git a/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-viewTarget.svg b/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-viewTarget.svg index a09bc18..f5912d4 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-viewTarget.svg +++ b/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-viewTarget.svg
@@ -15,7 +15,7 @@ <svg version="1.1" baseProfile="basic" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg-root" width="100%" height="100%" viewBox="0 0 480 360" onload="clickLinkNow()"> <script type="text/ecmascript"><![CDATA[ if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function clickLinkNow() { if (window.eventSender) {
diff --git a/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-zoomAndPan.svg b/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-zoomAndPan.svg index 9feab30b..1c81862 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-zoomAndPan.svg +++ b/third_party/WebKit/LayoutTests/svg/custom/linking-a-03-b-zoomAndPan.svg
@@ -15,7 +15,7 @@ <svg version="1.1" baseProfile="basic" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg-root" width="100%" height="100%" viewBox="0 0 480 360" onload="clickLinkNow()"> <script type="text/ecmascript"><![CDATA[ if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function clickLinkNow() { if (window.eventSender) {
diff --git a/third_party/WebKit/LayoutTests/svg/custom/linking-uri-01-b.svg b/third_party/WebKit/LayoutTests/svg/custom/linking-uri-01-b.svg index 1189b2f6..f4835c4 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/linking-uri-01-b.svg +++ b/third_party/WebKit/LayoutTests/svg/custom/linking-uri-01-b.svg
@@ -12,12 +12,12 @@ <!--======================================================================--> <script type="text/ecmascript"><![CDATA[ if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function linkClicked() { if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } function clickLink() {
diff --git a/third_party/WebKit/LayoutTests/svg/custom/resources/link-target.html b/third_party/WebKit/LayoutTests/svg/custom/resources/link-target.html index 846bd3d..d936284 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/resources/link-target.html +++ b/third_party/WebKit/LayoutTests/svg/custom/resources/link-target.html
@@ -2,7 +2,7 @@ <body> <script> if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); </script> <p>If you see this, then SVG hit testing on paths works - the arrow was successfully clicked.</p> </body>
diff --git a/third_party/WebKit/LayoutTests/svg/custom/resources/linkingCircle-f.svg b/third_party/WebKit/LayoutTests/svg/custom/resources/linkingCircle-f.svg index d78fd6a..798dc42a 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/resources/linkingCircle-f.svg +++ b/third_party/WebKit/LayoutTests/svg/custom/resources/linkingCircle-f.svg
@@ -8,7 +8,7 @@ <script> function report() { if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } </script> <title id="test-title">linkingCircle-f.svg</title>
diff --git a/third_party/WebKit/LayoutTests/svg/custom/text-match-highlight.html b/third_party/WebKit/LayoutTests/svg/custom/text-match-highlight.html index 08d5841b..b34f8ab 100644 --- a/third_party/WebKit/LayoutTests/svg/custom/text-match-highlight.html +++ b/third_party/WebKit/LayoutTests/svg/custom/text-match-highlight.html
@@ -7,8 +7,8 @@ var elem = document.getElementById(id).firstChild; range.setStart(elem, start); range.setEnd(elem, end); - window.internals.addTextMatchMarker(range, active); - window.internals.setMarkedTextMatchesAreHighlighted(document, true); + internals.addTextMatchMarker(range, active); + internals.setMarkedTextMatchesAreHighlighted(document, true); } function highlightTest() { highlightRange('1', 0, 6, 'kInactive');
diff --git a/third_party/WebKit/LayoutTests/svg/dom/SVGLength-calc-in-attr-expected.txt b/third_party/WebKit/LayoutTests/svg/dom/SVGLength-calc-in-attr-expected.txt deleted file mode 100644 index 61d9fc2..0000000 --- a/third_party/WebKit/LayoutTests/svg/dom/SVGLength-calc-in-attr-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL Tests calc() on presentation and non-presentation attr in svgLength Test bug: need to pass exception to assert_throws() -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/svg/dom/SVGLength-calc-in-attr.html b/third_party/WebKit/LayoutTests/svg/dom/SVGLength-calc-in-attr.html index 7999cbb..b04d746ce 100644 --- a/third_party/WebKit/LayoutTests/svg/dom/SVGLength-calc-in-attr.html +++ b/third_party/WebKit/LayoutTests/svg/dom/SVGLength-calc-in-attr.html
@@ -42,7 +42,7 @@ // Test calc with "valueAsString" rect.setAttribute('width', '20px'); // reset to normal value - assert_throws(null, function() {rect.width.baseVal.valueAsString = expression}); + assert_throws(new SyntaxError, function() {rect.width.baseVal.valueAsString = expression}); assert_equals(rect.width.baseVal.value, 20); } @@ -67,7 +67,7 @@ // Test calc with "valueAsString" marker.setAttribute('markerWidth', '20px'); // reset to normal value - assert_throws(null, function() {marker.markerWidth.baseVal.valueAsString = expression}); + assert_throws(new SyntaxError, function() {marker.markerWidth.baseVal.valueAsString = expression}); assert_equals(marker.markerWidth.baseVal.value, 20); }
diff --git a/third_party/WebKit/LayoutTests/svg/dom/SVGLength-viewport-units-expected.txt b/third_party/WebKit/LayoutTests/svg/dom/SVGLength-viewport-units-expected.txt deleted file mode 100644 index 36ef680..0000000 --- a/third_party/WebKit/LayoutTests/svg/dom/SVGLength-viewport-units-expected.txt +++ /dev/null
@@ -1,7 +0,0 @@ -This is a testharness.js-based test. -FAIL Tests vw unit Test bug: need to pass exception to assert_throws() -FAIL Tests vh unit Test bug: need to pass exception to assert_throws() -FAIL Tests vmin unit Test bug: need to pass exception to assert_throws() -FAIL Tests vmax unit Test bug: need to pass exception to assert_throws() -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/svg/dom/SVGLength-viewport-units.html b/third_party/WebKit/LayoutTests/svg/dom/SVGLength-viewport-units.html index b7c2922..bae6eca8 100644 --- a/third_party/WebKit/LayoutTests/svg/dom/SVGLength-viewport-units.html +++ b/third_party/WebKit/LayoutTests/svg/dom/SVGLength-viewport-units.html
@@ -1,7 +1,7 @@ <!DOCTYPE html> <script src="../../resources/testharness.js"></script> <script src="../../resources/testharnessreport.js"></script> -<svg width="1" height="1" visibility="hidden"> +<svg width="1" height="1" visibility="hidden"> </svg> <script> var svgElement = document.querySelector("svg"); @@ -33,7 +33,7 @@ svgElement.setAttribute("width", "10vw"); assert_approx_equals(svgElement.width.baseVal.value, 10 * viewportWidthPercent(), EPSILON); assert_equals(svgElement.width.baseVal.valueInSpecifiedUnits, 10); - assert_throws(null, function() {svgElement.width.baseVal.valueAsString = '2vw'}); + assert_throws(new SyntaxError, function() {svgElement.width.baseVal.valueAsString = '2vw'}); svgElement.width.baseVal.valueInSpecifiedUnits = 2; assert_approx_equals(svgElement.width.baseVal.value, 2 * viewportWidthPercent(), EPSILON); assert_equals(svgElement.width.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_UNKNOWN); @@ -43,7 +43,7 @@ svgElement.setAttribute("width", "10vh"); assert_approx_equals(svgElement.width.baseVal.value, 10 * viewportHeightPercent(), EPSILON); assert_equals(svgElement.width.baseVal.valueInSpecifiedUnits, 10); - assert_throws(null, function() {svgElement.width.baseVal.valueAsString = '2vh'}); + assert_throws(new SyntaxError, function() {svgElement.width.baseVal.valueAsString = '2vh'}); svgElement.width.baseVal.valueInSpecifiedUnits = 2; assert_approx_equals(svgElement.width.baseVal.value, 2 * viewportHeightPercent(), EPSILON); assert_equals(svgElement.width.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_UNKNOWN); @@ -53,7 +53,7 @@ svgElement.setAttribute("width", "10vmin"); assert_approx_equals(svgElement.width.baseVal.value, 10 * viewportMinPercent(), EPSILON); assert_equals(svgElement.width.baseVal.valueInSpecifiedUnits, 10); - assert_throws(null, function() {svgElement.width.baseVal.valueAsString = '2vmin'}); + assert_throws(new SyntaxError, function() {svgElement.width.baseVal.valueAsString = '2vmin'}); svgElement.width.baseVal.valueInSpecifiedUnits = 2; assert_approx_equals(svgElement.width.baseVal.value, 2 * viewportMinPercent(), EPSILON); assert_equals(svgElement.width.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_UNKNOWN); @@ -63,7 +63,7 @@ svgElement.setAttribute("width", "10vmax"); assert_approx_equals(svgElement.width.baseVal.value, 10 * viewportMaxPercent(), EPSILON); assert_equals(svgElement.width.baseVal.valueInSpecifiedUnits, 10); - assert_throws(null, function() {svgElement.width.baseVal.valueAsString = '2vmax'}); + assert_throws(new SyntaxError, function() {svgElement.width.baseVal.valueAsString = '2vmax'}); svgElement.width.baseVal.valueInSpecifiedUnits = 2; assert_approx_equals(svgElement.width.baseVal.value, 2 * viewportMaxPercent(), EPSILON); assert_equals(svgElement.width.baseVal.unitType, SVGLength.SVG_LENGTHTYPE_UNKNOWN);
diff --git a/third_party/WebKit/LayoutTests/svg/dom/href-baseval-animval.html b/third_party/WebKit/LayoutTests/svg/dom/href-baseval-animval.html index 34c87663..b17d65c 100644 --- a/third_party/WebKit/LayoutTests/svg/dom/href-baseval-animval.html +++ b/third_party/WebKit/LayoutTests/svg/dom/href-baseval-animval.html
@@ -8,11 +8,11 @@ var target = document.querySelector("use"); test(function() { var baseval = target.href.baseVal; - assert_true(window.internals.isUseCounted(document, 758)); + assert_true(internals.isUseCounted(document, 758)); }, "has SVGHrefBaseVal UseCounter"); // 758 == UseCounter::Feature::SVGHrefBaseVal test(function() { var animval = target.href.animVal; - assert_true(window.internals.isUseCounted(document, 759)); + assert_true(internals.isUseCounted(document, 759)); }, "has SVGHrefAnimVal UseCounter"); // 759 == UseCounter::Feature::SVGHrefAnimVal </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/dom/svglength-units-expected.txt b/third_party/WebKit/LayoutTests/svg/dom/svglength-units-expected.txt deleted file mode 100644 index 98b87e66..0000000 --- a/third_party/WebKit/LayoutTests/svg/dom/svglength-units-expected.txt +++ /dev/null
@@ -1,10 +0,0 @@ -This is a testharness.js-based test. -PASS Test valid unit types are accepted in valueAsString -FAIL Test invalid unit types are not accepted in valueAsString Test bug: need to pass exception to assert_throws() -PASS Test that unit constants that are supposed to be exposed are available -PASS Test that unit constants that are not supposed to be exposed are not available -PASS Test result from valueInSpecifiedUnits -PASS Test converting unit types for non-relative units -PASS Test newValueSpecifiedUnits for each unit -Harness: the test ran to completion. -
diff --git a/third_party/WebKit/LayoutTests/svg/dom/svglength-units.html b/third_party/WebKit/LayoutTests/svg/dom/svglength-units.html index 9e6fadf4..2f9f1f67 100644 --- a/third_party/WebKit/LayoutTests/svg/dom/svglength-units.html +++ b/third_party/WebKit/LayoutTests/svg/dom/svglength-units.html
@@ -1,4 +1,4 @@ -<!doctype html> +<!doctype html> <title>SVGlength tests</title> <script src=../../resources/testharness.js></script> <script src=../../resources/testharnessreport.js></script> @@ -11,10 +11,10 @@ var EPSILON = Math.pow(2, -8); var lengths = [10, 0, 360, 500, 90, 180, 45, 25.9]; -var validUnits = { - "" : 1, - "%": 2, - "em": 3, +var validUnits = { + "" : 1, + "%": 2, + "em": 3, "ex": 4, "px": 5, "cm": 6, @@ -102,7 +102,7 @@ "ch": 2 }; for (var unit in invalidUnits) { - assert_throws(null, function() { createLength(10 + unit) }); + assert_throws(new SyntaxError, function() { createLength(10 + unit) }); } }, "Test invalid unit types are not accepted in valueAsString");
diff --git a/third_party/WebKit/LayoutTests/svg/filters/feMorphology-zero-radius.svg b/third_party/WebKit/LayoutTests/svg/filters/feMorphology-zero-radius.svg index ca1fd1d..6e4fbd7 100644 --- a/third_party/WebKit/LayoutTests/svg/filters/feMorphology-zero-radius.svg +++ b/third_party/WebKit/LayoutTests/svg/filters/feMorphology-zero-radius.svg
@@ -23,7 +23,7 @@ } if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); ]]> </script>
diff --git a/third_party/WebKit/LayoutTests/svg/foreign-object-under-shadow-root-under-hidden.html b/third_party/WebKit/LayoutTests/svg/foreign-object-under-shadow-root-under-hidden.html index 1ed2f52..9168d32f 100644 --- a/third_party/WebKit/LayoutTests/svg/foreign-object-under-shadow-root-under-hidden.html +++ b/third_party/WebKit/LayoutTests/svg/foreign-object-under-shadow-root-under-hidden.html
@@ -8,7 +8,7 @@ shadow_root.innerHTML = outer_html; } if (window.testRunner) - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); </script> Passes if it does not crash. <body onload=go()>
diff --git a/third_party/WebKit/LayoutTests/svg/hittest/zero-length-butt-cap-path.xhtml b/third_party/WebKit/LayoutTests/svg/hittest/zero-length-butt-cap-path.xhtml index 9bd21878..ec14a29e 100644 --- a/third_party/WebKit/LayoutTests/svg/hittest/zero-length-butt-cap-path.xhtml +++ b/third_party/WebKit/LayoutTests/svg/hittest/zero-length-butt-cap-path.xhtml
@@ -14,7 +14,7 @@ </svg> <script><![CDATA[ if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); } var resultString = "";
diff --git a/third_party/WebKit/LayoutTests/svg/hittest/zero-length-round-cap-path.xhtml b/third_party/WebKit/LayoutTests/svg/hittest/zero-length-round-cap-path.xhtml index f035db23..1b81e51c 100644 --- a/third_party/WebKit/LayoutTests/svg/hittest/zero-length-round-cap-path.xhtml +++ b/third_party/WebKit/LayoutTests/svg/hittest/zero-length-round-cap-path.xhtml
@@ -14,7 +14,7 @@ </svg> <script><![CDATA[ if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); } var resultString = "";
diff --git a/third_party/WebKit/LayoutTests/svg/hittest/zero-length-square-cap-path.xhtml b/third_party/WebKit/LayoutTests/svg/hittest/zero-length-square-cap-path.xhtml index a004dc3b..7aa72ff 100644 --- a/third_party/WebKit/LayoutTests/svg/hittest/zero-length-square-cap-path.xhtml +++ b/third_party/WebKit/LayoutTests/svg/hittest/zero-length-square-cap-path.xhtml
@@ -14,7 +14,7 @@ </svg> <script><![CDATA[ if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); } var resultString = "";
diff --git a/third_party/WebKit/LayoutTests/svg/text/caret-in-svg-text.xhtml b/third_party/WebKit/LayoutTests/svg/text/caret-in-svg-text.xhtml index 6398b2b..286c7799 100644 --- a/third_party/WebKit/LayoutTests/svg/text/caret-in-svg-text.xhtml +++ b/third_party/WebKit/LayoutTests/svg/text/caret-in-svg-text.xhtml
@@ -18,7 +18,7 @@ log("Failure. Was: " + found + ", expected: " + expected); } if (window.testRunner) { - window.testRunner.dumpAsText(); + testRunner.dumpAsText(); // First offset, left edge, LTR text assert(textInputController.firstRectForCharacterRange(0, 0), "20,566,0,18"); // Last offset, right edge, RTL text
diff --git a/third_party/WebKit/LayoutTests/svg/text/foreignObject-text-clipping-bug.xml b/third_party/WebKit/LayoutTests/svg/text/foreignObject-text-clipping-bug.xml index 3ce9d13..824e616 100644 --- a/third_party/WebKit/LayoutTests/svg/text/foreignObject-text-clipping-bug.xml +++ b/third_party/WebKit/LayoutTests/svg/text/foreignObject-text-clipping-bug.xml
@@ -21,7 +21,7 @@ </div> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/selection-doubleclick.svg b/third_party/WebKit/LayoutTests/svg/text/selection-doubleclick.svg index 5c4a9315..8976499 100644 --- a/third_party/WebKit/LayoutTests/svg/text/selection-doubleclick.svg +++ b/third_party/WebKit/LayoutTests/svg/text/selection-doubleclick.svg
@@ -20,6 +20,6 @@ } if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/text/selection-tripleclick.svg b/third_party/WebKit/LayoutTests/svg/text/selection-tripleclick.svg index 965de18..7b62529f 100644 --- a/third_party/WebKit/LayoutTests/svg/text/selection-tripleclick.svg +++ b/third_party/WebKit/LayoutTests/svg/text/selection-tripleclick.svg
@@ -22,6 +22,6 @@ } if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); </script> </svg>
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-align-01-b.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-align-01-b.svg index 3bcf961..9e48bd12 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-align-01-b.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-align-01-b.svg
@@ -74,7 +74,7 @@ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-align-02-b.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-align-02-b.svg index 3c3f377..98fa221 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-align-02-b.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-align-02-b.svg
@@ -63,7 +63,7 @@ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-align-03-b.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-align-03-b.svg index c646042..b124ec4 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-align-03-b.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-align-03-b.svg
@@ -68,7 +68,7 @@ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-align-04-b.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-align-04-b.svg index 675b1768..5806fb7c 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-align-04-b.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-align-04-b.svg
@@ -80,7 +80,7 @@ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-align-05-b.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-align-05-b.svg index 529160fe..3da817f 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-align-05-b.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-align-05-b.svg
@@ -71,7 +71,7 @@ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-align-06-b.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-align-06-b.svg index 47520b9..c08e195 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-align-06-b.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-align-06-b.svg
@@ -62,7 +62,7 @@ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-deco-01-b.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-deco-01-b.svg index a377b89..0a1e7f5 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-deco-01-b.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-deco-01-b.svg
@@ -63,7 +63,7 @@ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-fonts-01-t.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-fonts-01-t.svg index 1e6011a..75f2a83 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-fonts-01-t.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-fonts-01-t.svg
@@ -96,7 +96,7 @@ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-fonts-02-t.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-fonts-02-t.svg index 2272bbcd..899c356 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-fonts-02-t.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-fonts-02-t.svg
@@ -72,7 +72,7 @@ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-intro-05-t.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-intro-05-t.svg index c5f7aed..479aac7e 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-intro-05-t.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-intro-05-t.svg
@@ -38,7 +38,7 @@ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-path-01-b.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-path-01-b.svg index 32e0b12..025df01 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-path-01-b.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-path-01-b.svg
@@ -81,7 +81,7 @@ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-spacing-01-b.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-spacing-01-b.svg index c3983080..5e70ef6 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-spacing-01-b.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-spacing-01-b.svg
@@ -53,7 +53,7 @@ <rect id="test-frame" x="1" y="1" width="78" height="58" fill="none" stroke="#000000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-text-01-b.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-text-01-b.svg index 10330094..0d18d9b 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-text-01-b.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-text-01-b.svg
@@ -209,7 +209,7 @@ <rect id="test-frame" x="1" y="1" width="158" height="118" fill="none" stroke="#000000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-text-03-b.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-text-03-b.svg index 295b0759..0b53143 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-text-03-b.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-text-03-b.svg
@@ -67,7 +67,7 @@ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-text-04-t.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-text-04-t.svg index 37d2b12..d4810a1 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-text-04-t.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-text-04-t.svg
@@ -210,7 +210,7 @@ <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-text-06-t.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-text-06-t.svg index af336c3..27c79bc 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-text-06-t.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-text-06-t.svg
@@ -102,7 +102,7 @@ <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-text-07-t.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-text-07-t.svg index d4f10f9..fd1c2e7 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-text-07-t.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-text-07-t.svg
@@ -41,7 +41,7 @@ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-text-08-b.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-text-08-b.svg index e34af08..e1d4058 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-text-08-b.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-text-08-b.svg
@@ -48,7 +48,7 @@ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-tselect-01-b.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-tselect-01-b.svg index a767cca..7a24b19 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-tselect-01-b.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-tselect-01-b.svg
@@ -70,7 +70,7 @@ </g> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-tselect-02-f.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-tselect-02-f.svg index 0989166..1ec4184 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-tselect-02-f.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-tselect-02-f.svg
@@ -124,7 +124,7 @@ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-tspan-01-b.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-tspan-01-b.svg index d8313b2..c908cfe 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-tspan-01-b.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-tspan-01-b.svg
@@ -86,7 +86,7 @@ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-ws-01-t.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-ws-01-t.svg index f68ee84..a2177652 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-ws-01-t.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-ws-01-t.svg
@@ -97,7 +97,7 @@ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/text-selection-ws-02-t.svg b/third_party/WebKit/LayoutTests/svg/text/text-selection-ws-02-t.svg index c144237..d92518e0 100644 --- a/third_party/WebKit/LayoutTests/svg/text/text-selection-ws-02-t.svg +++ b/third_party/WebKit/LayoutTests/svg/text/text-selection-ws-02-t.svg
@@ -102,7 +102,7 @@ <rect id="test-frame" x="1" y="1" width="478" height="358" fill="none" stroke="#000000"/> <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/svg/text/textPathBoundsBug.svg b/third_party/WebKit/LayoutTests/svg/text/textPathBoundsBug.svg index 7cae871..b720a12 100644 --- a/third_party/WebKit/LayoutTests/svg/text/textPathBoundsBug.svg +++ b/third_party/WebKit/LayoutTests/svg/text/textPathBoundsBug.svg
@@ -7,7 +7,7 @@ <script> if (window.testRunner) - window.testRunner.dumpSelectionRect(); + testRunner.dumpSelectionRect(); var range = document.createRange(); range.selectNode(window.document.documentElement); var selection = window.getSelection();
diff --git a/third_party/WebKit/LayoutTests/synthetic_gestures/synthetic-pinch-zoom-gesture.html b/third_party/WebKit/LayoutTests/synthetic_gestures/synthetic-pinch-zoom-gesture.html index 2bb48cd..73179aa 100644 --- a/third_party/WebKit/LayoutTests/synthetic_gestures/synthetic-pinch-zoom-gesture.html +++ b/third_party/WebKit/LayoutTests/synthetic_gestures/synthetic-pinch-zoom-gesture.html
@@ -47,8 +47,8 @@ function runTest(testCase) { return new Promise((resolve, reject) => { - window.internals.setPageScaleFactor(testCase.starting_scale); - window.internals.setVisualViewportOffset( + internals.setPageScaleFactor(testCase.starting_scale); + internals.setVisualViewportOffset( window.innerWidth * (1 - (1 / testCase.starting_scale)) / 2, window.innerHeight * (1 - (1 / testCase.starting_scale)) / 2);
diff --git a/third_party/WebKit/LayoutTests/tables/hittesting/filltable-emptycells.html b/third_party/WebKit/LayoutTests/tables/hittesting/filltable-emptycells.html index 8240660..b74ed45 100644 --- a/third_party/WebKit/LayoutTests/tables/hittesting/filltable-emptycells.html +++ b/third_party/WebKit/LayoutTests/tables/hittesting/filltable-emptycells.html
@@ -15,7 +15,7 @@ if (window.testRunner) { testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); } function isEmpty(row, col) { @@ -48,7 +48,7 @@ } document.body.innerHTML = (failed ? "FAIL!!!<br/>" : "SUCCESS!!!<br/>") +logMsg; if (window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } } </script>
diff --git a/third_party/WebKit/LayoutTests/tables/hittesting/filltable-levels.html b/third_party/WebKit/LayoutTests/tables/hittesting/filltable-levels.html index ee43a8e..b80dc97 100644 --- a/third_party/WebKit/LayoutTests/tables/hittesting/filltable-levels.html +++ b/third_party/WebKit/LayoutTests/tables/hittesting/filltable-levels.html
@@ -18,8 +18,8 @@ if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } function clearHitArray() { @@ -82,7 +82,7 @@ } document.body.innerHTML =(failed ? "FAIL!!!<br/>" : "SUCCESS!!!<br/>") +logMsg; if (window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } } </script>
diff --git a/third_party/WebKit/LayoutTests/tables/hittesting/filltable-outline.html b/third_party/WebKit/LayoutTests/tables/hittesting/filltable-outline.html index 5858068..e5c83302 100644 --- a/third_party/WebKit/LayoutTests/tables/hittesting/filltable-outline.html +++ b/third_party/WebKit/LayoutTests/tables/hittesting/filltable-outline.html
@@ -18,8 +18,8 @@ var failed = false; if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } for (var row = 0; row < 10; ++row) { @@ -60,7 +60,7 @@ outline2.style.outline = "none"; document.body.innerHTML =(failed ? "FAIL!!!<br/>" : "SUCCESS!!!<br/>") +logMsg; if (window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/tables/hittesting/filltable-rtl.html b/third_party/WebKit/LayoutTests/tables/hittesting/filltable-rtl.html index 966ae15..3f7e6b6 100644 --- a/third_party/WebKit/LayoutTests/tables/hittesting/filltable-rtl.html +++ b/third_party/WebKit/LayoutTests/tables/hittesting/filltable-rtl.html
@@ -16,8 +16,8 @@ [false, false, false]]; if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } function clearHitArray() { @@ -72,7 +72,7 @@ } document.body.innerHTML =(failed ? "FAIL!!!<br/>" : "SUCCESS!!!<br/>") +logMsg; if (window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/tables/hittesting/filltable-stress.html b/third_party/WebKit/LayoutTests/tables/hittesting/filltable-stress.html index 7b37932..421946c 100644 --- a/third_party/WebKit/LayoutTests/tables/hittesting/filltable-stress.html +++ b/third_party/WebKit/LayoutTests/tables/hittesting/filltable-stress.html
@@ -16,7 +16,7 @@ if (window.testRunner) { testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); } function cellHit(cell) { @@ -42,7 +42,7 @@ } document.body.innerHTML =(failed ? "FAIL!!!<br/>" : "SUCCESS!!!<br/>") +logMsg; if (window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } }
diff --git a/third_party/WebKit/LayoutTests/touchadjustment/touch-links-active.html b/third_party/WebKit/LayoutTests/touchadjustment/touch-links-active.html index 3bd9059..19a16c0 100644 --- a/third_party/WebKit/LayoutTests/touchadjustment/touch-links-active.html +++ b/third_party/WebKit/LayoutTests/touchadjustment/touch-links-active.html
@@ -125,7 +125,7 @@ debug('This test requires DumpRenderTree'); return; } - if (!window.eventSender.gestureShowPress) { + if (!eventSender.gestureShowPress) { debug('GestureShowPress not supported by this platform'); return; }
diff --git a/third_party/WebKit/LayoutTests/transforms/2d/set-transform-and-top.html b/third_party/WebKit/LayoutTests/transforms/2d/set-transform-and-top.html index bf5a173..c6104e5 100644 --- a/third_party/WebKit/LayoutTests/transforms/2d/set-transform-and-top.html +++ b/third_party/WebKit/LayoutTests/transforms/2d/set-transform-and-top.html
@@ -34,8 +34,8 @@ checkPosition("b"); if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.notifyDone(); + testRunner.dumpAsText(); + testRunner.notifyDone(); } } </script> @@ -47,7 +47,7 @@ <script> if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); setTimeout(move, 10); function move() {
diff --git a/third_party/WebKit/LayoutTests/transforms/hit-test-large-scale.html b/third_party/WebKit/LayoutTests/transforms/hit-test-large-scale.html index d7d2bd98..a5f2988 100644 --- a/third_party/WebKit/LayoutTests/transforms/hit-test-large-scale.html +++ b/third_party/WebKit/LayoutTests/transforms/hit-test-large-scale.html
@@ -3,7 +3,7 @@ <head> <script> if (window.testRunner) - window.testRunner.dumpAsText() + testRunner.dumpAsText() function runTest() {
diff --git a/third_party/WebKit/LayoutTests/transforms/selection-bounds-in-transformed-view.html b/third_party/WebKit/LayoutTests/transforms/selection-bounds-in-transformed-view.html index 109aa22e..8e0e2ad 100644 --- a/third_party/WebKit/LayoutTests/transforms/selection-bounds-in-transformed-view.html +++ b/third_party/WebKit/LayoutTests/transforms/selection-bounds-in-transformed-view.html
@@ -22,15 +22,15 @@ <script> function resetScroll() { window.scrollTo(1000, 1000); - window.internals.setVisualViewportOffset(400, 300); + internals.setVisualViewportOffset(400, 300); } if (window.internals) { - window.internals.setPageScaleFactor(2); + internals.setPageScaleFactor(2); test(() => { resetScroll(); - window.internals.settings.setPreferCompositingToLCDTextEnabled( + internals.settings.setPreferCompositingToLCDTextEnabled( true); document.execCommand("FindString", false, "target"); assert_equals(internals.visualViewportScrollX(), 167); @@ -40,7 +40,7 @@ test(() => { resetScroll(); - window.internals.settings.setPreferCompositingToLCDTextEnabled( + internals.settings.setPreferCompositingToLCDTextEnabled( false); document.execCommand("FindString", false, "target"); assert_equals(internals.visualViewportScrollX(), 167);
diff --git a/third_party/WebKit/LayoutTests/transforms/transform-hit-test-flipped.html b/third_party/WebKit/LayoutTests/transforms/transform-hit-test-flipped.html index 660b7fd1a..055ddbb 100644 --- a/third_party/WebKit/LayoutTests/transforms/transform-hit-test-flipped.html +++ b/third_party/WebKit/LayoutTests/transforms/transform-hit-test-flipped.html
@@ -12,7 +12,7 @@ </style> <script> if (window.testRunner) - window.testRunner.dumpAsText() + testRunner.dumpAsText() function runTest() {
diff --git a/third_party/WebKit/LayoutTests/transitions/3d/interrupted-transition.html b/third_party/WebKit/LayoutTests/transitions/3d/interrupted-transition.html index ec92d33..a347d18 100644 --- a/third_party/WebKit/LayoutTests/transitions/3d/interrupted-transition.html +++ b/third_party/WebKit/LayoutTests/transitions/3d/interrupted-transition.html
@@ -13,8 +13,8 @@ <script> if (window.testRunner) { - window.testRunner.dumpAsText(); - window.testRunner.waitUntilDone(); + testRunner.dumpAsText(); + testRunner.waitUntilDone(); } var NUMBER_OF_INTERRUPTIONS = 30; @@ -35,7 +35,7 @@ results.innerText = "The transition completed successfully."; if (window.testRunner) - window.testRunner.notifyDone(); + testRunner.notifyDone(); } window.addEventListener("load", function () {
diff --git a/third_party/WebKit/LayoutTests/transitions/opacity-transition-zindex.html b/third_party/WebKit/LayoutTests/transitions/opacity-transition-zindex.html index 0e0c9ca..f979b86 100644 --- a/third_party/WebKit/LayoutTests/transitions/opacity-transition-zindex.html +++ b/third_party/WebKit/LayoutTests/transitions/opacity-transition-zindex.html
@@ -53,8 +53,8 @@ // dump the tree in the middle of the transition if (window.internals) { - window.internals.forceCompositingUpdate(document); - window.internals.pauseAnimations(2.5); + internals.forceCompositingUpdate(document); + internals.pauseAnimations(2.5); } if (window.testRunner) { waitForCompositor().then(() => {
diff --git a/third_party/WebKit/LayoutTests/transitions/resources/opacity-transform-transitions-inside-iframe-inner.html b/third_party/WebKit/LayoutTests/transitions/resources/opacity-transform-transitions-inside-iframe-inner.html index 93ce2864..18ef984 100644 --- a/third_party/WebKit/LayoutTests/transitions/resources/opacity-transform-transitions-inside-iframe-inner.html +++ b/third_party/WebKit/LayoutTests/transitions/resources/opacity-transform-transitions-inside-iframe-inner.html
@@ -55,8 +55,8 @@ // dump the pixel in the middle of the transition if (window.internals) { - window.internals.forceCompositingUpdate(document); - window.internals.pauseAnimations(0.5); + internals.forceCompositingUpdate(document); + internals.pauseAnimations(0.5); } waitForCompositor().then(() => { triggerPixelResults();
diff --git a/third_party/WebKit/LayoutTests/virtual/android/frame-size/intersection-observer-root-uses-frame-size.html b/third_party/WebKit/LayoutTests/virtual/android/frame-size/intersection-observer-root-uses-frame-size.html index 7b9ca25..b703da0 100644 --- a/third_party/WebKit/LayoutTests/virtual/android/frame-size/intersection-observer-root-uses-frame-size.html +++ b/third_party/WebKit/LayoutTests/virtual/android/frame-size/intersection-observer-root-uses-frame-size.html
@@ -1,7 +1,7 @@ <!DOCTYPE html> <script> if (window.internals) - window.internals.settings.setViewportMetaEnabled(true); + internals.settings.setViewportMetaEnabled(true); </script> <script src="../../../resources/testharness.js"></script> <script src="../../../resources/testharnessreport.js"></script> @@ -79,7 +79,7 @@ addEventListener("load", () => { if (window.internals) - window.internals.setPageScaleFactor(0.5); + internals.setPageScaleFactor(0.5); promise_test( t => { return new Promise((resolve, reject) => {
diff --git a/third_party/WebKit/LayoutTests/virtual/android/rootscroller/nested-rootscroller-browser-controls-bounds-hidden.html b/third_party/WebKit/LayoutTests/virtual/android/rootscroller/nested-rootscroller-browser-controls-bounds-hidden.html index efc9b31e..009307e3 100644 --- a/third_party/WebKit/LayoutTests/virtual/android/rootscroller/nested-rootscroller-browser-controls-bounds-hidden.html +++ b/third_party/WebKit/LayoutTests/virtual/android/rootscroller/nested-rootscroller-browser-controls-bounds-hidden.html
@@ -6,7 +6,7 @@ // NOTE: It is important that this test be run with the Android viewport // flags turned on. if (window.internals) - window.internals.setBrowserControlsState(100, 0, true); + internals.setBrowserControlsState(100, 0, true); addEventListener("load", function() { var iframe = document.getElementById("iframe"); @@ -14,7 +14,7 @@ iframe.contentDocument.rootScroller = iframe.contentDocument.getElementById("scroller"); if (window.internals) - window.internals.setBrowserControlsShownRatio(0); + internals.setBrowserControlsShownRatio(0); runAfterLayoutAndPaint(() => { testRunner.notifyDone(); }, true); });
diff --git a/third_party/WebKit/LayoutTests/virtual/android/rootscroller/nested-rootscroller-browser-controls-bounds-shown.html b/third_party/WebKit/LayoutTests/virtual/android/rootscroller/nested-rootscroller-browser-controls-bounds-shown.html index 54f3f8d7..b0b89716 100644 --- a/third_party/WebKit/LayoutTests/virtual/android/rootscroller/nested-rootscroller-browser-controls-bounds-shown.html +++ b/third_party/WebKit/LayoutTests/virtual/android/rootscroller/nested-rootscroller-browser-controls-bounds-shown.html
@@ -6,7 +6,7 @@ // NOTE: It is important that this test be run with the Android viewport // flags turned on. if (window.internals) - window.internals.setBrowserControlsState(100, 0, false); + internals.setBrowserControlsState(100, 0, false); addEventListener("load", function() { var iframe = document.getElementById("iframe"); @@ -14,7 +14,7 @@ iframe.contentDocument.rootScroller = iframe.contentDocument.getElementById("scroller"); if (window.internals) - window.internals.setBrowserControlsShownRatio(1); + internals.setBrowserControlsShownRatio(1); runAfterLayoutAndPaint(() => { testRunner.notifyDone(); }, true); });
diff --git a/third_party/WebKit/LayoutTests/virtual/android/rootscroller/position-fixed-in-unscrollable-document-iframe.html b/third_party/WebKit/LayoutTests/virtual/android/rootscroller/position-fixed-in-unscrollable-document-iframe.html index 02ae791b..19f0551 100644 --- a/third_party/WebKit/LayoutTests/virtual/android/rootscroller/position-fixed-in-unscrollable-document-iframe.html +++ b/third_party/WebKit/LayoutTests/virtual/android/rootscroller/position-fixed-in-unscrollable-document-iframe.html
@@ -4,7 +4,7 @@ // This test is correct if the bottom of the screen has two bars, an orange // one over top of a green one. if (window.internals) { - window.internals.setBrowserControlsState(100, 0, false); + internals.setBrowserControlsState(100, 0, false); } addEventListener("load", function() { document.rootScroller = document.getElementById("iframe");
diff --git a/third_party/WebKit/LayoutTests/virtual/android/rootscroller/position-fixed-in-unscrollable-document.html b/third_party/WebKit/LayoutTests/virtual/android/rootscroller/position-fixed-in-unscrollable-document.html index ced33ec..ec65563 100644 --- a/third_party/WebKit/LayoutTests/virtual/android/rootscroller/position-fixed-in-unscrollable-document.html +++ b/third_party/WebKit/LayoutTests/virtual/android/rootscroller/position-fixed-in-unscrollable-document.html
@@ -4,7 +4,7 @@ // This test is correct if the bottom of the screen has two bars, an orange // one over top of a green one. if (window.internals) { - window.internals.setBrowserControlsState(100, 0, false); + internals.setBrowserControlsState(100, 0, false); } addEventListener("load", function() { document.rootScroller = document.getElementById("scroller");
diff --git a/third_party/WebKit/LayoutTests/virtual/android/url-bar/bottom-fixed-adjusted-when-showing-url-bar.html b/third_party/WebKit/LayoutTests/virtual/android/url-bar/bottom-fixed-adjusted-when-showing-url-bar.html index c30ba3f..1ea8f5b 100644 --- a/third_party/WebKit/LayoutTests/virtual/android/url-bar/bottom-fixed-adjusted-when-showing-url-bar.html +++ b/third_party/WebKit/LayoutTests/virtual/android/url-bar/bottom-fixed-adjusted-when-showing-url-bar.html
@@ -7,10 +7,10 @@ // fully without causing a resize. i.e. as if the user dragged them into view // but hasn't lifted their finger. if (window.internals) { - window.internals.setBrowserControlsShownRatio(0); - window.internals.setBrowserControlsState(100, 0, false); - window.internals.setBrowserControlsShownRatio(1); - window.internals.settings.setHideScrollbars(true); + internals.setBrowserControlsShownRatio(0); + internals.setBrowserControlsState(100, 0, false); + internals.setBrowserControlsShownRatio(1); + internals.settings.setHideScrollbars(true); } </script> <style>
diff --git a/third_party/WebKit/LayoutTests/virtual/custom-user-timing/http/tests/performance-timing/custom-user-timing/po-customusertiming-measure-expected.txt b/third_party/WebKit/LayoutTests/virtual/custom-user-timing/http/tests/performance-timing/custom-user-timing/po-customusertiming-measure-expected.txt new file mode 100644 index 0000000..a5fb8d7 --- /dev/null +++ b/third_party/WebKit/LayoutTests/virtual/custom-user-timing/http/tests/performance-timing/custom-user-timing/po-customusertiming-measure-expected.txt
@@ -0,0 +1,5 @@ +This is a testharness.js-based test. +PASS measure entries' detail and start/end are customizable +PASS measure should throw exception when passing option object and end at the same time +Harness: the test ran to completion. +
diff --git a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt index 85998a7..647b13d4 100644 --- a/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt +++ b/third_party/WebKit/LayoutTests/virtual/disable-spv175/compositing/layer-creation/fixed-position-out-of-view-positioning-expected.txt
@@ -1,4 +1,4 @@ -PASS layerTree is window.internals.layerTreeAsText(document) +PASS layerTree is internals.layerTreeAsText(document) PASS successfullyParsed is true TEST COMPLETE
diff --git a/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt b/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt index 5cea4ef..23d052d 100644 --- a/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt +++ b/third_party/WebKit/LayoutTests/virtual/stable/webexposed/global-interface-listing-expected.txt
@@ -3567,6 +3567,11 @@ getter target getter time method constructor +interface Keyboard + attribute @@toStringTag + method constructor + method lock + method unlock interface KeyboardEvent : UIEvent attribute @@toStringTag attribute DOM_KEY_LOCATION_LEFT @@ -4005,6 +4010,7 @@ getter doNotTrack getter geolocation getter hardwareConcurrency + getter keyboard getter language getter languages getter maxTouchPoints
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/animations/cancel-unattached-animation.html b/third_party/WebKit/LayoutTests/virtual/threaded/animations/cancel-unattached-animation.html index 2eb62c9..49359b0 100644 --- a/third_party/WebKit/LayoutTests/virtual/threaded/animations/cancel-unattached-animation.html +++ b/third_party/WebKit/LayoutTests/virtual/threaded/animations/cancel-unattached-animation.html
@@ -11,7 +11,7 @@ function receiveMessage(e) { frame.style.visibility = "visible"; if (window.internals) - window.internals.forceCompositingUpdate(document); + internals.forceCompositingUpdate(document); async_handle.done(); }
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/animations/composited-pseudo-element-animation.html b/third_party/WebKit/LayoutTests/virtual/threaded/animations/composited-pseudo-element-animation.html index 424615e8..1d467d5d 100644 --- a/third_party/WebKit/LayoutTests/virtual/threaded/animations/composited-pseudo-element-animation.html +++ b/third_party/WebKit/LayoutTests/virtual/threaded/animations/composited-pseudo-element-animation.html
@@ -23,7 +23,7 @@ // This is a regression test for crbug.com/626571 if (window.testRunner) - window.testRunner.waitUntilDone(); + testRunner.waitUntilDone(); function waitForCompositor() { return dummy.animate({opacity: ['1', '1']}, 1).ready;
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/animations/resources/cancel-unattached-animation-frame.html b/third_party/WebKit/LayoutTests/virtual/threaded/animations/resources/cancel-unattached-animation-frame.html index 34e85ab..7a772753 100644 --- a/third_party/WebKit/LayoutTests/virtual/threaded/animations/resources/cancel-unattached-animation-frame.html +++ b/third_party/WebKit/LayoutTests/virtual/threaded/animations/resources/cancel-unattached-animation-frame.html
@@ -13,7 +13,7 @@ onload = function() { animated.style.opacity = "0"; if (window.internals) - window.internals.forceCompositingUpdate(document); + internals.forceCompositingUpdate(document); parent.postMessage("done", "*"); }; </script>
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-2d-main-expected.html b/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-2d-main-expected.html index db046e1..c9f7412 100644 --- a/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-2d-main-expected.html +++ b/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-2d-main-expected.html
@@ -17,7 +17,7 @@ function imageLoaded() { numTestCount--; if (numTestCount == 0 && window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } } pngImage.addEventListener('load', imageLoaded);
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-2d-main.html b/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-2d-main.html index e49266c..63a9a27 100644 --- a/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-2d-main.html +++ b/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-2d-main.html
@@ -17,7 +17,7 @@ function imageLoaded() { numTestCount--; if (numTestCount == 0 && window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } } pngImage.addEventListener('load', imageLoaded);
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-2d-worker-expected.html b/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-2d-worker-expected.html index db046e1..c9f7412 100644 --- a/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-2d-worker-expected.html +++ b/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-2d-worker-expected.html
@@ -17,7 +17,7 @@ function imageLoaded() { numTestCount--; if (numTestCount == 0 && window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } } pngImage.addEventListener('load', imageLoaded);
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-2d-worker.html b/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-2d-worker.html index 6ebe1c6a..0538023 100644 --- a/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-2d-worker.html +++ b/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-2d-worker.html
@@ -59,7 +59,7 @@ function imageLoaded() { numTestCount--; if (numTestCount == 0 && window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } } pngImage.addEventListener('load', imageLoaded);
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-main-expected.html b/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-main-expected.html index 6de349fe..662bf3517 100644 --- a/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-main-expected.html +++ b/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-main-expected.html
@@ -17,7 +17,7 @@ function imageLoaded() { numTestCount--; if (numTestCount == 0 && window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } } pngImage.addEventListener('load', imageLoaded);
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-main.html b/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-main.html index 69ec02a1..d19eb7f 100644 --- a/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-main.html +++ b/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-main.html
@@ -17,7 +17,7 @@ function imageLoaded() { numTestCount--; if (numTestCount == 0 && window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } } pngImage.addEventListener('load', imageLoaded);
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-worker-expected.html b/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-worker-expected.html index e402eef1..1fb85a9 100644 --- a/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-worker-expected.html +++ b/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-worker-expected.html
@@ -17,7 +17,7 @@ function imageLoaded() { numTestCount--; if (numTestCount == 0 && window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } } pngImage.addEventListener('load', imageLoaded);
diff --git a/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-worker.html b/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-worker.html index e0760ee..1340eb9 100644 --- a/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-worker.html +++ b/third_party/WebKit/LayoutTests/virtual/threaded/fast/idleToBlob/OffscreenCanvas-convertToBlob-webgl-worker.html
@@ -51,7 +51,7 @@ function imageLoaded() { numTestCount--; if (numTestCount == 0 && window.testRunner) { - window.testRunner.notifyDone(); + testRunner.notifyDone(); } } pngImage.addEventListener('load', imageLoaded);
diff --git a/third_party/WebKit/LayoutTests/vr/resources/mock-vr-service.js b/third_party/WebKit/LayoutTests/vr/resources/mock-vr-service.js index 14d965c..a3ea681 100644 --- a/third_party/WebKit/LayoutTests/vr/resources/mock-vr-service.js +++ b/third_party/WebKit/LayoutTests/vr/resources/mock-vr-service.js
@@ -106,7 +106,7 @@ // Convert current document time to monotonic time. var now = window.performance.now() / 1000.0; var diff = - now - window.internals.monotonicTimeToZeroBasedDocumentTime(now); + now - internals.monotonicTimeToZeroBasedDocumentTime(now); now += diff; now *= 1000000;
diff --git a/third_party/WebKit/LayoutTests/webexposed/custom-elements.html b/third_party/WebKit/LayoutTests/webexposed/custom-elements.html index 5332dcf..4e6dfe6 100644 --- a/third_party/WebKit/LayoutTests/webexposed/custom-elements.html +++ b/third_party/WebKit/LayoutTests/webexposed/custom-elements.html
@@ -30,7 +30,7 @@ if (shouldNotThrow('window.customElements.define("a-a", A, {extends: "b"})')) { if (window.internals) { - shouldBeTrue(window.internals.runtimeFlags.customElementsBuiltinEnabled); + shouldBeTrue(internals.runtimeFlags.customElementsBuiltinEnabled); } }
diff --git a/third_party/WebKit/LayoutTests/xr/resources/xr-device-mocking.js b/third_party/WebKit/LayoutTests/xr/resources/xr-device-mocking.js index 5966f4f..de91b030 100644 --- a/third_party/WebKit/LayoutTests/xr/resources/xr-device-mocking.js +++ b/third_party/WebKit/LayoutTests/xr/resources/xr-device-mocking.js
@@ -405,7 +405,7 @@ // Convert current document time to monotonic time. var now = window.performance.now() / 1000.0; - var diff = now - window.internals.monotonicTimeToZeroBasedDocumentTime(now); + var diff = now - internals.monotonicTimeToZeroBasedDocumentTime(now); now += diff; now *= 1000000;
diff --git a/third_party/blink/public/mojom/frame/find_in_page.mojom b/third_party/blink/public/mojom/frame/find_in_page.mojom index abba1e68..ed927d5 100644 --- a/third_party/blink/public/mojom/frame/find_in_page.mojom +++ b/third_party/blink/public/mojom/frame/find_in_page.mojom
@@ -12,6 +12,10 @@ // (and no longer highlight it with special coloring). ClearActiveFindMatch(); + // Request the distance to the nearest find result in a frame from |point| + // defined in fractions of the content document's width and height. + GetNearestFindResult(gfx.mojom.PointF point) => (float distance); + // Returns the bounding boxes of the find-in-page match markers from the // frame. The bounding boxes are returned in find-in-page coordinates. // @@ -34,4 +38,3 @@ (int32 version, array<gfx.mojom.RectF> rects, gfx.mojom.RectF active_match_rect); }; -
diff --git a/third_party/blink/public/platform/modules/webauth/authenticator.mojom b/third_party/blink/public/platform/modules/webauth/authenticator.mojom index b65e0af7..5132963e 100644 --- a/third_party/blink/public/platform/modules/webauth/authenticator.mojom +++ b/third_party/blink/public/platform/modules/webauth/authenticator.mojom
@@ -116,6 +116,33 @@ DISCOURAGED, }; +// Cloud-assisted BLE extension data for getAssertion. +struct CableAuthentication { + // The caBLE version requested. + int32 version; + + // A 16-byte ephemeral identifier that the browser will advertise. + array<uint8, 16> client_eid; + + // A 16-byte ephemeral identifier that the browser expects to receive from a + // responding authenticator. + array<uint8, 16> authenticator_eid; + + // A 32-byte pre-key used to compute a session key to encrypt messages between + // a paired client and authenticator following a successful discovery. + array<uint8, 32> session_pre_key; +}; + +// Cloud-assisted BLE extension data for makeCredential. +struct CableRegistration { + // The requested caBLE version. + int32 version; + + // The 65-byte ECDSA ephemeral public key belonging to the relying party + // for use in establishing an encrypted caBLE channel with an authenticator. + array<uint8, 65> relying_party_public_key; +}; + // Parameters passed into calls to GetAssertion. struct PublicKeyCredentialRequestOptions { // An indefinite-length blob passed from the the relying party server, @@ -139,6 +166,14 @@ // The contents of the appid extension, if any. See // https://w3c.github.io/webauthn/#sctn-appid-extension string? appid; + + // The contents of the cloud assisted BLE extension for getAssertion + // requests, if any. This extension permits browsers and authenticator + // devices to establish a pairingless BLE connection. + // TODO(crbug.com/842371): Add link to spec when available. + // There may be multiple sets if multiple caBLE credentials have been + // registered with the relying party. + array<CableAuthentication> cable_authentication_data; }; // See https://w3c.github.io/webauthn/#enumdef-attestationconveyancepreference @@ -200,6 +235,12 @@ // Specifies whether the RP wants attestation information for the created // credential. AttestationConveyancePreference attestation; + + // The contents of the cloud assisted BLE extension for makeCredential + // requests, if any. This extension permits browsers and authenticator + // devices to establish a pairingless BLE connection. + // TODO(crbug.com/842371): Add link to spec when available. + CableRegistration? cable_registration_data; }; enum PublicKeyCredentialType {
diff --git a/third_party/blink/public/platform/web_feature.mojom b/third_party/blink/public/platform/web_feature.mojom index 3b7d3dc80..23bbb9a 100644 --- a/third_party/blink/public/platform/web_feature.mojom +++ b/third_party/blink/public/platform/web_feature.mojom
@@ -1908,6 +1908,18 @@ kPaymentRequestInvalidCurrencyCode = 2435, kV8ArraySortNoElementsProtector = 2436, kV8ArrayPrototypeSortJSArrayModifiedPrototype = 2437, + kV8Document_PictureInPictureEnabled_AttributeGetter = 2438, + kV8Document_PictureInPictureElement_AttributeGetter = 2439, + kV8Document_ExitPictureInPicture_Method = 2440, + kV8ShadowRoot_PictureInPictureElement_AttributeGetter = 2441, + kV8HTMLVideoElement_DisablePictureInPicture_AttributeGetter = 2442, + kV8HTMLVideoElement_DisablePictureInPicture_AttributeSetter = 2443, + kV8HTMLVideoElement_RequestPictureInPicture_Method = 2444, + kEnterPictureInPictureEventListener = 2445, + kLeavePictureInPictureEventListener = 2446, + kV8PictureInPictureWindow_Height_AttributeGetter = 2447, + kV8PictureInPictureWindow_Width_AttributeGetter = 2448, + kPictureInPictureWindowResizeEventListener = 2449, // Add new features immediately above this line. Don't change assigned // numbers of any item, and don't reuse removed slots.
diff --git a/third_party/blink/public/platform/web_runtime_features.h b/third_party/blink/public/platform/web_runtime_features.h index a8c0536..58d11b87 100644 --- a/third_party/blink/public/platform/web_runtime_features.h +++ b/third_party/blink/public/platform/web_runtime_features.h
@@ -128,7 +128,6 @@ BLINK_PLATFORM_EXPORT static void EnableRenderingPipelineThrottling(bool); BLINK_PLATFORM_EXPORT static void EnableRequireCSSExtensionForFile(bool); BLINK_PLATFORM_EXPORT static void EnableResourceLoadScheduler(bool); - BLINK_PLATFORM_EXPORT static void EnableRootLayerScrolling(bool); BLINK_PLATFORM_EXPORT static void EnableScriptedSpeech(bool); BLINK_PLATFORM_EXPORT static void EnableScrollAnchoring(bool); BLINK_PLATFORM_EXPORT static void EnableScrollAnchorSerialization(bool);
diff --git a/third_party/blink/public/web/web_local_frame.h b/third_party/blink/public/web/web_local_frame.h index 6c9dde6..7869778 100644 --- a/third_party/blink/public/web/web_local_frame.h +++ b/third_party/blink/public/web/web_local_frame.h
@@ -690,10 +690,6 @@ virtual int SelectNearestFindMatch(const WebFloatPoint&, WebRect* selection_rect) = 0; - // Returns the distance (squared) to the closest find-in-page match from the - // provided point, in find-in-page coordinates. - virtual float DistanceToNearestFindMatch(const WebFloatPoint&) = 0; - // Set the tickmarks for the frame. This will override the default tickmarks // generated by find results. If this is called with an empty array, the // default behavior will be restored.
diff --git a/third_party/blink/renderer/bindings/core/v8/BUILD.gn b/third_party/blink/renderer/bindings/core/v8/BUILD.gn index fe5890fc..448e39f48 100644 --- a/third_party/blink/renderer/bindings/core/v8/BUILD.gn +++ b/third_party/blink/renderer/bindings/core/v8/BUILD.gn
@@ -82,6 +82,10 @@ "$bindings_core_v8_output_dir/string_or_css_variable_reference_value.h", "$bindings_core_v8_output_dir/string_or_dictionary.cc", "$bindings_core_v8_output_dir/string_or_dictionary.h", + "$bindings_core_v8_output_dir/string_or_double.cc", + "$bindings_core_v8_output_dir/string_or_double.h", + "$bindings_core_v8_output_dir/string_or_double_or_performance_measure_options.cc", + "$bindings_core_v8_output_dir/string_or_double_or_performance_measure_options.h", "$bindings_core_v8_output_dir/string_or_float.cc", "$bindings_core_v8_output_dir/string_or_float.h", "$bindings_core_v8_output_dir/string_or_string_sequence.cc",
diff --git a/third_party/blink/renderer/core/animation/css/css_animation_update.h b/third_party/blink/renderer/core/animation/css/css_animation_update.h index 65f5f2f..0b795b63 100644 --- a/third_party/blink/renderer/core/animation/css/css_animation_update.h +++ b/third_party/blink/renderer/core/animation/css/css_animation_update.h
@@ -31,13 +31,15 @@ size_t name_index, const InertEffect& effect, Timing timing, - StyleRuleKeyframes* style_rule) + StyleRuleKeyframes* style_rule, + const Vector<EAnimPlayState>& play_state_list) : name(name), name_index(name_index), effect(effect), timing(timing), style_rule(style_rule), - style_rule_version(this->style_rule->Version()) {} + style_rule_version(this->style_rule->Version()), + play_state_list(play_state_list) {} void Trace(blink::Visitor* visitor) { visitor->Trace(effect); @@ -50,6 +52,7 @@ Timing timing; Member<StyleRuleKeyframes> style_rule; unsigned style_rule_version; + Vector<EAnimPlayState> play_state_list; }; class UpdatedCSSAnimation { @@ -60,13 +63,15 @@ Animation* animation, const InertEffect& effect, Timing specified_timing, - StyleRuleKeyframes* style_rule) + StyleRuleKeyframes* style_rule, + const Vector<EAnimPlayState>& play_state_list) : index(index), animation(animation), effect(&effect), specified_timing(specified_timing), style_rule(style_rule), - style_rule_version(this->style_rule->Version()) {} + style_rule_version(this->style_rule->Version()), + play_state_list(play_state_list) {} void Trace(blink::Visitor* visitor) { visitor->Trace(animation); @@ -80,6 +85,7 @@ Timing specified_timing; Member<StyleRuleKeyframes> style_rule; unsigned style_rule_version; + Vector<EAnimPlayState> play_state_list; }; } // namespace blink @@ -106,9 +112,11 @@ size_t name_index, const InertEffect& effect, const Timing& timing, - StyleRuleKeyframes* style_rule) { + StyleRuleKeyframes* style_rule, + const Vector<EAnimPlayState>& play_state_list) { new_animations_.push_back(NewCSSAnimation(animation_name, name_index, - effect, timing, style_rule)); + effect, timing, style_rule, + play_state_list)); } void CancelAnimation(size_t index, const Animation& animation) { cancelled_animation_indices_.push_back(index); @@ -121,9 +129,11 @@ Animation* animation, const InertEffect& effect, const Timing& specified_timing, - StyleRuleKeyframes* style_rule) { - animations_with_updates_.push_back(UpdatedCSSAnimation( - index, animation, effect, specified_timing, style_rule)); + StyleRuleKeyframes* style_rule, + const Vector<EAnimPlayState>& play_state_list) { + animations_with_updates_.push_back( + UpdatedCSSAnimation(index, animation, effect, specified_timing, + style_rule, play_state_list)); suppressed_animations_.insert(animation); } void UpdateCompositorKeyframes(Animation* animation) {
diff --git a/third_party/blink/renderer/core/animation/css/css_animations.cc b/third_party/blink/renderer/core/animation/css/css_animations.cc index f8c0830..2fff9331 100644 --- a/third_party/blink/renderer/core/animation/css/css_animations.cc +++ b/third_party/blink/renderer/core/animation/css/css_animations.cc
@@ -374,10 +374,15 @@ Animation* animation = existing_animation->animation.Get(); + const bool was_paused = + CSSTimingData::GetRepeated(existing_animation->play_state_list, + i) == EAnimPlayState::kPaused; + if (keyframes_rule != existing_animation->style_rule || keyframes_rule->Version() != existing_animation->style_rule_version || - existing_animation->specified_timing != specified_timing) { + existing_animation->specified_timing != specified_timing || + is_paused != was_paused) { DCHECK(!is_animation_style_change); update.UpdateAnimation( existing_animation_index, animation, @@ -386,12 +391,10 @@ element, &style, parent_style, name, keyframe_timing_function.get(), i), timing, is_paused, animation->UnlimitedCurrentTimeInternal()), - specified_timing, keyframes_rule); - } - - if (is_paused != animation->Paused()) { - DCHECK(!is_animation_style_change); - update.ToggleAnimationIndexPaused(existing_animation_index); + specified_timing, keyframes_rule, + animation_data->PlayStateList()); + if (is_paused != was_paused) + update.ToggleAnimationIndexPaused(existing_animation_index); } } else { DCHECK(!is_animation_style_change); @@ -402,7 +405,7 @@ &style, parent_style, name, keyframe_timing_function.get(), i), timing, is_paused, 0), - specified_timing, keyframes_rule); + specified_timing, keyframes_rule, animation_data->PlayStateList()); } } }
diff --git a/third_party/blink/renderer/core/animation/css/css_animations.h b/third_party/blink/renderer/core/animation/css/css_animations.h index 0a7ac039..4aa84f96 100644 --- a/third_party/blink/renderer/core/animation/css/css_animations.h +++ b/third_party/blink/renderer/core/animation/css/css_animations.h
@@ -114,12 +114,14 @@ name_index(new_animation.name_index), specified_timing(new_animation.timing), style_rule(new_animation.style_rule), - style_rule_version(new_animation.style_rule_version) {} + style_rule_version(new_animation.style_rule_version), + play_state_list(new_animation.play_state_list) {} void Update(UpdatedCSSAnimation update) { DCHECK_EQ(update.animation, animation); style_rule = update.style_rule; style_rule_version = update.style_rule_version; + play_state_list = update.play_state_list; specified_timing = update.specified_timing; } @@ -134,6 +136,7 @@ Timing specified_timing; Member<StyleRuleKeyframes> style_rule; unsigned style_rule_version; + Vector<EAnimPlayState> play_state_list; }; struct RunningTransition {
diff --git a/third_party/blink/renderer/core/core_idl_files.gni b/third_party/blink/renderer/core/core_idl_files.gni index 1653bd5..615c892 100644 --- a/third_party/blink/renderer/core/core_idl_files.gni +++ b/third_party/blink/renderer/core/core_idl_files.gni
@@ -646,6 +646,7 @@ "offscreencanvas/image_encode_options.idl", "page/scrolling/scroll_state_init.idl", "timing/performance_mark_options.idl", + "timing/performance_measure_options.idl", "timing/performance_observer_init.idl", "workers/worker_options.idl", "workers/worklet_options.idl",
diff --git a/third_party/blink/renderer/core/frame/find_in_page.cc b/third_party/blink/renderer/core/frame/find_in_page.cc index 5607e29..6cb189f 100644 --- a/third_party/blink/renderer/core/frame/find_in_page.cc +++ b/third_party/blink/renderer/core/frame/find_in_page.cc
@@ -189,15 +189,11 @@ return EnsureTextFinder().SelectNearestFindMatch(point, selection_rect); } -float WebLocalFrameImpl::DistanceToNearestFindMatch( - const WebFloatPoint& point) { - return find_in_page_->DistanceToNearestFindMatch(point); -} - -float FindInPage::DistanceToNearestFindMatch(const WebFloatPoint& point) { - float nearest_distance; - EnsureTextFinder().NearestFindMatch(point, &nearest_distance); - return nearest_distance; +void FindInPage::GetNearestFindResult(const WebFloatPoint& point, + GetNearestFindResultCallback callback) { + float distance; + EnsureTextFinder().NearestFindMatch(point, &distance); + std::move(callback).Run(distance); } void FindInPage::FindMatchRects(int current_version,
diff --git a/third_party/blink/renderer/core/frame/find_in_page.h b/third_party/blink/renderer/core/frame/find_in_page.h index 2e8c3f5..6897513 100644 --- a/third_party/blink/renderer/core/frame/find_in_page.h +++ b/third_party/blink/renderer/core/frame/find_in_page.h
@@ -48,8 +48,6 @@ int SelectNearestFindMatch(const WebFloatPoint&, WebRect* selection_rect); - float DistanceToNearestFindMatch(const WebFloatPoint&); - void SetTickmarks(const WebVector<WebRect>&); int FindMatchMarkersVersion() const; @@ -61,6 +59,11 @@ // mojom::blink::FindInPage overrides + // Returns the distance (squared) to the closest find-in-page match from the + // provided point, in find-in-page coordinates. + void GetNearestFindResult(const WebFloatPoint&, + GetNearestFindResultCallback) final; + // Returns the bounding boxes of the find-in-page match markers in the frame, // in find-in-page coordinates. void FindMatchRects(int current_version, FindMatchRectsCallback) final;
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.h b/third_party/blink/renderer/core/frame/web_local_frame_impl.h index 0c13092..c2d2568 100644 --- a/third_party/blink/renderer/core/frame/web_local_frame_impl.h +++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
@@ -318,7 +318,6 @@ void IncreaseMatchCount(int count, int identifier) override; int SelectNearestFindMatch(const WebFloatPoint&, WebRect* selection_rect) override; - float DistanceToNearestFindMatch(const WebFloatPoint&) override; void SetTickmarks(const WebVector<WebRect>&) override; WebNode ContextMenuNode() const override; WebFrameWidget* FrameWidget() const override;
diff --git a/third_party/blink/renderer/core/html/media/html_video_element.cc b/third_party/blink/renderer/core/html/media/html_video_element.cc index 08e0ea67..5229071 100644 --- a/third_party/blink/renderer/core/html/media/html_video_element.cc +++ b/third_party/blink/renderer/core/html/media/html_video_element.cc
@@ -36,6 +36,7 @@ #include "third_party/blink/renderer/core/frame/local_dom_window.h" #include "third_party/blink/renderer/core/frame/picture_in_picture_controller.h" #include "third_party/blink/renderer/core/frame/settings.h" +#include "third_party/blink/renderer/core/frame/use_counter.h" #include "third_party/blink/renderer/core/fullscreen/fullscreen.h" #include "third_party/blink/renderer/core/fullscreen/fullscreen_options.h" #include "third_party/blink/renderer/core/html/media/media_custom_controls_fullscreen_detector.h" @@ -574,6 +575,20 @@ return HTMLMediaElement::DisplayType(); } +void HTMLVideoElement::AddedEventListener( + const AtomicString& event_type, + RegisteredEventListener& registered_listener) { + if (event_type == EventTypeNames::enterpictureinpicture) { + UseCounter::Count(GetExecutionContext(), + WebFeature::kEnterPictureInPictureEventListener); + } else if (event_type == EventTypeNames::leavepictureinpicture) { + UseCounter::Count(GetExecutionContext(), + WebFeature::kLeavePictureInPictureEventListener); + } + + HTMLMediaElement::AddedEventListener(event_type, registered_listener); +} + bool HTMLVideoElement::IsRemotingInterstitialVisible() const { return remoting_interstitial_ && remoting_interstitial_->IsVisible(); }
diff --git a/third_party/blink/renderer/core/html/media/html_video_element.h b/third_party/blink/renderer/core/html/media/html_video_element.h index 428f4f41..92d75fc 100644 --- a/third_party/blink/renderer/core/html/media/html_video_element.h +++ b/third_party/blink/renderer/core/html/media/html_video_element.h
@@ -154,6 +154,11 @@ void MediaRemotingStopped(WebLocalizedString::Name error_msg) final; WebMediaPlayer::DisplayType DisplayType() const final; + protected: + // EventTarget overrides. + void AddedEventListener(const AtomicString& event_type, + RegisteredEventListener&) override; + private: friend class MediaCustomControlsFullscreenDetectorTest; friend class HTMLMediaElementEventListenersTest;
diff --git a/third_party/blink/renderer/core/layout/layout_box.cc b/third_party/blink/renderer/core/layout/layout_box.cc index c185a1de..cf12019 100644 --- a/third_party/blink/renderer/core/layout/layout_box.cc +++ b/third_party/blink/renderer/core/layout/layout_box.cc
@@ -2556,8 +2556,9 @@ if (container->IsLayoutView()) { bool use_fixed_position_adjustment = - !RuntimeEnabledFeatures::RootLayerScrollingEnabled() && - position == EPosition::kFixed; + position == EPosition::kFixed && + (!RuntimeEnabledFeatures::RootLayerScrollingEnabled() || + container == ancestor); return ToLayoutView(container)->MapToVisualRectInAncestorSpaceInternal( ancestor, transform_state, use_fixed_position_adjustment ? kIsFixed : 0, visual_rect_flags);
diff --git a/third_party/blink/renderer/core/layout/layout_menu_list.cc b/third_party/blink/renderer/core/layout/layout_menu_list.cc index 53e78f13..9c1e12e2 100644 --- a/third_party/blink/renderer/core/layout/layout_menu_list.cc +++ b/third_party/blink/renderer/core/layout/layout_menu_list.cc
@@ -32,6 +32,7 @@ #include "third_party/blink/renderer/core/frame/local_frame_view.h" #include "third_party/blink/renderer/core/html/forms/html_option_element.h" #include "third_party/blink/renderer/core/html/forms/html_select_element.h" +#include "third_party/blink/renderer/core/layout/layout_block_flow.h" #include "third_party/blink/renderer/core/layout/layout_text.h" #include "third_party/blink/renderer/core/layout/layout_theme.h" #include "third_party/blink/renderer/platform/text/platform_locale.h" @@ -59,6 +60,25 @@ return object->IsAnonymous() && !object->IsLayoutFullScreen(); } +scoped_refptr<ComputedStyle> LayoutMenuList::CreateInnerStyle() { + scoped_refptr<ComputedStyle> inner_style = + ComputedStyle::CreateAnonymousStyleWithDisplay(StyleRef(), + EDisplay::kBlock); + + AdjustInnerStyle(*inner_style); + return inner_style; +} + +void LayoutMenuList::UpdateInnerStyle() { + DCHECK(inner_block_); + scoped_refptr<ComputedStyle> inner_style = + ComputedStyle::Clone(inner_block_->StyleRef()); + AdjustInnerStyle(*inner_style); + inner_block_->SetStyleInternal(std::move(inner_style)); + // LayoutMenuList::ControlClipRect() depends on inner_block_->ContentsSize(). + SetNeedsPaintPropertyUpdate(); +} + void LayoutMenuList::CreateInnerBlock() { if (inner_block_) { DCHECK_EQ(FirstChild(), inner_block_); @@ -68,7 +88,8 @@ // Create an anonymous block. DCHECK(!FirstChild()); - inner_block_ = CreateAnonymousBlock(); + inner_block_ = LayoutBlockFlow::CreateAnonymous(&GetDocument()); + inner_block_->SetStyle(CreateInnerStyle()); button_text_ = LayoutText::CreateEmptyAnonymous(GetDocument()); // We need to set the text explicitly though it was specified in the @@ -76,17 +97,25 @@ // specified in the constructor in a case of re-transforming. button_text_->SetStyle(MutableStyle()); inner_block_->AddChild(button_text_); - - AdjustInnerStyle(); LayoutFlexibleBox::AddChild(inner_block_); + + // LayoutMenuList::ControlClipRect() depends on inner_block_->ContentsSize(). + SetNeedsPaintPropertyUpdate(); } -void LayoutMenuList::AdjustInnerStyle() { - ComputedStyle& inner_style = inner_block_->MutableStyleRef(); +bool LayoutMenuList::HasOptionStyleChanged( + const ComputedStyle& inner_style) const { + return option_style_ && + ((option_style_->Direction() != inner_style.Direction() || + option_style_->GetUnicodeBidi() != inner_style.GetUnicodeBidi())); +} + +void LayoutMenuList::AdjustInnerStyle(ComputedStyle& inner_style) const { inner_style.SetFlexGrow(1); inner_style.SetFlexShrink(1); // min-width: 0; is needed for correct shrinking. inner_style.SetMinWidth(Length(0, kFixed)); + // Use margin:auto instead of align-items:center to get safe centering, i.e. // when the content overflows, treat it the same as align-items: flex-start. // But we only do that for the cases where html.css would otherwise use @@ -113,21 +142,16 @@ LayoutTheme::GetTheme().PopupInternalPaddingTop(StyleRef()), kFixed)); inner_style.SetPaddingBottom(Length( LayoutTheme::GetTheme().PopupInternalPaddingBottom(StyleRef()), kFixed)); + inner_style.SetTextAlign(StyleRef().IsLeftToRightDirection() + ? ETextAlign::kLeft + : ETextAlign::kRight); - if (option_style_) { - if ((option_style_->Direction() != inner_style.Direction() || - option_style_->GetUnicodeBidi() != inner_style.GetUnicodeBidi())) - inner_block_->SetNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation( - LayoutInvalidationReason::kStyleChange); - inner_style.SetTextAlign(Style()->IsLeftToRightDirection() - ? ETextAlign::kLeft - : ETextAlign::kRight); + if (HasOptionStyleChanged(inner_style)) { + inner_block_->SetNeedsLayoutAndPrefWidthsRecalcAndFullPaintInvalidation( + LayoutInvalidationReason::kStyleChange); inner_style.SetDirection(option_style_->Direction()); inner_style.SetUnicodeBidi(option_style_->GetUnicodeBidi()); } - - // LayoutMenuList::ControlClipRect() depends on inner_block_->ContentsSize(). - SetNeedsPaintPropertyUpdate(); } HTMLSelectElement* LayoutMenuList::SelectElement() const { @@ -163,7 +187,7 @@ CreateInnerBlock(); button_text_->SetStyle(MutableStyle()); - AdjustInnerStyle(); + UpdateInnerStyle(); UpdateInnerBlockHeight(); } @@ -195,6 +219,7 @@ HTMLSelectElement* select = SelectElement(); HTMLOptionElement* option = select->OptionToBeShown(); String text = g_empty_string; + bool had_option = !!option_style_; option_style_ = nullptr; if (select->IsMultiple()) { @@ -228,6 +253,10 @@ SetText(text.StripWhiteSpace()); DidUpdateActiveOption(option); + + DCHECK(inner_block_); + if (!had_option || HasOptionStyleChanged(inner_block_->StyleRef())) + UpdateInnerStyle(); } void LayoutMenuList::SetText(const String& s) { @@ -245,7 +274,8 @@ is_empty_ = false; button_text_->SetText(s.Impl(), true); } - AdjustInnerStyle(); + // LayoutMenuList::ControlClipRect() depends on inner_block_->ContentsSize(). + SetNeedsPaintPropertyUpdate(); } String LayoutMenuList::GetText() const {
diff --git a/third_party/blink/renderer/core/layout/layout_menu_list.h b/third_party/blink/renderer/core/layout/layout_menu_list.h index ed2c9ae..af1433ea 100644 --- a/third_party/blink/renderer/core/layout/layout_menu_list.h +++ b/third_party/blink/renderer/core/layout/layout_menu_list.h
@@ -94,7 +94,10 @@ } void CreateInnerBlock(); - void AdjustInnerStyle(); + scoped_refptr<ComputedStyle> CreateInnerStyle(); + void UpdateInnerStyle(); + void AdjustInnerStyle(ComputedStyle&) const; + bool HasOptionStyleChanged(const ComputedStyle& inner_style) const; void SetText(const String&); void UpdateInnerBlockHeight(); void UpdateOptionsWidth() const;
diff --git a/third_party/blink/renderer/core/layout/layout_object_child_list.cc b/third_party/blink/renderer/core/layout/layout_object_child_list.cc index cb9f7ffe..ac27854ce 100644 --- a/third_party/blink/renderer/core/layout/layout_object_child_list.cc +++ b/third_party/blink/renderer/core/layout/layout_object_child_list.cc
@@ -30,6 +30,7 @@ #include "third_party/blink/renderer/core/layout/layout_counter.h" #include "third_party/blink/renderer/core/layout/layout_object.h" #include "third_party/blink/renderer/core/layout/layout_view.h" +#include "third_party/blink/renderer/core/layout/ng/inline/layout_ng_text.h" #include "third_party/blink/renderer/core/paint/object_paint_invalidator.h" namespace blink { @@ -167,9 +168,16 @@ last_child_ = new_child; } - if (!owner->DocumentBeingDestroyed() && notify_layout_object) { - new_child->InsertedIntoTree(); - LayoutCounter::LayoutObjectSubtreeAttached(new_child); + if (!owner->DocumentBeingDestroyed()) { + if (notify_layout_object) { + new_child->InsertedIntoTree(); + LayoutCounter::LayoutObjectSubtreeAttached(new_child); + } else if (new_child->IsLayoutNGText()) { + // |notify_layout_object| is an optimization to skip notifications when + // moving within the same tree. Inline items need to be invalidated even + // when moving. + ToLayoutNGText(new_child)->InvalidateInlineItems(); + } } // Propagate the need to notify ancestors down into any
diff --git a/third_party/blink/renderer/core/layout/ng/inline/layout_ng_text.h b/third_party/blink/renderer/core/layout/ng/inline/layout_ng_text.h index ca63843..f99382c 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/layout_ng_text.h +++ b/third_party/blink/renderer/core/layout/ng/inline/layout_ng_text.h
@@ -32,6 +32,10 @@ return inline_items_; } + // Inline items depends on context. It needs to be invalidated not only when + // it was inserted/changed but also it was moved. + void InvalidateInlineItems() { valid_ng_items_ = false; } + void ClearInlineItems() { inline_items_.clear(); valid_ng_items_ = false; @@ -42,6 +46,12 @@ valid_ng_items_ = true; } + protected: + void InsertedIntoTree() override { + valid_ng_items_ = false; + LayoutText::InsertedIntoTree(); + } + private: Vector<NGInlineItem*> inline_items_; };
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_item.cc b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_item.cc index e6b7c57..1afce4f 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_item.cc +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_item.cc
@@ -122,6 +122,13 @@ return kNGInlineItemTypeStrings[val]; } +void NGInlineItem::SetBidiLevel(UBiDiLevel level) { + // Invalidate ShapeResult because it depends on the resolved direction. + if (DirectionFromLevel(level) != DirectionFromLevel(bidi_level_)) + shape_result_ = nullptr; + bidi_level_ = level; +} + // Set bidi level to a list of NGInlineItem from |index| to the item that ends // with |end_offset|. // If |end_offset| is mid of an item, the item is split to ensure each item has @@ -136,14 +143,14 @@ unsigned end_offset, UBiDiLevel level) { for (; items[index].end_offset_ < end_offset; index++) - items[index].bidi_level_ = level; - items[index].bidi_level_ = level; + items[index].SetBidiLevel(level); + items[index].SetBidiLevel(level); if (items[index].end_offset_ == end_offset) { // Let close items have the same bidi-level as the previous item. while (index + 1 < items.size() && items[index + 1].Type() == NGInlineItem::kCloseTag) { - items[++index].bidi_level_ = level; + items[++index].SetBidiLevel(level); } } else { Split(items, index, end_offset); @@ -175,11 +182,10 @@ unsigned offset) { DCHECK_GT(offset, items[index].start_offset_); DCHECK_LT(offset, items[index].end_offset_); + items[index].shape_result_ = nullptr; items.insert(index + 1, items[index]); items[index].end_offset_ = offset; - items[index].shape_result_ = nullptr; items[index + 1].start_offset_ = offset; - items[index + 1].shape_result_ = nullptr; } void NGInlineItem::SetOffset(unsigned start, unsigned end) {
diff --git a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_item.h b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_item.h index 2abfb2f..dd0ecf5 100644 --- a/third_party/blink/renderer/core/layout/ng/inline/ng_inline_item.h +++ b/third_party/blink/renderer/core/layout/ng/inline/ng_inline_item.h
@@ -132,6 +132,7 @@ bool EndMayCollapse() const { return end_may_collapse_; } static void Split(Vector<NGInlineItem>&, unsigned index, unsigned offset); + void SetBidiLevel(UBiDiLevel); static unsigned SetBidiLevel(Vector<NGInlineItem>&, unsigned index, unsigned end_offset,
diff --git a/third_party/blink/renderer/core/layout/visual_rect_mapping_test.cc b/third_party/blink/renderer/core/layout/visual_rect_mapping_test.cc index 6bbcd78..b2ad118e 100644 --- a/third_party/blink/renderer/core/layout/visual_rect_mapping_test.cc +++ b/third_party/blink/renderer/core/layout/visual_rect_mapping_test.cc
@@ -1025,6 +1025,34 @@ ancestor, kDefaultVisualRectFlags, true); } +TEST_P(VisualRectMappingTest, FixedContentsUnderViewWithScrollOffset) { + GetDocument().GetFrame()->GetSettings()->SetPreferCompositingToLCDTextEnabled( + true); + SetBodyInnerHTML(R"HTML( + <style>body { margin:0; } ::-webkit-scrollbar { display:none; }</style> + <div id='fixed' style=' + position:fixed; top:0; left:0; width:400px; height:300px;'> + </div> + <div id='forcescroll' style='height:1000px;'></div> + )HTML"); + + auto* fixed = GetDocument().getElementById("fixed")->GetLayoutObject(); + + CheckMapToVisualRectInAncestorSpace( + LayoutRect(0, 0, 400, 300), LayoutRect(0, 0, 400, 300), fixed, + fixed->View(), kDefaultVisualRectFlags, true); + + GetDocument().View()->LayoutViewportScrollableArea()->SetScrollOffset( + ScrollOffset(0, 50), kProgrammaticScroll); + GetDocument().View()->UpdateAllLifecyclePhases(); + + // Results of mapping to ancestor are in absolute coordinates of the + // ancestor. Therefore a fixed-position element is (reverse) offset by scroll. + CheckMapToVisualRectInAncestorSpace( + LayoutRect(0, 0, 400, 300), LayoutRect(0, 50, 400, 300), fixed, + fixed->View(), kDefaultVisualRectFlags, true); +} + TEST_P(VisualRectMappingTest, InclusiveIntersect) { GetDocument().SetBaseURLOverride(KURL("http://test.com")); SetBodyInnerHTML(R"HTML(
diff --git a/third_party/blink/renderer/core/timing/BUILD.gn b/third_party/blink/renderer/core/timing/BUILD.gn index 44b85848..43ca5d90 100644 --- a/third_party/blink/renderer/core/timing/BUILD.gn +++ b/third_party/blink/renderer/core/timing/BUILD.gn
@@ -22,6 +22,7 @@ "performance_long_task_timing.h", "performance_mark.cc", "performance_mark.h", + "performance_measure.cc", "performance_measure.h", "performance_navigation.cc", "performance_navigation.h",
diff --git a/third_party/blink/renderer/core/timing/performance.cc b/third_party/blink/renderer/core/timing/performance.cc index e8de057..a1032323 100644 --- a/third_party/blink/renderer/core/timing/performance.cc +++ b/third_party/blink/renderer/core/timing/performance.cc
@@ -33,6 +33,7 @@ #include <algorithm> #include "third_party/blink/renderer/bindings/core/v8/double_or_performance_mark_options.h" +#include "third_party/blink/renderer/bindings/core/v8/string_or_double_or_performance_measure_options.h" #include "third_party/blink/renderer/bindings/core/v8/v8_object_builder.h" #include "third_party/blink/renderer/core/dom/document.h" #include "third_party/blink/renderer/core/dom/document_timing.h" @@ -43,6 +44,8 @@ #include "third_party/blink/renderer/core/loader/document_loader.h" #include "third_party/blink/renderer/core/timing/performance_event_timing.h" #include "third_party/blink/renderer/core/timing/performance_long_task_timing.h" +#include "third_party/blink/renderer/core/timing/performance_measure.h" +#include "third_party/blink/renderer/core/timing/performance_measure_options.h" #include "third_party/blink/renderer/core/timing/performance_observer.h" #include "third_party/blink/renderer/core/timing/performance_resource_timing.h" #include "third_party/blink/renderer/core/timing/performance_user_timing.h" @@ -587,27 +590,158 @@ user_timing_->ClearMarks(mark_name); } -void Performance::measure(const String& measure_name, - const String& start_mark, - const String& end_mark, - ExceptionState& exception_state) { +PerformanceMeasure* Performance::measure(ScriptState* script_state, + const String& measure_name, + ExceptionState& exception_state) { + return measureInternal(script_state, measure_name, + NativeValueTraits<StringOrDouble>::NullValue(), + NativeValueTraits<StringOrDouble>::NullValue(), + ScriptValue::CreateNull(script_state), + exception_state); +} + +PerformanceMeasure* Performance::measure( + ScriptState* script_state, + const String& measure_name, + const StringOrDoubleOrPerformanceMeasureOptions& start_or_options, + ExceptionState& exception_state) { + return measureInternal(script_state, measure_name, start_or_options, + NativeValueTraits<StringOrDouble>::NullValue(), true, + exception_state); +} + +PerformanceMeasure* Performance::measure( + ScriptState* script_state, + const String& measure_name, + const StringOrDoubleOrPerformanceMeasureOptions& start_or_options, + const StringOrDouble& end, + ExceptionState& exception_state) { + return measureInternal(script_state, measure_name, start_or_options, end, + false, exception_state); +} + +// |start_or_options|: while in options type, the value is an object {start, +// end, detail}, and |end| must be null; while in string or double type, the +// value is start. So there are two ways we can input the start and end +// (omitting |script_state| and |measure_name|): +// 1. measure(start, end) +// 2. measure({start, end}) +// +// For simplicity, the method below unifies these ways into a single form - +// measure(name, start, end, detail). The mapping between two measure methods +// (using measure_ to denote the measure after tranformation) goes as follows: +// 1. measure(start, end): measure_(start, end, null) +// 2. measure({start, end, detail}, null): measure_(start, end, detail) +// 3. measure({start, end, detail}, end): invalid +// +// When |end| is null in C++, we cannot tell whether |end| is null, undefined or +// empty in JS from StringOrDouble, so we need |end_is_empty| to help +// distinguish between (null or undefined) and empty. +PerformanceMeasure* Performance::measureInternal( + ScriptState* script_state, + const String& measure_name, + const StringOrDoubleOrPerformanceMeasureOptions& start_or_options, + const StringOrDouble& end, + bool end_is_empty, + ExceptionState& exception_state) { + if (RuntimeEnabledFeatures::CustomUserTimingEnabled()) { + if (start_or_options.IsPerformanceMeasureOptions()) { + if (!end.IsNull()) { + exception_state.ThrowDOMException( + kSyntaxError, + "If a PerformanceMeasureOptions object was passed, |end| must be " + "null."); + return nullptr; + } + const PerformanceMeasureOptions& options = + start_or_options.GetAsPerformanceMeasureOptions(); + return measureInternal(script_state, measure_name, options.startTime(), + options.endTime(), options.detail(), + exception_state); + } else { + StringOrDouble converted_start; + if (start_or_options.IsDouble()) { + converted_start = + StringOrDouble::FromDouble(start_or_options.GetAsDouble()); + } else if (start_or_options.IsString()) { + converted_start = + StringOrDouble::FromString(start_or_options.GetAsString()); + } else { + DCHECK(start_or_options.IsNull()); + converted_start = NativeValueTraits<StringOrDouble>::NullValue(); + } + // We let |end| behaves the same whether it's empty, undefined or null in + // JS, as long as |end| is null in C++. + return measureInternal(script_state, measure_name, converted_start, end, + ScriptValue::CreateNull(script_state), + exception_state); + } + } else { + // For consistency with UserTimingL2: the L2 API took |start| as a string, + // so any object passed in became a string '[object, object]', null became + // string 'null'. + StringOrDouble converted_start; + if (start_or_options.IsPerformanceMeasureOptions()) { + converted_start = StringOrDouble::FromString("[object Object]"); + } else if (start_or_options.IsDouble()) { + converted_start = StringOrDouble::FromString( + String::NumberToStringECMAScript(start_or_options.GetAsDouble())); + } else if (start_or_options.IsString()) { + converted_start = + StringOrDouble::FromString(start_or_options.GetAsString()); + } else { + DCHECK(start_or_options.IsNull()); + converted_start = StringOrDouble::FromString("null"); + } + + StringOrDouble converted_end; + if (end.IsString()) { + converted_end = StringOrDouble::FromString(end.GetAsString()); + } else if (end.IsDouble()) { + converted_end = StringOrDouble::FromString( + String::NumberToStringECMAScript(end.GetAsDouble())); + } else { + DCHECK(end.IsNull()); + if (end_is_empty) { + converted_end = NativeValueTraits<StringOrDouble>::NullValue(); + } else { + converted_end = StringOrDouble::FromString("null"); + } + } + measureInternal(script_state, measure_name, converted_start, converted_end, + ScriptValue::CreateNull(script_state), exception_state); + // Return nullptr to distinguish from L3. + return nullptr; + } +} + +PerformanceMeasure* Performance::measureInternal( + ScriptState* script_state, + const String& measure_name, + const StringOrDouble& start, + const StringOrDouble& end, + const ScriptValue& detail, + ExceptionState& exception_state) { + StringOrDouble original_start = start; + StringOrDouble original_end = end; + UMA_HISTOGRAM_ENUMERATION( "Performance.PerformanceMeasurePassedInParameter.StartMark", - ToPerformanceMeasurePassedInParameterType(start_mark), + ToPerformanceMeasurePassedInParameterType(original_start), kPerformanceMeasurePassedInParameterCount); UMA_HISTOGRAM_ENUMERATION( "Performance.PerformanceMeasurePassedInParameter.EndMark", - ToPerformanceMeasurePassedInParameterType(end_mark), + ToPerformanceMeasurePassedInParameterType(original_end), kPerformanceMeasurePassedInParameterCount); ExecutionContext* execution_context = GetExecutionContext(); if (execution_context) { PerformanceMeasurePassedInParameterType start_type = - ToPerformanceMeasurePassedInParameterType(start_mark); + ToPerformanceMeasurePassedInParameterType(original_start); PerformanceMeasurePassedInParameterType end_type = - ToPerformanceMeasurePassedInParameterType(end_mark); + ToPerformanceMeasurePassedInParameterType(original_end); - if (start_type == kObjectObject) { + if (!detail.IsEmpty() && detail.IsObject()) { UseCounter::Count(execution_context, WebFeature::kPerformanceMeasurePassedInObject); } @@ -622,9 +756,15 @@ if (!user_timing_) user_timing_ = UserTiming::Create(*this); - if (PerformanceEntry* entry = user_timing_->Measure( - measure_name, start_mark, end_mark, exception_state)) + PerformanceMeasure* performance_measure = + user_timing_->Measure(script_state, measure_name, original_start, + original_end, detail, exception_state); + if (performance_measure) { + PerformanceEntry* entry = performance_measure; NotifyObserversOfEntry(*entry); + return performance_measure; + } + return nullptr; } void Performance::clearMeasures(const String& measure_name) { @@ -710,6 +850,42 @@ } // static +Performance::PerformanceMeasurePassedInParameterType +Performance::ToPerformanceMeasurePassedInParameterType( + const StringOrDouble& p) { + if (p.IsString()) { + const String& s = p.GetAsString(); + // All passed-in objects will be stringified into this type. + if (s == "[object Object]") + return Performance::kObjectObject; + // The following names come from + // https://w3c.github.io/navigation-timing/#sec-PerformanceNavigationTiming. + if (s == "unloadEventStart") + return Performance::kUnloadEventStart; + if (s == "unloadEventEnd") + return kUnloadEventEnd; + if (s == "domInteractive") + return Performance::kDomInteractive; + if (s == "domContentLoadedEventStart") + return Performance::kDomContentLoadedEventStart; + if (s == "domContentLoadedEventEnd") + return Performance::kDomContentLoadedEventEnd; + if (s == "domComplete") + return Performance::kDomComplete; + if (s == "loadEventStart") + return Performance::kLoadEventStart; + if (s == "loadEventEnd") + return Performance::kLoadEventEnd; + return Performance::kOther; + } + if (p.IsNull()) { + return Performance::kNull; + } + DCHECK(p.IsDouble()); + return Performance::kTimeStamp; +} + +// static double Performance::ClampTimeResolution(double time_seconds) { DEFINE_THREAD_SAFE_STATIC_LOCAL(TimeClamper, clamper, ()); return clamper.ClampTimeResolution(time_seconds);
diff --git a/third_party/blink/renderer/core/timing/performance.h b/third_party/blink/renderer/core/timing/performance.h index 1ed5847..d73a129 100644 --- a/third_party/blink/renderer/core/timing/performance.h +++ b/third_party/blink/renderer/core/timing/performance.h
@@ -34,6 +34,7 @@ #include "base/single_thread_task_runner.h" #include "third_party/blink/public/platform/web_resource_timing_info.h" +#include "third_party/blink/renderer/bindings/core/v8/string_or_double.h" #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/dom/dom_high_res_time_stamp.h" #include "third_party/blink/renderer/core/dom/events/event_target.h" @@ -56,6 +57,7 @@ class MemoryInfo; class PerformanceNavigation; class PerformanceObserver; +class PerformanceMeasure; class PerformanceTiming; class ResourceResponse; class ResourceTimingInfo; @@ -66,6 +68,7 @@ class SubTaskAttribution; class V8ObjectBuilder; class PerformanceEventTiming; +class StringOrDoubleOrPerformanceMeasureOptions; using PerformanceEntryVector = HeapVector<Member<PerformanceEntry>>; @@ -164,10 +167,23 @@ void clearMarks(const String& mark_name); - void measure(const String& measure_name, - const String& start_mark, - const String& end_mark, - ExceptionState&); + PerformanceMeasure* measure(ScriptState*, + const String& measure_name, + ExceptionState&); + + PerformanceMeasure* measure( + ScriptState*, + const String& measure_name, + const StringOrDoubleOrPerformanceMeasureOptions& start_or_options, + ExceptionState&); + + PerformanceMeasure* measure( + ScriptState*, + const String& measure_name, + const StringOrDoubleOrPerformanceMeasureOptions& start_or_options, + const StringOrDouble& end, + ExceptionState&); + void clearMeasures(const String& measure_name); void UnregisterPerformanceObserver(PerformanceObserver&); @@ -193,34 +209,13 @@ kLoadEventStart = 7, kLoadEventEnd = 8, kOther = 9, + kNull = 10, + kTimeStamp = 11, kPerformanceMeasurePassedInParameterCount }; - static PerformanceMeasurePassedInParameterType - ToPerformanceMeasurePassedInParameterType(const String& s) { - // All passed-in objects will be stringified into this type. - if (s == "[object Object]") - return kObjectObject; - // The following names come from - // https://w3c.github.io/navigation-timing/#sec-PerformanceNavigationTiming. - if (s == "unloadEventStart") - return kUnloadEventStart; - if (s == "unloadEventEnd") - return kUnloadEventEnd; - if (s == "domInteractive") - return kDomInteractive; - if (s == "domContentLoadedEventStart") - return kDomContentLoadedEventStart; - if (s == "domContentLoadedEventEnd") - return kDomContentLoadedEventEnd; - if (s == "domComplete") - return kDomComplete; - if (s == "loadEventStart") - return kLoadEventStart; - if (s == "loadEventEnd") - return kLoadEventEnd; - return kOther; - } + static Performance::PerformanceMeasurePassedInParameterType + ToPerformanceMeasurePassedInParameterType(const StringOrDouble& p); static bool AllowsTimingRedirect(const Vector<ResourceResponse>&, const ResourceResponse&, @@ -240,6 +235,21 @@ void AddPaintTiming(PerformancePaintTiming::PaintType, TimeTicks start_time); + PerformanceMeasure* measureInternal( + ScriptState*, + const String& measure_name, + const StringOrDoubleOrPerformanceMeasureOptions& start, + const StringOrDouble& end, + bool end_is_empty, + ExceptionState&); + + PerformanceMeasure* measureInternal(ScriptState*, + const String& measure_name, + const StringOrDouble& start, + const StringOrDouble& end, + const ScriptValue& detail, + ExceptionState&); + protected: Performance(TimeTicks time_origin, scoped_refptr<base::SingleThreadTaskRunner>);
diff --git a/third_party/blink/renderer/core/timing/performance.idl b/third_party/blink/renderer/core/timing/performance.idl index b733d04..4339862 100644 --- a/third_party/blink/renderer/core/timing/performance.idl +++ b/third_party/blink/renderer/core/timing/performance.idl
@@ -68,7 +68,12 @@ [MeasureAs=UserTiming, CallWith=ScriptState, RuntimeEnabled=CustomUserTiming, RaisesException] void mark(DOMString markName, (DOMHighResTimeStamp or PerformanceMarkOptions) startTimeOrPerformanceMarkOptions); [MeasureAs=UserTiming] void clearMarks(optional DOMString markName = null); - [MeasureAs=UserTiming, RaisesException] void measure(DOMString measureName, optional DOMString startMark = null, optional DOMString endMark = null); + // Doing either of the following requires enabling CustomUserTiming: + // * passing PerformanceMeasureOptions to |startOrOptions| + // * passing timestamps to |startOrOptions| or |end| + // Custom User Timing (or User Timing L3) explainer: + // https://docs.google.com/document/d/1hltt8z9C4PaI5Qu1YMIp1wOGdbJPJPoJwBarEeCY6xQ/edit#heading=h.ejti6qhmjv0b + [MeasureAs=UserTiming, CallWith=ScriptState, RaisesException] PerformanceMeasure? measure(DOMString measureName, optional (DOMString or DOMHighResTimeStamp or PerformanceMeasureOptions)? startOrOptions, optional (DOMString or DOMHighResTimeStamp)? end); [MeasureAs=UserTiming] void clearMeasures(optional DOMString measureName = null); // TODO(foolip): There is no spec for the Memory Info API, see blink-dev:
diff --git a/third_party/blink/renderer/core/timing/performance_measure.cc b/third_party/blink/renderer/core/timing/performance_measure.cc new file mode 100644 index 0000000..2fcb78c6 --- /dev/null +++ b/third_party/blink/renderer/core/timing/performance_measure.cc
@@ -0,0 +1,31 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "third_party/blink/renderer/core/timing/performance_measure.h" + +#include "third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h" + +namespace blink { + +PerformanceMeasure::PerformanceMeasure(ScriptState* script_state, + const String& name, + double start_time, + double end_time, + const ScriptValue& detail) + : PerformanceEntry(name, "measure", start_time, end_time) { + if (detail.IsEmpty()) { + detail_ = SerializedScriptValue::NullValue(); + } else { + detail_ = SerializedScriptValue::SerializeAndSwallowExceptions( + script_state->GetIsolate(), detail.V8Value()); + } +} + +ScriptValue PerformanceMeasure::detail(ScriptState* script_state) const { + v8::Isolate* isolate = script_state->GetIsolate(); + v8::Local<v8::Value> detail = detail_->Deserialize(isolate); + return ScriptValue(script_state, detail); +} + +} // namespace blink
diff --git a/third_party/blink/renderer/core/timing/performance_measure.h b/third_party/blink/renderer/core/timing/performance_measure.h index 47015cb0..e73e87e8 100644 --- a/third_party/blink/renderer/core/timing/performance_measure.h +++ b/third_party/blink/renderer/core/timing/performance_measure.h
@@ -28,29 +28,38 @@ #include "base/memory/scoped_refptr.h" #include "third_party/blink/renderer/core/timing/performance_entry.h" -#include "third_party/blink/renderer/platform/heap/handle.h" #include "third_party/blink/renderer/platform/wtf/text/wtf_string.h" namespace blink { +class SerializedScriptValue; + class PerformanceMeasure final : public PerformanceEntry { DEFINE_WRAPPERTYPEINFO(); public: - static PerformanceMeasure* Create(const String& name, + static PerformanceMeasure* Create(ScriptState* script_state, + const String& name, double start_time, - double end_time) { - return new PerformanceMeasure(name, start_time, end_time); + double end_time, + const ScriptValue& detail) { + return new PerformanceMeasure(script_state, name, start_time, end_time, + detail); } + ScriptValue detail(ScriptState*) const; void Trace(blink::Visitor* visitor) override { PerformanceEntry::Trace(visitor); } private: - PerformanceMeasure(const String& name, double start_time, double end_time) - : PerformanceEntry(name, "measure", start_time, end_time) {} + PerformanceMeasure(ScriptState*, + const String& name, + double start_time, + double end_time, + const ScriptValue& detail); ~PerformanceMeasure() override = default; + scoped_refptr<SerializedScriptValue> detail_; }; } // namespace blink
diff --git a/third_party/blink/renderer/core/timing/performance_measure.idl b/third_party/blink/renderer/core/timing/performance_measure.idl index 8b5f042d..b9546a6 100644 --- a/third_party/blink/renderer/core/timing/performance_measure.idl +++ b/third_party/blink/renderer/core/timing/performance_measure.idl
@@ -26,4 +26,5 @@ // https://w3c.github.io/user-timing/#performancemeasure interface PerformanceMeasure : PerformanceEntry { + [CallWith=ScriptState, RuntimeEnabled=CustomUserTiming] readonly attribute any detail; };
diff --git a/third_party/blink/renderer/core/timing/performance_measure_options.idl b/third_party/blink/renderer/core/timing/performance_measure_options.idl new file mode 100644 index 0000000..1adbe9b --- /dev/null +++ b/third_party/blink/renderer/core/timing/performance_measure_options.idl
@@ -0,0 +1,12 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// TODO(maxlg): refer to user timing L3 spec once authored. +// https://docs.google.com/document/d/1hltt8z9C4PaI5Qu1YMIp1wOGdbJPJPoJwBarEeCY6xQ/edit# +dictionary PerformanceMeasureOptions { + any detail = null; + (DOMString or DOMHighResTimeStamp)? startTime; + // TODO(crbug.com/758385): add |duration| for better ergonomics. + (DOMString or DOMHighResTimeStamp)? endTime; +}; \ No newline at end of file
diff --git a/third_party/blink/renderer/core/timing/performance_user_timing.cc b/third_party/blink/renderer/core/timing/performance_user_timing.cc index 5d7f8d4..492cc64 100644 --- a/third_party/blink/renderer/core/timing/performance_user_timing.cc +++ b/third_party/blink/renderer/core/timing/performance_user_timing.cc
@@ -151,25 +151,37 @@ return 0.0; } -PerformanceEntry* UserTiming::Measure(const String& measure_name, - const String& start_mark, - const String& end_mark, - ExceptionState& exception_state) { +double UserTiming::FindStartMarkOrTime(const StringOrDouble& start, + ExceptionState& exception_state) { + if (start.IsString()) + return FindExistingMarkStartTime(start.GetAsString(), exception_state); + if (start.IsDouble()) + return start.GetAsDouble(); + NOTREACHED(); + return 0; +} + +PerformanceMeasure* UserTiming::Measure(ScriptState* script_state, + const String& measure_name, + const StringOrDouble& start, + const StringOrDouble& end, + const ScriptValue& detail, + ExceptionState& exception_state) { double start_time = 0.0; double end_time = 0.0; - if (start_mark.IsNull()) { + if (start.IsNull()) { end_time = performance_->now(); - } else if (end_mark.IsNull()) { + } else if (end.IsNull()) { end_time = performance_->now(); - start_time = FindExistingMarkStartTime(start_mark, exception_state); + start_time = FindStartMarkOrTime(start, exception_state); if (exception_state.HadException()) return nullptr; } else { - end_time = FindExistingMarkStartTime(end_mark, exception_state); + end_time = FindStartMarkOrTime(end, exception_state); if (exception_state.HadException()) return nullptr; - start_time = FindExistingMarkStartTime(start_mark, exception_state); + start_time = FindStartMarkOrTime(start, exception_state); if (exception_state.HadException()) return nullptr; } @@ -190,8 +202,8 @@ WTF::StringHash::GetHash(measure_name), TraceEvent::ToTraceTimestamp(end_time_monotonic)); - PerformanceEntry* entry = - PerformanceMeasure::Create(measure_name, start_time, end_time); + PerformanceMeasure* entry = PerformanceMeasure::Create( + script_state, measure_name, start_time, end_time, detail); InsertPerformanceEntry(measures_map_, *entry); if (end_time >= start_time) { DEFINE_THREAD_SAFE_STATIC_LOCAL(
diff --git a/third_party/blink/renderer/core/timing/performance_user_timing.h b/third_party/blink/renderer/core/timing/performance_user_timing.h index b6bf41f..aed6e15 100644 --- a/third_party/blink/renderer/core/timing/performance_user_timing.h +++ b/third_party/blink/renderer/core/timing/performance_user_timing.h
@@ -26,6 +26,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_TIMING_PERFORMANCE_USER_TIMING_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_TIMING_PERFORMANCE_USER_TIMING_H_ +#include "third_party/blink/renderer/bindings/core/v8/serialization/serialized_script_value.h" #include "third_party/blink/renderer/core/timing/performance.h" #include "third_party/blink/renderer/core/timing/performance_timing.h" #include "third_party/blink/renderer/platform/heap/handle.h" @@ -53,10 +54,12 @@ ExceptionState&); void ClearMarks(const String& mark_name); - PerformanceEntry* Measure(const String& measure_name, - const String& start_mark, - const String& end_mark, - ExceptionState&); + PerformanceMeasure* Measure(ScriptState*, + const String& measure_name, + const StringOrDouble& start, + const StringOrDouble& end, + const ScriptValue& detail, + ExceptionState&); void ClearMeasures(const String& measure_name); PerformanceEntryVector GetMarks() const; @@ -71,6 +74,7 @@ explicit UserTiming(Performance&); double FindExistingMarkStartTime(const String& mark_name, ExceptionState&); + double FindStartMarkOrTime(const StringOrDouble& start, ExceptionState&); Member<Performance> performance_; PerformanceEntryMap marks_map_;
diff --git a/third_party/blink/renderer/core/timing/window_performance_test.cc b/third_party/blink/renderer/core/timing/window_performance_test.cc index 7114fcc..d553f7c 100644 --- a/third_party/blink/renderer/core/timing/window_performance_test.cc +++ b/third_party/blink/renderer/core/timing/window_performance_test.cc
@@ -2,9 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "third_party/blink/renderer/bindings/core/v8/exception_state.h" -#include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h" #include "third_party/blink/renderer/core/timing/window_performance.h" +#include "third_party/blink/renderer/bindings/core/v8/exception_state.h" +#include "third_party/blink/renderer/bindings/core/v8/string_or_double.h" +#include "third_party/blink/renderer/bindings/core/v8/string_or_double_or_performance_measure_options.h" +#include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/renderer/core/frame/performance_monitor.h" @@ -226,14 +228,17 @@ } TEST_F(WindowPerformanceTest, ParameterHistogramForMeasure) { + V8TestingScope scope; HistogramTester histogram_tester; DummyExceptionStateForTesting exception_state; histogram_tester.ExpectTotalCount(kStartMarkForMeasureHistogram, 0); histogram_tester.ExpectTotalCount(kEndMarkForMeasureHistogram, 0); - performance_->measure("testMark", "unloadEventStart", "unloadEventEnd", - exception_state); + performance_->measure( + scope.GetScriptState(), "testMark", + StringOrDoubleOrPerformanceMeasureOptions::FromString("unloadEventStart"), + StringOrDouble::FromString("unloadEventEnd"), exception_state); histogram_tester.ExpectBucketCount( kStartMarkForMeasureHistogram, @@ -242,8 +247,10 @@ kEndMarkForMeasureHistogram, static_cast<int>(Performance::kUnloadEventEnd), 1); - performance_->measure("testMark", "domInteractive", "[object Object]", - exception_state); + performance_->measure( + scope.GetScriptState(), "testMark", + StringOrDoubleOrPerformanceMeasureOptions::FromString("domInteractive"), + StringOrDouble::FromString("[object Object]"), exception_state); histogram_tester.ExpectBucketCount( kStartMarkForMeasureHistogram, @@ -252,8 +259,10 @@ kEndMarkForMeasureHistogram, static_cast<int>(Performance::kObjectObject), 1); - performance_->measure("testMark", "[object Object]", "[object Object]", - exception_state); + performance_->measure( + scope.GetScriptState(), "testMark", + StringOrDoubleOrPerformanceMeasureOptions::FromString("[object Object]"), + StringOrDouble::FromString("[object Object]"), exception_state); histogram_tester.ExpectBucketCount( kStartMarkForMeasureHistogram,
diff --git a/third_party/blink/renderer/devtools/front_end/components/TargetDetachedDialog.js b/third_party/blink/renderer/devtools/front_end/components/TargetDetachedDialog.js index e589c8d..fd9cc8c9 100644 --- a/third_party/blink/renderer/devtools/front_end/components/TargetDetachedDialog.js +++ b/third_party/blink/renderer/devtools/front_end/components/TargetDetachedDialog.js
@@ -56,4 +56,4 @@ } }; -SDK.SDKModel.register(Components.TargetDetachedDialog, 0, true); +SDK.SDKModel.register(Components.TargetDetachedDialog, SDK.Target.Capability.Inspector, true);
diff --git a/third_party/blink/renderer/devtools/front_end/emulation/DeviceModeToolbar.js b/third_party/blink/renderer/devtools/front_end/emulation/DeviceModeToolbar.js index 5656330..cbd4285 100644 --- a/third_party/blink/renderer/devtools/front_end/emulation/DeviceModeToolbar.js +++ b/third_party/blink/renderer/devtools/front_end/emulation/DeviceModeToolbar.js
@@ -519,6 +519,12 @@ this._heightInput.disabled = this._model.type() !== Emulation.DeviceModeModel.Type.Responsive; this._deviceScaleItem.setEnabled(this._model.type() === Emulation.DeviceModeModel.Type.Responsive); this._uaItem.setEnabled(this._model.type() === Emulation.DeviceModeModel.Type.Responsive); + if (this._model.type() === Emulation.DeviceModeModel.Type.Responsive) { + this._modeButton.setEnabled(true); + this._modeButton.setTitle(ls`Rotate`); + } else { + this._modeButton.setEnabled(false); + } } const size = this._model.appliedDeviceSize(); @@ -559,11 +565,6 @@ const modeCount = device ? device.modes.length : 0; this._modeButton.setEnabled(modeCount >= 2); this._modeButton.setTitle(modeCount === 2 ? Common.UIString('Rotate') : Common.UIString('Screen options')); - } else if (this._model.type() === Emulation.DeviceModeModel.Type.Responsive) { - this._modeButton.setEnabled(true); - this._modeButton.setTitle(Common.UIString('Rotate')); - } else { - this._modeButton.setEnabled(false); } this._cachedModelDevice = device; }
diff --git a/third_party/blink/renderer/devtools/front_end/inspector_main/InspectorMain.js b/third_party/blink/renderer/devtools/front_end/inspector_main/InspectorMain.js index 3fe346c9..e1ce167 100644 --- a/third_party/blink/renderer/devtools/front_end/inspector_main/InspectorMain.js +++ b/third_party/blink/renderer/devtools/front_end/inspector_main/InspectorMain.js
@@ -44,7 +44,8 @@ return SDK.Target.Capability.Browser | SDK.Target.Capability.DOM | SDK.Target.Capability.DeviceEmulation | SDK.Target.Capability.Emulation | SDK.Target.Capability.Input | SDK.Target.Capability.JS | SDK.Target.Capability.Log | SDK.Target.Capability.Network | SDK.Target.Capability.ScreenCapture | - SDK.Target.Capability.Security | SDK.Target.Capability.Target | SDK.Target.Capability.Tracing; + SDK.Target.Capability.Security | SDK.Target.Capability.Target | SDK.Target.Capability.Tracing | + SDK.Target.Capability.Inspector; } /**
diff --git a/third_party/blink/renderer/devtools/front_end/worker_main/WorkerMain.js b/third_party/blink/renderer/devtools/front_end/worker_main/WorkerMain.js index bed1ecd..ffb64e5 100644 --- a/third_party/blink/renderer/devtools/front_end/worker_main/WorkerMain.js +++ b/third_party/blink/renderer/devtools/front_end/worker_main/WorkerMain.js
@@ -11,7 +11,7 @@ */ run() { const capabilities = SDK.Target.Capability.Browser | SDK.Target.Capability.Log | SDK.Target.Capability.Network | - SDK.Target.Capability.Target; + SDK.Target.Capability.Target | SDK.Target.Capability.Inspector; SDK.targetManager.createTarget( 'main', Common.UIString('Main'), capabilities, this._createMainConnection.bind(this), null); InspectorFrontendHost.connectionReady();
diff --git a/third_party/blink/renderer/modules/cache_storage/OWNERS b/third_party/blink/renderer/modules/cache_storage/OWNERS index b4f68f82..8966673 100644 --- a/third_party/blink/renderer/modules/cache_storage/OWNERS +++ b/third_party/blink/renderer/modules/cache_storage/OWNERS
@@ -1,4 +1,3 @@ -michaeln@chromium.org kinuko@chromium.org jsbell@chromium.org dominicc@chromium.org
diff --git a/third_party/blink/renderer/modules/canvas/offscreencanvas/OffscreenCanvas-commit.md b/third_party/blink/renderer/modules/canvas/offscreencanvas/OffscreenCanvas-commit.md new file mode 100644 index 0000000..8995bba --- /dev/null +++ b/third_party/blink/renderer/modules/canvas/offscreencanvas/OffscreenCanvas-commit.md
@@ -0,0 +1,353 @@ +This document aims to explain the latest implementation details of +OffscreenCanvas.commit(). Some parts (e.g, compositor frame submission +mechanism, image resources) may remain unchanged in the future; some (3-way +mojo communication) might be dropped and picked up in a different format later; + some (e.g., frame dispatching rate) will become irrelevant in a future date, +as a refactoring is done by [fserb@](mailto:fserb@chromium.org) due to +specification change. + +# The General Mojo IPC Flow + +The following diagram illustrates the essential mojo calls for executing +OffscreenCanvas.commit(). + + + +OffscreenCanvas.commit() involves communication between three parties--the main +thread and the worker thread in the renderer process, plus the UI thread in the +browser process. There are some more complex inter-process/thread communication +in the implementation of display compositor in Viz, beyond what’s being drawn +in the browser side in this diagram. + +## Placeholder Canvas Initiating the Mojo Call + +In the beginning, we have an HTMLCanvasElement in the main thread (called +"placeholder canvas"). We also have an EmbeddedFrameSinkProviderImpl in the +browser (one instance per renderer process), which is the implementation of the +mojo interface EmbeddedFrameSinkProvider’s receiving end; it is set up during +the initialization of the render process, as one of the many initial mojo +interfaces (see RenderProcessHostImpl::RegisterMojoInterfaces()). + +When users perform `transferControlToOffscreen()` on the canvas (see +HTMLCanvasElementModule::transferControlToOffscreen()), this HTMLCanvasElement +will create a reference to a SurfaceLayerBridge instance. The constructor of +SurfaceLayerBridge generates a FrameSinkId that is unique in the current +renderer process (see Platform::GenerateFrameSinkId()), extracts the +FrameSinkId of the layer tree view under which the placeholder canvas is +attached, and then sends these IDs in a mojo call +**RegisterEmbeddedFrameSink()** to the EmbeddedFrameSinkProviderImpl. + +Upon receiving the mojo call **RegisterEmbeddedFrameSink()**, the global +instance of EmbeddedFrameSinkProviderImpl will instantiate an +EmbeddedFrameSinkImpl, and saves this instance in the frame\_sink\_map\_, +identified by the FrameSinkId. In the meantime, the EmbeddedFrameSinkImpl +gains access to its client--the SurfaceLayerBridge instance--and can send mojo +calls to it in the future. + +On the blink side, a SolidColorLayer with transparent background is created +inside the SurfaceLayerBridge object as a placeholder layer; this layer is +registered to the graphics layer set, just like any other content layer. In a +separate process of layer compositing, the graphics layer updater will identify +a canvas with SurfaceLayerBridge to be a special case that requires a separate +platform layer (see CompositedLayerCompositedLayerMapping:: +UpdateGraphicsLayerConfiguration()). + +Eventually, an OffscreenCanvas object is created, which contains the +FrameSinkId, the dimension and DOMNodeId of the placeholder canvas. +From users’ point of view, this is the time when they see an `OffscreenCanvas` +JS object getting created. + +## Placeholder Canvas Transferring the OffscreenCanvas to Worker + +Users can then perform the following script to post an OffscreenCanvas from +main thread to worker: +``` +worker.postMessage(offscreenCanvas, [offscreenCanvas]) +``` + +Then they can extract this OffscreenCanvas in the worker script: +``` +self.onmessage = function(e) { var transferredOffscreenCanvas = e.data; } +``` + +This message sending and receiving to transfer a JavaScript object is +implemented by the V8ScriptValueSerializer and V8ScriptValueDeserializer. To +post an `OffscreenCanvas`, the serializer will write an +OffscreenCanvasTransferTag, followed by 5 different uint32\_t values--the +width, the height, the DOMNodeId of the placeholder canvas, the ClientId and +the SinkId. Note that the ClientId and the SinkId are two components of a +FrameSinkId. To receive an `OffscreenCanvas`, the deserializer will identify +the transferred DOMObject as an `OffscreenCanvas` based on the +OffscreenCanvasTransferTag and read the 5 uint32\_t values in the same order of +writing, before constructing a new `OffscreenCanvas` object on the worker +thread. + +As a result, we will have an `OffscreenCanvas` object on worker, with the +information of placeholder canvas’s dimension, DOMNodeId as well as the +FrameSinkId. + +## OffscreenCanvas calling commit() for the first time + +The `OffscreenCanvas` on worker can create either a "2d" or an “WebGL” +rendering context just like a usual canvas. Either of this offscreen rendering +context has an API `commit()`. In the current specification and implementation, +it returns a `Promise` when an image frame has been successfully dispatched; +this `Promise`-based design is going to be changed soon in the future. + +When users call `commit()` on the rendering context, a snapshot of the +OffscreenCanvas will be taken. The snapshot is represented by a +StaticBitmapImage object, which will be centrally managed in the +OffscreenCanvasFrameDispatcher. In the current design, the image snapshot will +not be immediately dispatched. Instead, it will be saved in the +current\_frame\_ instance member of the `OffscreenCanvas` object and wait for +an appropriate moment to be dispatched. + +Meanwhile, OffscreenCanvas will instantiate an OffscreenCanvasFrameDispatcher. +During the construction of an OffscreenCanvasFrameDispatcher, a current +LocalSurfaceId will be generated (Note: a LocalSurfaceId and a +FrameSinkId together form a unique SurfaceId, which identifies a Surface in +browser). Then it sends a mojo call **CreateCompositorFrameSink()** to the +always running EmbeddedFrameSinkProviderImpl in the browser; this mojo call +carries the FrameSinkId that OffscreenCanvas got from the placeholder canvas +during the control transfer, as well as a CompositorFrameSink pointer sink\_ +that’s waiting to be set by the display compositor in the future. On the +receiving end, EmbeddedFrameSinkProviderImpl will use the FrameSinkId to find + from its frame\_sink\_map\_ the corresponding EmbeddedFrameSinkImpl which +links to this OffscreenCanvas’s placeholder canvas, and then pass along the +request of creating CompositorFrameSink to the EmbeddedFrameSinkImpl. +EmbeddedFrameSinkImpl will forward this request to the HostFrameSinkManager, +which has access to the privileged interface FrameSinkManager that has the +authority to control the creation and destruction of CompositorFrameSinks in +the display compositor. In addition, it will also register the parent +FrameSinkId and FrameSinkId as a parent-child hierarchy relationship to the +HostFrameSinkManager. A lot of call forwarding has been carried out in the +display compositor side; but for OffscreenCanvas alone, we can treat the +behind-scene implementation as a black box for easier understanding. As a +result of this mojo call **CreateCompositorFrameSink()**, the created +CompositorFrameSink will now have a two-way direct communication channel with +the OffscreenCanvasFrameDispatcher. + +Upon having the pointer sink\_ to directly communicate with the +CompositorFrameSink, OffscreenCanvasFrameDispatcher will send another mojo +call **SetNeedsBeginFrame(true)** to it, indicating its interest to receive +BeginFrame signals from the display compositor. BeginFrame signals are similar +to the vSync signals and could be used as a way to sync the frame dispatching +rhythm to an appropriate rate. + +When it is the appropriate time to dispatch the saved image, +OffscreenCanvasFrameDispatcher will prepare a CompositorFrame according to the +image type and acceleration mode (see OffscreenCanvasFrameDispatcher:: +DispatchFrame()). Then it sends the CompositorFrame as well as the current +LocalSurfaceId to the CompositorFrameSink via a mojo call +**SubmitCompositorFrame()**. The receiving end, the CompositorFrameSinkImpl, +will handle this CompositorFrame and queues it to the corresponding Surface. + +Because this is the first time `commit()` is called, the display compositor +does not have the Surface for the given SurfaceId (a combination of +FrameSinkId of the CompositorFrameSink and the LocalSurfaceId) yet. The +display compositor will then create a new Surface (see +CompositorFrameSinkSupport::MaybeSubmitCompositorFrame()). Once the Surface is +created, there is going to be a few more chain calls in the display compositor, +to inform different observers about this new creation. Afterwards, the +CompositorFrame that we sends in this case will be queued to the newly created +Surface (see Surface::QueueFrame()), which will result in a few more chain +calls to inform different parties/observers. Ultimately, +EmbeddedFrameSinkImpl::OnFirstSurfaceActivation() will be invoked, sending +another mojo call **OnFirstSurfaceActivation()** to the SurfaceLayerBridge. +Then the SurfaceLayerBridge will replace the SolidColorLayer with a real +SurfaceLayer with the appropriate SurfaceId information; it will then trigger +a compositing update in the placeholder canvas. + +## OffscreenCanvas Resizing + +OffscreenCanvas resizing uses the same mojo call mechanism as the first +OffscreenCanvas.commit(). Users initiate the resizing by setting +`OffscreenCanvas.width` (or `OffscreenCanvas.height`) to a value different from +its original one. OffscreenCanvasFrameDispatcher will save these values and set +change\_size\_for\_next\_commit\_ to be "true"; at this point of time, no new +mojo calls are performed. + +If a new image frame is dispatched, OffscreenCanvasFrameDispatcher will detect +that change\_size\_for\_next\_commit\_ is true; in this case, it will generate +a new LocalSurfaceId. (Reminder: SurfaceId = FrameSinkId + +LocalSurfaceId). This is the intended design of Surfaces--a new Surface is +required for a rectangle with a new dimension but we want to maintain the +attachment with the same CompositorFrameSink (which is identified by the +FrameSinkId); therefore during a resizing, we create a new SurfaceId by +using the same FrameSinkId and a new LocalSurfaceId. This new +LocalSurfaceId will be sent in the next **SubmitCompositorFrame()** mojo +call, together with the newly prepared CompositorFrame. The receiving +CompositorFrameSink will detect a change of LocalSurfaceId and re-create a +new Surface. + +In addition, the intrinsic size of the placeholder canvas will be also updated +via OffscreenCanvasFrameDispatcher::PostImageToPlaceholderIfNotBlocked(), which +is cross-thread propagation that sends latest image of OffscreenCanvas to its +placeholder canvas. + +# The Image Resources in OffscreenCanvas.Commit() + +## Extracting the Image Resources from Rendering Contexts + +The image resources of OffscreenCanvas’s 2d rendering context are centrally +managed by a CanvasResourceProvider instance. CanvasResourceProvider is an +abstract class that encapsulates a drawable graphics resources and its +implementations could be managing different specific resource types, ranging +from Gpu textures, Gpu memory buffer, to shared bitmap in RAM. When `commit()` +is invoked by the user, an image snapshot would be taken from the SkSurface +managed by the CanvasResourceProvider; the SkSurface can be on Gpu context (see +SkSurface::MakeRenderTarget()) or on RAM memory (see SkSurface::MakeRaster()). +The image snapshot would be saved as a StaticBitmapImage instance. + +The image resources of OffscreenCanvas’s WebGL rendering context are centrally +managed by its DrawingBuffer instance. There are two ways of extracting the +current image from WebGL rendering context and this is determined by the value +of the WebGL attribute `preserveDrawingBuffer`. If `preserveDrawingBuffer` is +true, the texture on the WebGL back buffer is copied into the backing +TextureId of a temporary CanvasResourceProvider instance before a snapshot is +taken from there (see WebGLRenderingContextBase::GetImage()). If +`preserveDrawingBuffer` is false, the texture on the back\_color\_buffer\_ is +transferred and returned, while the original back\_color\_buffer\_ member is +reset, i.e., put back in the recycled color buffer queue (see +DrawingBuffer::TransferToStaticBitmapImage()), thus making any second attempt +to retrieve the WebGL image impossible (hence the meaning of “not preserving”). + +In the case of a false `preserveDrawingBuffer`, the returned ColorBuffer +contains the actual GPU memory buffer. Its resource release is carefully +handled by a release callback. This release callback is saved in the +DrawingBuffer instance and is swapped only when a new `commit()` is coming or +the DrawingBuffer is destructed; when the swapping happens, the previously +saved callback will be run, releasing the ColorBuffer that holds up the GPU +memory resource (see DrawingBuffer::SwapPreviousFrameCallback()) . This +release mechanism is not consistent with the rest of canvas resource; ideally, +everything should be kept under CanvasResourceProvider; this might be a future +to-do item. + +## Preparing the CompositorFrame + +The image extracted from the previous step is now encapsulated as a +StaticBitmapImage instance, which is saved in the OffscreenCanvas. When it is +the right time to dispatch the image, OffscreenCanvasFrameDispatcher will +prepare a CompositorFrame based on this StaticBitmapImage instance and sends it +off to the CompositorFrameSink (see +OffscreenCanvasFrameDispatcher::DispatchFrame()). + + + +OffscreenCanvasFrameDispatcher has delegated all its resource management tasks +to its OffscreenCanvasResourceProvider instance (which will be merged to +CanvasResourceProvider soon by [junov@](mailto:junov@chromium.org)). This +resource provider has two different methods in converting a StaticBitmapImage +into a viz::TransferableResource, which is an essential component of a +CompositorFrame. There are four scenarios here but there are only two ways of +handling. + +<table> + <tr> + <td>Is Image texture-backed?</td> + <td>Is GPU Compositing enabled?</td> + <td>How to handle it?</td> + <td>Which function converts StaticBitmapImage to viz::TransferableResource? + </td> + </tr> + <tr> + <td>Yes</td> + <td>Yes</td> + <td>We make use of a gpu::MailboxHolder (see + AcceleratedStaticBitmapImage::EnsureMailbox()) that saves the + gpu::Mailbox and the gpu sync token that are necessary in rendering the + image. Then the StaticBitmapImage is put in the resource map of the + resource provider.</td> + <td rowspan="2">SetTransferableResourceToStaticBitmapImage()</td> + </tr> + <tr> + <td>No</td> + <td>Yes</td> + <td>Same as the above, except that before all the steps, we need to convert + the unaccelerated image to an accelerated image by creating the image’s + gpu copy first.</td> + </tr> + <tr> + <td>Yes</td> + <td>No</td> + <td rowspan="2">Convert the accelerated image to an SkImage inside the + AcceleratedStaticBitmapImage and then do a SkImage::readPixels() to + copy the pixels into a SharedBitmap (Note: SharedBitmap is a + RAM-storage image with shared access from renderer and browser). Then + the original StaticBitmapImage is discarded.</td> + <td rowspan="2">SetTransferableResourceToSharedBitmap()</td> + </tr> + <tr> + <td>No</td> + <td>No</td> + </tr> +</table> + +# Syncing the OffscreenCanvas Animation + +## Placeholder Canvas Accessing the Image at all times + +What happens when the users perform `canvas.toBlob()` on the placeholder +canvas? What happens when the users want to right click the placeholder canvas +and copy the image? Because we directly "commit" the CompositorFrame from +worker thread to the display compositor, the placeholder canvas on the main +thread actually does not have access to the image resource. The solution we +adopt here is to post the image from worker thread to the main thread, +whenever there is a new image committed, subject to the message receiving +capacity of the main thread. + +OffscreenCanvasFrameDispatcher::PostImageToPlaceholderIfNotBlocked() is the +function to send an image from OffscreenCanvas to placeholder canvas, using a +cross-thread task. The cross-thread task sends the following: + +1. The image; + +2. The placeholder canvas’s DOMNodeId, useful to identify the HTMLCanvasElement +instance; + +3. The pointers of OffscreenCanvasFrameDispatcher and the current worker +thread’s task runner, both useful in posting a "return call" from the +placeholder canvas to the OffscreenCanvas instance. + +We have a mechanism to prevent over-sending messages from OffscreenCanvas to +the main thread, by keeping track the number of unreclaimed frames on the +OffscreenCanvas. When this number exceeds a threshold (which is currently set +to 3), OffscreenCanvasFrameDispatcher will save the unposted image, until the +first "reclaim resource" call from placeholder canvas is received to release +the previous image resource. The following sequence diagram illustrates a few +different scenarios that may possibly arise in this main-worker communication. + + + +The actual release of an image resource is only executed when the +ReclaimResource() is invoked in both of these places: + +1. A mojo call from the display compositor **DidReceiveCompositorFrameAck()**, +indicating that the particular CompositorFrame using this image resource has +been processed; + +2. A message sent from the placeholder canvas indicating that it no longer +needs this image resource (either because it now has another new image or the +canvas is destructed). + +The second invocation is illustrated as the "Release ImageA" message in the +above sequence diagram. + +## Dispatching Frame on Appropriate Time + +TODO(fserb@): Edit this section of documentation when `commit()` is finished. + +The current implementation assumes that there are two time points when we can +do the actual dispatching: + +1. At the end of the current JavaScript Task; + +2. On the beginning of a BeginFrame signal. + +The latest plans, carried out by [fserb@](mailto:fserb@chromium.org), would be +to revamp the `commit()` design as follows: + +1. Keep the `commit()`, but drop its returned `Promise`. Make this `commit()` a +blocking API, instead of an async API. + +2. Implement `requestAnimationFrame()` in `WorkerGlobalScope`.
diff --git a/third_party/blink/renderer/modules/canvas/offscreencanvas/docs/compositor-frame.png b/third_party/blink/renderer/modules/canvas/offscreencanvas/docs/compositor-frame.png new file mode 100644 index 0000000..61f4aa42 --- /dev/null +++ b/third_party/blink/renderer/modules/canvas/offscreencanvas/docs/compositor-frame.png Binary files differ
diff --git a/third_party/blink/renderer/modules/canvas/offscreencanvas/docs/mojo-flow.png b/third_party/blink/renderer/modules/canvas/offscreencanvas/docs/mojo-flow.png new file mode 100644 index 0000000..9cda92da --- /dev/null +++ b/third_party/blink/renderer/modules/canvas/offscreencanvas/docs/mojo-flow.png Binary files differ
diff --git a/third_party/blink/renderer/modules/canvas/offscreencanvas/docs/post-image-to-placeholder.png b/third_party/blink/renderer/modules/canvas/offscreencanvas/docs/post-image-to-placeholder.png new file mode 100644 index 0000000..d8ffd64 --- /dev/null +++ b/third_party/blink/renderer/modules/canvas/offscreencanvas/docs/post-image-to-placeholder.png Binary files differ
diff --git a/third_party/blink/renderer/modules/credentialmanager/authentication_extensions_client_inputs.idl b/third_party/blink/renderer/modules/credentialmanager/authentication_extensions_client_inputs.idl index 1a86edba..01ccf2a 100644 --- a/third_party/blink/renderer/modules/credentialmanager/authentication_extensions_client_inputs.idl +++ b/third_party/blink/renderer/modules/credentialmanager/authentication_extensions_client_inputs.idl
@@ -7,4 +7,6 @@ dictionary AuthenticationExtensionsClientInputs { // https://w3c.github.io/webauthn/#sctn-appid-extension USVString appid; -}; + CableRegistrationData cableRegistration; + sequence<CableAuthenticationData> cableAuthenticationData; +}; \ No newline at end of file
diff --git a/third_party/blink/renderer/modules/credentialmanager/cable_authentication_data.idl b/third_party/blink/renderer/modules/credentialmanager/cable_authentication_data.idl new file mode 100644 index 0000000..a0e515b --- /dev/null +++ b/third_party/blink/renderer/modules/credentialmanager/cable_authentication_data.idl
@@ -0,0 +1,10 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +dictionary CableAuthenticationData { + required long version; + required BufferSource clientEid; + required BufferSource authenticatorEid; + required BufferSource sessionPreKey; +}; \ No newline at end of file
diff --git a/third_party/blink/renderer/modules/credentialmanager/cable_registration_data.idl b/third_party/blink/renderer/modules/credentialmanager/cable_registration_data.idl new file mode 100644 index 0000000..9e8f689 --- /dev/null +++ b/third_party/blink/renderer/modules/credentialmanager/cable_registration_data.idl
@@ -0,0 +1,8 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +dictionary CableRegistrationData { + required long version; + required BufferSource rpPublicKey; +}; \ No newline at end of file
diff --git a/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.cc b/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.cc index 40bf9cb..e854ea6 100644 --- a/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.cc +++ b/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.cc
@@ -9,6 +9,8 @@ #include "third_party/blink/renderer/bindings/core/v8/array_buffer_or_array_buffer_view.h" #include "third_party/blink/renderer/modules/credentialmanager/authenticator_selection_criteria.h" +#include "third_party/blink/renderer/modules/credentialmanager/cable_authentication_data.h" +#include "third_party/blink/renderer/modules/credentialmanager/cable_registration_data.h" #include "third_party/blink/renderer/modules/credentialmanager/credential.h" #include "third_party/blink/renderer/modules/credentialmanager/federated_credential.h" #include "third_party/blink/renderer/modules/credentialmanager/password_credential.h" @@ -46,6 +48,10 @@ using webauth::mojom::blink::AuthenticatorSelectionCriteriaPtr; using webauth::mojom::blink::AuthenticatorStatus; using webauth::mojom::blink::AuthenticatorTransport; +using webauth::mojom::blink::CableAuthentication; +using webauth::mojom::blink::CableAuthenticationPtr; +using webauth::mojom::blink::CableRegistration; +using webauth::mojom::blink::CableRegistrationPtr; using webauth::mojom::blink::PublicKeyCredentialCreationOptionsPtr; using webauth::mojom::blink::PublicKeyCredentialDescriptor; using webauth::mojom::blink::PublicKeyCredentialDescriptorPtr; @@ -143,6 +149,16 @@ return CredentialManagerError::UNKNOWN; } +// static helper method. +Vector<uint8_t> ConvertFixedSizeArray( + const blink::ArrayBufferOrArrayBufferView& buffer, + unsigned length) { + if (buffer.GetAsArrayBufferView().View()->byteLength() != length) { + return Vector<uint8_t>(); + } + return ConvertTo<Vector<uint8_t>>(buffer); +} + // static Vector<uint8_t> TypeConverter<Vector<uint8_t>, blink::ArrayBufferOrArrayBufferView>::Convert( @@ -244,7 +260,7 @@ TypeConverter<PublicKeyCredentialUserEntityPtr, blink::PublicKeyCredentialUserEntity>:: Convert(const blink::PublicKeyCredentialUserEntity& user) { - auto entity = webauth::mojom::blink::PublicKeyCredentialUserEntity::New(); + auto entity = PublicKeyCredentialUserEntity::New(); entity->id = ConvertTo<Vector<uint8_t>>(user.id()); entity->name = user.name(); if (user.hasIcon()) { @@ -259,7 +275,7 @@ TypeConverter<PublicKeyCredentialRpEntityPtr, blink::PublicKeyCredentialRpEntity>:: Convert(const blink::PublicKeyCredentialRpEntity& rp) { - auto entity = webauth::mojom::blink::PublicKeyCredentialRpEntity::New(); + auto entity = PublicKeyCredentialRpEntity::New(); if (rp.hasId()) { entity->id = rp.id(); } @@ -275,8 +291,7 @@ TypeConverter<PublicKeyCredentialDescriptorPtr, blink::PublicKeyCredentialDescriptor>:: Convert(const blink::PublicKeyCredentialDescriptor& descriptor) { - auto mojo_descriptor = - webauth::mojom::blink::PublicKeyCredentialDescriptor::New(); + auto mojo_descriptor = PublicKeyCredentialDescriptor::New(); mojo_descriptor->type = ConvertTo<PublicKeyCredentialType>(descriptor.type()); mojo_descriptor->id = ConvertTo<Vector<uint8_t>>(descriptor.id()); @@ -294,8 +309,7 @@ TypeConverter<PublicKeyCredentialParametersPtr, blink::PublicKeyCredentialParameters>:: Convert(const blink::PublicKeyCredentialParameters& parameter) { - auto mojo_parameter = - webauth::mojom::blink::PublicKeyCredentialParameters::New(); + auto mojo_parameter = PublicKeyCredentialParameters::New(); mojo_parameter->type = ConvertTo<PublicKeyCredentialType>(parameter.type()); // A COSEAlgorithmIdentifier's value is a number identifying a cryptographic @@ -376,10 +390,52 @@ } } + if (options.hasExtensions()) { + const auto& extensions = options.extensions(); + if (extensions.hasCableRegistration()) { + CableRegistrationPtr mojo_cable = + CableRegistration::From(extensions.cableRegistration()); + if (mojo_cable) { + mojo_options->cable_registration_data = std::move(mojo_cable); + } + } + } + return mojo_options; } // static +CableAuthenticationPtr +TypeConverter<CableAuthenticationPtr, blink::CableAuthenticationData>::Convert( + const blink::CableAuthenticationData& data) { + auto entity = CableAuthentication::New(); + entity->version = data.version(); + entity->client_eid = ConvertFixedSizeArray(data.clientEid(), 16); + entity->authenticator_eid = + ConvertFixedSizeArray(data.authenticatorEid(), 16); + entity->session_pre_key = ConvertFixedSizeArray(data.sessionPreKey(), 32); + if (entity->client_eid.IsEmpty() || entity->authenticator_eid.IsEmpty() || + entity->session_pre_key.IsEmpty()) { + return nullptr; + } + return entity; +} + +// static +CableRegistrationPtr +TypeConverter<CableRegistrationPtr, blink::CableRegistrationData>::Convert( + const blink::CableRegistrationData& data) { + auto entity = CableRegistration::New(); + entity->version = data.version(); + entity->relying_party_public_key = + ConvertFixedSizeArray(data.rpPublicKey(), 65); + if (entity->relying_party_public_key.IsEmpty()) { + return nullptr; + } + return entity; +} + +// static PublicKeyCredentialRequestOptionsPtr TypeConverter<PublicKeyCredentialRequestOptionsPtr, blink::PublicKeyCredentialRequestOptions>:: @@ -415,6 +471,16 @@ if (extensions.hasAppid()) { mojo_options->appid = extensions.appid(); } + if (extensions.hasCableAuthenticationData()) { + Vector<CableAuthenticationPtr> mojo_data; + for (const auto& data : extensions.cableAuthenticationData()) { + CableAuthenticationPtr mojo_cable = CableAuthentication::From(data); + if (mojo_cable) { + mojo_data.push_back(std::move(mojo_cable)); + } + } + mojo_options->cable_authentication_data = std::move(mojo_data); + } } return mojo_options;
diff --git a/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.h b/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.h index ac84e8bd..01e9f06 100644 --- a/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.h +++ b/third_party/blink/renderer/modules/credentialmanager/credential_manager_type_converters.h
@@ -13,6 +13,8 @@ namespace blink { class AuthenticatorSelectionCriteria; class ArrayBufferOrArrayBufferView; +class CableAuthenticationData; +class CableRegistrationData; class Credential; class PublicKeyCredentialCreationOptions; class PublicKeyCredentialDescriptor; @@ -127,6 +129,20 @@ }; template <> +struct TypeConverter<webauth::mojom::blink::CableAuthenticationPtr, + blink::CableAuthenticationData> { + static webauth::mojom::blink::CableAuthenticationPtr Convert( + const blink::CableAuthenticationData&); +}; + +template <> +struct TypeConverter<webauth::mojom::blink::CableRegistrationPtr, + blink::CableRegistrationData> { + static webauth::mojom::blink::CableRegistrationPtr Convert( + const blink::CableRegistrationData&); +}; + +template <> struct TypeConverter< webauth::mojom::blink::PublicKeyCredentialRequestOptionsPtr, blink::PublicKeyCredentialRequestOptions> {
diff --git a/third_party/blink/renderer/modules/credentialmanager/credentials_container.cc b/third_party/blink/renderer/modules/credentialmanager/credentials_container.cc index 005ca2c..b4fff62 100644 --- a/third_party/blink/renderer/modules/credentialmanager/credentials_container.cc +++ b/third_party/blink/renderer/modules/credentialmanager/credentials_container.cc
@@ -448,19 +448,27 @@ if (!CheckPublicKeySecurityRequirements(resolver, relying_party_id)) return promise; - if (options.publicKey().hasExtensions() && - options.publicKey().extensions().hasAppid()) { - const auto& appid = options.publicKey().extensions().appid(); - if (!appid.IsEmpty()) { - KURL appid_url(appid); - if (!appid_url.IsValid()) { - resolver->Reject( - DOMException::Create(kSyntaxError, - "The `appid` extension value is neither " - "empty/null nor a valid URL")); - return promise; + if (options.publicKey().hasExtensions()) { + if (options.publicKey().extensions().hasAppid()) { + const auto& appid = options.publicKey().extensions().appid(); + if (!appid.IsEmpty()) { + KURL appid_url(appid); + if (!appid_url.IsValid()) { + resolver->Reject( + DOMException::Create(kSyntaxError, + "The `appid` extension value is neither " + "empty/null nor a valid URL")); + return promise; + } } } + if (options.publicKey().extensions().hasCableRegistration()) { + resolver->Reject(DOMException::Create( + kNotSupportedError, + "The 'cableRegistration' extension is only valid when creating " + "a credential")); + return promise; + } } auto mojo_options = @@ -602,14 +610,22 @@ if (!CheckPublicKeySecurityRequirements(resolver, relying_party_id)) return promise; - if (options.publicKey().hasExtensions() && - options.publicKey().extensions().hasAppid()) { - resolver->Reject(DOMException::Create( - kNotSupportedError, - "The 'appid' extension is only valid when requesting an assertion " - "for a pre-existing credential that was registered using the " - "legacy FIDO U2F API.")); - return promise; + if (options.publicKey().hasExtensions()) { + if (options.publicKey().extensions().hasAppid()) { + resolver->Reject(DOMException::Create( + kNotSupportedError, + "The 'appid' extension is only valid when requesting an assertion " + "for a pre-existing credential that was registered using the " + "legacy FIDO U2F API.")); + return promise; + } + if (options.publicKey().extensions().hasCableAuthenticationData()) { + resolver->Reject(DOMException::Create( + kNotSupportedError, + "The 'cableAuthentication' extension is only valid when requesting " + "an assertion")); + return promise; + } } auto mojo_options =
diff --git a/third_party/blink/renderer/modules/filesystem/OWNERS b/third_party/blink/renderer/modules/filesystem/OWNERS index f87056b7c..a4c6d78 100644 --- a/third_party/blink/renderer/modules/filesystem/OWNERS +++ b/third_party/blink/renderer/modules/filesystem/OWNERS
@@ -1,6 +1,5 @@ jsbell@chromium.org kinuko@chromium.org -michaeln@chromium.org pwnall@chromium.org nhiroki@chromium.org tzik@chromium.org
diff --git a/third_party/blink/renderer/modules/keyboard/keyboard.idl b/third_party/blink/renderer/modules/keyboard/keyboard.idl index 5f739ff..b7456431 100644 --- a/third_party/blink/renderer/modules/keyboard/keyboard.idl +++ b/third_party/blink/renderer/modules/keyboard/keyboard.idl
@@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// TODO(joedow): Remove RuntimeEnabled flag after the next branch point. [ Exposed=Window, RuntimeEnabled=KeyboardLock, @@ -18,6 +19,7 @@ // Keyboard Map specification: https://wicg.github.io/keyboard-map/ [CallWith=ScriptState, + RuntimeEnabled=KeyboardMap, MeasureAs=KeyboardApiGetLayoutMap ] Promise<KeyboardLayoutMap> getLayoutMap(); };
diff --git a/third_party/blink/renderer/modules/media_controls/OWNERS b/third_party/blink/renderer/modules/media_controls/OWNERS index 08c4018..e54edd1 100644 --- a/third_party/blink/renderer/modules/media_controls/OWNERS +++ b/third_party/blink/renderer/modules/media_controls/OWNERS
@@ -1,4 +1,6 @@ +beccahughes@chromium.org mlamouri@chromium.org +steimel@chromium.org # TEAM: media-dev@chromium.org # COMPONENT: Blink>Media>Controls
diff --git a/third_party/blink/renderer/modules/modules_idl_files.gni b/third_party/blink/renderer/modules/modules_idl_files.gni index 20b035e..4c50a588 100644 --- a/third_party/blink/renderer/modules/modules_idl_files.gni +++ b/third_party/blink/renderer/modules/modules_idl_files.gni
@@ -475,6 +475,8 @@ "credentialmanager/authentication_extensions_client_inputs.idl", "credentialmanager/authentication_extensions_client_outputs.idl", "credentialmanager/authenticator_selection_criteria.idl", + "credentialmanager/cable_authentication_data.idl", + "credentialmanager/cable_registration_data.idl", "credentialmanager/collected_client_data.idl", "credentialmanager/credential_creation_options.idl", "credentialmanager/credential_data.idl",
diff --git a/third_party/blink/renderer/modules/picture_in_picture/document_picture_in_picture.idl b/third_party/blink/renderer/modules/picture_in_picture/document_picture_in_picture.idl index 0ce4b27..63b7788 100644 --- a/third_party/blink/renderer/modules/picture_in_picture/document_picture_in_picture.idl +++ b/third_party/blink/renderer/modules/picture_in_picture/document_picture_in_picture.idl
@@ -9,10 +9,10 @@ OriginTrialEnabled=PictureInPictureAPI ] partial interface Document { - readonly attribute boolean pictureInPictureEnabled; + [Measure] readonly attribute boolean pictureInPictureEnabled; - [CallWith=ScriptState] Promise<void> exitPictureInPicture(); + [CallWith=ScriptState, Measure] Promise<void> exitPictureInPicture(); // TODO(crbug.com/656517): Define this attribute in DocumentOrShadowRoot. - readonly attribute HTMLVideoElement? pictureInPictureElement; + [Measure] readonly attribute HTMLVideoElement? pictureInPictureElement; }; \ No newline at end of file
diff --git a/third_party/blink/renderer/modules/picture_in_picture/html_video_element_picture_in_picture.idl b/third_party/blink/renderer/modules/picture_in_picture/html_video_element_picture_in_picture.idl index 83cc7b28..fe0c46e7 100644 --- a/third_party/blink/renderer/modules/picture_in_picture/html_video_element_picture_in_picture.idl +++ b/third_party/blink/renderer/modules/picture_in_picture/html_video_element_picture_in_picture.idl
@@ -8,11 +8,11 @@ OriginTrialEnabled=PictureInPictureAPI ] partial interface HTMLVideoElement { - [CallWith=ScriptState] Promise<PictureInPictureWindow> requestPictureInPicture(); + [CallWith=ScriptState, Measure] Promise<PictureInPictureWindow> requestPictureInPicture(); attribute EventHandler onenterpictureinpicture; attribute EventHandler onleavepictureinpicture; - [CEReactions, Reflect] attribute boolean disablePictureInPicture; + [CEReactions, Measure, Reflect] attribute boolean disablePictureInPicture; }; \ No newline at end of file
diff --git a/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_window.cc b/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_window.cc index 5a99ffe..a32d6b30 100644 --- a/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_window.cc +++ b/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_window.cc
@@ -5,6 +5,7 @@ #include "third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_window.h" #include "third_party/blink/renderer/core/execution_context/execution_context.h" +#include "third_party/blink/renderer/core/frame/use_counter.h" namespace blink { @@ -21,6 +22,18 @@ return EventTargetNames::PictureInPictureWindow; } +void PictureInPictureWindow::AddedEventListener( + const AtomicString& event_type, + RegisteredEventListener& registered_listener) { + if (event_type == EventTypeNames::resize) { + UseCounter::Count(GetExecutionContext(), + WebFeature::kPictureInPictureWindowResizeEventListener); + } + + EventTargetWithInlineData::AddedEventListener(event_type, + registered_listener); +} + void PictureInPictureWindow::Trace(blink::Visitor* visitor) { EventTargetWithInlineData::Trace(visitor); ContextClient::Trace(visitor);
diff --git a/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_window.h b/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_window.h index 7cb4968..846f46b 100644 --- a/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_window.h +++ b/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_window.h
@@ -39,6 +39,11 @@ void Trace(blink::Visitor*) override; + protected: + // EventTarget overrides. + void AddedEventListener(const AtomicString& event_type, + RegisteredEventListener&) override; + private: // The Picture-in-Picture window size in pixels. WebSize size_;
diff --git a/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_window.idl b/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_window.idl index d037fe7..ead241d 100644 --- a/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_window.idl +++ b/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_window.idl
@@ -7,8 +7,8 @@ OriginTrialEnabled=PictureInPictureAPI ] interface PictureInPictureWindow : EventTarget { - readonly attribute long width; - readonly attribute long height; + [Measure] readonly attribute long width; + [Measure] readonly attribute long height; attribute EventHandler onresize; }; \ No newline at end of file
diff --git a/third_party/blink/renderer/modules/picture_in_picture/shadow_root_picture_in_picture.idl b/third_party/blink/renderer/modules/picture_in_picture/shadow_root_picture_in_picture.idl index 57576de0..3166b31f 100644 --- a/third_party/blink/renderer/modules/picture_in_picture/shadow_root_picture_in_picture.idl +++ b/third_party/blink/renderer/modules/picture_in_picture/shadow_root_picture_in_picture.idl
@@ -9,5 +9,5 @@ ] partial interface ShadowRoot { // TODO(crbug.com/656517): Define this attribute in DocumentOrShadowRoot. - readonly attribute HTMLVideoElement? pictureInPictureElement; + [Measure] readonly attribute HTMLVideoElement? pictureInPictureElement; }; \ No newline at end of file
diff --git a/third_party/blink/renderer/modules/storage/OWNERS b/third_party/blink/renderer/modules/storage/OWNERS index 90fb31a9..d1e5fd47 100644 --- a/third_party/blink/renderer/modules/storage/OWNERS +++ b/third_party/blink/renderer/modules/storage/OWNERS
@@ -1,8 +1,5 @@ jsbell@chromium.org pwnall@chromium.org -# OOO until this comment is removed. -michaeln@chromium.org - # TEAM: storage-dev@chromium.org # COMPONENT: Blink>Storage>DOMStorage
diff --git a/third_party/blink/renderer/modules/webdatabase/OWNERS b/third_party/blink/renderer/modules/webdatabase/OWNERS index edfc0430..aab38fa 100644 --- a/third_party/blink/renderer/modules/webdatabase/OWNERS +++ b/third_party/blink/renderer/modules/webdatabase/OWNERS
@@ -1,9 +1,8 @@ # Primary -michaeln@chromium.org - -# Seconday pwnall@chromium.org + +# Secondary jsbell@chromium.org # TEAM: storage-dev@chromium.org -# COMPONENT: Blink>Storage +# COMPONENT: Blink>Storage>WebSQL
diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.cc b/third_party/blink/renderer/platform/exported/web_runtime_features.cc index 216a72b9..ce76485f 100644 --- a/third_party/blink/renderer/platform/exported/web_runtime_features.cc +++ b/third_party/blink/renderer/platform/exported/web_runtime_features.cc
@@ -384,10 +384,6 @@ RuntimeEnabledFeatures::SetExpensiveBackgroundTimerThrottlingEnabled(enable); } -void WebRuntimeFeatures::EnableRootLayerScrolling(bool enable) { - RuntimeEnabledFeatures::SetRootLayerScrollingEnabled(enable); -} - void WebRuntimeFeatures::EnableScrollAnchoring(bool enable) { RuntimeEnabledFeatures::SetScrollAnchoringEnabled(enable); }
diff --git a/third_party/blink/renderer/platform/graphics/canvas_color_params.cc b/third_party/blink/renderer/platform/graphics/canvas_color_params.cc index 0c1b065..ad8322a 100644 --- a/third_party/blink/renderer/platform/graphics/canvas_color_params.cc +++ b/third_party/blink/renderer/platform/graphics/canvas_color_params.cc
@@ -210,7 +210,7 @@ case kRGBA8CanvasPixelFormat: return GL_UNSIGNED_BYTE; case kF16CanvasPixelFormat: - return GL_HALF_FLOAT; + return GL_HALF_FLOAT_OES; default: break; }
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index b33e5b5..021f788 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -631,7 +631,7 @@ }, { name: "KeyboardLock", - status: "test", + status: "stable", }, { name: "KeyboardMap", @@ -1072,8 +1072,6 @@ }, // Handles frame scrolling via the root PaintLayer instead of the FrameView. // The master bug for the root layer scrolling project is crbug.com/417782. - // This REF is enabled iff features::kRootLayerScrolling is on or - // experimental web platform features are enabled. { name: "RootLayerScrolling", status: "stable",
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc index 7b71e97..f69ddf9 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl.cc
@@ -589,11 +589,19 @@ FrameScheduler::ThrottlingState FrameSchedulerImpl::CalculateThrottlingState( ObserverType type) const { + // Detached frames are not throttled. + if (!parent_page_scheduler_) + return FrameScheduler::ThrottlingState::kNotThrottled; + if (RuntimeEnabledFeatures::StopLoadingInBackgroundEnabled() && page_frozen_ && !keep_active_) { DCHECK(page_visibility_ == PageVisibilityState::kHidden); return FrameScheduler::ThrottlingState::kStopped; } + if (type == ObserverType::kLoader && + parent_page_scheduler_->HasActiveConnection()) { + return FrameScheduler::ThrottlingState::kNotThrottled; + } if (page_visibility_ == PageVisibilityState::kHidden) return FrameScheduler::ThrottlingState::kThrottled; return FrameScheduler::ThrottlingState::kNotThrottled;
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc index bec1084..9f119e9 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.cc
@@ -203,6 +203,13 @@ return MainThreadTaskQueue::NameForQueueType(desc->queue_type.value()); } +const char* OptionalTaskPriorityToString( + base::Optional<TaskQueue::QueuePriority> priority) { + if (!priority) + return nullptr; + return TaskQueue::PriorityToString(priority.value()); +} + bool IsUnconditionalHighPriorityInputEnabled() { return base::FeatureList::IsEnabled(kHighPriorityInput); } @@ -528,6 +535,12 @@ main_thread_scheduler_impl, &main_thread_scheduler_impl->tracing_controller_, OptionalTaskDescriptionToString), + task_priority_for_tracing( + base::nullopt, + "Scheduler.TaskPriority", + main_thread_scheduler_impl, + &main_thread_scheduler_impl->tracing_controller_, + OptionalTaskPriorityToString), virtual_time_policy(VirtualTimePolicy::kAdvance), virtual_time_pause_count(0), max_virtual_time_task_starvation_count(0), @@ -2426,6 +2439,11 @@ queue ? base::Optional<MainThreadTaskQueue::QueueType>(queue->queue_type()) : base::nullopt}; + + main_thread_only().task_priority_for_tracing = + queue + ? base::Optional<TaskQueue::QueuePriority>(queue->GetQueuePriority()) + : base::nullopt; } void MainThreadSchedulerImpl::OnTaskCompleted( @@ -2445,6 +2463,9 @@ thread_time); main_thread_only().task_description_for_tracing = base::nullopt; + // Unset the state of |task_priority_for_tracing|. + main_thread_only().task_priority_for_tracing = base::nullopt; + RecordTaskUkm(queue, task, start, end, thread_time); }
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h index 2766d3f..549cbca 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl.h
@@ -19,6 +19,7 @@ #include "build/build_config.h" #include "third_party/blink/public/platform/scheduler/web_main_thread_scheduler.h" #include "third_party/blink/renderer/platform/platform_export.h" +#include "third_party/blink/renderer/platform/scheduler/base/task_queue.h" #include "third_party/blink/renderer/platform/scheduler/base/task_time_observer.h" #include "third_party/blink/renderer/platform/scheduler/child/idle_canceled_delayed_task_sweeper.h" #include "third_party/blink/renderer/platform/scheduler/child/idle_helper.h" @@ -723,6 +724,10 @@ TraceableState<base::Optional<TaskDescriptionForTracing>, kTracingCategoryNameInfo> task_description_for_tracing; // Don't use except for tracing. + TraceableState< + base::Optional<base::sequence_manager::TaskQueue::QueuePriority>, + kTracingCategoryNameInfo> + task_priority_for_tracing; // Only used for tracing. base::ObserverList<VirtualTimeObserver> virtual_time_observers; base::Time initial_virtual_time; base::TimeTicks initial_virtual_time_ticks;
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.cc b/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.cc index 77cc5232..92969ace 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.cc
@@ -275,6 +275,10 @@ } bool PageSchedulerImpl::HasActiveConnectionForTest() const { + return HasActiveConnection(); +} + +bool PageSchedulerImpl::HasActiveConnection() const { return has_active_connection_; } @@ -299,6 +303,7 @@ if (has_active_connection_ != has_active_connection) { has_active_connection_ = has_active_connection; + UpdateFramePolicies(); UpdateBackgroundThrottlingState(); } }
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.h b/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.h index 7484618..8c42eb6 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.h +++ b/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl.h
@@ -75,6 +75,9 @@ virtual void ReportIntervention(const std::string& message); bool IsFrozen() const; + // PageSchedulerImpl::HasActiveConnection can be used in non-test code, + // while PageScheduler::HasActiveConnectionForTest can't. + bool HasActiveConnection() const; std::unique_ptr<FrameSchedulerImpl> CreateFrameSchedulerImpl( base::trace_event::BlameContext*,
diff --git a/third_party/blink/tools/blinkpy/web_tests/port/base.py b/third_party/blink/tools/blinkpy/web_tests/port/base.py index 3d27c80..5b49a8a 100644 --- a/third_party/blink/tools/blinkpy/web_tests/port/base.py +++ b/third_party/blink/tools/blinkpy/web_tests/port/base.py
@@ -67,7 +67,7 @@ CONTENT_SHELL_FONTS_DIR = "test_fonts" FONT_FILES = [ - # Other fonts: Arabic, CJK, Indic, Thai, etc. + [[CONTENT_SHELL_FONTS_DIR], 'Ahem.ttf', None], [[CONTENT_SHELL_FONTS_DIR], 'Arimo-Bold.ttf', None], [[CONTENT_SHELL_FONTS_DIR], 'Arimo-BoldItalic.ttf', None], [[CONTENT_SHELL_FONTS_DIR], 'Arimo-Italic.ttf', None], @@ -1794,7 +1794,7 @@ """Returns list of font files that should be used by the test.""" # TODO(sergeyu): Currently FONT_FILES is valid only on Linux. Make it # usable on other platforms if necessary. - result = [self._build_path('AHEM____.TTF')] + result = [] for (font_dirs, font_file, package) in FONT_FILES: exists = False for font_dir in font_dirs:
diff --git a/third_party/boringssl/BUILD.generated.gni b/third_party/boringssl/BUILD.generated.gni index 0003489..64551fc 100644 --- a/third_party/boringssl/BUILD.generated.gni +++ b/third_party/boringssl/BUILD.generated.gni
@@ -57,6 +57,7 @@ "src/crypto/bytestring/cbb.c", "src/crypto/bytestring/cbs.c", "src/crypto/bytestring/internal.h", + "src/crypto/bytestring/unicode.c", "src/crypto/chacha/chacha.c", "src/crypto/cipher_extra/cipher_extra.c", "src/crypto/cipher_extra/derive_key.c", @@ -290,6 +291,7 @@ "src/include/openssl/dh.h", "src/include/openssl/digest.h", "src/include/openssl/dsa.h", + "src/include/openssl/e_os2.h", "src/include/openssl/ec.h", "src/include/openssl/ec_key.h", "src/include/openssl/ecdh.h",
diff --git a/third_party/boringssl/crypto_test_data.cc b/third_party/boringssl/crypto_test_data.cc index f19576e..09bf203 100644 --- a/third_party/boringssl/crypto_test_data.cc +++ b/third_party/boringssl/crypto_test_data.cc
@@ -67,21 +67,22 @@ * crypto/x509/some_names1.pem \ * crypto/x509/some_names2.pem \ * crypto/x509/some_names3.pem \ - * third_party/wycheproof/aes_cbc_pkcs5_test.txt \ - * third_party/wycheproof/aes_gcm_siv_test.txt \ - * third_party/wycheproof/aes_gcm_test.txt \ - * third_party/wycheproof/chacha20_poly1305_test.txt \ - * third_party/wycheproof/dsa_test.txt \ - * third_party/wycheproof/ecdh_test.txt \ - * third_party/wycheproof/ecdsa_secp224r1_sha224_test.txt \ - * third_party/wycheproof/ecdsa_secp224r1_sha256_test.txt \ - * third_party/wycheproof/ecdsa_secp256r1_sha256_test.txt \ - * third_party/wycheproof/ecdsa_secp384r1_sha384_test.txt \ - * third_party/wycheproof/ecdsa_secp384r1_sha512_test.txt \ - * third_party/wycheproof/ecdsa_secp521r1_sha512_test.txt \ - * third_party/wycheproof/eddsa_test.txt \ - * third_party/wycheproof/rsa_signature_test.txt \ - * third_party/wycheproof/x25519_test.txt */ + * third_party/wycheproof_testvectors/aes_cbc_pkcs5_test.txt \ + * third_party/wycheproof_testvectors/aes_gcm_siv_test.txt \ + * third_party/wycheproof_testvectors/aes_gcm_test.txt \ + * third_party/wycheproof_testvectors/chacha20_poly1305_test.txt \ + * third_party/wycheproof_testvectors/dsa_test.txt \ + * third_party/wycheproof_testvectors/ecdh_test.txt \ + * third_party/wycheproof_testvectors/ecdsa_secp224r1_sha224_test.txt \ + * third_party/wycheproof_testvectors/ecdsa_secp224r1_sha256_test.txt \ + * third_party/wycheproof_testvectors/ecdsa_secp256r1_sha256_test.txt \ + * third_party/wycheproof_testvectors/ecdsa_secp384r1_sha384_test.txt \ + * third_party/wycheproof_testvectors/ecdsa_secp384r1_sha512_test.txt \ + * third_party/wycheproof_testvectors/ecdsa_secp521r1_sha512_test.txt \ + * third_party/wycheproof_testvectors/eddsa_test.txt \ + * third_party/wycheproof_testvectors/kw_test.txt \ + * third_party/wycheproof_testvectors/rsa_signature_test.txt \ + * third_party/wycheproof_testvectors/x25519_test.txt */ /* clang-format off */ @@ -3019,6 +3020,15 @@ static const size_t kLen65 = 33154; static const char *kData66[] = { + "# Imported from Wycheproof's kw_test.json.\n# This file is generated by convert_wycheproof.go. Do not edit by hand.\n#\n# Algorithm: KW\n# Generator version: 0.4.2\n\n[keySize = 128]\n\n# tcId = 1\nct = 9de453ced5d4ab46a5601708eeefefb5e593e6ae8e86b26b\nkey = 6f67486d1e914419cb43c28509c7c1ea\nmsg = 8dc0632d92ee0be4f740028410b08270\nresult = valid\n\n# tcId = 2\nct = 8c3aba85cc0ae1ae10b36658b068f595baf8caafb745ef3c\nkey = a0b17172bb296db7f5c869e9a36b5ce3\nmsg = 615dd022d607c910f20178cbdf42060f\nresult = valid\n\n# tcId = 3\nct = 1de093654826f18fcd0f3fd499416ff22ed75ee12fe0b624\nkey = 0e49d571c19b5250effd41d94bde39d6\nmsg = f25e4de8caca363fd5f29442eb147b55\nresult = valid\n\n# tcId = 4\n# wrapped key is longer than wrapping key\nct = 9c3ddc23827b7b3c13105f9e8b11523baccdfb6c8b7e7825496e7a840bd32aec\nkey = e0e12959109103e30ae8b5684a22e662\nmsg = dbb0f2bb2be912a20430972d9842ce3fd3b928e573e1ac8e\nresult = acceptable\n\n# tcId = 5\n# wrapped key is longer than wrapping key\nct = afb744aaf746dcc0b57f8b378c404cbe877f44cf3d45140d60814eda3f541f01\nkey = dd583d9f1059861430ec8b5d8a180e9b\nmsg = f2e34f356362a31b51d6e02bcd333c9e6170494ca5ff5487\nresult = acceptable\n\n# tcId = 6\n# wrapped key is longer than wrapping key\nct = cff98cd64cb51ab99b81aee82cee4274d0df3e1b6a4943d39236ea989846d0cc\nkey = faf5ccfae42b43cee2c5f0f3177a7c5d\nmsg = 4e02084833660c463830483b36dab866c64c8cf7429cac3d\nresult = acceptable\n\n# tcId = 7\n# wrapped key is longer than wrapping key\nct = 58dcfb0e7ec4d3bc8003418d865fbd520c6b24b2bde35b1be5b1c5ff32a130f33d035e5932616083\nkey = c2b9d23f2831ddcdeb456853d4014db9\nmsg = f4cfea98e58b939cc859554385cf3a6c7f8217f728efb431c964786de8274907\nresult = acceptable\n\n# tcId = 8\n# wrapped key is longer than wrapping key\nct = 4ee47bd68d418586c447a39111e2ec1502ff0f1726ea91c5d97370409d89b8e66e889b638ac40ced\nkey = 620a08f320cdedbf7ae551add348d95e\nmsg = cec34eaf8e67e1ce619ddfc309531c42f16033a7e2cbc4f5eb3a548164e9b291\nresult = acceptable\n\n# tcId = 9\n# wrapped key is longer than wrapping key\nct = d3b093fd822ce454ebc251c6f21fa71c3858ee7e623ecbfbbf887398a30b40c55d0565c7a15e4015\nkey = ed089ac274f8c7cea2415671a94b5e53\nmsg = 6065e41df14daeeefacac5daeb7674cdc9c1f686013b797153e80ef215893299\nresult = acceptable\n\n# tcId = 10\n# Round counter overflows 256\nct = 222deadde6efb760cae42fa188310e0c07e7d557529766444a9efb330907d42f0dd8f3d17b3a38bf40d68c095a9cce19daf907bf2c92f1e59b18b277ff0397fc50f45f582db936aa8afb943de01b58abfdc81daef4e038c99e4c1eb3ee447464bb8f89a4ea81e56556cc26c72883c06a7fe850d04347d68bbadc4a06775030676db8cc34aeb07e39c7f059c2bff76a7f2baf076749004ef7189f887f89029f88c5c1d0f5ee62320b423048e2ad8186e63be23c553f5576a40d967e8b527ccd783c41abc64bea1aec8a76deb3e9c9a6656756e1dac38bd25ff008888a5591af763fd73f5addd749794817070990484654a46ef442adaeacab14d12daaf87bcb91661a21593717d9b93529d813ea5fc812d708c0d8e9b68122d9f5e6267cde363780a45d07e4caa5bf14f2334f25b9d177632bb80a82894aa47b6f360b2da1138dedd4331f077c900554c7a68b5d154980bb3517ac20a78a51f6f21e42b2c4c960d31cbd22bd610819182c5e456ba7d7e903f5e60f6e0c4cc014feb4f81973ce48ad6f4dab8da51eb7\nkey = 31cacbb17d6dbbecae40727c5048fe0c\nmsg = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\nresult = acceptable\n\n# tcId = 11\n# empty keys cannot be wrapped\nct = a6a6a6a6a6a6a6a6\nkey = 574957151fc2afe0fa3dc7a9a7da6495\nmsg = \nresult = invalid\n\n# tcId = 12\n# keys of size 8 byte cannot be wrapped\nct = dc26fb6911d71971df0356d6bb9ed6e6\nkey = 574957151fc2afe0fa3dc7a9a7da6495\nmsg = 0001020304050607\nresult = invalid\n\n# tcId = 13\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495\nmsg = 00\nresult = invalid\n\n# tcId = 14\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495\nmsg = 0001\nresult = invalid\n\n# tcId = 15\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495\nmsg = 000102\nresult = invalid\n\n# tcId = 16\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495\nmsg = 00010203\nresult = invalid\n\n# tcId = 17\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495\nmsg = 0001020304\nresult = invalid\n\n# tcId = 18\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495\nmsg = 000102030405\nresult = invalid\n\n# tcId = 19\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495\nmsg = 00010203040506\nresult = invalid\n\n# tcId = 20\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495\nmsg = 000102030405060708090a0b0c0d0e0f10111213\nresult = invalid\n\n# tcId = 21\n# invalid size of wrapped key\nct = \nkey = fe60fc8df7d9f4ebb5416ca4e82182f7\nmsg = \nresult = invalid\n\n# tcId = 22\n# invalid size of wrapped key\nct = 9f\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7\nmsg = \nresult = invalid\n\n# tcId = 23\n# invalid size of wrapped key\nct = dc9e9580\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7\nmsg = \nresult = invalid\n\n# tcId = 24\n# invalid size of wrapped key\nct = b9b282d138693000\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7\nmsg = \nresult = invalid\n\n# tcId = 25\n# invalid size of wrapped key\nct = 0efc635b2d61e244056b9d4591ca6b\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7\nmsg = \nresult = invalid\n\n# tcId = 26\n# invalid size of wrapped key\nct = 4a305dae087b0d24d62af41831338f33ae\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7\nmsg = \nresult = invalid\n\n# tcId = 27\n# invalid size of wrapped key\nct = 82cb927097cf31ea4affea440b0d8ca6a240b900\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7\nmsg = \nresult = invalid\n\n# tcId = 28\n# bytes appended to wrapped key\nct = 9790ab51fbcb850df6764e011ae97c85785bed2633aea66500\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7\nmsg = 000102030405060708090a0b0c0d0e0f\nresult = invalid\n\n# tcId = 29\n# Incorrect IV\nct = 0aac329ccd513edbdd6367df67999eaac9e7b51984c4d38d\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 30\n# Incorrect IV\nct = 5a55dc429749ca49bb4ab01d966b19ea9a9e1402e6ab2962\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 31\n# Incorrect IV\nct = 45f533f6072f640eb7e1e512d56072085567f4ad6012a97a\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 32\n# Incorrect IV\nct = 84f284565df47c409107f7a0a71bc370a8ed4489d414b9e9\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 33\n# Incorrect IV\nct = 3941c366554fc896e9fe52f02493ca03d439eb17c236146d\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 34\n# Incorrect IV\nct = 45c9d42363d981d086a972728e130a42f5dd90bda562a85a\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 35\n# Incorrect IV\nct = 037d17859519d6c0728a9eb6e64113e86919decabd3bbb88\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 36\n# Incorrect IV\nct = 1ad10af7f6c042b267a0c7bc4d25d27c003deb50e2cc566a\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 37\n# Incorrect IV\nct = 630c571b7fb8647ac5360a255f9f5d3645795ac45285cbaa\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 38\n# Incorrect IV\nct = 16db553e467d4029d0fea62b2c440e5df6c6591f0497a99d\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 39\n# Incorrect IV\nct = 097991090a156047d4784b757f262e12ce57e13a3d5d286", + "c\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 40\n# Incorrect IV\nct = 3957c338b750a3285eb7b65c9cfe77053dd7d8149f42caa1\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 41\n# RFC 3394\nct = 1fa68b0a8112b447aef34bd8fb5a7b829d3e862371d2cfe5\nkey = 000102030405060708090a0b0c0d0e0f\nmsg = 00112233445566778899aabbccddeeff\nresult = valid\n\n[keySize = 192]\n\n# tcId = 42\nct = 00be1caddfd5ad7697877017795f9cee4bce5a61687a6126\nkey = f75a2f49a630c7dc91626b00ce029f0bd2981d7c74a93ebe\nmsg = 9adbc00c710b1101bdf6a4ed65b32d72\nresult = valid\n\n# tcId = 43\nct = 54e7f278b5a1fb4c31a0d79ac1f615edd910bf22015a0668\nkey = b713f6b7814f98894d7b153974684359f1460213eb74be68\nmsg = 78585f0c49922e82caf17ebc3721b4db\nresult = valid\n\n# tcId = 44\nct = 510455bd9c078ac1f07bb3752cbd04e421b0dd635190fa62\nkey = 13ecf423211caa334ba6db37259a535c20de8ad10fc8c432\nmsg = 4fc75d0f221e22408a37e11265d49a05\nresult = valid\n\n# tcId = 45\nct = 880da5b410f913ad72cc93f46344f1152165bdea14664fd2d3afbd87b8cc5cfd\nkey = 4417fbbea51bdd91818d74051957dd70e135c5cf3732bdf1\nmsg = f5357da9f8fd4a1190f36e9fa09a90fcf14d87d62332f1a5\nresult = valid\n\n# tcId = 46\nct = 27654cf6a63d6004ae83da54c2e5d7b5fad20878f350087ddd17ac44a2be868f\nkey = b3f26d8a22fdd61f709841231fbde695b3f28dddced6d41e\nmsg = 0d0af955d2e3829cc3d643219b301e64e0510dfbc428119a\nresult = valid\n\n# tcId = 47\nct = ad7ca66ad4664f43e4dd09296a6e6f02d5af4408f225c0abeb0d9b76c8d1e982\nkey = f70cfb262c729a18206c8afd74356ec7e049d10b44a6e000\nmsg = 241cedfa64c4e7bec541a2eb4c368269e0f0ddebc58267ea\nresult = valid\n\n# tcId = 48\n# wrapped key is longer than wrapping key\nct = e245c90a6b46caece94f47117d608331958c8f75f531ebcdc902c0213d9105f2155af07daa62d132\nkey = 1639f9f81e53e2eeb677a249e5eced3af108971301601a7b\nmsg = ec3c6a1f1a9585327fe658490c74635e5300876da5846a629398984fb551d691\nresult = acceptable\n\n# tcId = 49\n# wrapped key is longer than wrapping key\nct = 8a32b9f207ae5aaedb7e8a0d945107412c1bd06999bc5ac83c1f958dfb77ebdcf9d98c60dbd4650a\nkey = 1f22d5658aa685b8ba8659dc342880d5b2399e6a815005b0\nmsg = 50be4c1b2f29a63f44d7fc63737f600f0194ea3fb36e173d2ddd19f218656380\nresult = acceptable\n\n# tcId = 50\n# wrapped key is longer than wrapping key\nct = 4a5842b10d2db96ea1039ef4785ce722555b3751a9b6dd39126ad363378c72320d83ea7adb81615a\nkey = 3a2f4aa50441954bba5a1836294ce071f9296b23dbed6771\nmsg = 65da02ff21b483a1e39575490b4319e84ae0299f1f00b3859fbe2e74b3ec2aaf\nresult = acceptable\n\n# tcId = 51\n# Round counter overflows 256\nct = e2192598e6124f2791b2751f930958435bb1d02e98aa1e09781bba0b159435db659fa73fa310111704692c68e16ddf4be06022c52fe9dba6279aad1aeb814125d0ddf33f31e58e625af32305050cfea390d8782d32caac558889ca8e641908208da6976542b40dbd090178e2a6812a436c18a5e891ac8083176ace1ddfee4d382856a59c80c643ecd5c1ab68c66b2b8984ce6e0e386f6554a9cb91d363bb4accf028878ec20b8b2e37214f7b12dbcd78fb38f711a90fe262c78491b9058354e27b34fc92ef0d7028594cb08259f86b54cb1d317ec55f2ef2ab7e8b141671f8bcb1a90bb7d82bc8cb4fb02c9ce430ef4ae0dc847e91e7d4fb463eb9dd87fc9dc9568f3a4ef504d74c134dcb60ca01b36ce10cb467268ea297c0518a50d12cc025cfeea1381ddd7dd63e4ac94890a0eae9dbd8db244625a3c8af2e1aff6a8112c4d3d98e8263588ee1dd9063b709b8ec00474c4ea413a802b8cde814e7b3731410809ed000060fb7b9b0bf8509ef17515f333e868b188ea16445f380b3a7d42774f6456cdf724246fa\nkey = 31cacbb17d6dbbecae40727c5048fe0c01bc53b23ab63502\nmsg = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\nresult = acceptable\n\n# tcId = 52\n# empty keys cannot be wrapped\nct = a6a6a6a6a6a6a6a6\nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76\nmsg = \nresult = invalid\n\n# tcId = 53\n# keys of size 8 byte cannot be wrapped\nct = 38d8238cdb0d9a2da28d6d56194f2e78\nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76\nmsg = 0001020304050607\nresult = invalid\n\n# tcId = 54\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76\nmsg = 00\nresult = invalid\n\n# tcId = 55\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76\nmsg = 0001\nresult = invalid\n\n# tcId = 56\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76\nmsg = 000102\nresult = invalid\n\n# tcId = 57\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76\nmsg = 00010203\nresult = invalid\n\n# tcId = 58\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76\nmsg = 0001020304\nresult = invalid\n\n# tcId = 59\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76\nmsg = 000102030405\nresult = invalid\n\n# tcId = 60\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76\nmsg = 00010203040506\nresult = invalid\n\n# tcId = 61\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76\nmsg = 000102030405060708090a0b0c0d0e0f10111213\nresult = invalid\n\n# tcId = 62\n# invalid size of wrapped key\nct = \nkey = fe60fc8df7d9f4ebb5416ca4e82182f7e9923a746110fd97\nmsg = \nresult = invalid\n\n# tcId = 63\n# invalid size of wrapped key\nct = 9f\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7e9923a746110fd97\nmsg = \nresult = invalid\n\n# tcId = 64\n# invalid size of wrapped key\nct = dc9e9580\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7e9923a746110fd97\nmsg = \nresult = invalid\n\n# tcId = 65\n# invalid size of wrapped key\nct = b9b282d138693000\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7e9923a746110fd97\nmsg = \nresult = invalid\n\n# tcId = 66\n# invalid size of wrapped key\nct = 0efc635b2d61e244056b9d4591ca6b\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7e9923a746110fd97\nmsg = \nresult = invalid\n\n# tcId = 67\n# invalid size of wrapped key\nct = 4a305dae087b0d24d62af41831338f33ae\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7e9923a746110fd97\nmsg = \nresult = invalid\n\n# tcId = 68\n# invalid size of wrapped key\nct = 82cb927097cf31ea4affea440b0d8ca6a240b900\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7e9923a746110fd97\nmsg = \nresult = invalid\n\n# tcId = 69\n# bytes appended to wrapped key\nct = 55dfb2f7e0c1ea04fead897c451c0505921dc47f308c491700\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7e9923a746110fd97\nmsg = 000102030405060708090a0b0c0d0e0f\nresult = invalid\n\n# tcId = 70\n# Incorrect IV\nct = 9b1593fd7d4fe25a660bbc1976ea4ab68bcc53f848a8eb9d\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 71\n# Incorrect IV\nct = e7edb847fa91e2deded726edf3ab93da91151697425fee28\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 72\n# Incorrect IV\nct = 1b51a7c033c1efb5ee2994259c40f03bb57d8cc09e507e6e\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 73\n# Incorrect IV\nct = c40b614a5062f5fd049c5379b3e8141614c2da97893589fb\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 74\n# Incorrect IV\nct = d7575ef02df54b3086eb49035eeafbce0e08336e89b35ab0\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 75\n# Incorrect IV\nct = 0d617f1c12485a35917d2a941e949d2fdbf03a346889b850\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 76\n# Incorrect IV\nct = c7df34729174db2e83ee16c6de74d5eb9766715fad049b40\nkey = 4f7", + "10eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 77\n# Incorrect IV\nct = c3ed38d6f9ccb9bf3c56bb3176f00d3ce9887521f8d4c70b\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 78\n# Incorrect IV\nct = 6582b5f4652744b0537e97e7cdae0f443130140dbaea604c\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 79\n# Incorrect IV\nct = fc9b9bdf25f2b48ad79934c8d34897cdbf4c846f8cb4b11d\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 80\n# Incorrect IV\nct = fc23c7f4fe20aa81105efc1a7105a5316b23399ac792c824\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 81\n# Incorrect IV\nct = 37b4a261b96bcec9cc93eef5b2fbbbe84634f978c5893dda\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 82\n# Incorrect IV\nct = 1831109847d17d010bfcd93fb46f3150cdafd52733db74c221b034fe8e1552c0\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 83\n# Incorrect IV\nct = 2b2b89c3c6b2db4903877ad4622ca33f3a3cb7e6701d1340e6afc0fdab7dbd72\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 84\n# Incorrect IV\nct = 3c6903f37da57161af6706050a2ed747cd55344d869189fd49d2536ff948129d\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 85\n# Incorrect IV\nct = 8a8dc8b131c6b968b60c1dd819a655392d1a96d6cafa48e30fb1146f096229c6\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 86\n# Incorrect IV\nct = 303e0b3602d514a7d52edba3306d7383e8999e7c652a510335a8949efb42eb66\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 87\n# Incorrect IV\nct = 319befbf2ddbb475723fb2fa30f2ae7fc1ceb1e6f361715eca7209608873c7fc\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 88\n# Incorrect IV\nct = 9b3e440341c5da131559959db6b3553a534691162f4f009327bf2c21d6fe5ada\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 89\n# Incorrect IV\nct = eba6cc0959e6a56339b141629840add80f4565656dc687a3b996960c994dfd26\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 90\n# Incorrect IV\nct = b703b6cf4587709353c7e4004d3da61ce5f5deaf7163ca9d6158dde919e0ac34\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 91\n# Incorrect IV\nct = 72549d52d6f4ff912d833c74136d90634ce8afa4f84412bbee8074084d4cecff\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 92\n# Incorrect IV\nct = 1337c8bd6c8a5dd43aba8d298864ffe76ad6ea909f3488157a15e6c46acf2214\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 93\n# Incorrect IV\nct = 4aaffaca5fe85814d040aa2a306ba4d1d44746cfe46c978aa057b53fd25316c1\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 94\n# RFC 3394\nct = 96778b25ae6ca435f92b5b97c050aed2468ab8a17ad84e5d\nkey = 000102030405060708090a0b0c0d0e0f1011121314151617\nmsg = 00112233445566778899aabbccddeeff\nresult = valid\n\n# tcId = 95\n# RFC 3394\nct = 031d33264e15d33268f24ec260743edce1c6c7ddee725a936ba814915c6762d2\nkey = 000102030405060708090a0b0c0d0e0f1011121314151617\nmsg = 00112233445566778899aabbccddeeff0001020304050607\nresult = valid\n\n[keySize = 256]\n\n# tcId = 96\nct = 940b1c580e0c7233a791b0f192438d2eace14214cee455b7\nkey = fce0429c610658ef8e7cfb0154c51de2239a8a317f5af5b6714f985fb5c4d75c\nmsg = 287326b5ed0078e7ca0164d748f667e7\nresult = valid\n\n# tcId = 97\nct = 939b3389336fea4a9751bf014ef18011323090e8a0500bc4\nkey = 0dda6da5123e2c37c6fa16ba0d334cd01acd652f8994211751dfab4faac2fc22\nmsg = b40b6828729b456322a8d065abc0d081\nresult = valid\n\n# tcId = 98\nct = 59ee8e5198861237f682edec6ba906526c016d4d935942bd\nkey = d6925914cd06308f81ad91e23073593d99d4e50351b20eb2a8d1a1ac4ced6588\nmsg = 037b27b3dc95b19d15bd4091e320bfe1\nresult = valid\n\n# tcId = 99\nct = 1ab53a065d8f776a08b33e51383071b6f154612116655137bd3b7ec29b70fd56\nkey = 07518a82cbc8da1dcec55f3763a206d277487abd03cedd0b8bef9ee2fb157121\nmsg = faa4664d79fce3c7d2fdd462f6c1c423c2f8e6b69be2e071\nresult = valid\n\n# tcId = 100\nct = a1bf8e73e3fa1db759f0ab2ab0b1ca6f2c85b63d83e25f7a0b5293d0a216a2b7\nkey = ea46991d4e71f53dd624e7fe7fde11944a7c5942d232369b8065d42b8cd2dde1\nmsg = dffc5cf1dd5411d015d84601fa38df5effe885c7f26a4825\nresult = valid\n\n# tcId = 101\nct = 27308a0e1a6c0a1d15d6174ab7d68675207b615df16fcf7a3c69b25f551cca9f\nkey = fdcfa902c6f222f527af84da533b14b52e2615da3a89d1d35708b0cd49f60d87\nmsg = 966b07047354966a703e79607b556032f4f596b7f9206f05\nresult = valid\n\n# tcId = 102\nct = 7155ee932b0358d98182a23f7f427c774ab340a4757d0b6a63facd3de90578438cf03201c3f88057\nkey = 38e1b1d075d9d852b9a6c01c8ff6965af01bac457a4e339ae3e1d7b2ffacc0cd\nmsg = 80ad6820f1c90981e2ca42b817a345c1179d0a11d8e23a8adc0505e13d87295a\nresult = valid\n\n# tcId = 103\nct = f20b9b553bc0847529f8d4379fa909211e68249bd429f436c615c4c4a5d9f1a1968f0b89c5237b30\nkey = c641f1689d81caa8ba37d895272240664054ed974cfffc40e6c5c0cad1b916c7\nmsg = 3fd0ba19955e46749f54d88e99d080b7339d588fe612ec0f4021ca3ca2104270\nresult = valid\n\n# tcId = 104\nct = 2811716854a214aecdd318c6670b9b2a7511713c9a0c0fa805230ff05cf84af795dd72f6c1a44512\nkey = aa0ab9d68ed4a04e723f81b44c0c88d0bcde7a80cfd476eb4b8836d9aa01ec4c\nmsg = 57faa8766f6d6a0aa1cf643f857c150df5b31303b50af480e21c4b5e8c8a15d5\nresult = valid\n\n# tcId = 105\n# Round counter overflows 256\nct = 5322bc62bd8379abbb75f69688b8f00e31962b8f9ae1e89771952d8a2a749e1352ec33b5435a674271b314760ab9f753b16726185ec7d319ac60531355344c1d53c7903000a8039eb40f70564a0ad3f41b2355ea5dfa6a1d46392f1d106a5da569bfb0493bf7c12dff04bafeae377df4bb47cd440b6f60fbab2a54a98551b76273e02cac8d7be9f2343d3abb2a23af1c91a7011c67a7907260116b67d510aabe5c7ca46c1c20f77106c45966583b3e4ed799a47ee19bb4223209265c2b1ac8183a678ff43bc9a3470a50b9ee4d10f60674268d72c68be003a0d9dd6849aba836fe8a1792b81c90e12945bfe1f27a9c6b2af66a063cdb7721a7f23fb30afdbd8b18db377dd1697f157be81c1578d08b066c71b0c5ca7feecac1cdd938cf9ad525f74844660908194b28e54eddb158f6e4c921b811d90db71a92ff872db2250dcc3f847fc752b66d77e33c85084d3fa53b4f30503d2a06e6cabb9033d59fc1dc15e32f19846a039b91597b0ba3141a7d9717630062170117b2131dab77406e9ed7d66b2c754d849c60\nkey = 31cacbb17d6dbbecae40727c5048fe0c01bc53b23ab635025cbac1ecf52ca495\nmsg = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\nresult = acceptable\n\n# tcId = 106\n# empty keys cannot be wrapped\nct = a6a6a6a6a6a6a6a6\nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76a51aac96038ad692\nmsg = \nresult = invalid\n\n# tcId = 107\n# keys of size 8 byte cannot be wrapped\nct = 181ba6a3a4392469e3de98ddbbdd2432\nkey = 574957151fc2afe0fa3dc", + "7a9a7da6495398f18ea0d8eed76a51aac96038ad692\nmsg = 0001020304050607\nresult = invalid\n\n# tcId = 108\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76a51aac96038ad692\nmsg = 00\nresult = invalid\n\n# tcId = 109\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76a51aac96038ad692\nmsg = 0001\nresult = invalid\n\n# tcId = 110\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76a51aac96038ad692\nmsg = 000102\nresult = invalid\n\n# tcId = 111\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76a51aac96038ad692\nmsg = 00010203\nresult = invalid\n\n# tcId = 112\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76a51aac96038ad692\nmsg = 0001020304\nresult = invalid\n\n# tcId = 113\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76a51aac96038ad692\nmsg = 000102030405\nresult = invalid\n\n# tcId = 114\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76a51aac96038ad692\nmsg = 00010203040506\nresult = invalid\n\n# tcId = 115\n# wrapped key size must be divisible by 8\nct = \nkey = 574957151fc2afe0fa3dc7a9a7da6495398f18ea0d8eed76a51aac96038ad692\nmsg = 000102030405060708090a0b0c0d0e0f10111213\nresult = invalid\n\n# tcId = 116\n# invalid size of wrapped key\nct = \nkey = fe60fc8df7d9f4ebb5416ca4e82182f7e9923a746110fd978e3bd2defc1c10d7\nmsg = \nresult = invalid\n\n# tcId = 117\n# invalid size of wrapped key\nct = 9f\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7e9923a746110fd978e3bd2defc1c10d7\nmsg = \nresult = invalid\n\n# tcId = 118\n# invalid size of wrapped key\nct = dc9e9580\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7e9923a746110fd978e3bd2defc1c10d7\nmsg = \nresult = invalid\n\n# tcId = 119\n# invalid size of wrapped key\nct = b9b282d138693000\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7e9923a746110fd978e3bd2defc1c10d7\nmsg = \nresult = invalid\n\n# tcId = 120\n# invalid size of wrapped key\nct = 0efc635b2d61e244056b9d4591ca6b\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7e9923a746110fd978e3bd2defc1c10d7\nmsg = \nresult = invalid\n\n# tcId = 121\n# invalid size of wrapped key\nct = 4a305dae087b0d24d62af41831338f33ae\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7e9923a746110fd978e3bd2defc1c10d7\nmsg = \nresult = invalid\n\n# tcId = 122\n# invalid size of wrapped key\nct = 82cb927097cf31ea4affea440b0d8ca6a240b900\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7e9923a746110fd978e3bd2defc1c10d7\nmsg = \nresult = invalid\n\n# tcId = 123\n# bytes appended to wrapped key\nct = 7dfbd7cf6158d75bb5900b3bf1e3871003402a6508b1912800\nkey = fe60fc8df7d9f4ebb5416ca4e82182f7e9923a746110fd978e3bd2defc1c10d7\nmsg = 000102030405060708090a0b0c0d0e0f\nresult = invalid\n\n# tcId = 124\n# Incorrect IV\nct = a417671bc62a23c7a65543092124024df72c048d8db330c7\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 125\n# Incorrect IV\nct = 9518d0f99d7a73ed4a502b449c14c285971b0e6177ce0eca\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 126\n# Incorrect IV\nct = f3511f0491bd74ae1defb5307f0e18db864b57b5c404d428\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 127\n# Incorrect IV\nct = 6c03ce779259661c43d41d5d0e45687f874353bba516c73e\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 128\n# Incorrect IV\nct = 8df01969a11c87026535bfccf72b1d064c86ecc7e5227157\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 129\n# Incorrect IV\nct = 8ed1cde228d9c8d046dca65c7a27aef2edf8ae90c705d1e9\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 130\n# Incorrect IV\nct = d69b3e34e9de38d44de1998992362a6fa1f696b5acab3f10\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 131\n# Incorrect IV\nct = 67865122af3294b8da0588775125cbd6dc19d5e5cab97b6d\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 132\n# Incorrect IV\nct = 9f0fa52363dd55df472d867e6faf5da8eb204a1d6d497030\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 133\n# Incorrect IV\nct = c399f999c96a4204325e7f08d6a4de256faf21ec2c007ddf\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 134\n# Incorrect IV\nct = 282082264a87dc35ce1cc5b9931b77d80d82fcacc0927f85\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 135\n# Incorrect IV\nct = c192c90b83003ca96744498014b6ad6bedda837955269819\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5\nresult = invalid\n\n# tcId = 136\n# Incorrect IV\nct = 30a983cd9e69d561acc95c42b252aba4185f8392f2e6c935c8eb105af8082e34\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 137\n# Incorrect IV\nct = 4de9a639b799630b45b49e28dbfc44dabb9843ee588a8cff286b8d5fbd7b32ee\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 138\n# Incorrect IV\nct = d915b2cdfb769d9d82259dc3d124646bbf972b83efd4c2eae9b9f751073f78d6\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 139\n# Incorrect IV\nct = 117d653f480b69fce564f1fe99572492945189ed5af789ce05a2651baf90bb5e\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 140\n# Incorrect IV\nct = 8226d07a2f919e24ada1081c69a75520be895e3a2bda9b805d9747773ddeaa38\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 141\n# Incorrect IV\nct = b0a74345bedf8865348daf45d054b99ce515ea8be136270d1cf71e1cfa7aa4a2\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 142\n# Incorrect IV\nct = a261db77f17f7ec736d1a8be16e5f9ae432fe2a17012e5a6f07c5426a9f0ca59\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 143\n# Incorrect IV\nct = c53acb5e096b54548e1385b2ff18eaef68d235c95b0194e74a2383d3a7a530dc\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 144\n# Incorrect IV\nct = faef482d99ebb180e5bc5e3cf775ba292c2a3b6c44aa4a21ad400906f11af392\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 145\n# Incorrect IV\nct = 73a450b63b07b3aece9d1ae5bf097a3dd3fcf73e3ec2f1bd8fc3b5586cb9bd73\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 146\n# Incorrect IV\nct = d34b6ee184d387c9aa4b2d180ae0a89498014e55fe8e416be4f826fcf7d56522\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 147\n# Incorrect IV\nct = 2af823d1602803740bfa9040c2c4e769a5b6de919d403cfba9ad360f63af1113\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa", + "01d070a5f0a17a0c462be4f1\nresult = invalid\n\n# tcId = 148\n# Incorrect IV\nct = dd78ebd3091c55a5da5b24504200f7fadd1b3ac6ad35f814f733e603c13936245d69d83f262f6b1e\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1acce34973526908c\nresult = invalid\n\n# tcId = 149\n# Incorrect IV\nct = 3d8338eae7de322399e1d1b4a3df54326b242b563612ea4b27da22a041d3c80966911bc009911761\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1acce34973526908c\nresult = invalid\n\n# tcId = 150\n# Incorrect IV\nct = d04bf75cadd3b5f099c34b27a91e64a8f2dbcf08e8c5c1c9f07a777eeb805d5d0e8c5c01afc43944\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1acce34973526908c\nresult = invalid\n\n# tcId = 151\n# Incorrect IV\nct = be0c5d193b61c5137a8fd8a6d7d1ed8f0fa28cec516f544697c12add4f8f4d5cfca65edeb1019974\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1acce34973526908c\nresult = invalid\n\n# tcId = 152\n# Incorrect IV\nct = a83ebcbeb2be9d6807b5cfc31c89849d1343dd4eb22e5bfe9e2b2b3790ad8900601f1f5d54fd472f\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1acce34973526908c\nresult = invalid\n\n# tcId = 153\n# Incorrect IV\nct = 416221485a6cb98ad1342ea9a12926a9a133ead8bd919323fe789bb8f89a4fcaf81e1be54f9d358e\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1acce34973526908c\nresult = invalid\n\n# tcId = 154\n# Incorrect IV\nct = bf6a53286fac48e7f25d89b7056b27aa917d5b54c0d3171dff369f7249153bf09da5891eb4dc2d88\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1acce34973526908c\nresult = invalid\n\n# tcId = 155\n# Incorrect IV\nct = 99d517a1321bb633b0d5f3afda2372d3abf68b41d13cbfdffc78f173b88bc4b97efcab2b2904788d\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1acce34973526908c\nresult = invalid\n\n# tcId = 156\n# Incorrect IV\nct = d92456bc77a268ef71cba76064a1b772d1fee2ae4f0ee3bb932a2adb2b031796b9eadb51753f2868\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1acce34973526908c\nresult = invalid\n\n# tcId = 157\n# Incorrect IV\nct = 5bb54630ab8d73a040f0f87e70e263d1aeb2358bcdc0dce6994d0d874452bbd8741b7ec1d59d8298\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1acce34973526908c\nresult = invalid\n\n# tcId = 158\n# Incorrect IV\nct = 4581d6536039db1b23da50c648777e90c82d6128bb92e28b2974bae1141543a19a1592fda1fbd61f\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1acce34973526908c\nresult = invalid\n\n# tcId = 159\n# Incorrect IV\nct = d35bc67e62064c34f48150999ba30ded475d8c75978f45737320f23edaaa7a40d7803fc61add34a4\nkey = 4f710eb6b5e28703becfc3dc52fa8bc1dd44a4a6d38a84b4f94e89ac32d987e7\nmsg = a828cbda9b5ff0ae374f84fa01d070a5f0a17a0c462be4f1acce34973526908c\nresult = invalid\n\n# tcId = 160\n# RFC 3394\nct = 64e8c3f9ce0f5ba263e9777905818a2a93c8191e7d6e8ae7\nkey = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\nmsg = 00112233445566778899aabbccddeeff\nresult = valid\n\n# tcId = 161\n# RFC 3394\nct = a8f9bc1612c68b3ff6e6f4fbe30e71e4769c8b80a32cb8958cd5d17d6b254da1\nkey = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\nmsg = 00112233445566778899aabbccddeeff0001020304050607\nresult = valid\n\n# tcId = 162\n# RFC 3394\nct = 28c9f404c4b810f4cbccb35cfb87f8263f5786e2d80ed326cbc7f0e71a99f43bfb988b9b7a02dd21\nkey = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f\nmsg = 00112233445566778899aabbccddeeff000102030405060708090a0b0c0d0e0f\nresult = valid\n\n", +}; +static const size_t kLen66 = 36807; + +static const char *kData67[] = { "# Imported from Wycheproof's rsa_signature_test.json.\n# This file is generated by convert_wycheproof.go. Do not edit by hand.\n#\n# Algorithm: RSASig\n# Generator version: 0.4\n\n[e = 10001]\n[keyAsn = 30818902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203010001]\n[keyDer = 30819f300d06092a864886f70d010101050003818d0030818902818100ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f0203010001]\n[keysize = 1024]\n[n = 0ab9014dc47d44b6d260fc1fef9ab022042fd9566e9d7b60c54100cb6e1d4edc98590467d0502c17fce69d00ac5efb40b2cb167d8a44ab93d73c4d0f109fb5a26c2f8823236ff517cf84412e173679cfae42e043b6fec81f9d984b562517e6febe1f72295dbc3fdfc19d3240aa75515563f31dad83563f3a315acf9a0b351a23f]\n[sha = SHA-256]\n\n# tcId = 1\n# Legacy:missing NULL\nmsg = 54657374\npadding = 302f300b06096086480165030402010420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = acceptable\nsig = 253e1d19bbe91064f2364c1e7db3ba8eb6dc5b19202e440eab6fbdf28c8c6ec05b812983713c338c72b6e99b8edf506a89ff9fc8e5c2c52362097a56dc228060eca01e1ff318c6c81617691438703411c1f953b21cd74331f87c9b8b189fdffdfe8550bd2bd1d47be915f8604a0f472199dd705e19b1b815f99b68d60bc257c7\n# Some legacy implementation of RSA PKCS#1 signatures did omit the parameter\n# field instead of using an ASN NULL. Some libraries still accept these legacy\n# signatures. This test vector contains such a legacy signature\n\n# tcId = 2\n# valid\nmsg = 54657374\npadding = 3031300d060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = valid\nsig = 68ea71ee1911687eb54b3d19cedcfd44719d0b24accccc59bdafd84e4eba48ef0be7f115e7073f9f273286a7dcee3b94cdbe208e30ae496987479d3aa12ab0e12685ab592d7693a494e6ad27d526ed3ab5912c7f81e09983931794c2165c22fd859e0f9af1a93a4dfe144098c562731e6059d236b52cb865996c87a9baf7f103\n\n# tcId = 3\n# long form encoding of length\nmsg = 54657374\npadding = 308131300d060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 52f46d508e31f030b17c537888585f919037562e15f1924543601a41f9b701ee416ad73d6576b4eaaa64e685289dc478751dfe2d7e588252bfe2d43f4b3a31c6c6c39a9df884a2fc2e45f09c2150a830974b1c9d26090830b37bf06f1d57be1da34ebb016e9db7ce2c34e94872c89567ff6f2ab35a1a9fb6632e100c7d7af834\n\n# tcId = 4\n# long form encoding of length\nmsg = 54657374\npadding = 303230810d060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 3f34017b3172aaeec72d208308e9b83150699f86634b948847eab56f0169fef51b5636a96866f4f0f4c649400489e047803a91f2b2f32ab715065e20770c4e2788946b85aca5c90efdd6a9458dd9b6f797f96a3de88d2e4896afe147d8c0389943828100061903a30eaff1dadd98d3e49dba56cdcfa5f215d9c615f974f4a0bc\n\n# tcId = 5\n# long form encoding of length\nmsg = 54657374\npadding = 3032300e06810960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 1478337676aa47ca72ea7557facff06f6c777f56063f4487d345e43dc56a6bc5f8a891085d53a32c9d1c3cf7f469e7f56847b0b1b9b5b784526078271f21d0550afc40f81e2b8e8dec851d87511cace965edceb83cb96c8d6616e1ee75bb22c54412fc942a6f71c9fc609a31a69d34b774a97c1ba4f85cca28d9993db8543f75\n\n# tcId = 6\n# long form encoding of length\nmsg = 54657374\npadding = 3032300e06096086480165030402010581000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 77ba423e600bdd761ed10e7c00698a87fe1322f5f42b2902a0be7a24b1cf44f613fa55edeb2ded0475f8e1a13e5368f9a2bfc4f2f926ef289a2207bf3689fc1c8ec3e5463064a7f51bbc993966cc4016319b7c95f282372f1ff848d7fca753a81d905b3341b0fbf60ba186e750f3171cfc84288eff8742bda432bd6c8dc04f9f\n\n# tcId = 7\n# long form encoding of length\nmsg = 54657374\npadding = 3032300d06096086480165030402010500048120532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 9460ee79bb990bc3fe28cfca92363e6ff6900e3b61b3a402f06024a72b7a65d62094b4419e93900995eb121327f72b26b139bab3e5e2bd0c82e0cf6357f3b16f1c1dd4407a9a820f20e3baaa2259614d9ee3e015e1c1778befa13aff1e545ea1758cba4713631d63180a91b52df394294441642964a024f45b2251c90e002ec0\n\n# tcId = 8\n# length contains leading 0\nmsg = 54657374\npadding = 30820031300d060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 96ac043d3cada45aed0dbdc4662dcf7855553a5effa1077048b51c7e9bfff7c2bb3486ea42894d4b4afb26a3b3bd32cb68d5c4d8ca2622f50d8c56fdc25baf83b9909ecb096419ddc13578dcc8121007f7204ee82c517ae03de70fa23ef2390602029a0cbc8a96c5b781d857dbf12802aa561f5f41ea35aa0babb91b9f891762\n\n# tcId = 9\n# length contains leading 0\nmsg = 54657374\npadding = 30333082000d060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 2a70643572a7cda975d9e2c0827837e60eaa78c297b1ff75b84f654a91fe33294ccbeda52676ece50fcc03018151e66c24940bd0574ab85a6599231d587f4a6e0ae841cb6696e7dcfd182cb75001304e36887bc4fe3b373828f8b0e62ac2300a626c9e6a2cd05bb7910e74da2978dae1948f855b3b455cd30367160e21581cab\n\n# tcId = 10\n# length contains leading 0\nmsg = 54657374\npadding = 3033300f0682000960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 27778e39b45dee1e7003f1d315d3466fc111791187ddc056784c158df92097e123021e11918b6df8d905304db732e83d904bc914271b03def4ee129c3fc8adcc4f81b690e09e70e46c8b920093f304e64ecb7358740e976d28538a9eecf09ec1e1cd47df9107968207b21538cabe076bcc07c3862c46a793fcf638c70a972885\n\n# tcId = 11\n# length contains leading 0\nmsg = 54657374\npadding = 3033300f0609608648016503040201058200000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 3a879e9f883b158908014f3617cae3315d47afdadd30840494f68d91c04dfe81bd16a40c7d21238cd1816928d989a232a3492325ab0f95d4426e3fb7d58c9908191dc557d8779dabb282287b7860c30e0796283428e0276447235809882ee990deb0f4312c01e7ddf0690406eeacb660acc6957bb670904cfd8d04df5e3ebda2\n\n# tcId = 12\n# length contains leading 0\nmsg = 54657374\npadding = 3033300d0609608648016503040201050004820020532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 2b82155f363a3b283ae455f59e41c29dec2fbd8c7438b0e347aec5b38c7c895cb7d326870e4fbdb935fcbb561f223bd926dbe8b95ef5eaab27920dbe30c641e99f526a9bc356af54198b459b59383135a82cd5b6edab7da0b1a51d939b2f9951e1432d637c4f04a3546ed9c890143ae364602b94eabdaa2a45e4bdf0b5bdfa71\n\n# tcId = 13\n# wrong length\nmsg = 54657374\npadding = 3032300d060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 1dda56dc953aeee7fd76ae7166d92ab9e3d1d9759e76f8f1d7634a73cbf69e39d8249153d7c2d83c9664db13552f0c78df34b8a67e7b6c10bcc61b5ead7ba62ce0ec7ba8ac78d146f7e4cadee6f6250e0bc3100660e7afbe3afa17fa288d97549b4c8cacc00ac5c942673485739f89c9e5e63ad2be97a8f2313f5c5b095e7542\n\n# tcId = 14\n# wrong length\nmsg = 54657374\npadding = 3030300d060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 692c143b82196a391a3546607336e6f3bc047412645cf0def0d62d1b42234c14da138bb7f451b45073bbda2aba23412e83bc40d4e7de3e0684f2cad7d059f2d6831aa3d2ece4964ca75cd41dce23c5ba495c15345b36947b4b5a051fe1b84e148b5ae21f112d2245b1acbaeef9dc4a0c408829b9d2b1b5ab1d3a40af0a27b99e\n\n# tcId = 15\n# wrong length\nmsg = 54657374\npadding = 3031300e060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 66c31a45b2287425a20f65c3eba9cc58c370882f5fc62921935491fbd516df9baf9b28304a21d9008b61a92779ecfb3b0c03f6d74354f5159956e3fc1d35bd7376289378f05d7a71e05ab32794f2566a54635e8dc64740acbe10a293ceddbebe8499b520f406023a134eb9927ebb788b92488f036d109ec0a40ac52372e847b3\n\n# tcId = 16\n# wrong length\nmsg = 54657374\npadding = 3031300c060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nre", "sult = invalid\nsig = 7b85536bdcda4ad3fc40129f2ff9dc85d9ec049913784064e7358686640446278a2006d93fb33429407597e5d8c783e3f7aee8a7791d69139f3c802a6547f01bf987415eec2447b0e8c4f3aee7ae2085d141fa34ca6634bc109dede93285d5c40cfcd98bd47ceb9cc1890dfff53b7ebb8038533580c7a67fe14c0c422e20cd64\n\n# tcId = 17\n# wrong length\nmsg = 54657374\npadding = 3031300d060a60864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 5d77fba3cbb1905d83aa532fcc3227a95d7931bf0c2ab51f8118824de9dc029bd2470adf48b41c694ec7359d00a1336990c30ee368dd40bd681ba74794415d3997e7a756659397bf6abd44ca91c12a8580a3f5d1cdbc7f3be0c23c72334ce9b1419e6540dab73f5ff8ab57d0bbbe92b688bd3495f9344822b622042c2491bc41\n\n# tcId = 18\n# wrong length\nmsg = 54657374\npadding = 3031300d060860864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 7b5476fb78f389d1131764e7a13322f86008924c8c098f6d74f2df4dcc5a504cd786b3eaae33295cd1e87a2bbd1a06cb385674d465110a9a990d52de9a67f1c13ecaaa86383d489423c084fae9ecd2e9b109f4f04b8c013e3409128f3a079c068c1ad27bc2a20e76ad149325b7b0f0bd804a4e33949a98aac49076260702b0b0\n\n# tcId = 19\n# wrong length\nmsg = 54657374\npadding = 3031300d060960864801650304020105010420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 6034e1253e4860a29096e392076794cfcea166a30b340cc09f77baa5952c06d148bd89b750c3112930ef210a50a7d3f6569da89912b5e50e824116e73a15536958f75779506d07e67ec9c0cd8de4b51dfbb0fe56926feed18ffbd83b0cdd50d56326c54adf97e629378ae5f0f02fcda3da1aa98cb1d1990946edec711a85a0d8\n\n# tcId = 20\n# wrong length\nmsg = 54657374\npadding = 3031300d060960864801650304020105000421532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = a44cd265e1ecea83fc74e9eef746ef173277cc96f69a1798590ddee7ce5b5c34a82ad58a5c042db19005e04eec4159900ea764c0d008c52b94577d1c438661fb767902d9d1bbd6a90bdc4df685ec5951eac81d8b4dd36bceef7b6f919e85b6c994c7cf22a804f15cebe63b77f47b3bc2c2aaa68c6362c27a574b849efafe72e9\n\n# tcId = 21\n# wrong length\nmsg = 54657374\npadding = 3031300d06096086480165030402010500041f532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = a160aa43f4873cada34bea5ccd2be9dce07940ee1c08eaad524a5019993bc753ce92cccada706b483f106ff20b327b35e7c83955ad3bbff3f26ced3489877d1b5bf285d61afcb30219c02a440da61030e301aadb901a525345d1a651a21c31a62ac9fb71738c3e215a8941ca9a3c4910679c5e774530c28788f6eddd7a31c024\n\n# tcId = 22\n# uint32 overflow in length\nmsg = 54657374\npadding = 30850100000031300d060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 1369c78f816a9baf027e255de0c258125be90f35b8daafee87f2ffef2d465e0694af4401cc5cdc7ca78b08d5688ceefbddc02abc5495d47c6829d696f8370ea427e7e0225eaf22cda720bbb5881edd16b19bbf2ca86654c65b4ad481c13fb38af00d77922f46b311f936c51f4610f6bdb514b366aa05f029c1e63e3cfcf9763d\n\n# tcId = 23\n# uint32 overflow in length\nmsg = 54657374\npadding = 30363085010000000d060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 41d4c1ea43cb207af8bfc1552e31da7ca5744b68c4e00c3bf55f4edd4c81e91c01f44fa05290dbaa1fdcdcc775f6032a049b4965345c16aac6994b06cda9e0387dbff96cdb115e014f69bb057faca2f618c70a31edd0beaef7acdcc0fb7c83b2f07a8b9de48aa04b7c973920af5b8dc20aac343251ddf4c2277985c3db1dac2f\n\n# tcId = 24\n# uint32 overflow in length\nmsg = 54657374\npadding = 303630120685010000000960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 76bae6c330b9ab33aa9f2abe8559c51fb95f953a75e48053ab99078069214b509dd1b5080ac6819e32912619372d71a9ff1a67449dd699e5bc6ec0e18d1893dfb5bd571d933926d05b0d9fd7036ba4556e209369d1c57ec49cd9075e583c257c6fd4899c2a8bbb157547812cc692f264bf54712c71ee090b974d99b4d1629696\n\n# tcId = 25\n# uint32 overflow in length\nmsg = 54657374\npadding = 303630120609608648016503040201058501000000000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 3480a5c22f092f259b5bc4fdb9a33c044c24a645b57d61920effde1dc0bbfe53738023f16025841f9323b40f72c11091941bbdfaf7c2fbf77ad6626dbd6a3b7abb3ee916d96a922b11c86ce80ee67dec619bb98e9246d35a33b11b3a4e2a3a130e8b57ed4bcdd4b4e73aec3f9e3d50d3db5e29cffeb186846c72d09468d018ed\n\n# tcId = 26\n# uint32 overflow in length\nmsg = 54657374\npadding = 3036300d0609608648016503040201050004850100000020532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 5b3d3a198d4b36c6d9641db181fff59407a25bf1571f85e47bad1eaf138079872b93b9eb51aae09b48d6f4ef56badd96a6584277d8f3c6e4a4e11275f72021b50a1665ddaaa56a2a7caa7da6b4d502c5214e17042811154d411dd2197c250264bb69ba43adf668d4f7b81d932afa55e378214bb19ddeb431f702a91dd11e23bb\n\n# tcId = 27\n# uint64 overflow in length\nmsg = 54657374\npadding = 3089010000000000000031300d060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 1cc5577d04e34550e7f3d136064547efa30b9413e2c423b5a320eaaaf11cbebb91e13bbe3874e4650e057a8e38c8a366c473f35e0de82b22f846721a09e3f279ebdf54c8df395a9041333f09cb7bed5291bc1842857c4ce6ad5a1c2c476c1efddd5fe42824c25e0581aa7bb8f621d3b53566637c6266bb1bd0a5b7fb79c72616\n\n# tcId = 28\n# uint64 overflow in length\nmsg = 54657374\npadding = 303a308901000000000000000d060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 6e56d1746105344b34fb8299d173f4a5032cbce3556ca9d1eee35f8b31818efc121a1a9599c24fef8531243016dd6288d67b4bf9fdbf2c90fba5b1661be03531b5e15385ea465d1376010f0af761e8fb1afff7823dcef8dc100d97c192e9a7d03c82321d83fd8ecf67207c65cf182e1104ec5669536070cf1e3fe73c5e27edeb\n\n# tcId = 29\n# uint64 overflow in length\nmsg = 54657374\npadding = 303a3016068901000000000000000960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 37a413f9202591b8860cd9d68515ab522ae800e9a71793b479f1fb74ab8c9b07e72fe82dabe1189d028b813610e5e57c055af2d32837551fdb0cd93d7669a3c02a14c460f4c92136a4d11cfb7dcc76401bb5b699fbc64d302736d68c3591ecd59220107cd63f55c83edd38c4568e6f7749c0d9baebfb7c8ae1bf2179101745a9\n\n# tcId = 30\n# uint64 overflow in length\nmsg = 54657374\npadding = 303a3016060960864801650304020105890100000000000000000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 9fa8aac224bb50697103d457e7fc870853b23670ee5b8c7395d68ed82b30db18ae34a569abdcdf19238ffca8f5e435327dbe605bdc1a6dd3eaa3c2beb33f00642984a2034bf3b3e8de3ec7009e35069d5b27253c4aadcb4f163148e157252e3b9334abb6cf0299161c12908529f52de9416ec6218af7a6963fcc987c5024ea71\n\n# tcId = 31\n# uint64 overflow in length\nmsg = 54657374\npadding = 303a300d060960864801650304020105000489010000000000000020532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 0f50bc6b1b94aeb6805dee51c92860693de47c4925ab90b57a46e0485a9afeed45083eade73bee684cd07048e632d1dd24aa2efc42c1f85e4fd7b7058dbeafb53a3d5b1cb1e7dded3352c3c92ded891839263a501afaa78fedfd04546c43d16f7a52b800abc9ab1ef827ae0eb19d9b52def2435f1477a48dff61800b4db830e4\n\n# tcId = 32\n# length = 2**31 - 1\nmsg = 54657374\npadding = 30847fffffff300d060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 9dcc651cc0a1b4d406112c0d1ebd7a9fb5a2c9d9f9cffbeab2d2821e5ed01efa9d191665794649bd1f588b729e8fba1eaa37a5a736a5863973c338a92b2665d6ead13b72a19d2da778febb94b150e8d750340a3b856fca8b3b6e3cbfecb9c397c23f46912ba546ab0f64ed88404ce317f8fb2278b68950e9712d6b11f5cdfcaa\n\n# tcId = 33\n# length = 2**31 - 1\nmsg = 54657374\npadding = 303530847fffffff060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 0397d14205c2f52423ef69c874294dc2b37d5be5d5647f7e83f1dd6783cb41cce52e6de1dc8c9e93ca1ef887d4c0ea79cd8b26391d638bbd8080bce830bf1bd7fb1de31346f28d609874fafd4a34fb7bee900441f55589ec3c5e190106d8816cadfcfb445834739cafaaa3903ed93cedc41a76aa0ce18fb49a3a73b7b5928735\n\n# tcId = 34\n# length = 2**31 - 1\nmsg = 54657374\npadding = 3035301106847fffffff60864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 2c3ffd881c1", "c0ce2e4c98282d6011179a89b1e84b17072bcbbb64164e5e05410d0414a1fdbbc04564f3d80f3891f28c3f02e92bf97b4339b5bd4699614e236d4223cef0688c44b297eb9c0e22246b4cb28983b102a446dc76671206c3b77af6897f2f445512abda37bc9c37257dd4f1c6f0e6ec40929eb6b0058682b9d2f6c66\n\n# tcId = 35\n# length = 2**31 - 1\nmsg = 54657374\npadding = 30353011060960864801650304020105847fffffff0420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 668bd06eafe953fca6a17b0da0f9006ceadb09ad904786b7530148df7eedc146d20a5472c39677d65e59934c00227fb662b3474596e6072f56d2c00c3d31e66f0da85f4670e75c3f2c910c0fec8c98bc31fb2eceff80350b78aec0d316e9bbb331544d8a3d0b1649291396c717e350bebba3d3c3a0b1d55f010879b8c7b7d4f9\n\n# tcId = 36\n# length = 2**31 - 1\nmsg = 54657374\npadding = 3035300d0609608648016503040201050004847fffffff532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 87482257ae1d18d0357428b756ae35a48549536a3439ca3c148eee64f4c096d896219097d55c14a25eb1490779f6b1471aed238cc0d6aaf265c12ac086d04de9b79a37518056dfacc12cb4916c17505fc7e2e6c1e0db720a286ea65bde4d3da1d2dcb8d0276e8ce73f3f923209149955285c602572cfd24c82e8d96d45f569e6\n\n# tcId = 37\n# length = 2**32 - 1\nmsg = 54657374\npadding = 3084ffffffff300d060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 03aadd447f36952dfe73ae89e5c656b7d37ec92535e547cca62a7747f3831f2f613c7dc094f3d5c4c6b9e02b21ed4626930ef3948b42ed41f4cf468d2474acadf1c75599c5619e4872e6d3dfd93abe92234165135ed265e0c0f64fddf23e50c1f9fdcede8778a8ca008ab00f8afa887da3f4699df9f1140953232f36d035b03f\n\n# tcId = 38\n# length = 2**32 - 1\nmsg = 54657374\npadding = 30353084ffffffff060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 31afd9a0d827755352b16de04de42e98a8c72f08919ed475530a00c762b8a03bde22634dd856a7eede4b4947d780cb3efe55775e16d7f46f209dbcb5569b2d9469cc271aa850f74960f7c741928055925349821e32e1e0fe5a040010a39a4b6a343f7f35c204106b3617e528a99dcaea8a93766adcfe7be31cdb98f7f7f14669\n\n# tcId = 39\n# length = 2**32 - 1\nmsg = 54657374\npadding = 303530110684ffffffff60864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 16ac0aa2d727ef5fbf0305259ee6fa40827c92419f819673fd64cc2dc2dbfe7ce1cfcf06e26d45f59cb3d9afd30d7a6265863fe856e0a0b1b9508b1e7a2dfb0f87f5ebfc444bbdae504abde7daa33bffb991551940df682c8e2c45edef0563b34d4f11e1955e83c2145ee321165517d1532abd64dc613a280fc30670bba1f898\n\n# tcId = 40\n# length = 2**32 - 1\nmsg = 54657374\npadding = 3035301106096086480165030402010584ffffffff0420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 0fe0c75dae62462e66e7277b03c9113727419f7d4db7b2a567c0c189fb6328e1f73d5d44e2196b436f4c2f0f12950d419774c8a51c55f9b2217f904c4f03d5f5754174719dfb85f62795ef75e6d54e703bf231fd8472250f529f85294f29f6c5653ef585079c3b3d8f931da80a46c8afeef37696fb0e7986d413bb1996b8ad57\n\n# tcId = 41\n# length = 2**32 - 1\nmsg = 54657374\npadding = 3035300d060960864801650304020105000484ffffffff532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 9ef993e6ccf015b0b0de75b51213a1c3efcaf66bf83655287484ef28d984806226a7af1704fa6a7fc02984b44449f83ae24761021e49ba6117505c1e609406b002215de27d696643c3354fb48e6c64e7300944edaeb96e4872275f75532f5aab94358d4954522fc7903439e99223d8124e79a3f519050b6b576b77d5abe7c3e3\n\n# tcId = 42\n# length = 2**40 - 1\nmsg = 54657374\npadding = 3085ffffffffff300d060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 0fbc20d18ef2dce383ef9640232e44fc287cd97bdb1a18614a77a6d72da5db05df264fff4964b3395445a5b75f4098be8c923ec613efa49e87877c08ce52e9e8b491eaab77ed2336179f1e447bc53e0d9fb9cbd2f2c5e180acdc946df4cdb0a878f27dc010adb1d080330e0bed852181bf97dc4372049ac6ab5802c0d650ffa9\n\n# tcId = 43\n# length = 2**40 - 1\nmsg = 54657374\npadding = 30363085ffffffffff060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 3df42c382b86647a466ffc743dc4713259bd7dfdc909939738e59e3d1eb11d104537762c50eb55d4677a005f7f925ffc7ef0751ffe0c4320a6cf0733e738a404b2672f3dd11fa97bf9d84b786a47c63bbc962d52873765a6de3a57590c2cec68118af81d7dac4f7ce6c101811f2fa364a34fe704d674be5a28531d6e8c4fe120\n\n# tcId = 44\n# length = 2**40 - 1\nmsg = 54657374\npadding = 303630120685ffffffffff60864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = a66d9848a3db7e49d8053c4a3869415c0bb58fd265276c99a66ed1df84e162cfe8f0820229d2ac2f99d9753eed39af46649409cf559ca6edc8c47e550b7a4cf24fac756389e365ad73ddfa67e72d042ec494644c5f277f60864dc90d6cbfdf556396c795192077f51f173477b934871e2a960f7ac3e6e8c8039956a5061bccf2\n\n# tcId = 45\n# length = 2**40 - 1\nmsg = 54657374\npadding = 3036301206096086480165030402010585ffffffffff0420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 7561668d5b2f8fd3190be8244d4d0550043dc0a7e80dfac83eb6f6ddbf448d424082fafc332e473d434b37ce7605352594ce632f4d5de30951581af907fff6c01814022c31a31b3d130673a56b4ef7763bad595053af0174df395b802722f5046e408c978e2b5a9a63f8ea80e932f76513928253f432c8bdc7ee51872d315b7a\n\n# tcId = 46\n# length = 2**40 - 1\nmsg = 54657374\npadding = 3036300d060960864801650304020105000485ffffffffff532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 5a836168587968425c4e103bae20603e0ae6f714ccdc603a865bb3541b65eee9dd0d9ee21cc66c7a83403fce2413b97f1c1239947e94614f6f2eb731387c8b9d956242bd9fb0545eb2c874ca1a167222034649894b41fd0fa935cf52e583a5e9a4b503cf9f2b238c025bf2e22ed78e7a64bcac1d38302cc2361c71b854e79123\n\n# tcId = 47\n# length = 2**64 - 1\nmsg = 54657374\npadding = 3088ffffffffffffffff300d060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 97c602416f2131d34f2a57acecf26365a30c12f77e5beac095533848ce227302092c6f44b47f011d6eb0a91f8024d1935d8bb274c42b57875115a94281fd3cb198f9334758d3200c1c721f6babef332c02a89968a7089f7783993bdd54f809f8372437798d2364040c1faabfb00faabf28cd6ae4ffea29ae2c08a6a7e6074700\n\n# tcId = 48\n# length = 2**64 - 1\nmsg = 54657374\npadding = 30393088ffffffffffffffff060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 2a970dc291a1dc935cca6985dda703bcc1ece2e40817ce8fa79b6e8fe84e113686e6e65570d46bf22147bcbc389cb5f86f92dc185f556d15e7614cef119fcd7305a31fd2f8710812f35f9f0bd8a1a6e5be3163de644370c67181b7575635dfb9f717f78631d62db714b2a19cea7079ff13c8926ae0c601e4befb6541b02a7e20\n\n# tcId = 49\n# length = 2**64 - 1\nmsg = 54657374\npadding = 303930150688ffffffffffffffff60864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 6e16d110235cd11e32b114ca9dac0cd6a1b041a6d2c61941d49bb458241281f62a4e2b1bf3cebc3e67e8c062ec67a51a599a553b09732e23e1d09fb2b20be7fd311a7122414d535651718a1421d4239276c227b96506729a09e3ff2779dd1c79de4d402623039b826e2bb4d26d1b56775fce14ed0203a9ebd8f042d981705a77\n\n# tcId = 50\n# length = 2**64 - 1\nmsg = 54657374\npadding = 3039301506096086480165030402010588ffffffffffffffff0420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 0716d252488e08f10a25cec94714e6105bd4e13ff019431190864cb0f4378d315f4bd0fdf186e1f2d45a6e97eb04fb2013273e178ce4f82a0b67bf9d021b1d8ab73d753adf2073ee1ad6190b2163139db63778a3670b7cce23f45efb601bd59644a431cbe534ecdf4c4c58ed02ed03863ee32d296b5736c010305fec655b1a44\n\n# tcId = 51\n# length = 2**64 - 1\nmsg = 54657374\npadding = 3039300d060960864801650304020105000488ffffffffffffffff532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 03e52a2ed638bfb9184a0ee3698502af3a19bb959a984957de5101e6f7a62cccc2ec2a6293fa9d76fabf3ce7e4bf35c65a5f864bc003686a1e05b57c5af6ad588e05a5225479422d7b78c5bedddaec7f4b8c1e9ab7478c1ee253847324e025434b76a01b82a40123ab31ec9862c6016885dc6cbfe97801503369fd3688bdaaf8\n\n# tcId = 52\n# incorrect length\nmsg = 54657374\npadding = 30ff300d060960864801650304020105000420532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25\nresult = invalid\nsig = 9c4217830da16424a6c80a62e1e1cc0c589e3324267b4498e89af96998f8352", @@ -3043,14 +3053,14 @@ "0cc5d9d0abf0\nresult = invalid\nsig = 350274641f0d1af9b1574ad9c8b907ffcb5240825488a15f811abf56920c6b71d1c4d0fdec8322fbceedb2189bd7932738902830162171cb67243096ff0d42f7dddb3416eca5cd9b6a86e504a2351e4d87c75c2ab6bfdb005208afeb1cb6e542da32490aa5a0509db3926df6aec56fef56ebee5543d61f7cc3a35984a43c1a9d\n\n# tcId = 394\n# longer oid\nmsg = 48656c6c6f\npadding = 30283010060c32623065303330323161303105000414f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0\nresult = invalid\nsig = 1ffcf9548a1c98d254f3be4aaa250650fb5f95d10b6468406c9a7498aa84213117b99a82f40727504f6a563bd471c1987aa45a13cd6b6a6c501a8e455516f29fb5cfe9e4703fb9529a06010a557353ca13efd3b1cbc7f0381a84e14690a54879f8c9a3da6d8aa19d3f372d7f1a87badcdd871179abe6bcbe1c18f4b38f87a3af\n\n# tcId = 395\n# oid with modified node\nmsg = 48656c6c6f\npadding = 3026300e060a3262306530333032326105000414f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0\nresult = invalid\nsig = 17bd4b3bb00dd491d68c76810f5779e996eec04bc50606ad30166d9e26948c308ff766246cb5bbb362dc33129865a241a505332a0f46fcb882acead6c6bb5c1b8300381e3f9dcf89938b081e0c6106c51e8857252907d5b5998a0689335340b2d8bf186cd091753858f4c9f72faf4db828c3f23bb99fd1235d665b7703a9945d\n\n# tcId = 396\n# oid with modified node\nmsg = 48656c6c6f\npadding = 302e3016061232623065303330323838383038303830316105000414f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0\nresult = invalid\nsig = 2bd908594b8677b6359473f30a827ced749a0b81e6bc060fc71f5ca8c54f26176394efc3b9dd34b6b425269afaf601a2402f5db7c1fbb95bf4d9a90f58af7dbf5c11e9993f3a6373df216dc9e51b25bbdca70e32f6a96cbe42d5efbf67f4c6cf64e0a5c6b5ee80aa0ff7976184a5ce33b7a7c2c8a079a207ba7b7e1c8a2ddf2b\n\n# tcId = 397\n# large integer in oid\nmsg = 48656c6c6f\npadding = 30383020061c3262306530333032383238303830383038303830383038303830316105000414f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0\nresult = invalid\nsig = 13e8d2f76b24fac71cdfdf7bfc448ce55ca7a25b58feca2a51a3e9e40b3c75bad26a04e3799c66edd5871fd4dd62c7b35d0b062e1c0f7b05ba4b0e9c6635a40236abef106f3b3d862ff1bca0ee290f3283dd38c081db0df39573134d40693835f56b4b97387f3e3cc3fa3d9f9155611a5bd413d34857c774331223301e2d0207\n\n# tcId = 398\n# oid with invalid node\nmsg = 48656c6c6f\npadding = 30293011060d3262306530333032316165303305000414f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0\nresult = invalid\nsig = 1d847fccddad46487b0fcf75f743e9550e4c6e68fabe27e55374cf5ef9240bb37490041d24ae74bae0ac5e49196057cb150abcbaea8fabf3f936b0b2cf6d91c49f3bdaca01689b70fa34152580bcb22c67196c5b9634fb2f0d75f523fc7050a6134d870190e528cc18e6960d288e5b597930888a36ca4e6c455f5b88300ac160\n\n# tcId = 399\n# oid with invalid node\nmsg = 48656c6c6f\npadding = 3022300a06062b800e03021a05000414f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0\nresult = invalid\nsig = 4738deff4b32a30dd68b0abc1971dd2af9a500b5f6922558b96ac9b1ab4a50328b2ba9a48e7c207a02ddf642728930f4004d337483eaa0a01fb038a7a6c289672bdaf1016120f2faea563f179d3d623d3ec9bb5d936ea2a7f74d2bd70a06c83e904df55f5142c5c6b6f75221397dabcb19e069436b94ca764a5016141496503d\n\n# tcId = 400\n# appending 0's to null\nmsg = 48656c6c6f\npadding = 3023300b06052b0e03021a050200000414f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0\nresult = invalid\nsig = 977a5c762a4dcbe9551a4a0bcfe96114aa59187e6dd0164cbbec2d28ff9d11e413a1de7f274704c24229c99ce9b5a3d98872db56310be7259a2fa44e652c4d02f8802360d3a29ded2a7de0a183001e74b3aa3fe594867294461d6a23160481ecdee9c05c28ce066021847a23366cb147013f57ce53a24791dd1873527f1323f0\n\n# tcId = 401\n# composed null\nmsg = 48656c6c6f\npadding = 3027300f06052b0e03021a2580aa00bb0000000414f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0\nresult = invalid\nsig = 79a42d1f294f82bd6ad48818f1f634733fbefea7def5ea32a1ed56de994ac047011695a0c8a11813d042ee6784cb172da76aa0ed892e53d4bf99fc21301a91181e7c93a56646190aeeb4a1c212d34d17484521580d84adb41b2a5cc285963509d0c832e5a2252e5cb028839d9db7bdabb7689219b97d699277ed004ca6389b61\n\n# tcId = 402\n# appending 0's to digest\nmsg = 48656c6c6f\npadding = 3023300906052b0e03021a05000416f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf00000\nresult = invalid\nsig = 37ddb1b141539dfc350974039429b948cfd8acc40ecab7270b3e560f0876cec68fa22c8dbf09c8c25955819a5cfc6d251ab99cd06c013792207caa2ada95d4fc01a6d89329e211869c02c648a64b721e92ef3aa767569ba2f0c7c376772926a95ededa5d3f0ce10ab3b2b25f70fee1702dfedb0605ef6401f3f44c464ee98110\n\n# tcId = 403\n# prepending 0's to digest\nmsg = 48656c6c6f\npadding = 3023300906052b0e03021a050004160000f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0\nresult = invalid\nsig = 85c2c430e7cc2e989e729186cb1256a5f7e78bbb6e135b36a43059389f57cc7fd67ccf20becc0d9e63731ae4ee77e926754ee5226991f9bd46203f7fb88562b00974dad035b1a0f39cba567dc0ed3cb3f7bf51326e62b0f82d8aaf8cc8dfb96c08c64235dc2a4f612bc29a8d4fb4b1edff1cd517d1c981a809ce9708a547a765\n\n# tcId = 404\n# Replacing digest with NULL\nmsg = 48656c6c6f\npadding = 300d300906052b0e03021a05000500\nresult = invalid\nsig = 5cd36e6403f666a5392101235b8f94dc80a87c03cffceaf72a9b6c37189bd028f94df3d6df776bc35f7090d2e0048d5e2ad327d4f6c4defe83538d7500b650aa47162e0d1536136a43cdc4cb9e12780496f696e781ede83fff94626f98d7f4d3c8ef865aa3d042b85a1c00b70c31757ab27c68f79bbb709e714a41558216ceaa\n\n# tcId = 405\n# dropping value of digest\nmsg = 48656c6c6f\npadding = 300d300906052b0e03021a05000400\nresult = invalid\nsig = 708e3d4577c0ced7b4d729b5124169f67836738bc18f82537dbe1c9a48054769ed0888751a823eedd05408ed934a555655d473dcec0fb5c6f19aee82f1dedf3f4fa14171c3ccbd3f1f9920f233a21be4341134f25636cbdd55918e9da76568c3ba55c630ee3e9eaa4dba7bd989fe0534925d1c47592214eb4869bcd42b60c92d\n\n# tcId = 406\n# modify first byte of digest\nmsg = 48656c6c6f\npadding = 3021300906052b0e03021a05000414f5ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0\nresult = invalid\nsig = 82bc0a32f50b69da0533a0b7d966f86597c2685bbc9b44fc1d58518ef8c161efe6e6369945f1806ff709304c9f60430699b22c550d1f5f4d773c1d31667afbbc4cc824e75f0aab92d9d513e2f86f414d853e5dadf34893b6525765c11f67ca4b2dfae48584a760637016e3231fb89031d549ddbe6fa1bb90c7bc792e3f13f8a9\n\n# tcId = 407\n# modify last byte of digest\nmsg = 48656c6c6f\npadding = 3021300906052b0e03021a05000414f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0ab70\nresult = invalid\nsig = 44b0c75a3abc8f2bd7575787b1349ddda91a5e432b85333030562e7c391344cb1e6dfe328f11491b92c2eefe38ee5fd8aefef2e02b0527fd35a9556e23dc9c1d6eb20bfe3b21bd8b2992c076d7c228821fe5b36f2af42d1c365f49219184c4ee11d2beac7dc08860cd57dc80484cc5702d49d1b9cf6e7cd3f7cccf05bf701c4b\n\n# tcId = 408\n# truncate digest\nmsg = 48656c6c6f\npadding = 3020300906052b0e03021a05000413f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0ab\nresult = invalid\nsig = 313624a0449c7f2f19878797dab59c91ed45ca0910aed355737635283d56edc7f470628e119a70f7d40b238e0ead042ec1c1c377272fa3ca975cc21eeec934f758ce70f19e00f592a0e5a4aad8e9956d9fd7dbbc126b6a001f20c42b517ba54511630382612f2bacb9711c87d9a19897c8c44f7905f548b558fada6a2c9912c7\n\n# tcId = 409\n# truncate digest\nmsg = 48656c6c6f\npadding = 3020300906052b0e03021a05000413ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0\nresult = invalid\nsig = 4a3539eaceb4691d856020b9acc11854892df705ad7994759dea2efe0c5384e8f86ebeb3f4360ab0bc7d35c8ca520c8d0a1c869f3979ddedbb60437e798332a0ef7a52ca86b430ebc6aa57114f6057c8f18066ca1483cbe8a8ad3a1e96476a21d53ac6f6a4e18ee965371ebe58184fdcec67f0d42cd16d6ce6800ec87978b759\n\n# tcId = 410\n# wrong hash in padding\nmsg = 48656c6c6f\npadding = 3024300c06082a864886f70d020505000414f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0\nresult = invalid\nsig = 1d8eb339d60f873bf3dd07816dbd8a5b5e61805e26654e5a5869fcbef176a61a3b2c173778ce5fb7323dee2f4e42a272474576e8942ce04c66a17d2ccc093e529df580d047159f7c1266af51b7a7f07f43a28e309111540a80fa76b25b6d86f9d2fc99a28d1715567545509f80beb700fe9cfb82be7bc801794b7d32eb9b584d\n\n# tcId = 411\n# wrong hash in padding\nmsg = 48656c6c6f\npadding = 3025300d060960864801650304020105000414f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0\nresult = invalid\nsig = 949fecb83ddc236d3c622c9b6118fe0bf524080594c731636eb735e7d1285b5b6c527a2346b51c42fcf706184c4edd79ac98750dcf35973920aa19dee689cb7654b4785d2755b0dde4113c293e301f4e0331cf166bd8c7ae07031165fa4c02a3d6d70422fe42c7c6077a1f1dcbdc0de257363d51951ed1e2b8cb66684d42a8b4\n\n# tcId = 412\n# wrong hash in padding\nmsg = 48656c6c6f\npadding = 3025300d060960864801650304020205000414f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0\nresult = invalid\nsig = 3b2ead8d64cf96e26db3ba9d1ff63a187a715d04e3a7dfcf6c85790896793bc19c0ea6c5266cd4ebc25b859a07ad6459942eb46f3efcb9adbc29f3fa5acf0013d5baf3089e3ec5cd3401ae282670d27493b0ee33e391a9d32283b2", "24036405c9d61bbb470dc8a69762bc35483d3d26c1c8e16c311e5d3e284f1d51383ce7bdcb\n\n# tcId = 413\n# wrong hash in padding\nmsg = 48656c6c6f\npadding = 3025300d060960864801650304020305000414f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0\nresult = invalid\nsig = 6b23ad94314f022d64a7b525aa933b7aef8184b66473572bf41c00f899dbeeb95755da7c749a0ce5cb09d3567ebd4ceb0033a1b16cfa13e85fd1745640a5306229a14a9c67c07f75058ad1dfebee25c44ba3bbf75fa053ef74717ea7f972dcf7d7d23901a3aed841e0ca419aa570a605e0d189d2b51ce3f00497c0bf16998ade\n\n# tcId = 414\n# wrong hash in signature\nmsg = 48656c6c6f\npadding = 3020300c06082a864886f70d0205050004108b1a9953c4611296a827abf8c47804d7\nresult = invalid\nsig = 53ee28bf3582045ff9a6f7d813b9453fc5813245b198d98cb141f6f36202240746b9d3778006aa4cd3905bffed0fde38157d8e8809228871fb48037706ddaaebd31ecebe3dae0516539509bfaea18dc1fc3c7f29620f3214db5d70005e1323094aa8f94ac9d64d9d02ff2010178425027145740b40640a43ff24db043a7a2d2b\n\n# tcId = 415\n# wrong hash in signature\nmsg = 48656c6c6f\npadding = 3031300d060960864801650304020105000420185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969\nresult = invalid\nsig = 171b1a7fa8cf97283809515866708d449f184d675613cbd33e91586f8e238946f860915f0fb6a390bc7cedfcf7d1621f49f3c6f39b7412d75660fbe3c2326c48399b7d41dfceeadabf0cbfc4b7dd756d8bdc38d28e80fb60e743fdf6d81973959d2c6b111fa0d8f3c9c8677c0c8030001b12f3e2c5990822154b1b762162dd7d\n\n# tcId = 416\n# wrong hash in signature\nmsg = 48656c6c6f\npadding = 3041300d0609608648016503040202050004303519fe5ad2c596efe3e276a6f351b8fc0b03db861782490d45f7598ebd0ab5fd5520ed102f38c4a5ec834e98668035fc\nresult = invalid\nsig = 9810d39416595ad79cf376b41e6e5f94fb89f61ae78bc5a0c710fab15d369dd7f050b035e5c2b8cdfe10d06be739bae08b47afd0b7dd2b226905f3ee718ccd5b5fb5b951558a62d83a2f3ba5dd1990d2d3e05c461e33ccaa1bbc22350c3ca157351a5b88ad3b1f524fc5cec5c1714a8ab3ef709e462434a6048133846fd1d85b\n\n# tcId = 417\n# wrong hash in signature\nmsg = 48656c6c6f\npadding = 3051300d0609608648016503040203050004403615f80c9d293ed7402687f94b22d58e529b8cc7916f8fac7fddf7fbd5af4cf777d3d795a7a00a16bf7e7f3fb9561ee9baae480da9fe7a18769e71886b03f315\nresult = invalid\nsig = 57532194f33bfddba2e848b9342342114e2c6dcffe228cb97b72ac9e26b77cd336a6fa5c8152db0d536c6fb3cc48487a89cfcf42990593fd0dad420b46fa87ea2b9c9962025dcc2b8a6d5a0476408a62d9c276fb5eb8e97e5f1726918fef41c0d12ad420525a803d804002061c3bf355a3c4fee4ce42016cb0e0531d2657726d\n\n# tcId = 418\n# using PKCS#1 encryption padding\nmsg = 48656c6c6f\npadding = 0002ff...00<asn wrapped hash>\nresult = invalid\nsig = 572ecc55660cc4f8888559092f54e4ee0dc6a57d0722bcba6b608869bc0e86ed53f8d88180b40c006ff10dbf32ba2c6bf3558e22a688f7d68a6d38740b99dd2a2eaa6fc94fe9fa76a0bf775c0eca5751ce7837a3da3db7dc648fb94ed0def4996eb40e168d49417dfd82c86f2c586fc49dfa37a6335b8a76aee84c755610948b\n\n# tcId = 419\n# using PKCS#1 encryption padding\nmsg = 48656c6c6f\npadding = 0002ff...00<hash>\nresult = invalid\nsig = 849f48195c7ae50b762ff93e350bacdf52e3eef5f86dbec5115d74ccfb2c9a49cc91115f6935b71deb424865666ba070299e17e64c3ce5019e1481ee195cffb4fc1f92f026cea579bbe9f78d7c665dd7f65af7c3221bae50d5c0b50ede25a3993979d167a86db511b9ace4f11c331f892f06e72d17e934da9a83a3c703b3409b\n\n# tcId = 420\n# invalid PKCS#1 signature padding\nmsg = 48656c6c6f\npadding = 0001ff...ee00\nresult = invalid\nsig = 29b9b831e6694768910397fbe53e0a6868f75e3910d600e3421349bc4321d93067c78f6294b00e52e9c2fafdef67e0a460c3d76e6196fec6aab5c4964a4782c5da021466908d106193ec1b6b0bae4c9a5e3fcc4a355565c1dcfb76c489b4c3ad11b6f2182188470edf748eaf81646fcc164c60c1a55e9334076d8b5ce3d09808\n\n# tcId = 421\n# PKCS#1 padding too short\nmsg = 48656c6c6f\npadding = 000001ff...\nresult = invalid\nsig = 583dc8ac657ac9d55c74b6505f1a7a4b2225c038f36cc66d76a7eb8c818195b138e8bb2b26ac5a01ce32aa3f590815f0ecdf693877bdb12c5dd55b947b91f83d66639874ca263d1227dd0b6531e3eedf0b1e87a92b8db4be7c3c40d70865f56c8e0b6cf6607d47ed44acff9c4360d65f847f4ae947a13e4a56dff1d11503bc9b\n\n# tcId = 422\n# CVE-2017-11185\nmsg = 48656c6c6f\npadding = n\nresult = invalid\nsig = 9e62337ef7d4fabec2561bb45a18a362022b23666571bbc762c1c717a14a46d8f58119072aa26245e71fc6945540335163798fcbdea04b3104ee23f2c3874bbfb3e7e0c1ba5f1fca909265274414db6957a5eb668e0e36a388784355d528e51a6a4a9a9c6b6ab912812a268dac9dcacf1c13507768e63b1f82f8af29c3786a17\n\n# tcId = 423\n# invalid length\nmsg = 48656c6c6f\npadding = 2 bytes too long\nresult = invalid\nsig = 9e62337ef7d4fabec2561bb45a18a362022b23666571bbc762c1c717a14a46d8f58119072aa26245e71fc6945540335163798fcbdea04b3104ee23f2c3874bbfb3e7e0c1ba5f1fca909265274414db6957a5eb668e0e36a388784355d528e51a6a4a9a9c6b6ab912812a268dac9dcacf1c13507768e63b1f82f8af29c3786a170000\n\n# tcId = 424\n# empty signature\nmsg = 48656c6c6f\npadding = \nresult = invalid\nsig = \n\n# tcId = 425\n# 0\nmsg = 48656c6c6f\npadding = \nresult = invalid\nsig = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\n\n# tcId = 426\n# 1\nmsg = 48656c6c6f\npadding = \nresult = invalid\nsig = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001\n\n# tcId = 427\n# 2\nmsg = 48656c6c6f\npadding = \nresult = invalid\nsig = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002\n\n# tcId = 428\n# n-1\nmsg = 48656c6c6f\npadding = \nresult = invalid\nsig = 9e62337ef7d4fabec2561bb45a18a362022b23666571bbc762c1c717a14a46d8f58119072aa26245e71fc6945540335163798fcbdea04b3104ee23f2c3874bbfb3e7e0c1ba5f1fca909265274414db6957a5eb668e0e36a388784355d528e51a6a4a9a9c6b6ab912812a268dac9dcacf1c13507768e63b1f82f8af29c3786a16\n\n# tcId = 429\n# n+1\nmsg = 48656c6c6f\npadding = \nresult = invalid\nsig = 9e62337ef7d4fabec2561bb45a18a362022b23666571bbc762c1c717a14a46d8f58119072aa26245e71fc6945540335163798fcbdea04b3104ee23f2c3874bbfb3e7e0c1ba5f1fca909265274414db6957a5eb668e0e36a388784355d528e51a6a4a9a9c6b6ab912812a268dac9dcacf1c13507768e63b1f82f8af29c3786a18\n\n# tcId = 430\n# -1\nmsg = 48656c6c6f\npadding = \nresult = invalid\nsig = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n\n", }; -static const size_t kLen66 = 186818; +static const size_t kLen67 = 186818; -static const char *kData67[] = { +static const char *kData68[] = { "# Imported from Wycheproof's x25519_test.json.\n# This file is generated by convert_wycheproof.go. Do not edit by hand.\n#\n# Algorithm: X25519\n# Generator version: 0.4\n\n[curve = curve25519]\n\n# tcId = 1\n# normal case\ncurve = curve25519\nprivate = 4852834d9d6b77dadeabaaf2e11dca66d19fe74993a7bec36c6e16a0983feaba\npublic = 9c647d9ae589b9f58fdc3ca4947efbc915c4b2e08e744a0edf469dac59c8f85a\nresult = valid\nshared = 87b7f212b627f7a54ca5e0bcdaddd5389d9de6156cdbcf8ebe14ffbcfb436551\n\n# tcId = 2\n# public key on twist\ncurve = curve25519\nprivate = 588c061a50804ac488ad774ac716c3f5ba714b2712e048491379a500211998a8\npublic = 63aa40c6e38346c5caf23a6df0a5e6c80889a08647e551b3563449befcfc9733\nresult = acceptable\nshared = b1a707519495ffffb298ff941716b06dfab87cf8d91123fe2be9a233dda22212\n# Public keys are either points on curve25519 or points on its twist.\n# Implementations may either reject such keys or compute X25519 using the twist.\n# If a point multiplication is performed then it is important that the result is\n# correct, since otherwise attacks with invalid keys are possible.\n\n# tcId = 3\n# public key on twist\ncurve = curve25519\nprivate = b05bfd32e55325d9fd648cb302848039000b390e44d521e58aab3b29a6960ba8\npublic = 0f83c36fded9d32fadf4efa3ae93a90bb5cfa66893bc412c43fa7287dbb99779\nresult = acceptable\nshared = 67dd4a6e165533534c0e3f172e4ab8576bca923a5f07b2c069b4c310ff2e935b\n# Public keys are either points on curve25519 or points on its twist.\n# Implementations may either reject such keys or compute X25519 using the twist.\n# If a point multiplication is performed then it is important that the result is\n# correct, since otherwise attacks with invalid keys are possible.\n\n# tcId = 4\n# public key on twist\ncurve = curve25519\nprivate = 70e34bcbe1f47fbc0fddfd7c1e1aa53d57bfe0f66d243067b424bb6210bed19c\npublic = 0b8211a2b6049097f6871c6c052d3c5fc1ba17da9e32ae458403b05bb283092a\nresult = acceptable\nshared = 4a0638cfaa9ef1933b47f8939296a6b25be541ef7f70e844c0bcc00b134de64a\n# Public keys are either points on curve25519 or points on its twist.\n# Implementations may either reject such keys or compute X25519 using the twist.\n# If a point multiplication is performed then it is important that the result is\n# correct, since otherwise attacks with invalid keys are possible.\n\n# tcId = 5\n# public key on twist\ncurve = curve25519\nprivate = 68c1f3a653a4cdb1d37bba94738f8b957a57beb24d646e994dc29a276aad458d\npublic = 343ac20a3b9c6a27b1008176509ad30735856ec1c8d8fcae13912d08d152f46c\nresult = acceptable\nshared = 399491fce8dfab73b4f9f611de8ea0b27b28f85994250b0f475d585d042ac207\n# Public keys are either points on curve25519 or points on its twist.\n# Implementations may either reject such keys or compute X25519 using the twist.\n# If a point multiplication is performed then it is important that the result is\n# correct, since otherwise attacks with invalid keys are possible.\n\n# tcId = 6\n# public key on twist\ncurve = curve25519\nprivate = d877b26d06dff9d9f7fd4c5b3769f8cdd5b30516a5ab806be324ff3eb69ea0b2\npublic = fa695fc7be8d1be5bf704898f388c452bafdd3b8eae805f8681a8d15c2d4e142\nresult = acceptable\nshared = 2c4fe11d490a53861776b13b4354abd4cf5a97699db6e6c68c1626d07662f758\n# Public keys are either points on curve25519 or points on its twist.\n# Implementations may either reject such keys or compute X25519 using the twist.\n# If a point multiplication is performed then it is important that the result is\n# correct, since otherwise attacks with invalid keys are possible.\n\n# tcId = 7\n# public key = 0\ncurve = curve25519\nprivate = 207494038f2bb811d47805bcdf04a2ac585ada7f2f23389bfd4658f9ddd4debc\npublic = 0000000000000000000000000000000000000000000000000000000000000000\nresult = acceptable\nshared = 0000000000000000000000000000000000000000000000000000000000000000\n\n# tcId = 8\n# public key = 1\ncurve = curve25519\nprivate = 202e8972b61c7e61930eb9450b5070eae1c670475685541f0476217e4818cfab\npublic = 0100000000000000000000000000000000000000000000000000000000000000\nresult = acceptable\nshared = 0000000000000000000000000000000000000000000000000000000000000000\n\n# tcId = 9\n# edge case on twist\ncurve = curve25519\nprivate = 38dde9f3e7b799045f9ac3793d4a9277dadeadc41bec0290f81f744f73775f84\npublic = 0200000000000000000000000000000000000000000000000000000000000000\nresult = acceptable\nshared = 9a2cfe84ff9c4a9739625cae4a3b82a906877a441946f8d7b3d795fe8f5d1639\n\n# tcId = 10\n# edge case on twist\ncurve = curve25519\nprivate = 9857a914e3c29036fd9a442ba526b5cdcdf28216153e636c10677acab6bd6aa5\npublic = 0300000000000000000000000000000000000000000000000000000000000000\nresult = acceptable\nshared = 4da4e0aa072c232ee2f0fa4e519ae50b52c1edd08a534d4ef346c2e106d21d60\n\n# tcId = 11\n# edge case on twist\ncurve = curve25519\nprivate = 48e2130d723305ed05e6e5894d398a5e33367a8c6aac8fcdf0a88e4b42820db7\npublic = ffffff030000f8ffff1f0000c0ffffff000000feffff070000f0ffff3f000000\nresult = acceptable\nshared = 9ed10c53747f647f82f45125d3de15a1e6b824496ab40410ffcc3cfe95760f3b\n\n# tcId = 12\n# edge case on twist\ncurve = curve25519\nprivate = 28f41011691851b3a62b641553b30d0dfddcb8fffcf53700a7be2f6a872e9fb0\npublic = 000000fcffff070000e0ffff3f000000ffffff010000f8ffff0f0000c0ffff7f\nresult = acceptable\nshared = cf72b4aa6aa1c9f894f4165b86109aa468517648e1f0cc70e1ab08460176506b\n\n# tcId = 13\n# edge case on twist\ncurve = curve25519\nprivate = 18a93b6499b9f6b3225ca02fef410e0adec23532321d2d8ef1a6d602a8c65b83\npublic = 00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffff7f\nresult = acceptable\nshared = 5d50b62836bb69579410386cf7bb811c14bf85b1c7b17e5924c7ffea91ef9e12\n\n# tcId = 14\n# edge case on twist\ncurve = curve25519\nprivate = c01d1305a1338a1fcac2ba7e2e032b427e0b04903165aca957d8d0553d8717b0\npublic = eaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f\nresult = acceptable\nshared = 19230eb148d5d67c3c22ab1daeff80a57eae4265ce2872657b2c8099fc698e50\n\n# tcId = 15\n# edge case for public key\ncurve = curve25519\nprivate = 386f7f16c50731d64f82e6a170b142a4e34f31fd7768fcb8902925e7d1e21abe\npublic = 0400000000000000000000000000000000000000000000000000000000000000\nresult = valid\nshared = 0fcab5d842a078d7a71fc59b57bfb4ca0be6873b49dcdb9f44e14ae8fbdfa542\n\n# tcId = 16\n# edge case for public key\ncurve = curve25519\nprivate = e023a289bd5e90fa2804ddc019a05ef3e79d434bb6ea2f522ecb643a75296e95\npublic = ffffffff00000000ffffffff00000000ffffffff00000000ffffffff00000000\nresult = valid\nshared = 54ce8f2275c077e3b1306a3939c5e03eef6bbb88060544758d9fef59b0bc3e4f\n\n# tcId = 17\n# edge case for public key\ncurve = curve25519\nprivate = 68f010d62ee8d926053a361c3a75c6ea4ebdc8606ab285003a6f8f4076b01e83\npublic = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03\nresult = valid\nshared = f136775c5beb0af8110af10b20372332043cab752419678775a223df57c9d30d\n\n# tcId = 18\n# edge case for public key\ncurve = curve25519\nprivate = 58ebcb35b0f8845caf1ec630f96576b62c4b7b6c36b29deb2cb0084651755c96\npublic = fffffffbfffffbffffdfffffdffffffffefffffefffff7fffff7ffffbfffff3f\nresult = valid\nshared = bf9affd06b844085586460962ef2146ff3d4533d9444aab006eb88cc3054407d\n\n# tcId = 19\n# edge case for public key\ncurve = curve25519\nprivate = 188c4bc5b9c44b38bb658b9b2ae82d5b01015e093184b17cb7863503a783e1bb\npublic = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f\nresult = valid\nshared = d480de04f699cb3be0684a9cc2e31281ea0bc5a9dcc157d3d20158d46ca5246d\n\n# tcId = 20\n# edge case for public key\ncurve = curve25519\nprivate = e06c11bb2e13ce3dc7673f67f5482242909423a9ae95ee986a988d98faee23a2\npublic = fffffffffeffff7ffffffffffeffff7ffffffffffeffff7ffffffffffeffff7f\nresult = valid\nshared = 4c4401cce6b51e4cb18f2790246c9bf914db667750a1cb89069092af07292276\n\n# tcId = 21\n# edge case for public key\ncurve = curve25519\nprivate = c0658c46dde18129293877535b1162b6f9f5414a23cf4d2cbc140a4d99da2b8f\npublic = ebffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f\nresult = valid\nshared = 578ba8cc2dbdc575afcf9df2b3ee6189f5337d6854c79b4ce165ea12293b3a0f\n\n# tcId = 22\n# public key with low order\ncurve = curve25519\nprivate = 10255c9230a97a30a458ca284a629669293a31890cda9d147febc7d1e22d6bb1\npublic = e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b800\nresult = acceptable\nshared = 0000000000000000000000000000000000000000000000000000000000000000\n\n# tcId", " = 23\n# public key with low order\ncurve = curve25519\nprivate = 78f1e8edf14481b389448dac8f59c70b038e7cf92ef2c7eff57a72466e115296\npublic = 5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f1157\nresult = acceptable\nshared = 0000000000000000000000000000000000000000000000000000000000000000\n\n# tcId = 24\n# public key with low order\ncurve = curve25519\nprivate = a0a05a3e8f9f44204d5f8059a94ac7dfc39a49ac016dd743dbfa43c5d671fd88\npublic = ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f\nresult = acceptable\nshared = 0000000000000000000000000000000000000000000000000000000000000000\n\n# tcId = 25\n# public key with low order\ncurve = curve25519\nprivate = d0dbb3ed1906663f15420af31f4eaf6509d9a9949723500605ad7c1c6e7450a9\npublic = edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f\nresult = acceptable\nshared = 0000000000000000000000000000000000000000000000000000000000000000\n\n# tcId = 26\n# public key with low order\ncurve = curve25519\nprivate = c0b1d0eb22b244fe3291140072cdd9d989b5f0ecd96c100feb5bca241c1d9f8f\npublic = eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f\nresult = acceptable\nshared = 0000000000000000000000000000000000000000000000000000000000000000\n\n# tcId = 27\n# public key with low order\ncurve = curve25519\nprivate = 480bf45f594942a8bc0f3353c6e8b8853d77f351f1c2ca6c2d1abf8a00b4229c\npublic = 0000000000000000000000000000000000000000000000000000000000000080\nresult = acceptable\nshared = 0000000000000000000000000000000000000000000000000000000000000000\n\n# tcId = 28\n# public key with low order\ncurve = curve25519\nprivate = 30f993fcf8514fc89bd8db14cd43ba0d4b2530e73c4276a05e1b145d420cedb4\npublic = 0100000000000000000000000000000000000000000000000000000000000080\nresult = acceptable\nshared = 0000000000000000000000000000000000000000000000000000000000000000\n\n# tcId = 29\n# public key with low order\ncurve = curve25519\nprivate = c04974b758380e2a5b5df6eb09bb2f6b3434f982722a8e676d3da251d1b3de83\npublic = e0eb7a7c3b41b8ae1656e3faf19fc46ada098deb9c32b1fd866205165f49b880\nresult = acceptable\nshared = 0000000000000000000000000000000000000000000000000000000000000000\n\n# tcId = 30\n# public key with low order\ncurve = curve25519\nprivate = 502a31373db32446842fe5add3e024022ea54f274182afc3d9f1bb3d39534eb5\npublic = 5f9c95bca3508c24b1d0b1559c83ef5b04445cc4581c8e86d8224eddd09f11d7\nresult = acceptable\nshared = 0000000000000000000000000000000000000000000000000000000000000000\n\n# tcId = 31\n# public key with low order\ncurve = curve25519\nprivate = 90fa6417b0e37030fd6e43eff2abaef14c6793117a039cf621318ba90f4e98be\npublic = ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nresult = acceptable\nshared = 0000000000000000000000000000000000000000000000000000000000000000\n\n# tcId = 32\n# public key with low order\ncurve = curve25519\nprivate = 78ad3f26027f1c9fdd975a1613b947779bad2cf2b741ade01840885a30bb979c\npublic = edffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nresult = acceptable\nshared = 0000000000000000000000000000000000000000000000000000000000000000\n\n# tcId = 33\n# public key with low order\ncurve = curve25519\nprivate = 98e23de7b1e0926ed9c87e7b14baf55f497a1d7096f93977680e44dc1c7b7b8b\npublic = eeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nresult = acceptable\nshared = 0000000000000000000000000000000000000000000000000000000000000000\n\n# tcId = 34\n# public key >= p\ncurve = curve25519\nprivate = f01e48dafac9d7bcf589cbc382c878d18bda3550589ffb5d50b523bebe329dae\npublic = efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f\nresult = acceptable\nshared = bd36a0790eb883098c988b21786773de0b3a4df162282cf110de18dd484ce74b\n\n# tcId = 35\n# public key >= p\ncurve = curve25519\nprivate = 288796bc5aff4b81a37501757bc0753a3c21964790d38699308debc17a6eaf8d\npublic = f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f\nresult = acceptable\nshared = b4e0dd76da7b071728b61f856771aa356e57eda78a5b1655cc3820fb5f854c5c\n\n# tcId = 36\n# public key >= p\ncurve = curve25519\nprivate = 98df845f6651bf1138221f119041f72b6dbc3c4ace7143d99fd55ad867480da8\npublic = f1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f\nresult = acceptable\nshared = 6fdf6c37611dbd5304dc0f2eb7c9517eb3c50e12fd050ac6dec27071d4bfc034\n\n# tcId = 37\n# public key >= p\ncurve = curve25519\nprivate = f09498e46f02f878829e78b803d316a2ed695d0498a08abdf8276930e24edcb0\npublic = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f\nresult = acceptable\nshared = 4c8fc4b1c6ab88fb21f18f6d4c810240d4e94651ba44f7a2c863cec7dc56602d\n\n# tcId = 38\n# public key >= p\ncurve = curve25519\nprivate = 1813c10a5c7f21f96e17f288c0cc37607c04c5f5aea2db134f9e2ffc66bd9db8\npublic = 0200000000000000000000000000000000000000000000000000000000000080\nresult = acceptable\nshared = 1cd0b28267dc541c642d6d7dca44a8b38a63736eef5c4e6501ffbbb1780c033c\n\n# tcId = 39\n# public key >= p\ncurve = curve25519\nprivate = 7857fb808653645a0beb138a64f5f4d733a45ea84c3cda11a9c06f7e7139149e\npublic = 0300000000000000000000000000000000000000000000000000000000000080\nresult = acceptable\nshared = 8755be01c60a7e825cff3e0e78cb3aa4333861516aa59b1c51a8b2a543dfa822\n\n# tcId = 40\n# public key >= p\ncurve = curve25519\nprivate = e03aa842e2abc56e81e87b8b9f417b2a1e5913c723eed28d752f8d47a59f498f\npublic = 0400000000000000000000000000000000000000000000000000000000000080\nresult = acceptable\nshared = 54c9a1ed95e546d27822a360931dda60a1df049da6f904253c0612bbdc087476\n\n# tcId = 41\n# public key >= p\ncurve = curve25519\nprivate = f8f707b7999b18cb0d6b96124f2045972ca274bfc154ad0c87038c24c6d0d4b2\npublic = daffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nresult = acceptable\nshared = cc1f40d743cdc2230e1043daba8b75e810f1fbab7f255269bd9ebb29e6bf494f\n\n# tcId = 42\n# public key >= p\ncurve = curve25519\nprivate = a034f684fa631e1a348118c1ce4c98231f2d9eec9ba5365b4a05d69a785b0796\npublic = dbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nresult = acceptable\nshared = 54998ee43a5b007bf499f078e736524400a8b5c7e9b9b43771748c7cdf880412\n\n# tcId = 43\n# public key >= p\ncurve = curve25519\nprivate = 30b6c6a0f2ffa680768f992ba89e152d5bc9893d38c9119be4f767bfab6e0ca5\npublic = dcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nresult = acceptable\nshared = ead9b38efdd723637934e55ab717a7ae09eb86a21dc36a3feeb88b759e391e09\n\n# tcId = 44\n# public key >= p\ncurve = curve25519\nprivate = 901b9dcf881e01e027575035d40b43bdc1c5242e030847495b0c7286469b6591\npublic = eaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nresult = acceptable\nshared = 602ff40789b54b41805915fe2a6221f07a50ffc2c3fc94cf61f13d7904e88e0e\n\n# tcId = 45\n# public key >= p\ncurve = curve25519\nprivate = 8046677c28fd82c9a1bdb71a1a1a34faba1225e2507fe3f54d10bd5b0d865f8e\npublic = ebffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nresult = acceptable\nshared = e00ae8b143471247ba24f12c885536c3cb981b58e1e56b2baf35c12ae1f79c26\n\n# tcId = 46\n# public key >= p\ncurve = curve25519\nprivate = 602f7e2f68a846b82cc269b1d48e939886ae54fd636c1fe074d710127d472491\npublic = efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nresult = acceptable\nshared = 98cb9b50dd3fc2b0d4f2d2bf7c5cfdd10c8fcd31fc40af1ad44f47c131376362\n\n# tcId = 47\n# public key >= p\ncurve = curve25519\nprivate = 60887b3dc72443026ebedbbbb70665f42b87add1440e7768fbd7e8e2ce5f639d\npublic = f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nresult = acceptable\nshared = 38d6304c4a7e6d9f7959334fb5245bd2c754525d4c91db950206926234c1f633\n\n# tcId = 48\n# public key >= p\ncurve = curve25519\nprivate = 78d31dfa854497d72d8def8a1b7fb006cec2d8c4924647c93814ae56faeda495\npublic = f1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nresult = acceptable\nshared = 786cd54996f014a5a031ec14db812ed08355061fdb5de680a800ac521f318e23\n\n# tcId = 49\n# public key >= p\ncurve = curve25519\nprivate = c04c5baefa8302ddded6a4bb957761b4eb97aefa4fc3b8043085f96a5659b3a5\npublic = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\nresult = acceptable\nshared = 29ae8bc73e9b10a08b4f681c43c3e0ac1a171d31b38f1a48efba29ae639ea134\n\n# tcId = 50\n# RFC 7748\ncurve = curve25519\nprivate = a046e36bf0527c9d3b16154b82465edd62144c0ac1fc5a18506a2244ba449a44\npublic = e6db6867583030db3594c1a424b15f7c726624ec26b3353b10a", "903a6d0ab1c4c\nresult = valid\nshared = c3da55379de9c6908e94ea4df28d084f32eccf03491c71f754b4075577a28552\n\n# tcId = 51\n# RFC 7748\ncurve = curve25519\nprivate = 4866e9d4d1b4673c5ad22691957d6af5c11b6421e0ea01d42ca4169e7918ba4d\npublic = e5210f12786811d3f4b7959d0538ae2c31dbe7106fc03c3efc4cd549c715a413\nresult = valid\nshared = 95cbde9476e8907d7aade45cb4b873f88b595a68799fa152e6f8f7647aac7957\n\n# tcId = 52\n# edge case for shared secret\ncurve = curve25519\nprivate = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63\npublic = 0ab4e76380d84dde4f6833c58f2a9fb8f83bb0169b172be4b6e0592887741a36\nresult = acceptable\nshared = 0200000000000000000000000000000000000000000000000000000000000000\n\n# tcId = 53\n# edge case for shared secret\ncurve = curve25519\nprivate = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63\npublic = 89e10d5701b4337d2d032181538b1064bd4084401ceca1fd12663a1959388000\nresult = valid\nshared = 0900000000000000000000000000000000000000000000000000000000000000\n\n# tcId = 54\n# edge case for shared secret\ncurve = curve25519\nprivate = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63\npublic = 2b55d3aa4a8f80c8c0b2ae5f933e85af49beac36c2fa7394bab76c8933f8f81d\nresult = valid\nshared = 1000000000000000000000000000000000000000000000000000000000000000\n\n# tcId = 55\n# edge case for shared secret\ncurve = curve25519\nprivate = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63\npublic = 63e5b1fe9601fe84385d8866b0421262f78fbfa5aff9585e626679b18547d959\nresult = acceptable\nshared = feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f\n\n# tcId = 56\n# edge case for shared secret\ncurve = curve25519\nprivate = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63\npublic = e428f3dac17809f827a522ce32355058d07369364aa78902ee10139b9f9dd653\nresult = valid\nshared = fcffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f\n\n# tcId = 57\n# edge case for shared secret\ncurve = curve25519\nprivate = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63\npublic = b3b50e3ed3a407b95de942ef74575b5ab8a10c09ee103544d60bdfed8138ab2b\nresult = acceptable\nshared = f9ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f\n\n# tcId = 58\n# edge case for shared secret\ncurve = curve25519\nprivate = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63\npublic = 213fffe93d5ea8cd242e462844029922c43c77c9e3e42f562f485d24c501a20b\nresult = valid\nshared = f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3f\n\n# tcId = 59\n# edge case for shared secret\ncurve = curve25519\nprivate = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63\npublic = 91b232a178b3cd530932441e6139418f72172292f1da4c1834fc5ebfefb51e3f\nresult = valid\nshared = ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03\n\n# tcId = 60\n# edge case for shared secret\ncurve = curve25519\nprivate = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63\npublic = 045c6e11c5d332556c7822fe94ebf89b56a3878dc27ca079103058849fabcb4f\nresult = acceptable\nshared = e5ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f\n\n# tcId = 61\n# edge case for shared secret\ncurve = curve25519\nprivate = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63\npublic = 1ca2190b71163539063c35773bda0c9c928e9136f0620aeb093f099197b7f74e\nresult = acceptable\nshared = e3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f\n\n# tcId = 62\n# edge case for shared secret\ncurve = curve25519\nprivate = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63\npublic = f76e9010ac33c5043b2d3b76a842171000c4916222e9e85897a0aec7f6350b3c\nresult = valid\nshared = ddffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f\n\n# tcId = 63\n# edge case for shared secret\ncurve = curve25519\nprivate = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63\npublic = bb72688d8f8aa7a39cd6060cd5c8093cdec6fe341937c3886a99346cd07faa55\nresult = acceptable\nshared = dbffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f\n\n# tcId = 64\n# edge case for shared secret\ncurve = curve25519\nprivate = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63\npublic = 88fddea193391c6a5933ef9b71901549447205aae9da928a6b91a352ba10f41f\nresult = acceptable\nshared = 0000000000000000000000000000000000000000000000000000000000000002\n\n# tcId = 65\n# edge case for shared secret\ncurve = curve25519\nprivate = a0a4f130b98a5be4b1cedb7cb85584a3520e142d474dc9ccb909a073a976bf63\npublic = 303b392f153116cad9cc682a00ccc44c95ff0d3bbe568beb6c4e739bafdc2c68\nresult = acceptable\nshared = 0000000000000000000000000000000000000000000000000000000000008000\n\n# tcId = 66\n# checking for overflow\ncurve = curve25519\nprivate = c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2\npublic = fd300aeb40e1fa582518412b49b208a7842b1e1f056a040178ea4141534f652d\nresult = valid\nshared = b734105dc257585d73b566ccb76f062795ccbec89128e52b02f3e59639f13c46\n\n# tcId = 67\n# checking for overflow\ncurve = curve25519\nprivate = c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2\npublic = c8ef79b514d7682677bc7931e06ee5c27c9b392b4ae9484473f554e6678ecc2e\nresult = valid\nshared = 647a46b6fc3f40d62141ee3cee706b4d7a9271593a7b143e8e2e2279883e4550\n\n# tcId = 68\n# checking for overflow\ncurve = curve25519\nprivate = c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2\npublic = 64aeac2504144861532b7bbcb6c87d67dd4c1f07ebc2e06effb95aecc6170b2c\nresult = valid\nshared = 4ff03d5fb43cd8657a3cf37c138cadcecce509e4eba089d0ef40b4e4fb946155\n\n# tcId = 69\n# checking for overflow\ncurve = curve25519\nprivate = c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2\npublic = bf68e35e9bdb7eee1b50570221860f5dcdad8acbab031b14974cc49013c49831\nresult = valid\nshared = 21cee52efdbc812e1d021a4af1e1d8bc4db3c400e4d2a2c56a3926db4d99c65b\n\n# tcId = 70\n# checking for overflow\ncurve = curve25519\nprivate = c81724704000b26d31703cc97e3a378d56fad8219361c88cca8bd7c5719b12b2\npublic = 5347c491331a64b43ddc683034e677f53dc32b52a52a577c15a83bf298e99f19\nresult = valid\nshared = 18cb89e4e20c0c2bd324305245266c9327690bbe79acb88f5b8fb3f74eca3e52\n\n# tcId = 71\n# private key == -1 (mod order)\ncurve = curve25519\nprivate = a023cdd083ef5bb82f10d62e59e15a6800000000000000000000000000000050\npublic = 258e04523b8d253ee65719fc6906c657192d80717edc828fa0af21686e2faa75\nresult = valid\nshared = 258e04523b8d253ee65719fc6906c657192d80717edc828fa0af21686e2faa75\n\n# tcId = 72\n# private key == 1 (mod order) on twist\ncurve = curve25519\nprivate = 58083dd261ad91eff952322ec824c682ffffffffffffffffffffffffffffff5f\npublic = 2eae5ec3dd494e9f2d37d258f873a8e6e9d0dbd1e383ef64d98bb91b3e0be035\nresult = acceptable\nshared = 2eae5ec3dd494e9f2d37d258f873a8e6e9d0dbd1e383ef64d98bb91b3e0be035\n\n", }; -static const size_t kLen67 = 23096; +static const size_t kLen68 = 23096; static std::string AssembleString(const char **data, size_t len) { std::string ret; @@ -3224,51 +3234,54 @@ if (strcmp(path, "crypto/x509/some_names3.pem") == 0) { return AssembleString(kData52, kLen52); } - if (strcmp(path, "third_party/wycheproof/aes_cbc_pkcs5_test.txt") == 0) { + if (strcmp(path, "third_party/wycheproof_testvectors/aes_cbc_pkcs5_test.txt") == 0) { return AssembleString(kData53, kLen53); } - if (strcmp(path, "third_party/wycheproof/aes_gcm_siv_test.txt") == 0) { + if (strcmp(path, "third_party/wycheproof_testvectors/aes_gcm_siv_test.txt") == 0) { return AssembleString(kData54, kLen54); } - if (strcmp(path, "third_party/wycheproof/aes_gcm_test.txt") == 0) { + if (strcmp(path, "third_party/wycheproof_testvectors/aes_gcm_test.txt") == 0) { return AssembleString(kData55, kLen55); } - if (strcmp(path, "third_party/wycheproof/chacha20_poly1305_test.txt") == 0) { + if (strcmp(path, "third_party/wycheproof_testvectors/chacha20_poly1305_test.txt") == 0) { return AssembleString(kData56, kLen56); } - if (strcmp(path, "third_party/wycheproof/dsa_test.txt") == 0) { + if (strcmp(path, "third_party/wycheproof_testvectors/dsa_test.txt") == 0) { return AssembleString(kData57, kLen57); } - if (strcmp(path, "third_party/wycheproof/ecdh_test.txt") == 0) { + if (strcmp(path, "third_party/wycheproof_testvectors/ecdh_test.txt") == 0) { return AssembleString(kData58, kLen58); } - if (strcmp(path, "third_party/wycheproof/ecdsa_secp224r1_sha224_test.txt") == 0) { + if (strcmp(path, "third_party/wycheproof_testvectors/ecdsa_secp224r1_sha224_test.txt") == 0) { return AssembleString(kData59, kLen59); } - if (strcmp(path, "third_party/wycheproof/ecdsa_secp224r1_sha256_test.txt") == 0) { + if (strcmp(path, "third_party/wycheproof_testvectors/ecdsa_secp224r1_sha256_test.txt") == 0) { return AssembleString(kData60, kLen60); } - if (strcmp(path, "third_party/wycheproof/ecdsa_secp256r1_sha256_test.txt") == 0) { + if (strcmp(path, "third_party/wycheproof_testvectors/ecdsa_secp256r1_sha256_test.txt") == 0) { return AssembleString(kData61, kLen61); } - if (strcmp(path, "third_party/wycheproof/ecdsa_secp384r1_sha384_test.txt") == 0) { + if (strcmp(path, "third_party/wycheproof_testvectors/ecdsa_secp384r1_sha384_test.txt") == 0) { return AssembleString(kData62, kLen62); } - if (strcmp(path, "third_party/wycheproof/ecdsa_secp384r1_sha512_test.txt") == 0) { + if (strcmp(path, "third_party/wycheproof_testvectors/ecdsa_secp384r1_sha512_test.txt") == 0) { return AssembleString(kData63, kLen63); } - if (strcmp(path, "third_party/wycheproof/ecdsa_secp521r1_sha512_test.txt") == 0) { + if (strcmp(path, "third_party/wycheproof_testvectors/ecdsa_secp521r1_sha512_test.txt") == 0) { return AssembleString(kData64, kLen64); } - if (strcmp(path, "third_party/wycheproof/eddsa_test.txt") == 0) { + if (strcmp(path, "third_party/wycheproof_testvectors/eddsa_test.txt") == 0) { return AssembleString(kData65, kLen65); } - if (strcmp(path, "third_party/wycheproof/rsa_signature_test.txt") == 0) { + if (strcmp(path, "third_party/wycheproof_testvectors/kw_test.txt") == 0) { return AssembleString(kData66, kLen66); } - if (strcmp(path, "third_party/wycheproof/x25519_test.txt") == 0) { + if (strcmp(path, "third_party/wycheproof_testvectors/rsa_signature_test.txt") == 0) { return AssembleString(kData67, kLen67); } + if (strcmp(path, "third_party/wycheproof_testvectors/x25519_test.txt") == 0) { + return AssembleString(kData68, kLen68); + } fprintf(stderr, "File not embedded: %s.\n", path); abort(); }
diff --git a/third_party/boringssl/err_data.c b/third_party/boringssl/err_data.c index afb6a802..4c4ba42 100644 --- a/third_party/boringssl/err_data.c +++ b/third_party/boringssl/err_data.c
@@ -54,175 +54,175 @@ OPENSSL_COMPILE_ASSERT(ERR_NUM_LIBS == 33, library_values_changed_num); const uint32_t kOpenSSLReasonValues[] = { - 0xc320848, - 0xc328862, - 0xc330871, - 0xc338881, - 0xc340890, - 0xc3488a9, - 0xc3508b5, - 0xc3588d2, - 0xc3608f2, - 0xc368900, - 0xc370910, - 0xc37891d, - 0xc38092d, - 0xc388938, - 0xc39094e, - 0xc39895d, - 0xc3a0971, - 0xc3a8855, + 0xc32083a, + 0xc328854, + 0xc330863, + 0xc338873, + 0xc340882, + 0xc34889b, + 0xc3508a7, + 0xc3588c4, + 0xc3608e4, + 0xc3688f2, + 0xc370902, + 0xc37890f, + 0xc38091f, + 0xc38892a, + 0xc390940, + 0xc39894f, + 0xc3a0963, + 0xc3a8847, 0xc3b00ea, - 0xc3b88e4, - 0x10320855, - 0x10329545, - 0x10331551, - 0x1033956a, - 0x1034157d, - 0x10348f0c, - 0x10350c6e, - 0x10359590, - 0x103615a5, - 0x103695b8, - 0x103715d7, - 0x103795f0, - 0x10381605, - 0x10389623, - 0x10391632, - 0x1039964e, - 0x103a1669, - 0x103a9678, - 0x103b1694, - 0x103b96af, - 0x103c16d5, + 0xc3b88d6, + 0x10320847, + 0x1032955e, + 0x1033156a, + 0x10339583, + 0x10341596, + 0x10348efe, + 0x10350c60, + 0x103595a9, + 0x103615be, + 0x103695d1, + 0x103715f0, + 0x10379609, + 0x1038161e, + 0x1038963c, + 0x1039164b, + 0x10399667, + 0x103a1682, + 0x103a9691, + 0x103b16ad, + 0x103b96c8, + 0x103c16ee, 0x103c80ea, - 0x103d16e6, - 0x103d96fa, - 0x103e1719, - 0x103e9728, - 0x103f173f, - 0x103f9752, - 0x10400c32, - 0x10409765, - 0x10411783, - 0x10419796, - 0x104217b0, - 0x104297c0, - 0x104317d4, - 0x104397ea, - 0x10441802, - 0x10449817, - 0x1045182b, - 0x1045983d, - 0x1046060b, - 0x1046895d, - 0x10471852, - 0x10479869, - 0x1048187e, - 0x1048988c, - 0x10490e6e, - 0x104996c6, - 0x14320c15, - 0x14328c23, - 0x14330c32, - 0x14338c44, + 0x103d16ff, + 0x103d9713, + 0x103e1732, + 0x103e9741, + 0x103f1758, + 0x103f976b, + 0x10400c24, + 0x1040977e, + 0x1041179c, + 0x104197af, + 0x104217c9, + 0x104297d9, + 0x104317ed, + 0x10439803, + 0x1044181b, + 0x10449830, + 0x10451844, + 0x10459856, + 0x104605fd, + 0x1046894f, + 0x1047186b, + 0x10479882, + 0x10481897, + 0x104898a5, + 0x10490e60, + 0x104996df, + 0x14320c07, + 0x14328c15, + 0x14330c24, + 0x14338c36, 0x143400ac, 0x143480ea, 0x18320083, - 0x18328f62, + 0x18328f54, 0x183300ac, - 0x18338f78, - 0x18340f8c, + 0x18338f6a, + 0x18340f7e, 0x183480ea, - 0x18350fa1, - 0x18358fb9, - 0x18360fce, - 0x18368fe2, - 0x18371006, - 0x1837901c, - 0x18381030, - 0x18389040, - 0x18390a83, - 0x18399050, - 0x183a1078, - 0x183a909e, - 0x183b0c7a, - 0x183b90d3, - 0x183c10e5, - 0x183c90f0, - 0x183d1100, - 0x183d9111, - 0x183e1122, - 0x183e9134, - 0x183f115d, - 0x183f9176, - 0x1840118e, - 0x184086e3, - 0x184110c1, - 0x1841908c, - 0x184210ab, - 0x18429065, - 0x203211c8, - 0x203291b5, - 0x243211d4, - 0x243289a3, - 0x243311e6, - 0x243391f3, - 0x24341200, - 0x24349212, - 0x24351221, - 0x2435923e, - 0x2436124b, - 0x24369259, - 0x24371267, - 0x24379275, - 0x2438127e, - 0x2438928b, - 0x2439129e, - 0x28320c62, - 0x28328c7a, - 0x28330c32, - 0x28338c8d, - 0x28340c6e, + 0x18350f93, + 0x18358fab, + 0x18360fc0, + 0x18368fd4, + 0x18370ff8, + 0x1837900e, + 0x18381022, + 0x18389032, + 0x18390a75, + 0x18399042, + 0x183a106a, + 0x183a9090, + 0x183b0c6c, + 0x183b90c5, + 0x183c10d7, + 0x183c90e2, + 0x183d10f2, + 0x183d9103, + 0x183e1114, + 0x183e9126, + 0x183f114f, + 0x183f9168, + 0x18401180, + 0x184086d5, + 0x184110b3, + 0x1841907e, + 0x1842109d, + 0x18429057, + 0x203211ba, + 0x203291a7, + 0x243211c6, + 0x24328995, + 0x243311d8, + 0x243391e5, + 0x243411f2, + 0x24349204, + 0x24351213, + 0x24359230, + 0x2436123d, + 0x2436924b, + 0x24371259, + 0x24379267, + 0x24381270, + 0x2438927d, + 0x24391290, + 0x28320c54, + 0x28328c6c, + 0x28330c24, + 0x28338c7f, + 0x28340c60, 0x283480ac, 0x283500ea, - 0x2c322d16, - 0x2c3292b5, - 0x2c332d24, - 0x2c33ad36, - 0x2c342d4a, - 0x2c34ad5c, - 0x2c352d77, - 0x2c35ad89, - 0x2c362d9c, + 0x2c322d61, + 0x2c3292a7, + 0x2c332d6f, + 0x2c33ad81, + 0x2c342d95, + 0x2c34ada7, + 0x2c352dc2, + 0x2c35add4, + 0x2c362de7, 0x2c36832d, - 0x2c372da9, - 0x2c37adbb, - 0x2c382de0, - 0x2c38adf7, - 0x2c392e05, - 0x2c39ae15, - 0x2c3a2e27, - 0x2c3aae3b, - 0x2c3b2e4c, - 0x2c3bae6b, - 0x2c3c12c7, - 0x2c3c92dd, - 0x2c3d2e7f, - 0x2c3d92f6, - 0x2c3e2e9c, - 0x2c3eaeaa, - 0x2c3f2ec2, - 0x2c3faeda, - 0x2c402ee7, - 0x2c4091c8, - 0x2c412ef8, - 0x2c41af0b, - 0x2c42118e, - 0x2c42af1c, - 0x2c430730, - 0x2c43ae5d, - 0x2c442dce, + 0x2c372df4, + 0x2c37ae06, + 0x2c382e2b, + 0x2c38ae42, + 0x2c392e50, + 0x2c39ae60, + 0x2c3a2e72, + 0x2c3aae86, + 0x2c3b2e97, + 0x2c3baeb6, + 0x2c3c12b9, + 0x2c3c92cf, + 0x2c3d2eca, + 0x2c3d92e8, + 0x2c3e2ee7, + 0x2c3eaef5, + 0x2c3f2f0d, + 0x2c3faf25, + 0x2c402f32, + 0x2c4091ba, + 0x2c412f43, + 0x2c41af56, + 0x2c421180, + 0x2c42af67, + 0x2c430722, + 0x2c43aea8, + 0x2c442e19, 0x30320000, 0x30328015, 0x3033001f, @@ -266,472 +266,476 @@ 0x30460312, 0x3046832d, 0x3047034a, - 0x30478363, - 0x30480371, - 0x30488382, - 0x30490391, - 0x304983a9, - 0x304a03bb, - 0x304a83cf, - 0x304b03ee, - 0x304b8401, - 0x304c040c, - 0x304c841d, - 0x304d0429, - 0x304d843f, - 0x304e044d, - 0x304e8463, - 0x304f0475, - 0x304f8487, - 0x305004aa, - 0x305084bd, - 0x305104ce, - 0x305184de, - 0x305204f6, - 0x3052850b, - 0x30530523, - 0x30538537, - 0x3054054f, - 0x30548568, - 0x30550581, - 0x3055859e, - 0x305605a9, - 0x305685c1, - 0x305705d1, - 0x305785e2, - 0x305805f5, - 0x3058860b, - 0x30590614, - 0x30598629, - 0x305a063c, - 0x305a864b, - 0x305b066b, - 0x305b867a, - 0x305c069b, - 0x305c86b7, - 0x305d06c3, - 0x305d86e3, - 0x305e06ff, - 0x305e8710, - 0x305f0726, - 0x305f8730, - 0x3060049a, - 0x34320b73, - 0x34328b87, - 0x34330ba4, - 0x34338bb7, - 0x34340bc6, - 0x34348bff, - 0x34350be3, + 0x3047835c, + 0x3048036a, + 0x3048837b, + 0x3049038a, + 0x304983a2, + 0x304a03b4, + 0x304a83c8, + 0x304b03e0, + 0x304b83f3, + 0x304c03fe, + 0x304c840f, + 0x304d041b, + 0x304d8431, + 0x304e043f, + 0x304e8455, + 0x304f0467, + 0x304f8479, + 0x3050049c, + 0x305084af, + 0x305104c0, + 0x305184d0, + 0x305204e8, + 0x305284fd, + 0x30530515, + 0x30538529, + 0x30540541, + 0x3054855a, + 0x30550573, + 0x30558590, + 0x3056059b, + 0x305685b3, + 0x305705c3, + 0x305785d4, + 0x305805e7, + 0x305885fd, + 0x30590606, + 0x3059861b, + 0x305a062e, + 0x305a863d, + 0x305b065d, + 0x305b866c, + 0x305c068d, + 0x305c86a9, + 0x305d06b5, + 0x305d86d5, + 0x305e06f1, + 0x305e8702, + 0x305f0718, + 0x305f8722, + 0x3060048c, + 0x34320b65, + 0x34328b79, + 0x34330b96, + 0x34338ba9, + 0x34340bb8, + 0x34348bf1, + 0x34350bd5, 0x3c320083, - 0x3c328cb7, - 0x3c330cd0, - 0x3c338ceb, - 0x3c340d08, - 0x3c348d32, - 0x3c350d4d, - 0x3c358d73, - 0x3c360d8c, - 0x3c368da4, - 0x3c370db5, - 0x3c378dc3, - 0x3c380dd0, - 0x3c388de4, - 0x3c390c7a, - 0x3c398e07, - 0x3c3a0e1b, - 0x3c3a891d, - 0x3c3b0e2b, - 0x3c3b8e46, - 0x3c3c0e58, - 0x3c3c8e8b, - 0x3c3d0e95, - 0x3c3d8ea9, - 0x3c3e0eb7, - 0x3c3e8edc, - 0x3c3f0ca3, - 0x3c3f8ec5, + 0x3c328ca9, + 0x3c330cc2, + 0x3c338cdd, + 0x3c340cfa, + 0x3c348d24, + 0x3c350d3f, + 0x3c358d65, + 0x3c360d7e, + 0x3c368d96, + 0x3c370da7, + 0x3c378db5, + 0x3c380dc2, + 0x3c388dd6, + 0x3c390c6c, + 0x3c398df9, + 0x3c3a0e0d, + 0x3c3a890f, + 0x3c3b0e1d, + 0x3c3b8e38, + 0x3c3c0e4a, + 0x3c3c8e7d, + 0x3c3d0e87, + 0x3c3d8e9b, + 0x3c3e0ea9, + 0x3c3e8ece, + 0x3c3f0c95, + 0x3c3f8eb7, 0x3c4000ac, 0x3c4080ea, - 0x3c410d23, - 0x3c418d62, - 0x3c420e6e, - 0x3c428df8, - 0x403218e5, - 0x403298fb, - 0x40331929, - 0x40339933, - 0x4034194a, - 0x40349968, - 0x40351978, - 0x4035998a, - 0x40361997, - 0x403699a3, - 0x403719b8, - 0x403799ca, - 0x403819d5, - 0x403899e7, - 0x40390f0c, - 0x403999f7, - 0x403a1a0a, - 0x403a9a2b, - 0x403b1a3c, - 0x403b9a4c, + 0x3c410d15, + 0x3c418d54, + 0x3c420e60, + 0x3c428dea, + 0x403218fe, + 0x40329914, + 0x40331942, + 0x4033994c, + 0x40341963, + 0x40349981, + 0x40351991, + 0x403599a3, + 0x403619b0, + 0x403699bc, + 0x403719d1, + 0x403799e3, + 0x403819ee, + 0x40389a00, + 0x40390efe, + 0x40399a10, + 0x403a1a23, + 0x403a9a44, + 0x403b1a55, + 0x403b9a65, 0x403c0064, 0x403c8083, - 0x403d1ad0, - 0x403d9ae6, - 0x403e1af5, - 0x403e9b2d, - 0x403f1b47, - 0x403f9b55, - 0x40401b6a, - 0x40409b7e, - 0x40411b9b, - 0x40419bb6, - 0x40421bcf, - 0x40429be2, - 0x40431bf6, - 0x40439c0e, - 0x40441c25, + 0x403d1ae9, + 0x403d9aff, + 0x403e1b0e, + 0x403e9b46, + 0x403f1b60, + 0x403f9b6e, + 0x40401b83, + 0x40409b97, + 0x40411bb4, + 0x40419bcf, + 0x40421be8, + 0x40429bfb, + 0x40431c0f, + 0x40439c27, + 0x40441c3e, 0x404480ac, - 0x40451c3a, - 0x40459c4c, - 0x40461c70, - 0x40469c90, - 0x40471c9e, - 0x40479cc5, - 0x40481d18, - 0x40489d4b, - 0x40491d62, - 0x40499d7c, - 0x404a1d93, - 0x404a9db1, - 0x404b1dc9, - 0x404b9de0, - 0x404c1df6, - 0x404c9e08, - 0x404d1e29, - 0x404d9e62, - 0x404e1e76, - 0x404e9e83, - 0x404f1eb0, - 0x404f9ed9, - 0x40501f14, - 0x40509f28, - 0x40511f43, - 0x40521f53, - 0x40529f77, - 0x40531f8f, - 0x40539fa2, - 0x40541fb7, - 0x40549fda, - 0x40551fe8, - 0x4055a025, - 0x40562032, - 0x4056a04b, - 0x40572063, - 0x4057a076, - 0x4058208b, - 0x4058a0b2, - 0x405920e1, - 0x4059a10e, - 0x405a2122, - 0x405aa132, - 0x405b214a, - 0x405ba15b, - 0x405c216e, - 0x405ca1ad, - 0x405d21ba, - 0x405da1d1, - 0x405e220f, - 0x405e8ac1, - 0x405f2230, - 0x405fa23d, - 0x4060224b, - 0x4060a26d, - 0x406122ce, - 0x4061a306, - 0x4062231d, - 0x4062a32e, - 0x4063233f, - 0x4063a354, - 0x4064236b, - 0x4064a397, - 0x406523b2, - 0x4065a3c9, - 0x406623e1, - 0x4066a40b, - 0x40672436, - 0x4067a457, - 0x4068249f, - 0x4068a4c0, - 0x406924f2, - 0x4069a520, - 0x406a2541, - 0x406aa561, - 0x406b26e9, - 0x406ba70c, - 0x406c2722, - 0x406ca99d, - 0x406d29cc, - 0x406da9f4, - 0x406e2a22, - 0x406eaa6f, - 0x406f2a8e, - 0x406faac6, - 0x40702ad9, - 0x4070aaf6, - 0x40710810, - 0x4071ab08, - 0x40722b1b, - 0x4072ab34, - 0x40732b4c, - 0x407394b4, - 0x40742b60, - 0x4074ab7a, - 0x40752b8b, - 0x4075ab9f, - 0x40762bad, - 0x4076928b, - 0x40772bd2, - 0x4077abf4, - 0x40782c0f, - 0x4078ac48, - 0x40792c5f, - 0x4079ac75, - 0x407a2c81, - 0x407aac94, - 0x407b2ca9, - 0x407bacbb, - 0x407c2cec, - 0x407cacf5, - 0x407d24db, - 0x407d9ee9, - 0x407e2c24, - 0x407ea0c2, - 0x407f1cb2, - 0x407f9a72, - 0x40801ec0, - 0x40809cda, - 0x40811f65, - 0x40819e9a, - 0x40822a0d, - 0x40829a58, - 0x4083209d, - 0x4083a37c, - 0x40841cee, - 0x4084a0fa, - 0x4085217f, - 0x4085a295, - 0x408621f1, - 0x40869f03, - 0x40872a53, - 0x4087a2e3, - 0x40881ab9, - 0x4088a46a, - 0x40891b08, - 0x40899a95, - 0x408a2742, - 0x408a98a3, - 0x408b2cd0, - 0x408baaa3, - 0x408c218f, - 0x408c98bf, - 0x408d1d31, - 0x408d9d02, - 0x408e1e4b, - 0x408ea005, - 0x408f247e, - 0x408fa2b1, - 0x41f42614, - 0x41f926a6, - 0x41fe2599, - 0x41fea78e, - 0x41ff287f, - 0x4203262d, - 0x4208264f, - 0x4208a68b, - 0x4209257d, - 0x4209a6c5, - 0x420a25d4, - 0x420aa5b4, - 0x420b25f4, - 0x420ba66d, - 0x420c289b, - 0x420ca75b, - 0x420d2775, - 0x420da7ac, - 0x421227c6, - 0x42172862, - 0x4217a808, - 0x421c282a, - 0x421f27e5, - 0x422128b2, - 0x42262845, - 0x422b2981, - 0x422ba92f, - 0x422c2969, - 0x422ca8ee, - 0x422d28cd, - 0x422da94e, - 0x422e2914, - 0x422eaa3a, - 0x4432073b, - 0x4432874a, - 0x44330756, - 0x44338764, - 0x44340777, - 0x44348788, - 0x4435078f, - 0x44358799, - 0x443607ac, - 0x443687c2, - 0x443707d4, - 0x443787e1, - 0x443807f0, - 0x443887f8, - 0x44390810, - 0x4439881e, - 0x443a0831, - 0x483212b5, - 0x483292c7, - 0x483312dd, - 0x483392f6, - 0x4c32131b, - 0x4c32932b, - 0x4c33133e, - 0x4c33935e, + 0x40451c53, + 0x40459c65, + 0x40461c89, + 0x40469ca9, + 0x40471cb7, + 0x40479cde, + 0x40481d31, + 0x40489d64, + 0x40491d7b, + 0x40499d95, + 0x404a1dac, + 0x404a9dca, + 0x404b1de2, + 0x404b9df9, + 0x404c1e0f, + 0x404c9e21, + 0x404d1e42, + 0x404d9e7b, + 0x404e1e8f, + 0x404e9e9c, + 0x404f1ec9, + 0x404f9ef2, + 0x40501f2d, + 0x40509f41, + 0x40511f5c, + 0x40521f6c, + 0x40529f90, + 0x40531fa8, + 0x40539fbb, + 0x40541fd0, + 0x40549ff3, + 0x40552001, + 0x4055a03e, + 0x4056204b, + 0x4056a064, + 0x4057207c, + 0x4057a08f, + 0x405820a4, + 0x4058a0cb, + 0x405920fa, + 0x4059a127, + 0x405a213b, + 0x405aa14b, + 0x405b2163, + 0x405ba174, + 0x405c2187, + 0x405ca1c6, + 0x405d21d3, + 0x405da1f8, + 0x405e2236, + 0x405e8ab3, + 0x405f2257, + 0x405fa264, + 0x40602272, + 0x4060a294, + 0x406122f5, + 0x4061a32d, + 0x40622344, + 0x4062a355, + 0x40632366, + 0x4063a37b, + 0x40642392, + 0x4064a3be, + 0x406523d9, + 0x4065a3f0, + 0x40662408, + 0x4066a432, + 0x4067245d, + 0x4067a4a2, + 0x406824ea, + 0x4068a50b, + 0x4069253d, + 0x4069a56b, + 0x406a258c, + 0x406aa5ac, + 0x406b2734, + 0x406ba757, + 0x406c276d, + 0x406ca9e8, + 0x406d2a17, + 0x406daa3f, + 0x406e2a6d, + 0x406eaaba, + 0x406f2ad9, + 0x406fab11, + 0x40702b24, + 0x4070ab41, + 0x40710802, + 0x4071ab53, + 0x40722b66, + 0x4072ab7f, + 0x40732b97, + 0x407394b9, + 0x40742bab, + 0x4074abc5, + 0x40752bd6, + 0x4075abea, + 0x40762bf8, + 0x4076927d, + 0x40772c1d, + 0x4077ac3f, + 0x40782c5a, + 0x4078ac93, + 0x40792caa, + 0x4079acc0, + 0x407a2ccc, + 0x407aacdf, + 0x407b2cf4, + 0x407bad06, + 0x407c2d37, + 0x407cad40, + 0x407d2526, + 0x407d9f02, + 0x407e2c6f, + 0x407ea0db, + 0x407f1ccb, + 0x407f9a8b, + 0x40801ed9, + 0x40809cf3, + 0x40811f7e, + 0x40819eb3, + 0x40822a58, + 0x40829a71, + 0x408320b6, + 0x4083a3a3, + 0x40841d07, + 0x4084a113, + 0x40852198, + 0x4085a2bc, + 0x40862218, + 0x40869f1c, + 0x40872a9e, + 0x4087a30a, + 0x40881ad2, + 0x4088a4b5, + 0x40891b21, + 0x40899aae, + 0x408a278d, + 0x408a98bc, + 0x408b2d1b, + 0x408baaee, + 0x408c21a8, + 0x408c98d8, + 0x408d1d4a, + 0x408d9d1b, + 0x408e1e64, + 0x408ea01e, + 0x408f24c9, + 0x408fa2d8, + 0x4090247e, + 0x4090a1ea, + 0x41f4265f, + 0x41f926f1, + 0x41fe25e4, + 0x41fea7d9, + 0x41ff28ca, + 0x42032678, + 0x4208269a, + 0x4208a6d6, + 0x420925c8, + 0x4209a710, + 0x420a261f, + 0x420aa5ff, + 0x420b263f, + 0x420ba6b8, + 0x420c28e6, + 0x420ca7a6, + 0x420d27c0, + 0x420da7f7, + 0x42122811, + 0x421728ad, + 0x4217a853, + 0x421c2875, + 0x421f2830, + 0x422128fd, + 0x42262890, + 0x422b29cc, + 0x422ba97a, + 0x422c29b4, + 0x422ca939, + 0x422d2918, + 0x422da999, + 0x422e295f, + 0x422eaa85, + 0x4432072d, + 0x4432873c, + 0x44330748, + 0x44338756, + 0x44340769, + 0x4434877a, + 0x44350781, + 0x4435878b, + 0x4436079e, + 0x443687b4, + 0x443707c6, + 0x443787d3, + 0x443807e2, + 0x443887ea, + 0x44390802, + 0x44398810, + 0x443a0823, + 0x483212a7, + 0x483292b9, + 0x483312cf, + 0x483392e8, + 0x4c32130d, + 0x4c32931d, + 0x4c331330, + 0x4c339350, 0x4c3400ac, 0x4c3480ea, - 0x4c35136a, - 0x4c359378, - 0x4c361394, - 0x4c3693a7, - 0x4c3713b6, - 0x4c3793c4, - 0x4c3813d9, - 0x4c3893e5, - 0x4c391405, - 0x4c39942f, - 0x4c3a1448, - 0x4c3a9461, - 0x4c3b060b, - 0x4c3b947a, - 0x4c3c148c, - 0x4c3c949b, - 0x4c3d14b4, - 0x4c3d8c55, - 0x4c3e150d, - 0x4c3e94c3, - 0x4c3f152f, - 0x4c3f928b, - 0x4c4014d9, - 0x4c409307, - 0x4c4114fd, - 0x50322f2e, - 0x5032af3d, - 0x50332f48, - 0x5033af58, - 0x50342f71, - 0x5034af8b, - 0x50352f99, - 0x5035afaf, - 0x50362fc1, - 0x5036afd7, - 0x50372ff0, - 0x5037b003, - 0x5038301b, - 0x5038b02c, - 0x50393041, - 0x5039b055, - 0x503a3075, - 0x503ab08b, - 0x503b30a3, - 0x503bb0b5, - 0x503c30d1, - 0x503cb0e8, - 0x503d3101, - 0x503db117, - 0x503e3124, - 0x503eb13a, - 0x503f314c, - 0x503f8382, - 0x5040315f, - 0x5040b16f, - 0x50413189, - 0x5041b198, - 0x504231b2, - 0x5042b1cf, - 0x504331df, - 0x5043b1ef, - 0x504431fe, - 0x5044843f, - 0x50453212, - 0x5045b230, - 0x50463243, - 0x5046b259, - 0x5047326b, - 0x5047b280, - 0x504832a6, - 0x5048b2b4, - 0x504932c7, - 0x5049b2dc, - 0x504a32f2, - 0x504ab302, - 0x504b3322, - 0x504bb335, - 0x504c3358, - 0x504cb386, - 0x504d3398, - 0x504db3b5, - 0x504e33d0, - 0x504eb3ec, - 0x504f33fe, - 0x504fb415, - 0x50503424, - 0x505086ff, - 0x50513437, - 0x58320f4a, - 0x68320f0c, - 0x68328c7a, - 0x68330c8d, - 0x68338f1a, - 0x68340f2a, + 0x4c35135c, + 0x4c35936a, + 0x4c361386, + 0x4c3693ac, + 0x4c3713bb, + 0x4c3793c9, + 0x4c3813de, + 0x4c3893ea, + 0x4c39140a, + 0x4c399434, + 0x4c3a144d, + 0x4c3a9466, + 0x4c3b05fd, + 0x4c3b947f, + 0x4c3c1491, + 0x4c3c94a0, + 0x4c3d14b9, + 0x4c3d8c47, + 0x4c3e1526, + 0x4c3e94c8, + 0x4c3f1548, + 0x4c3f927d, + 0x4c4014de, + 0x4c4092f9, + 0x4c411516, + 0x4c419399, + 0x4c421502, + 0x50322f79, + 0x5032af88, + 0x50332f93, + 0x5033afa3, + 0x50342fbc, + 0x5034afd6, + 0x50352fe4, + 0x5035affa, + 0x5036300c, + 0x5036b022, + 0x5037303b, + 0x5037b04e, + 0x50383066, + 0x5038b077, + 0x5039308c, + 0x5039b0a0, + 0x503a30c0, + 0x503ab0d6, + 0x503b30ee, + 0x503bb100, + 0x503c311c, + 0x503cb133, + 0x503d314c, + 0x503db162, + 0x503e316f, + 0x503eb185, + 0x503f3197, + 0x503f837b, + 0x504031aa, + 0x5040b1ba, + 0x504131d4, + 0x5041b1e3, + 0x504231fd, + 0x5042b21a, + 0x5043322a, + 0x5043b23a, + 0x50443249, + 0x50448431, + 0x5045325d, + 0x5045b27b, + 0x5046328e, + 0x5046b2a4, + 0x504732b6, + 0x5047b2cb, + 0x504832f1, + 0x5048b2ff, + 0x50493312, + 0x5049b327, + 0x504a333d, + 0x504ab34d, + 0x504b336d, + 0x504bb380, + 0x504c33a3, + 0x504cb3d1, + 0x504d33e3, + 0x504db400, + 0x504e341b, + 0x504eb437, + 0x504f3449, + 0x504fb460, + 0x5050346f, + 0x505086f1, + 0x50513482, + 0x58320f3c, + 0x68320efe, + 0x68328c6c, + 0x68330c7f, + 0x68338f0c, + 0x68340f1c, 0x683480ea, - 0x6c320ee8, - 0x6c328c44, - 0x6c330ef3, - 0x74320a29, + 0x6c320eda, + 0x6c328c36, + 0x6c330ee5, + 0x74320a1b, 0x743280ac, - 0x74330c55, - 0x7832098e, - 0x783289a3, - 0x783309af, + 0x74330c47, + 0x78320980, + 0x78328995, + 0x783309a1, 0x78338083, - 0x783409be, - 0x783489d3, - 0x783509f2, - 0x78358a14, - 0x78360a29, - 0x78368a3f, - 0x78370a4f, - 0x78378a70, - 0x78380a83, - 0x78388a95, - 0x78390aa2, - 0x78398ac1, - 0x783a0ad6, - 0x783a8ae4, - 0x783b0aee, - 0x783b8b02, - 0x783c0b19, - 0x783c8b2e, - 0x783d0b45, - 0x783d8b5a, - 0x783e0ab0, - 0x783e8a62, - 0x7c3211a4, + 0x783409b0, + 0x783489c5, + 0x783509e4, + 0x78358a06, + 0x78360a1b, + 0x78368a31, + 0x78370a41, + 0x78378a62, + 0x78380a75, + 0x78388a87, + 0x78390a94, + 0x78398ab3, + 0x783a0ac8, + 0x783a8ad6, + 0x783b0ae0, + 0x783b8af4, + 0x783c0b0b, + 0x783c8b20, + 0x783d0b37, + 0x783d8b4c, + 0x783e0aa2, + 0x783e8a54, + 0x7c321196, }; const size_t kOpenSSLReasonValuesLen = sizeof(kOpenSSLReasonValues) / sizeof(kOpenSSLReasonValues[0]); @@ -779,14 +783,14 @@ "INTEGER_NOT_ASCII_FORMAT\0" "INTEGER_TOO_LARGE_FOR_LONG\0" "INVALID_BIT_STRING_BITS_LEFT\0" - "INVALID_BMPSTRING_LENGTH\0" + "INVALID_BMPSTRING\0" "INVALID_DIGIT\0" "INVALID_MODIFIER\0" "INVALID_NUMBER\0" "INVALID_OBJECT_ENCODING\0" "INVALID_SEPARATOR\0" "INVALID_TIME_FORMAT\0" - "INVALID_UNIVERSALSTRING_LENGTH\0" + "INVALID_UNIVERSALSTRING\0" "INVALID_UTF8STRING\0" "LIST_ERROR\0" "MISSING_ASN1_EOS\0" @@ -999,6 +1003,7 @@ "ENCRYPT_ERROR\0" "ERROR_SETTING_CIPHER_PARAMS\0" "INCORRECT_PASSWORD\0" + "INVALID_CHARACTERS\0" "KEYGEN_FAILURE\0" "KEY_GEN_ERROR\0" "METHOD_NOT_SUPPORTED\0" @@ -1014,6 +1019,7 @@ "UNKNOWN_DIGEST\0" "UNSUPPORTED_KEYLENGTH\0" "UNSUPPORTED_KEY_DERIVATION_FUNCTION\0" + "UNSUPPORTED_OPTIONS\0" "UNSUPPORTED_PRF\0" "UNSUPPORTED_PRIVATE_KEY_ALGORITHM\0" "UNSUPPORTED_SALT_TYPE\0" @@ -1163,6 +1169,7 @@ "NO_SUPPORTED_VERSIONS_ENABLED\0" "NULL_SSL_CTX\0" "NULL_SSL_METHOD_PASSED\0" + "OCSP_CB_ERROR\0" "OLD_SESSION_CIPHER_NOT_RETURNED\0" "OLD_SESSION_PRF_HASH_MISMATCH\0" "OLD_SESSION_VERSION_NOT_RETURNED\0" @@ -1187,6 +1194,7 @@ "RESUMED_EMS_SESSION_WITHOUT_EMS_EXTENSION\0" "RESUMED_NON_EMS_SESSION_WITH_EMS_EXTENSION\0" "SCSV_RECEIVED_WHEN_RENEGOTIATING\0" + "SECOND_SERVERHELLO_VERSION_MISMATCH\0" "SERVERHELLO_TLSEXT\0" "SERVER_CERT_CHANGED\0" "SERVER_ECHOED_INVALID_SESSION_ID\0"
diff --git a/third_party/boringssl/ios-arm/crypto/fipsmodule/armv4-mont.S b/third_party/boringssl/ios-arm/crypto/fipsmodule/armv4-mont.S index fbb341fd..f1de893 100644 --- a/third_party/boringssl/ios-arm/crypto/fipsmodule/armv4-mont.S +++ b/third_party/boringssl/ios-arm/crypto/fipsmodule/armv4-mont.S
@@ -172,14 +172,15 @@ mov r4,sp @ "rewind" r4 sub r2,r2,r5 @ "rewind" r2 - and r1,r4,r14 - bic r3,r2,r14 - orr r1,r1,r3 @ ap=borrow?tp:rp - -Lcopy: ldr r7,[r1],#4 @ copy or in-place refresh +Lcopy: ldr r7,[r4] @ conditional copy + ldr r5,[r2] str sp,[r4],#4 @ zap tp - str r7,[r2],#4 - cmp r4,r0 +#ifdef __thumb2__ + it cc +#endif + movcc r5,r7 + str r5,[r2],#4 + teq r4,r0 @ preserve carry bne Lcopy mov sp,r0
diff --git a/third_party/boringssl/linux-arm/crypto/fipsmodule/armv4-mont.S b/third_party/boringssl/linux-arm/crypto/fipsmodule/armv4-mont.S index 1181a45..d5685f8 100644 --- a/third_party/boringssl/linux-arm/crypto/fipsmodule/armv4-mont.S +++ b/third_party/boringssl/linux-arm/crypto/fipsmodule/armv4-mont.S
@@ -171,14 +171,15 @@ mov r4,sp @ "rewind" r4 sub r2,r2,r5 @ "rewind" r2 - and r1,r4,r14 - bic r3,r2,r14 - orr r1,r1,r3 @ ap=borrow?tp:rp - -.Lcopy: ldr r7,[r1],#4 @ copy or in-place refresh +.Lcopy: ldr r7,[r4] @ conditional copy + ldr r5,[r2] str sp,[r4],#4 @ zap tp - str r7,[r2],#4 - cmp r4,r0 +#ifdef __thumb2__ + it cc +#endif + movcc r5,r7 + str r5,[r2],#4 + teq r4,r0 @ preserve carry bne .Lcopy mov sp,r0
diff --git a/third_party/boringssl/linux-x86/crypto/fipsmodule/x86-mont.S b/third_party/boringssl/linux-x86/crypto/fipsmodule/x86-mont.S index 3fb66882..3ec24e2 100644 --- a/third_party/boringssl/linux-x86/crypto/fipsmodule/x86-mont.S +++ b/third_party/boringssl/linux-x86/crypto/fipsmodule/x86-mont.S
@@ -446,16 +446,18 @@ leal 1(%edx),%edx jge .L017sub sbbl $0,%eax - andl %eax,%esi - notl %eax - movl %edi,%ebp - andl %eax,%ebp - orl %ebp,%esi + movl $-1,%edx + xorl %eax,%edx + jmp .L018copy .align 16 .L018copy: - movl (%esi,%ebx,4),%eax - movl %eax,(%edi,%ebx,4) + movl 32(%esp,%ebx,4),%esi + movl (%edi,%ebx,4),%ebp movl %ecx,32(%esp,%ebx,4) + andl %eax,%esi + andl %edx,%ebp + orl %esi,%ebp + movl %ebp,(%edi,%ebx,4) decl %ebx jge .L018copy movl 24(%esp),%esp
diff --git a/third_party/boringssl/linux-x86_64/crypto/fipsmodule/p256-x86_64-asm.S b/third_party/boringssl/linux-x86_64/crypto/fipsmodule/p256-x86_64-asm.S index 7422d2a..46a9483 100644 --- a/third_party/boringssl/linux-x86_64/crypto/fipsmodule/p256-x86_64-asm.S +++ b/third_party/boringssl/linux-x86_64/crypto/fipsmodule/p256-x86_64-asm.S
@@ -93,6 +93,11 @@ .align 32 ecp_nistz256_ord_mul_mont: .cfi_startproc + leaq OPENSSL_ia32cap_P(%rip),%rcx + movq 8(%rcx),%rcx + andl $0x80100,%ecx + cmpl $0x80100,%ecx + je .Lecp_nistz256_ord_mul_montx pushq %rbp .cfi_adjust_cfa_offset 8 .cfi_offset %rbp,-16 @@ -422,6 +427,11 @@ .align 32 ecp_nistz256_ord_sqr_mont: .cfi_startproc + leaq OPENSSL_ia32cap_P(%rip),%rcx + movq 8(%rcx),%rcx + andl $0x80100,%ecx + cmpl $0x80100,%ecx + je .Lecp_nistz256_ord_sqr_montx pushq %rbp .cfi_adjust_cfa_offset 8 .cfi_offset %rbp,-16 @@ -709,6 +719,462 @@ .cfi_endproc .size ecp_nistz256_ord_sqr_mont,.-ecp_nistz256_ord_sqr_mont +.type ecp_nistz256_ord_mul_montx,@function +.align 32 +ecp_nistz256_ord_mul_montx: +.cfi_startproc +.Lecp_nistz256_ord_mul_montx: + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lord_mulx_body: + + movq %rdx,%rbx + movq 0(%rdx),%rdx + movq 0(%rsi),%r9 + movq 8(%rsi),%r10 + movq 16(%rsi),%r11 + movq 24(%rsi),%r12 + leaq -128(%rsi),%rsi + leaq .Lord-128(%rip),%r14 + movq .LordK(%rip),%r15 + + + mulxq %r9,%r8,%r9 + mulxq %r10,%rcx,%r10 + mulxq %r11,%rbp,%r11 + addq %rcx,%r9 + mulxq %r12,%rcx,%r12 + movq %r8,%rdx + mulxq %r15,%rdx,%rax + adcq %rbp,%r10 + adcq %rcx,%r11 + adcq $0,%r12 + + + xorq %r13,%r13 + mulxq 0+128(%r14),%rcx,%rbp + adcxq %rcx,%r8 + adoxq %rbp,%r9 + + mulxq 8+128(%r14),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + + mulxq 16+128(%r14),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 24+128(%r14),%rcx,%rbp + movq 8(%rbx),%rdx + adcxq %rcx,%r11 + adoxq %rbp,%r12 + adcxq %r8,%r12 + adoxq %r8,%r13 + adcq $0,%r13 + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r9,%rdx + mulxq %r15,%rdx,%rax + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + adcxq %r8,%r13 + adoxq %r8,%r8 + adcq $0,%r8 + + + mulxq 0+128(%r14),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + + mulxq 8+128(%r14),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 16+128(%r14),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 24+128(%r14),%rcx,%rbp + movq 16(%rbx),%rdx + adcxq %rcx,%r12 + adoxq %rbp,%r13 + adcxq %r9,%r13 + adoxq %r9,%r8 + adcq $0,%r8 + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r10,%rdx + mulxq %r15,%rdx,%rax + adcxq %rcx,%r13 + adoxq %rbp,%r8 + + adcxq %r9,%r8 + adoxq %r9,%r9 + adcq $0,%r9 + + + mulxq 0+128(%r14),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 8+128(%r14),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 16+128(%r14),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 24+128(%r14),%rcx,%rbp + movq 24(%rbx),%rdx + adcxq %rcx,%r13 + adoxq %rbp,%r8 + adcxq %r10,%r8 + adoxq %r10,%r9 + adcq $0,%r9 + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r13 + adoxq %rbp,%r8 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r11,%rdx + mulxq %r15,%rdx,%rax + adcxq %rcx,%r8 + adoxq %rbp,%r9 + + adcxq %r10,%r9 + adoxq %r10,%r10 + adcq $0,%r10 + + + mulxq 0+128(%r14),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 8+128(%r14),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 16+128(%r14),%rcx,%rbp + adcxq %rcx,%r13 + adoxq %rbp,%r8 + + mulxq 24+128(%r14),%rcx,%rbp + leaq 128(%r14),%r14 + movq %r12,%rbx + adcxq %rcx,%r8 + adoxq %rbp,%r9 + movq %r13,%rdx + adcxq %r11,%r9 + adoxq %r11,%r10 + adcq $0,%r10 + + + + movq %r8,%rcx + subq 0(%r14),%r12 + sbbq 8(%r14),%r13 + sbbq 16(%r14),%r8 + movq %r9,%rbp + sbbq 24(%r14),%r9 + sbbq $0,%r10 + + cmovcq %rbx,%r12 + cmovcq %rdx,%r13 + cmovcq %rcx,%r8 + cmovcq %rbp,%r9 + + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + movq 0(%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r13 +.cfi_restore %r13 + movq 24(%rsp),%r12 +.cfi_restore %r12 + movq 32(%rsp),%rbx +.cfi_restore %rbx + movq 40(%rsp),%rbp +.cfi_restore %rbp + leaq 48(%rsp),%rsp +.cfi_adjust_cfa_offset -48 +.Lord_mulx_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_ord_mul_montx,.-ecp_nistz256_ord_mul_montx + +.type ecp_nistz256_ord_sqr_montx,@function +.align 32 +ecp_nistz256_ord_sqr_montx: +.cfi_startproc +.Lecp_nistz256_ord_sqr_montx: + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 +.Lord_sqrx_body: + + movq %rdx,%rbx + movq 0(%rsi),%rdx + movq 8(%rsi),%r14 + movq 16(%rsi),%r15 + movq 24(%rsi),%r8 + leaq .Lord(%rip),%rsi + jmp .Loop_ord_sqrx + +.align 32 +.Loop_ord_sqrx: + mulxq %r14,%r9,%r10 + mulxq %r15,%rcx,%r11 + movq %rdx,%rax +.byte 102,73,15,110,206 + mulxq %r8,%rbp,%r12 + movq %r14,%rdx + addq %rcx,%r10 +.byte 102,73,15,110,215 + adcq %rbp,%r11 + adcq $0,%r12 + xorq %r13,%r13 + + mulxq %r15,%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq %r8,%rcx,%rbp + movq %r15,%rdx + adcxq %rcx,%r12 + adoxq %rbp,%r13 + adcq $0,%r13 + + mulxq %r8,%rcx,%r14 + movq %rax,%rdx +.byte 102,73,15,110,216 + xorq %r15,%r15 + adcxq %r9,%r9 + adoxq %rcx,%r13 + adcxq %r10,%r10 + adoxq %r15,%r14 + + + mulxq %rdx,%r8,%rbp +.byte 102,72,15,126,202 + adcxq %r11,%r11 + adoxq %rbp,%r9 + adcxq %r12,%r12 + mulxq %rdx,%rcx,%rax +.byte 102,72,15,126,210 + adcxq %r13,%r13 + adoxq %rcx,%r10 + adcxq %r14,%r14 + mulxq %rdx,%rcx,%rbp +.byte 0x67 +.byte 102,72,15,126,218 + adoxq %rax,%r11 + adcxq %r15,%r15 + adoxq %rcx,%r12 + adoxq %rbp,%r13 + mulxq %rdx,%rcx,%rax + adoxq %rcx,%r14 + adoxq %rax,%r15 + + + movq %r8,%rdx + mulxq 32(%rsi),%rdx,%rcx + + xorq %rax,%rax + mulxq 0(%rsi),%rcx,%rbp + adcxq %rcx,%r8 + adoxq %rbp,%r9 + mulxq 8(%rsi),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + mulxq 16(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + mulxq 24(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r8 + adcxq %rax,%r8 + + + movq %r9,%rdx + mulxq 32(%rsi),%rdx,%rcx + + mulxq 0(%rsi),%rcx,%rbp + adoxq %rcx,%r9 + adcxq %rbp,%r10 + mulxq 8(%rsi),%rcx,%rbp + adoxq %rcx,%r10 + adcxq %rbp,%r11 + mulxq 16(%rsi),%rcx,%rbp + adoxq %rcx,%r11 + adcxq %rbp,%r8 + mulxq 24(%rsi),%rcx,%rbp + adoxq %rcx,%r8 + adcxq %rbp,%r9 + adoxq %rax,%r9 + + + movq %r10,%rdx + mulxq 32(%rsi),%rdx,%rcx + + mulxq 0(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + mulxq 8(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r8 + mulxq 16(%rsi),%rcx,%rbp + adcxq %rcx,%r8 + adoxq %rbp,%r9 + mulxq 24(%rsi),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + adcxq %rax,%r10 + + + movq %r11,%rdx + mulxq 32(%rsi),%rdx,%rcx + + mulxq 0(%rsi),%rcx,%rbp + adoxq %rcx,%r11 + adcxq %rbp,%r8 + mulxq 8(%rsi),%rcx,%rbp + adoxq %rcx,%r8 + adcxq %rbp,%r9 + mulxq 16(%rsi),%rcx,%rbp + adoxq %rcx,%r9 + adcxq %rbp,%r10 + mulxq 24(%rsi),%rcx,%rbp + adoxq %rcx,%r10 + adcxq %rbp,%r11 + adoxq %rax,%r11 + + + addq %r8,%r12 + adcq %r13,%r9 + movq %r12,%rdx + adcq %r14,%r10 + adcq %r15,%r11 + movq %r9,%r14 + adcq $0,%rax + + + subq 0(%rsi),%r12 + movq %r10,%r15 + sbbq 8(%rsi),%r9 + sbbq 16(%rsi),%r10 + movq %r11,%r8 + sbbq 24(%rsi),%r11 + sbbq $0,%rax + + cmovncq %r12,%rdx + cmovncq %r9,%r14 + cmovncq %r10,%r15 + cmovncq %r11,%r8 + + decq %rbx + jnz .Loop_ord_sqrx + + movq %rdx,0(%rdi) + movq %r14,8(%rdi) + pxor %xmm1,%xmm1 + movq %r15,16(%rdi) + pxor %xmm2,%xmm2 + movq %r8,24(%rdi) + pxor %xmm3,%xmm3 + + movq 0(%rsp),%r15 +.cfi_restore %r15 + movq 8(%rsp),%r14 +.cfi_restore %r14 + movq 16(%rsp),%r13 +.cfi_restore %r13 + movq 24(%rsp),%r12 +.cfi_restore %r12 + movq 32(%rsp),%rbx +.cfi_restore %rbx + movq 40(%rsp),%rbp +.cfi_restore %rbp + leaq 48(%rsp),%rsp +.cfi_adjust_cfa_offset -48 +.Lord_sqrx_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_ord_sqr_montx,.-ecp_nistz256_ord_sqr_montx + @@ -720,6 +1186,9 @@ .align 32 ecp_nistz256_mul_mont: .cfi_startproc + leaq OPENSSL_ia32cap_P(%rip),%rcx + movq 8(%rcx),%rcx + andl $0x80100,%ecx .Lmul_mont: pushq %rbp .cfi_adjust_cfa_offset 8 @@ -740,6 +1209,8 @@ .cfi_adjust_cfa_offset 8 .cfi_offset %r15,-56 .Lmul_body: + cmpl $0x80100,%ecx + je .Lmul_montx movq %rdx,%rbx movq 0(%rdx),%rax movq 0(%rsi),%r9 @@ -748,6 +1219,19 @@ movq 24(%rsi),%r12 call __ecp_nistz256_mul_montq + jmp .Lmul_mont_done + +.align 32 +.Lmul_montx: + movq %rdx,%rbx + movq 0(%rdx),%rdx + movq 0(%rsi),%r9 + movq 8(%rsi),%r10 + movq 16(%rsi),%r11 + movq 24(%rsi),%r12 + leaq -128(%rsi),%rsi + + call __ecp_nistz256_mul_montx .Lmul_mont_done: movq 0(%rsp),%r15 .cfi_restore %r15 @@ -997,6 +1481,9 @@ .align 32 ecp_nistz256_sqr_mont: .cfi_startproc + leaq OPENSSL_ia32cap_P(%rip),%rcx + movq 8(%rcx),%rcx + andl $0x80100,%ecx pushq %rbp .cfi_adjust_cfa_offset 8 .cfi_offset %rbp,-16 @@ -1016,12 +1503,25 @@ .cfi_adjust_cfa_offset 8 .cfi_offset %r15,-56 .Lsqr_body: + cmpl $0x80100,%ecx + je .Lsqr_montx movq 0(%rsi),%rax movq 8(%rsi),%r14 movq 16(%rsi),%r15 movq 24(%rsi),%r8 call __ecp_nistz256_sqr_montq + jmp .Lsqr_mont_done + +.align 32 +.Lsqr_montx: + movq 0(%rsi),%rdx + movq 8(%rsi),%r14 + movq 16(%rsi),%r15 + movq 24(%rsi),%r8 + leaq -128(%rsi),%rsi + + call __ecp_nistz256_sqr_montx .Lsqr_mont_done: movq 0(%rsp),%r15 .cfi_restore %r15 @@ -1203,6 +1703,300 @@ .byte 0xf3,0xc3 .size __ecp_nistz256_sqr_montq,.-__ecp_nistz256_sqr_montq +.type __ecp_nistz256_mul_montx,@function +.align 32 +__ecp_nistz256_mul_montx: + + + mulxq %r9,%r8,%r9 + mulxq %r10,%rcx,%r10 + movq $32,%r14 + xorq %r13,%r13 + mulxq %r11,%rbp,%r11 + movq .Lpoly+24(%rip),%r15 + adcq %rcx,%r9 + mulxq %r12,%rcx,%r12 + movq %r8,%rdx + adcq %rbp,%r10 + shlxq %r14,%r8,%rbp + adcq %rcx,%r11 + shrxq %r14,%r8,%rcx + adcq $0,%r12 + + + + addq %rbp,%r9 + adcq %rcx,%r10 + + mulxq %r15,%rcx,%rbp + movq 8(%rbx),%rdx + adcq %rcx,%r11 + adcq %rbp,%r12 + adcq $0,%r13 + xorq %r8,%r8 + + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r9,%rdx + adcxq %rcx,%r12 + shlxq %r14,%r9,%rcx + adoxq %rbp,%r13 + shrxq %r14,%r9,%rbp + + adcxq %r8,%r13 + adoxq %r8,%r8 + adcq $0,%r8 + + + + addq %rcx,%r10 + adcq %rbp,%r11 + + mulxq %r15,%rcx,%rbp + movq 16(%rbx),%rdx + adcq %rcx,%r12 + adcq %rbp,%r13 + adcq $0,%r8 + xorq %r9,%r9 + + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r10,%rdx + adcxq %rcx,%r13 + shlxq %r14,%r10,%rcx + adoxq %rbp,%r8 + shrxq %r14,%r10,%rbp + + adcxq %r9,%r8 + adoxq %r9,%r9 + adcq $0,%r9 + + + + addq %rcx,%r11 + adcq %rbp,%r12 + + mulxq %r15,%rcx,%rbp + movq 24(%rbx),%rdx + adcq %rcx,%r13 + adcq %rbp,%r8 + adcq $0,%r9 + xorq %r10,%r10 + + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r13 + adoxq %rbp,%r8 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r11,%rdx + adcxq %rcx,%r8 + shlxq %r14,%r11,%rcx + adoxq %rbp,%r9 + shrxq %r14,%r11,%rbp + + adcxq %r10,%r9 + adoxq %r10,%r10 + adcq $0,%r10 + + + + addq %rcx,%r12 + adcq %rbp,%r13 + + mulxq %r15,%rcx,%rbp + movq %r12,%rbx + movq .Lpoly+8(%rip),%r14 + adcq %rcx,%r8 + movq %r13,%rdx + adcq %rbp,%r9 + adcq $0,%r10 + + + + xorl %eax,%eax + movq %r8,%rcx + sbbq $-1,%r12 + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%rbp + sbbq %r15,%r9 + sbbq $0,%r10 + + cmovcq %rbx,%r12 + cmovcq %rdx,%r13 + movq %r12,0(%rdi) + cmovcq %rcx,%r8 + movq %r13,8(%rdi) + cmovcq %rbp,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 +.size __ecp_nistz256_mul_montx,.-__ecp_nistz256_mul_montx + +.type __ecp_nistz256_sqr_montx,@function +.align 32 +__ecp_nistz256_sqr_montx: + mulxq %r14,%r9,%r10 + mulxq %r15,%rcx,%r11 + xorl %eax,%eax + adcq %rcx,%r10 + mulxq %r8,%rbp,%r12 + movq %r14,%rdx + adcq %rbp,%r11 + adcq $0,%r12 + xorq %r13,%r13 + + + mulxq %r15,%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq %r8,%rcx,%rbp + movq %r15,%rdx + adcxq %rcx,%r12 + adoxq %rbp,%r13 + adcq $0,%r13 + + + mulxq %r8,%rcx,%r14 + movq 0+128(%rsi),%rdx + xorq %r15,%r15 + adcxq %r9,%r9 + adoxq %rcx,%r13 + adcxq %r10,%r10 + adoxq %r15,%r14 + + mulxq %rdx,%r8,%rbp + movq 8+128(%rsi),%rdx + adcxq %r11,%r11 + adoxq %rbp,%r9 + adcxq %r12,%r12 + mulxq %rdx,%rcx,%rax + movq 16+128(%rsi),%rdx + adcxq %r13,%r13 + adoxq %rcx,%r10 + adcxq %r14,%r14 +.byte 0x67 + mulxq %rdx,%rcx,%rbp + movq 24+128(%rsi),%rdx + adoxq %rax,%r11 + adcxq %r15,%r15 + adoxq %rcx,%r12 + movq $32,%rsi + adoxq %rbp,%r13 +.byte 0x67,0x67 + mulxq %rdx,%rcx,%rax + movq .Lpoly+24(%rip),%rdx + adoxq %rcx,%r14 + shlxq %rsi,%r8,%rcx + adoxq %rax,%r15 + shrxq %rsi,%r8,%rax + movq %rdx,%rbp + + + addq %rcx,%r9 + adcq %rax,%r10 + + mulxq %r8,%rcx,%r8 + adcq %rcx,%r11 + shlxq %rsi,%r9,%rcx + adcq $0,%r8 + shrxq %rsi,%r9,%rax + + + addq %rcx,%r10 + adcq %rax,%r11 + + mulxq %r9,%rcx,%r9 + adcq %rcx,%r8 + shlxq %rsi,%r10,%rcx + adcq $0,%r9 + shrxq %rsi,%r10,%rax + + + addq %rcx,%r11 + adcq %rax,%r8 + + mulxq %r10,%rcx,%r10 + adcq %rcx,%r9 + shlxq %rsi,%r11,%rcx + adcq $0,%r10 + shrxq %rsi,%r11,%rax + + + addq %rcx,%r8 + adcq %rax,%r9 + + mulxq %r11,%rcx,%r11 + adcq %rcx,%r10 + adcq $0,%r11 + + xorq %rdx,%rdx + addq %r8,%r12 + movq .Lpoly+8(%rip),%rsi + adcq %r9,%r13 + movq %r12,%r8 + adcq %r10,%r14 + adcq %r11,%r15 + movq %r13,%r9 + adcq $0,%rdx + + subq $-1,%r12 + movq %r14,%r10 + sbbq %rsi,%r13 + sbbq $0,%r14 + movq %r15,%r11 + sbbq %rbp,%r15 + sbbq $0,%rdx + + cmovcq %r8,%r12 + cmovcq %r9,%r13 + movq %r12,0(%rdi) + cmovcq %r10,%r14 + movq %r13,8(%rdi) + cmovcq %r11,%r15 + movq %r14,16(%rdi) + movq %r15,24(%rdi) + + .byte 0xf3,0xc3 +.size __ecp_nistz256_sqr_montx,.-__ecp_nistz256_sqr_montx .globl ecp_nistz256_select_w5 @@ -1588,6 +2382,11 @@ .align 32 ecp_nistz256_point_double: .cfi_startproc + leaq OPENSSL_ia32cap_P(%rip),%rcx + movq 8(%rcx),%rcx + andl $0x80100,%ecx + cmpl $0x80100,%ecx + je .Lpoint_doublex pushq %rbp .cfi_adjust_cfa_offset 8 .cfi_offset %rbp,-16 @@ -1817,6 +2616,11 @@ .align 32 ecp_nistz256_point_add: .cfi_startproc + leaq OPENSSL_ia32cap_P(%rip),%rcx + movq 8(%rcx),%rcx + andl $0x80100,%ecx + cmpl $0x80100,%ecx + je .Lpoint_addx pushq %rbp .cfi_adjust_cfa_offset 8 .cfi_offset %rbp,-16 @@ -2240,6 +3044,11 @@ .align 32 ecp_nistz256_point_add_affine: .cfi_startproc + leaq OPENSSL_ia32cap_P(%rip),%rcx + movq 8(%rcx),%rcx + andl $0x80100,%ecx + cmpl $0x80100,%ecx + je .Lpoint_add_affinex pushq %rbp .cfi_adjust_cfa_offset 8 .cfi_offset %rbp,-16 @@ -2563,4 +3372,1109 @@ .byte 0xf3,0xc3 .cfi_endproc .size ecp_nistz256_point_add_affine,.-ecp_nistz256_point_add_affine +.type __ecp_nistz256_add_tox,@function +.align 32 +__ecp_nistz256_add_tox: + xorq %r11,%r11 + adcq 0(%rbx),%r12 + adcq 8(%rbx),%r13 + movq %r12,%rax + adcq 16(%rbx),%r8 + adcq 24(%rbx),%r9 + movq %r13,%rbp + adcq $0,%r11 + + xorq %r10,%r10 + sbbq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + cmovcq %rbp,%r13 + movq %r12,0(%rdi) + cmovcq %rcx,%r8 + movq %r13,8(%rdi) + cmovcq %r10,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 +.size __ecp_nistz256_add_tox,.-__ecp_nistz256_add_tox + +.type __ecp_nistz256_sub_fromx,@function +.align 32 +__ecp_nistz256_sub_fromx: + xorq %r11,%r11 + sbbq 0(%rbx),%r12 + sbbq 8(%rbx),%r13 + movq %r12,%rax + sbbq 16(%rbx),%r8 + sbbq 24(%rbx),%r9 + movq %r13,%rbp + sbbq $0,%r11 + + xorq %r10,%r10 + adcq $-1,%r12 + movq %r8,%rcx + adcq %r14,%r13 + adcq $0,%r8 + movq %r9,%r10 + adcq %r15,%r9 + + btq $0,%r11 + cmovncq %rax,%r12 + cmovncq %rbp,%r13 + movq %r12,0(%rdi) + cmovncq %rcx,%r8 + movq %r13,8(%rdi) + cmovncq %r10,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 +.size __ecp_nistz256_sub_fromx,.-__ecp_nistz256_sub_fromx + +.type __ecp_nistz256_subx,@function +.align 32 +__ecp_nistz256_subx: + xorq %r11,%r11 + sbbq %r12,%rax + sbbq %r13,%rbp + movq %rax,%r12 + sbbq %r8,%rcx + sbbq %r9,%r10 + movq %rbp,%r13 + sbbq $0,%r11 + + xorq %r9,%r9 + adcq $-1,%rax + movq %rcx,%r8 + adcq %r14,%rbp + adcq $0,%rcx + movq %r10,%r9 + adcq %r15,%r10 + + btq $0,%r11 + cmovcq %rax,%r12 + cmovcq %rbp,%r13 + cmovcq %rcx,%r8 + cmovcq %r10,%r9 + + .byte 0xf3,0xc3 +.size __ecp_nistz256_subx,.-__ecp_nistz256_subx + +.type __ecp_nistz256_mul_by_2x,@function +.align 32 +__ecp_nistz256_mul_by_2x: + xorq %r11,%r11 + adcq %r12,%r12 + adcq %r13,%r13 + movq %r12,%rax + adcq %r8,%r8 + adcq %r9,%r9 + movq %r13,%rbp + adcq $0,%r11 + + xorq %r10,%r10 + sbbq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + cmovcq %rbp,%r13 + movq %r12,0(%rdi) + cmovcq %rcx,%r8 + movq %r13,8(%rdi) + cmovcq %r10,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 +.size __ecp_nistz256_mul_by_2x,.-__ecp_nistz256_mul_by_2x +.type ecp_nistz256_point_doublex,@function +.align 32 +ecp_nistz256_point_doublex: +.cfi_startproc +.Lpoint_doublex: + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + subq $160+8,%rsp +.cfi_adjust_cfa_offset 32*5+8 +.Lpoint_doublex_body: + +.Lpoint_double_shortcutx: + movdqu 0(%rsi),%xmm0 + movq %rsi,%rbx + movdqu 16(%rsi),%xmm1 + movq 32+0(%rsi),%r12 + movq 32+8(%rsi),%r13 + movq 32+16(%rsi),%r8 + movq 32+24(%rsi),%r9 + movq .Lpoly+8(%rip),%r14 + movq .Lpoly+24(%rip),%r15 + movdqa %xmm0,96(%rsp) + movdqa %xmm1,96+16(%rsp) + leaq 32(%rdi),%r10 + leaq 64(%rdi),%r11 +.byte 102,72,15,110,199 +.byte 102,73,15,110,202 +.byte 102,73,15,110,211 + + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_by_2x + + movq 64+0(%rsi),%rdx + movq 64+8(%rsi),%r14 + movq 64+16(%rsi),%r15 + movq 64+24(%rsi),%r8 + leaq 64-128(%rsi),%rsi + leaq 64(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 0+0(%rsp),%rdx + movq 8+0(%rsp),%r14 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r15 + movq 24+0(%rsp),%r8 + leaq 0(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 32(%rbx),%rdx + movq 64+0(%rbx),%r9 + movq 64+8(%rbx),%r10 + movq 64+16(%rbx),%r11 + movq 64+24(%rbx),%r12 + leaq 64-128(%rbx),%rsi + leaq 32(%rbx),%rbx +.byte 102,72,15,126,215 + call __ecp_nistz256_mul_montx + call __ecp_nistz256_mul_by_2x + + movq 96+0(%rsp),%r12 + movq 96+8(%rsp),%r13 + leaq 64(%rsp),%rbx + movq 96+16(%rsp),%r8 + movq 96+24(%rsp),%r9 + leaq 32(%rsp),%rdi + call __ecp_nistz256_add_tox + + movq 96+0(%rsp),%r12 + movq 96+8(%rsp),%r13 + leaq 64(%rsp),%rbx + movq 96+16(%rsp),%r8 + movq 96+24(%rsp),%r9 + leaq 64(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 0+0(%rsp),%rdx + movq 8+0(%rsp),%r14 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r15 + movq 24+0(%rsp),%r8 +.byte 102,72,15,126,207 + call __ecp_nistz256_sqr_montx + xorq %r9,%r9 + movq %r12,%rax + addq $-1,%r12 + movq %r13,%r10 + adcq %rsi,%r13 + movq %r14,%rcx + adcq $0,%r14 + movq %r15,%r8 + adcq %rbp,%r15 + adcq $0,%r9 + xorq %rsi,%rsi + testq $1,%rax + + cmovzq %rax,%r12 + cmovzq %r10,%r13 + cmovzq %rcx,%r14 + cmovzq %r8,%r15 + cmovzq %rsi,%r9 + + movq %r13,%rax + shrq $1,%r12 + shlq $63,%rax + movq %r14,%r10 + shrq $1,%r13 + orq %rax,%r12 + shlq $63,%r10 + movq %r15,%rcx + shrq $1,%r14 + orq %r10,%r13 + shlq $63,%rcx + movq %r12,0(%rdi) + shrq $1,%r15 + movq %r13,8(%rdi) + shlq $63,%r9 + orq %rcx,%r14 + orq %r9,%r15 + movq %r14,16(%rdi) + movq %r15,24(%rdi) + movq 64(%rsp),%rdx + leaq 64(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 128(%rsp),%rdi + call __ecp_nistz256_mul_by_2x + + leaq 32(%rsp),%rbx + leaq 32(%rsp),%rdi + call __ecp_nistz256_add_tox + + movq 96(%rsp),%rdx + leaq 96(%rsp),%rbx + movq 0+0(%rsp),%r9 + movq 8+0(%rsp),%r10 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r11 + movq 24+0(%rsp),%r12 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 128(%rsp),%rdi + call __ecp_nistz256_mul_by_2x + + movq 0+32(%rsp),%rdx + movq 8+32(%rsp),%r14 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r15 + movq 24+32(%rsp),%r8 +.byte 102,72,15,126,199 + call __ecp_nistz256_sqr_montx + + leaq 128(%rsp),%rbx + movq %r14,%r8 + movq %r15,%r9 + movq %rsi,%r14 + movq %rbp,%r15 + call __ecp_nistz256_sub_fromx + + movq 0+0(%rsp),%rax + movq 0+8(%rsp),%rbp + movq 0+16(%rsp),%rcx + movq 0+24(%rsp),%r10 + leaq 0(%rsp),%rdi + call __ecp_nistz256_subx + + movq 32(%rsp),%rdx + leaq 32(%rsp),%rbx + movq %r12,%r14 + xorl %ecx,%ecx + movq %r12,0+0(%rsp) + movq %r13,%r10 + movq %r13,0+8(%rsp) + cmovzq %r8,%r11 + movq %r8,0+16(%rsp) + leaq 0-128(%rsp),%rsi + cmovzq %r9,%r12 + movq %r9,0+24(%rsp) + movq %r14,%r9 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montx + +.byte 102,72,15,126,203 +.byte 102,72,15,126,207 + call __ecp_nistz256_sub_fromx + + leaq 160+56(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbx +.cfi_restore %rbx + movq -8(%rsi),%rbp +.cfi_restore %rbp + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lpoint_doublex_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_point_doublex,.-ecp_nistz256_point_doublex +.type ecp_nistz256_point_addx,@function +.align 32 +ecp_nistz256_point_addx: +.cfi_startproc +.Lpoint_addx: + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + subq $576+8,%rsp +.cfi_adjust_cfa_offset 32*18+8 +.Lpoint_addx_body: + + movdqu 0(%rsi),%xmm0 + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm3 + movdqu 64(%rsi),%xmm4 + movdqu 80(%rsi),%xmm5 + movq %rsi,%rbx + movq %rdx,%rsi + movdqa %xmm0,384(%rsp) + movdqa %xmm1,384+16(%rsp) + movdqa %xmm2,416(%rsp) + movdqa %xmm3,416+16(%rsp) + movdqa %xmm4,448(%rsp) + movdqa %xmm5,448+16(%rsp) + por %xmm4,%xmm5 + + movdqu 0(%rsi),%xmm0 + pshufd $0xb1,%xmm5,%xmm3 + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + por %xmm3,%xmm5 + movdqu 48(%rsi),%xmm3 + movq 64+0(%rsi),%rdx + movq 64+8(%rsi),%r14 + movq 64+16(%rsi),%r15 + movq 64+24(%rsi),%r8 + movdqa %xmm0,480(%rsp) + pshufd $0x1e,%xmm5,%xmm4 + movdqa %xmm1,480+16(%rsp) + movdqu 64(%rsi),%xmm0 + movdqu 80(%rsi),%xmm1 + movdqa %xmm2,512(%rsp) + movdqa %xmm3,512+16(%rsp) + por %xmm4,%xmm5 + pxor %xmm4,%xmm4 + por %xmm0,%xmm1 +.byte 102,72,15,110,199 + + leaq 64-128(%rsi),%rsi + movq %rdx,544+0(%rsp) + movq %r14,544+8(%rsp) + movq %r15,544+16(%rsp) + movq %r8,544+24(%rsp) + leaq 96(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + pcmpeqd %xmm4,%xmm5 + pshufd $0xb1,%xmm1,%xmm4 + por %xmm1,%xmm4 + pshufd $0,%xmm5,%xmm5 + pshufd $0x1e,%xmm4,%xmm3 + por %xmm3,%xmm4 + pxor %xmm3,%xmm3 + pcmpeqd %xmm3,%xmm4 + pshufd $0,%xmm4,%xmm4 + movq 64+0(%rbx),%rdx + movq 64+8(%rbx),%r14 + movq 64+16(%rbx),%r15 + movq 64+24(%rbx),%r8 +.byte 102,72,15,110,203 + + leaq 64-128(%rbx),%rsi + leaq 32(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 544(%rsp),%rdx + leaq 544(%rsp),%rbx + movq 0+96(%rsp),%r9 + movq 8+96(%rsp),%r10 + leaq -128+96(%rsp),%rsi + movq 16+96(%rsp),%r11 + movq 24+96(%rsp),%r12 + leaq 224(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 448(%rsp),%rdx + leaq 448(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 256(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 416(%rsp),%rdx + leaq 416(%rsp),%rbx + movq 0+224(%rsp),%r9 + movq 8+224(%rsp),%r10 + leaq -128+224(%rsp),%rsi + movq 16+224(%rsp),%r11 + movq 24+224(%rsp),%r12 + leaq 224(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 512(%rsp),%rdx + leaq 512(%rsp),%rbx + movq 0+256(%rsp),%r9 + movq 8+256(%rsp),%r10 + leaq -128+256(%rsp),%rsi + movq 16+256(%rsp),%r11 + movq 24+256(%rsp),%r12 + leaq 256(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 224(%rsp),%rbx + leaq 64(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + orq %r13,%r12 + movdqa %xmm4,%xmm2 + orq %r8,%r12 + orq %r9,%r12 + por %xmm5,%xmm2 +.byte 102,73,15,110,220 + + movq 384(%rsp),%rdx + leaq 384(%rsp),%rbx + movq 0+96(%rsp),%r9 + movq 8+96(%rsp),%r10 + leaq -128+96(%rsp),%rsi + movq 16+96(%rsp),%r11 + movq 24+96(%rsp),%r12 + leaq 160(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 480(%rsp),%rdx + leaq 480(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 192(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 160(%rsp),%rbx + leaq 0(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + orq %r13,%r12 + orq %r8,%r12 + orq %r9,%r12 + +.byte 0x3e + jnz .Ladd_proceedx +.byte 102,73,15,126,208 +.byte 102,73,15,126,217 + testq %r8,%r8 + jnz .Ladd_proceedx + testq %r9,%r9 + jz .Ladd_doublex + +.byte 102,72,15,126,199 + pxor %xmm0,%xmm0 + movdqu %xmm0,0(%rdi) + movdqu %xmm0,16(%rdi) + movdqu %xmm0,32(%rdi) + movdqu %xmm0,48(%rdi) + movdqu %xmm0,64(%rdi) + movdqu %xmm0,80(%rdi) + jmp .Ladd_donex + +.align 32 +.Ladd_doublex: +.byte 102,72,15,126,206 +.byte 102,72,15,126,199 + addq $416,%rsp + jmp .Lpoint_double_shortcutx + +.align 32 +.Ladd_proceedx: + movq 0+64(%rsp),%rdx + movq 8+64(%rsp),%r14 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r15 + movq 24+64(%rsp),%r8 + leaq 96(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 448(%rsp),%rdx + leaq 448(%rsp),%rbx + movq 0+0(%rsp),%r9 + movq 8+0(%rsp),%r10 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r11 + movq 24+0(%rsp),%r12 + leaq 352(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 0+0(%rsp),%rdx + movq 8+0(%rsp),%r14 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r15 + movq 24+0(%rsp),%r8 + leaq 32(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 544(%rsp),%rdx + leaq 544(%rsp),%rbx + movq 0+352(%rsp),%r9 + movq 8+352(%rsp),%r10 + leaq -128+352(%rsp),%rsi + movq 16+352(%rsp),%r11 + movq 24+352(%rsp),%r12 + leaq 352(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 0(%rsp),%rdx + leaq 0(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 128(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 160(%rsp),%rdx + leaq 160(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 192(%rsp),%rdi + call __ecp_nistz256_mul_montx + + + + + xorq %r11,%r11 + addq %r12,%r12 + leaq 96(%rsp),%rsi + adcq %r13,%r13 + movq %r12,%rax + adcq %r8,%r8 + adcq %r9,%r9 + movq %r13,%rbp + adcq $0,%r11 + + subq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + movq 0(%rsi),%rax + cmovcq %rbp,%r13 + movq 8(%rsi),%rbp + cmovcq %rcx,%r8 + movq 16(%rsi),%rcx + cmovcq %r10,%r9 + movq 24(%rsi),%r10 + + call __ecp_nistz256_subx + + leaq 128(%rsp),%rbx + leaq 288(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 192+0(%rsp),%rax + movq 192+8(%rsp),%rbp + movq 192+16(%rsp),%rcx + movq 192+24(%rsp),%r10 + leaq 320(%rsp),%rdi + + call __ecp_nistz256_subx + + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r8,16(%rdi) + movq %r9,24(%rdi) + movq 128(%rsp),%rdx + leaq 128(%rsp),%rbx + movq 0+224(%rsp),%r9 + movq 8+224(%rsp),%r10 + leaq -128+224(%rsp),%rsi + movq 16+224(%rsp),%r11 + movq 24+224(%rsp),%r12 + leaq 256(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 320(%rsp),%rdx + leaq 320(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 320(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 256(%rsp),%rbx + leaq 320(%rsp),%rdi + call __ecp_nistz256_sub_fromx + +.byte 102,72,15,126,199 + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 352(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 352+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 544(%rsp),%xmm2 + pand 544+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 448(%rsp),%xmm2 + pand 448+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,64(%rdi) + movdqu %xmm3,80(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 288(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 288+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 480(%rsp),%xmm2 + pand 480+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 384(%rsp),%xmm2 + pand 384+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,0(%rdi) + movdqu %xmm3,16(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 320(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 320+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 512(%rsp),%xmm2 + pand 512+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 416(%rsp),%xmm2 + pand 416+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,32(%rdi) + movdqu %xmm3,48(%rdi) + +.Ladd_donex: + leaq 576+56(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbx +.cfi_restore %rbx + movq -8(%rsi),%rbp +.cfi_restore %rbp + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lpoint_addx_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_point_addx,.-ecp_nistz256_point_addx +.type ecp_nistz256_point_add_affinex,@function +.align 32 +ecp_nistz256_point_add_affinex: +.cfi_startproc +.Lpoint_add_affinex: + pushq %rbp +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbp,-16 + pushq %rbx +.cfi_adjust_cfa_offset 8 +.cfi_offset %rbx,-24 + pushq %r12 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_adjust_cfa_offset 8 +.cfi_offset %r15,-56 + subq $480+8,%rsp +.cfi_adjust_cfa_offset 32*15+8 +.Ladd_affinex_body: + + movdqu 0(%rsi),%xmm0 + movq %rdx,%rbx + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm3 + movdqu 64(%rsi),%xmm4 + movdqu 80(%rsi),%xmm5 + movq 64+0(%rsi),%rdx + movq 64+8(%rsi),%r14 + movq 64+16(%rsi),%r15 + movq 64+24(%rsi),%r8 + movdqa %xmm0,320(%rsp) + movdqa %xmm1,320+16(%rsp) + movdqa %xmm2,352(%rsp) + movdqa %xmm3,352+16(%rsp) + movdqa %xmm4,384(%rsp) + movdqa %xmm5,384+16(%rsp) + por %xmm4,%xmm5 + + movdqu 0(%rbx),%xmm0 + pshufd $0xb1,%xmm5,%xmm3 + movdqu 16(%rbx),%xmm1 + movdqu 32(%rbx),%xmm2 + por %xmm3,%xmm5 + movdqu 48(%rbx),%xmm3 + movdqa %xmm0,416(%rsp) + pshufd $0x1e,%xmm5,%xmm4 + movdqa %xmm1,416+16(%rsp) + por %xmm0,%xmm1 +.byte 102,72,15,110,199 + movdqa %xmm2,448(%rsp) + movdqa %xmm3,448+16(%rsp) + por %xmm2,%xmm3 + por %xmm4,%xmm5 + pxor %xmm4,%xmm4 + por %xmm1,%xmm3 + + leaq 64-128(%rsi),%rsi + leaq 32(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + pcmpeqd %xmm4,%xmm5 + pshufd $0xb1,%xmm3,%xmm4 + movq 0(%rbx),%rdx + + movq %r12,%r9 + por %xmm3,%xmm4 + pshufd $0,%xmm5,%xmm5 + pshufd $0x1e,%xmm4,%xmm3 + movq %r13,%r10 + por %xmm3,%xmm4 + pxor %xmm3,%xmm3 + movq %r14,%r11 + pcmpeqd %xmm3,%xmm4 + pshufd $0,%xmm4,%xmm4 + + leaq 32-128(%rsp),%rsi + movq %r15,%r12 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 320(%rsp),%rbx + leaq 64(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 384(%rsp),%rdx + leaq 384(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 384(%rsp),%rdx + leaq 384(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 288(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 448(%rsp),%rdx + leaq 448(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 352(%rsp),%rbx + leaq 96(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 0+64(%rsp),%rdx + movq 8+64(%rsp),%r14 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r15 + movq 24+64(%rsp),%r8 + leaq 128(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 0+96(%rsp),%rdx + movq 8+96(%rsp),%r14 + leaq -128+96(%rsp),%rsi + movq 16+96(%rsp),%r15 + movq 24+96(%rsp),%r8 + leaq 192(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 128(%rsp),%rdx + leaq 128(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 160(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 320(%rsp),%rdx + leaq 320(%rsp),%rbx + movq 0+128(%rsp),%r9 + movq 8+128(%rsp),%r10 + leaq -128+128(%rsp),%rsi + movq 16+128(%rsp),%r11 + movq 24+128(%rsp),%r12 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montx + + + + + xorq %r11,%r11 + addq %r12,%r12 + leaq 192(%rsp),%rsi + adcq %r13,%r13 + movq %r12,%rax + adcq %r8,%r8 + adcq %r9,%r9 + movq %r13,%rbp + adcq $0,%r11 + + subq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + movq 0(%rsi),%rax + cmovcq %rbp,%r13 + movq 8(%rsi),%rbp + cmovcq %rcx,%r8 + movq 16(%rsi),%rcx + cmovcq %r10,%r9 + movq 24(%rsi),%r10 + + call __ecp_nistz256_subx + + leaq 160(%rsp),%rbx + leaq 224(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 0+0(%rsp),%rax + movq 0+8(%rsp),%rbp + movq 0+16(%rsp),%rcx + movq 0+24(%rsp),%r10 + leaq 64(%rsp),%rdi + + call __ecp_nistz256_subx + + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r8,16(%rdi) + movq %r9,24(%rdi) + movq 352(%rsp),%rdx + leaq 352(%rsp),%rbx + movq 0+160(%rsp),%r9 + movq 8+160(%rsp),%r10 + leaq -128+160(%rsp),%rsi + movq 16+160(%rsp),%r11 + movq 24+160(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 96(%rsp),%rdx + leaq 96(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 64(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 32(%rsp),%rbx + leaq 256(%rsp),%rdi + call __ecp_nistz256_sub_fromx + +.byte 102,72,15,126,199 + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 288(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 288+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand .LONE_mont(%rip),%xmm2 + pand .LONE_mont+16(%rip),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 384(%rsp),%xmm2 + pand 384+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,64(%rdi) + movdqu %xmm3,80(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 224(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 224+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 416(%rsp),%xmm2 + pand 416+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 320(%rsp),%xmm2 + pand 320+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,0(%rdi) + movdqu %xmm3,16(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 256(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 256+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 448(%rsp),%xmm2 + pand 448+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 352(%rsp),%xmm2 + pand 352+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,32(%rdi) + movdqu %xmm3,48(%rdi) + + leaq 480+56(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbx +.cfi_restore %rbx + movq -8(%rsi),%rbp +.cfi_restore %rbp + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Ladd_affinex_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size ecp_nistz256_point_add_affinex,.-ecp_nistz256_point_add_affinex #endif
diff --git a/third_party/boringssl/linux-x86_64/crypto/fipsmodule/rsaz-avx2.S b/third_party/boringssl/linux-x86_64/crypto/fipsmodule/rsaz-avx2.S index 89b81ed..e6db7f6 100644 --- a/third_party/boringssl/linux-x86_64/crypto/fipsmodule/rsaz-avx2.S +++ b/third_party/boringssl/linux-x86_64/crypto/fipsmodule/rsaz-avx2.S
@@ -1724,6 +1724,11 @@ rsaz_avx2_eligible: leaq OPENSSL_ia32cap_P(%rip),%rax movl 8(%rax),%eax + movl $524544,%ecx + movl $0,%edx + andl %eax,%ecx + cmpl $524544,%ecx + cmovel %edx,%eax andl $32,%eax shrl $5,%eax .byte 0xf3,0xc3
diff --git a/third_party/boringssl/linux-x86_64/crypto/fipsmodule/x86_64-mont.S b/third_party/boringssl/linux-x86_64/crypto/fipsmodule/x86_64-mont.S index 1f673ef..3d867cd1 100644 --- a/third_party/boringssl/linux-x86_64/crypto/fipsmodule/x86_64-mont.S +++ b/third_party/boringssl/linux-x86_64/crypto/fipsmodule/x86_64-mont.S
@@ -17,6 +17,8 @@ jnz .Lmul_enter cmpl $8,%r9d jb .Lmul_enter + leaq OPENSSL_ia32cap_P(%rip),%r11 + movl 8(%r11),%r11d cmpq %rsi,%rdx jne .Lmul4x_enter testl $7,%r9d @@ -208,30 +210,30 @@ xorq %r14,%r14 movq (%rsp),%rax - leaq (%rsp),%rsi movq %r9,%r15 - jmp .Lsub + .align 16 .Lsub: sbbq (%rcx,%r14,8),%rax movq %rax,(%rdi,%r14,8) - movq 8(%rsi,%r14,8),%rax + movq 8(%rsp,%r14,8),%rax leaq 1(%r14),%r14 decq %r15 jnz .Lsub sbbq $0,%rax + movq $-1,%rbx + xorq %rax,%rbx xorq %r14,%r14 - andq %rax,%rsi - notq %rax - movq %rdi,%rcx - andq %rax,%rcx movq %r9,%r15 - orq %rcx,%rsi -.align 16 + .Lcopy: - movq (%rsi,%r14,8),%rax - movq %r14,(%rsp,%r14,8) - movq %rax,(%rdi,%r14,8) + movq (%rdi,%r14,8),%rcx + movq (%rsp,%r14,8),%rdx + andq %rbx,%rcx + andq %rax,%rdx + movq %r9,(%rsp,%r14,8) + orq %rcx,%rdx + movq %rdx,(%rdi,%r14,8) leaq 1(%r14),%r14 subq $1,%r15 jnz .Lcopy @@ -265,6 +267,9 @@ movq %rsp,%rax .cfi_def_cfa_register %rax .Lmul4x_enter: + andl $0x80100,%r11d + cmpl $0x80100,%r11d + je .Lmulx4x_enter pushq %rbx .cfi_offset %rbx,-16 pushq %rbp @@ -602,7 +607,6 @@ movq 16(%rsp,%r9,8),%rdi leaq -4(%r9),%r15 movq 0(%rsp),%rax - pxor %xmm0,%xmm0 movq 8(%rsp),%rdx shrq $2,%r15 leaq (%rsp),%rsi @@ -612,8 +616,7 @@ movq 16(%rsi),%rbx movq 24(%rsi),%rbp sbbq 8(%rcx),%rdx - jmp .Lsub4x -.align 16 + .Lsub4x: movq %rax,0(%rdi,%r14,8) movq %rdx,8(%rdi,%r14,8) @@ -640,34 +643,35 @@ sbbq $0,%rax movq %rbp,24(%rdi,%r14,8) - xorq %r14,%r14 - andq %rax,%rsi - notq %rax - movq %rdi,%rcx - andq %rax,%rcx - leaq -4(%r9),%r15 - orq %rcx,%rsi + pxor %xmm0,%xmm0 +.byte 102,72,15,110,224 + pcmpeqd %xmm5,%xmm5 + pshufd $0,%xmm4,%xmm4 + movq %r9,%r15 + pxor %xmm4,%xmm5 shrq $2,%r15 + xorl %eax,%eax - movdqu (%rsi),%xmm1 - movdqa %xmm0,(%rsp) - movdqu %xmm1,(%rdi) jmp .Lcopy4x .align 16 .Lcopy4x: - movdqu 16(%rsi,%r14,1),%xmm2 - movdqu 32(%rsi,%r14,1),%xmm1 - movdqa %xmm0,16(%rsp,%r14,1) - movdqu %xmm2,16(%rdi,%r14,1) - movdqa %xmm0,32(%rsp,%r14,1) - movdqu %xmm1,32(%rdi,%r14,1) - leaq 32(%r14),%r14 + movdqa (%rsp,%rax,1),%xmm1 + movdqu (%rdi,%rax,1),%xmm2 + pand %xmm4,%xmm1 + pand %xmm5,%xmm2 + movdqa 16(%rsp,%rax,1),%xmm3 + movdqa %xmm0,(%rsp,%rax,1) + por %xmm2,%xmm1 + movdqu 16(%rdi,%rax,1),%xmm2 + movdqu %xmm1,(%rdi,%rax,1) + pand %xmm4,%xmm3 + pand %xmm5,%xmm2 + movdqa %xmm0,16(%rsp,%rax,1) + por %xmm2,%xmm3 + movdqu %xmm3,16(%rdi,%rax,1) + leaq 32(%rax),%rax decq %r15 jnz .Lcopy4x - - movdqu 16(%rsi,%r14,1),%xmm2 - movdqa %xmm0,16(%rsp,%r14,1) - movdqu %xmm2,16(%rdi,%r14,1) movq 8(%rsp,%r9,8),%rsi .cfi_def_cfa %rsi, 8 movq $1,%rax @@ -689,6 +693,8 @@ .byte 0xf3,0xc3 .cfi_endproc .size bn_mul4x_mont,.-bn_mul4x_mont +.extern bn_sqrx8x_internal +.hidden bn_sqrx8x_internal .extern bn_sqr8x_internal .hidden bn_sqr8x_internal @@ -773,6 +779,26 @@ pxor %xmm0,%xmm0 .byte 102,72,15,110,207 .byte 102,73,15,110,218 + leaq OPENSSL_ia32cap_P(%rip),%rax + movl 8(%rax),%eax + andl $0x80100,%eax + cmpl $0x80100,%eax + jne .Lsqr8x_nox + + call bn_sqrx8x_internal + + + + + leaq (%r8,%rcx,1),%rbx + movq %rcx,%r9 + movq %rcx,%rdx +.byte 102,72,15,126,207 + sarq $3+2,%rcx + jmp .Lsqr8x_sub + +.align 32 +.Lsqr8x_nox: call bn_sqr8x_internal @@ -860,6 +886,362 @@ .byte 0xf3,0xc3 .cfi_endproc .size bn_sqr8x_mont,.-bn_sqr8x_mont +.type bn_mulx4x_mont,@function +.align 32 +bn_mulx4x_mont: +.cfi_startproc + movq %rsp,%rax +.cfi_def_cfa_register %rax +.Lmulx4x_enter: + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 +.Lmulx4x_prologue: + + shll $3,%r9d + xorq %r10,%r10 + subq %r9,%r10 + movq (%r8),%r8 + leaq -72(%rsp,%r10,1),%rbp + andq $-128,%rbp + movq %rsp,%r11 + subq %rbp,%r11 + andq $-4096,%r11 + leaq (%r11,%rbp,1),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja .Lmulx4x_page_walk + jmp .Lmulx4x_page_walk_done + +.align 16 +.Lmulx4x_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja .Lmulx4x_page_walk +.Lmulx4x_page_walk_done: + + leaq (%rdx,%r9,1),%r10 + + + + + + + + + + + + + movq %r9,0(%rsp) + shrq $5,%r9 + movq %r10,16(%rsp) + subq $1,%r9 + movq %r8,24(%rsp) + movq %rdi,32(%rsp) + movq %rax,40(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x08 + movq %r9,48(%rsp) + jmp .Lmulx4x_body + +.align 32 +.Lmulx4x_body: + leaq 8(%rdx),%rdi + movq (%rdx),%rdx + leaq 64+32(%rsp),%rbx + movq %rdx,%r9 + + mulxq 0(%rsi),%r8,%rax + mulxq 8(%rsi),%r11,%r14 + addq %rax,%r11 + movq %rdi,8(%rsp) + mulxq 16(%rsi),%r12,%r13 + adcq %r14,%r12 + adcq $0,%r13 + + movq %r8,%rdi + imulq 24(%rsp),%r8 + xorq %rbp,%rbp + + mulxq 24(%rsi),%rax,%r14 + movq %r8,%rdx + leaq 32(%rsi),%rsi + adcxq %rax,%r13 + adcxq %rbp,%r14 + + mulxq 0(%rcx),%rax,%r10 + adcxq %rax,%rdi + adoxq %r11,%r10 + mulxq 8(%rcx),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 +.byte 0xc4,0x62,0xfb,0xf6,0xa1,0x10,0x00,0x00,0x00 + movq 48(%rsp),%rdi + movq %r10,-32(%rbx) + adcxq %rax,%r11 + adoxq %r13,%r12 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r11,-24(%rbx) + adcxq %rax,%r12 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r12,-16(%rbx) + + jmp .Lmulx4x_1st + +.align 32 +.Lmulx4x_1st: + adcxq %rbp,%r15 + mulxq 0(%rsi),%r10,%rax + adcxq %r14,%r10 + mulxq 8(%rsi),%r11,%r14 + adcxq %rax,%r11 + mulxq 16(%rsi),%r12,%rax + adcxq %r14,%r12 + mulxq 24(%rsi),%r13,%r14 +.byte 0x67,0x67 + movq %r8,%rdx + adcxq %rax,%r13 + adcxq %rbp,%r14 + leaq 32(%rsi),%rsi + leaq 32(%rbx),%rbx + + adoxq %r15,%r10 + mulxq 0(%rcx),%rax,%r15 + adcxq %rax,%r10 + adoxq %r15,%r11 + mulxq 8(%rcx),%rax,%r15 + adcxq %rax,%r11 + adoxq %r15,%r12 + mulxq 16(%rcx),%rax,%r15 + movq %r10,-40(%rbx) + adcxq %rax,%r12 + movq %r11,-32(%rbx) + adoxq %r15,%r13 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r12,-24(%rbx) + adcxq %rax,%r13 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r13,-16(%rbx) + + decq %rdi + jnz .Lmulx4x_1st + + movq 0(%rsp),%rax + movq 8(%rsp),%rdi + adcq %rbp,%r15 + addq %r15,%r14 + sbbq %r15,%r15 + movq %r14,-8(%rbx) + jmp .Lmulx4x_outer + +.align 32 +.Lmulx4x_outer: + movq (%rdi),%rdx + leaq 8(%rdi),%rdi + subq %rax,%rsi + movq %r15,(%rbx) + leaq 64+32(%rsp),%rbx + subq %rax,%rcx + + mulxq 0(%rsi),%r8,%r11 + xorl %ebp,%ebp + movq %rdx,%r9 + mulxq 8(%rsi),%r14,%r12 + adoxq -32(%rbx),%r8 + adcxq %r14,%r11 + mulxq 16(%rsi),%r15,%r13 + adoxq -24(%rbx),%r11 + adcxq %r15,%r12 + adoxq -16(%rbx),%r12 + adcxq %rbp,%r13 + adoxq %rbp,%r13 + + movq %rdi,8(%rsp) + movq %r8,%r15 + imulq 24(%rsp),%r8 + xorl %ebp,%ebp + + mulxq 24(%rsi),%rax,%r14 + movq %r8,%rdx + adcxq %rax,%r13 + adoxq -8(%rbx),%r13 + adcxq %rbp,%r14 + leaq 32(%rsi),%rsi + adoxq %rbp,%r14 + + mulxq 0(%rcx),%rax,%r10 + adcxq %rax,%r15 + adoxq %r11,%r10 + mulxq 8(%rcx),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + mulxq 16(%rcx),%rax,%r12 + movq %r10,-32(%rbx) + adcxq %rax,%r11 + adoxq %r13,%r12 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r11,-24(%rbx) + leaq 32(%rcx),%rcx + adcxq %rax,%r12 + adoxq %rbp,%r15 + movq 48(%rsp),%rdi + movq %r12,-16(%rbx) + + jmp .Lmulx4x_inner + +.align 32 +.Lmulx4x_inner: + mulxq 0(%rsi),%r10,%rax + adcxq %rbp,%r15 + adoxq %r14,%r10 + mulxq 8(%rsi),%r11,%r14 + adcxq 0(%rbx),%r10 + adoxq %rax,%r11 + mulxq 16(%rsi),%r12,%rax + adcxq 8(%rbx),%r11 + adoxq %r14,%r12 + mulxq 24(%rsi),%r13,%r14 + movq %r8,%rdx + adcxq 16(%rbx),%r12 + adoxq %rax,%r13 + adcxq 24(%rbx),%r13 + adoxq %rbp,%r14 + leaq 32(%rsi),%rsi + leaq 32(%rbx),%rbx + adcxq %rbp,%r14 + + adoxq %r15,%r10 + mulxq 0(%rcx),%rax,%r15 + adcxq %rax,%r10 + adoxq %r15,%r11 + mulxq 8(%rcx),%rax,%r15 + adcxq %rax,%r11 + adoxq %r15,%r12 + mulxq 16(%rcx),%rax,%r15 + movq %r10,-40(%rbx) + adcxq %rax,%r12 + adoxq %r15,%r13 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r11,-32(%rbx) + movq %r12,-24(%rbx) + adcxq %rax,%r13 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r13,-16(%rbx) + + decq %rdi + jnz .Lmulx4x_inner + + movq 0(%rsp),%rax + movq 8(%rsp),%rdi + adcq %rbp,%r15 + subq 0(%rbx),%rbp + adcq %r15,%r14 + sbbq %r15,%r15 + movq %r14,-8(%rbx) + + cmpq 16(%rsp),%rdi + jne .Lmulx4x_outer + + leaq 64(%rsp),%rbx + subq %rax,%rcx + negq %r15 + movq %rax,%rdx + shrq $3+2,%rax + movq 32(%rsp),%rdi + jmp .Lmulx4x_sub + +.align 32 +.Lmulx4x_sub: + movq 0(%rbx),%r11 + movq 8(%rbx),%r12 + movq 16(%rbx),%r13 + movq 24(%rbx),%r14 + leaq 32(%rbx),%rbx + sbbq 0(%rcx),%r11 + sbbq 8(%rcx),%r12 + sbbq 16(%rcx),%r13 + sbbq 24(%rcx),%r14 + leaq 32(%rcx),%rcx + movq %r11,0(%rdi) + movq %r12,8(%rdi) + movq %r13,16(%rdi) + movq %r14,24(%rdi) + leaq 32(%rdi),%rdi + decq %rax + jnz .Lmulx4x_sub + + sbbq $0,%r15 + leaq 64(%rsp),%rbx + subq %rdx,%rdi + +.byte 102,73,15,110,207 + pxor %xmm0,%xmm0 + pshufd $0,%xmm1,%xmm1 + movq 40(%rsp),%rsi +.cfi_def_cfa %rsi,8 + jmp .Lmulx4x_cond_copy + +.align 32 +.Lmulx4x_cond_copy: + movdqa 0(%rbx),%xmm2 + movdqa 16(%rbx),%xmm3 + leaq 32(%rbx),%rbx + movdqu 0(%rdi),%xmm4 + movdqu 16(%rdi),%xmm5 + leaq 32(%rdi),%rdi + movdqa %xmm0,-32(%rbx) + movdqa %xmm0,-16(%rbx) + pcmpeqd %xmm1,%xmm0 + pand %xmm1,%xmm2 + pand %xmm1,%xmm3 + pand %xmm0,%xmm4 + pand %xmm0,%xmm5 + pxor %xmm0,%xmm0 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqu %xmm4,-32(%rdi) + movdqu %xmm5,-16(%rdi) + subq $32,%rdx + jnz .Lmulx4x_cond_copy + + movq %rdx,(%rbx) + + movq $1,%rax + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lmulx4x_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size bn_mulx4x_mont,.-bn_mulx4x_mont .byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .align 16 #endif
diff --git a/third_party/boringssl/linux-x86_64/crypto/fipsmodule/x86_64-mont5.S b/third_party/boringssl/linux-x86_64/crypto/fipsmodule/x86_64-mont5.S index 1ec58ca0..bc4e274 100644 --- a/third_party/boringssl/linux-x86_64/crypto/fipsmodule/x86_64-mont5.S +++ b/third_party/boringssl/linux-x86_64/crypto/fipsmodule/x86_64-mont5.S
@@ -15,6 +15,8 @@ .cfi_def_cfa_register %rax testl $7,%r9d jnz .Lmul_enter + leaq OPENSSL_ia32cap_P(%rip),%r11 + movl 8(%r11),%r11d jmp .Lmul4x_enter .align 16 @@ -404,18 +406,19 @@ jnz .Lsub sbbq $0,%rax + movq $-1,%rbx + xorq %rax,%rbx xorq %r14,%r14 - andq %rax,%rsi - notq %rax - movq %rdi,%rcx - andq %rax,%rcx movq %r9,%r15 - orq %rcx,%rsi -.align 16 + .Lcopy: - movq (%rsi,%r14,8),%rax + movq (%rdi,%r14,8),%rcx + movq (%rsp,%r14,8),%rdx + andq %rbx,%rcx + andq %rax,%rdx movq %r14,(%rsp,%r14,8) - movq %rax,(%rdi,%r14,8) + orq %rcx,%rdx + movq %rdx,(%rdi,%r14,8) leaq 1(%r14),%r14 subq $1,%r15 jnz .Lcopy @@ -450,6 +453,9 @@ movq %rsp,%rax .cfi_def_cfa_register %rax .Lmul4x_enter: + andl $0x80108,%r11d + cmpl $0x80108,%r11d + je .Lmulx4x_enter pushq %rbx .cfi_offset %rbx,-16 pushq %rbp @@ -1078,6 +1084,11 @@ .cfi_startproc movq %rsp,%rax .cfi_def_cfa_register %rax + leaq OPENSSL_ia32cap_P(%rip),%r11 + movl 8(%r11),%r11d + andl $0x80108,%r11d + cmpl $0x80108,%r11d + je .Lpowerx5_enter pushq %rbx .cfi_offset %rbx,-16 pushq %rbp @@ -2163,6 +2174,22 @@ .byte 0x67 movq %rcx,%rbp .byte 102,73,15,110,218 + leaq OPENSSL_ia32cap_P(%rip),%r11 + movl 8(%r11),%r11d + andl $0x80108,%r11d + cmpl $0x80108,%r11d + jne .Lfrom_mont_nox + + leaq (%rax,%r9,1),%rdi + call __bn_sqrx8x_reduction + call __bn_postx4x_internal + + pxor %xmm0,%xmm0 + leaq 48(%rsp),%rax + jmp .Lfrom_mont_zero + +.align 32 +.Lfrom_mont_nox: call __bn_sqr8x_reduction call __bn_post4x_internal @@ -2201,6 +2228,1343 @@ .byte 0xf3,0xc3 .cfi_endproc .size bn_from_mont8x,.-bn_from_mont8x +.type bn_mulx4x_mont_gather5,@function +.align 32 +bn_mulx4x_mont_gather5: +.cfi_startproc + movq %rsp,%rax +.cfi_def_cfa_register %rax +.Lmulx4x_enter: + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 +.Lmulx4x_prologue: + + shll $3,%r9d + leaq (%r9,%r9,2),%r10 + negq %r9 + movq (%r8),%r8 + + + + + + + + + + + leaq -320(%rsp,%r9,2),%r11 + movq %rsp,%rbp + subq %rdi,%r11 + andq $4095,%r11 + cmpq %r11,%r10 + jb .Lmulx4xsp_alt + subq %r11,%rbp + leaq -320(%rbp,%r9,2),%rbp + jmp .Lmulx4xsp_done + +.Lmulx4xsp_alt: + leaq 4096-320(,%r9,2),%r10 + leaq -320(%rbp,%r9,2),%rbp + subq %r10,%r11 + movq $0,%r10 + cmovcq %r10,%r11 + subq %r11,%rbp +.Lmulx4xsp_done: + andq $-64,%rbp + movq %rsp,%r11 + subq %rbp,%r11 + andq $-4096,%r11 + leaq (%r11,%rbp,1),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja .Lmulx4x_page_walk + jmp .Lmulx4x_page_walk_done + +.Lmulx4x_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja .Lmulx4x_page_walk +.Lmulx4x_page_walk_done: + + + + + + + + + + + + + + movq %r8,32(%rsp) + movq %rax,40(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x08 +.Lmulx4x_body: + call mulx4x_internal + + movq 40(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq $1,%rax + + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lmulx4x_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size bn_mulx4x_mont_gather5,.-bn_mulx4x_mont_gather5 + +.type mulx4x_internal,@function +.align 32 +mulx4x_internal: + movq %r9,8(%rsp) + movq %r9,%r10 + negq %r9 + shlq $5,%r9 + negq %r10 + leaq 128(%rdx,%r9,1),%r13 + shrq $5+5,%r9 + movd 8(%rax),%xmm5 + subq $1,%r9 + leaq .Linc(%rip),%rax + movq %r13,16+8(%rsp) + movq %r9,24+8(%rsp) + movq %rdi,56+8(%rsp) + movdqa 0(%rax),%xmm0 + movdqa 16(%rax),%xmm1 + leaq 88-112(%rsp,%r10,1),%r10 + leaq 128(%rdx),%rdi + + pshufd $0,%xmm5,%xmm5 + movdqa %xmm1,%xmm4 +.byte 0x67 + movdqa %xmm1,%xmm2 +.byte 0x67 + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,112(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,128(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,144(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,160(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,176(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,192(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,208(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,224(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,240(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,256(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,272(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,288(%r10) + movdqa %xmm4,%xmm3 +.byte 0x67 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,304(%r10) + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,320(%r10) + + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,336(%r10) + + pand 64(%rdi),%xmm0 + pand 80(%rdi),%xmm1 + pand 96(%rdi),%xmm2 + movdqa %xmm3,352(%r10) + pand 112(%rdi),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa -128(%rdi),%xmm4 + movdqa -112(%rdi),%xmm5 + movdqa -96(%rdi),%xmm2 + pand 112(%r10),%xmm4 + movdqa -80(%rdi),%xmm3 + pand 128(%r10),%xmm5 + por %xmm4,%xmm0 + pand 144(%r10),%xmm2 + por %xmm5,%xmm1 + pand 160(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa -64(%rdi),%xmm4 + movdqa -48(%rdi),%xmm5 + movdqa -32(%rdi),%xmm2 + pand 176(%r10),%xmm4 + movdqa -16(%rdi),%xmm3 + pand 192(%r10),%xmm5 + por %xmm4,%xmm0 + pand 208(%r10),%xmm2 + por %xmm5,%xmm1 + pand 224(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa 0(%rdi),%xmm4 + movdqa 16(%rdi),%xmm5 + movdqa 32(%rdi),%xmm2 + pand 240(%r10),%xmm4 + movdqa 48(%rdi),%xmm3 + pand 256(%r10),%xmm5 + por %xmm4,%xmm0 + pand 272(%r10),%xmm2 + por %xmm5,%xmm1 + pand 288(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + pxor %xmm1,%xmm0 + pshufd $0x4e,%xmm0,%xmm1 + por %xmm1,%xmm0 + leaq 256(%rdi),%rdi +.byte 102,72,15,126,194 + leaq 64+32+8(%rsp),%rbx + + movq %rdx,%r9 + mulxq 0(%rsi),%r8,%rax + mulxq 8(%rsi),%r11,%r12 + addq %rax,%r11 + mulxq 16(%rsi),%rax,%r13 + adcq %rax,%r12 + adcq $0,%r13 + mulxq 24(%rsi),%rax,%r14 + + movq %r8,%r15 + imulq 32+8(%rsp),%r8 + xorq %rbp,%rbp + movq %r8,%rdx + + movq %rdi,8+8(%rsp) + + leaq 32(%rsi),%rsi + adcxq %rax,%r13 + adcxq %rbp,%r14 + + mulxq 0(%rcx),%rax,%r10 + adcxq %rax,%r15 + adoxq %r11,%r10 + mulxq 8(%rcx),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + mulxq 16(%rcx),%rax,%r12 + movq 24+8(%rsp),%rdi + movq %r10,-32(%rbx) + adcxq %rax,%r11 + adoxq %r13,%r12 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r11,-24(%rbx) + adcxq %rax,%r12 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r12,-16(%rbx) + jmp .Lmulx4x_1st + +.align 32 +.Lmulx4x_1st: + adcxq %rbp,%r15 + mulxq 0(%rsi),%r10,%rax + adcxq %r14,%r10 + mulxq 8(%rsi),%r11,%r14 + adcxq %rax,%r11 + mulxq 16(%rsi),%r12,%rax + adcxq %r14,%r12 + mulxq 24(%rsi),%r13,%r14 +.byte 0x67,0x67 + movq %r8,%rdx + adcxq %rax,%r13 + adcxq %rbp,%r14 + leaq 32(%rsi),%rsi + leaq 32(%rbx),%rbx + + adoxq %r15,%r10 + mulxq 0(%rcx),%rax,%r15 + adcxq %rax,%r10 + adoxq %r15,%r11 + mulxq 8(%rcx),%rax,%r15 + adcxq %rax,%r11 + adoxq %r15,%r12 + mulxq 16(%rcx),%rax,%r15 + movq %r10,-40(%rbx) + adcxq %rax,%r12 + movq %r11,-32(%rbx) + adoxq %r15,%r13 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r12,-24(%rbx) + adcxq %rax,%r13 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r13,-16(%rbx) + + decq %rdi + jnz .Lmulx4x_1st + + movq 8(%rsp),%rax + adcq %rbp,%r15 + leaq (%rsi,%rax,1),%rsi + addq %r15,%r14 + movq 8+8(%rsp),%rdi + adcq %rbp,%rbp + movq %r14,-8(%rbx) + jmp .Lmulx4x_outer + +.align 32 +.Lmulx4x_outer: + leaq 16-256(%rbx),%r10 + pxor %xmm4,%xmm4 +.byte 0x67,0x67 + pxor %xmm5,%xmm5 + movdqa -128(%rdi),%xmm0 + movdqa -112(%rdi),%xmm1 + movdqa -96(%rdi),%xmm2 + pand 256(%r10),%xmm0 + movdqa -80(%rdi),%xmm3 + pand 272(%r10),%xmm1 + por %xmm0,%xmm4 + pand 288(%r10),%xmm2 + por %xmm1,%xmm5 + pand 304(%r10),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa -64(%rdi),%xmm0 + movdqa -48(%rdi),%xmm1 + movdqa -32(%rdi),%xmm2 + pand 320(%r10),%xmm0 + movdqa -16(%rdi),%xmm3 + pand 336(%r10),%xmm1 + por %xmm0,%xmm4 + pand 352(%r10),%xmm2 + por %xmm1,%xmm5 + pand 368(%r10),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 0(%rdi),%xmm0 + movdqa 16(%rdi),%xmm1 + movdqa 32(%rdi),%xmm2 + pand 384(%r10),%xmm0 + movdqa 48(%rdi),%xmm3 + pand 400(%r10),%xmm1 + por %xmm0,%xmm4 + pand 416(%r10),%xmm2 + por %xmm1,%xmm5 + pand 432(%r10),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 64(%rdi),%xmm0 + movdqa 80(%rdi),%xmm1 + movdqa 96(%rdi),%xmm2 + pand 448(%r10),%xmm0 + movdqa 112(%rdi),%xmm3 + pand 464(%r10),%xmm1 + por %xmm0,%xmm4 + pand 480(%r10),%xmm2 + por %xmm1,%xmm5 + pand 496(%r10),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + por %xmm5,%xmm4 + pshufd $0x4e,%xmm4,%xmm0 + por %xmm4,%xmm0 + leaq 256(%rdi),%rdi +.byte 102,72,15,126,194 + + movq %rbp,(%rbx) + leaq 32(%rbx,%rax,1),%rbx + mulxq 0(%rsi),%r8,%r11 + xorq %rbp,%rbp + movq %rdx,%r9 + mulxq 8(%rsi),%r14,%r12 + adoxq -32(%rbx),%r8 + adcxq %r14,%r11 + mulxq 16(%rsi),%r15,%r13 + adoxq -24(%rbx),%r11 + adcxq %r15,%r12 + mulxq 24(%rsi),%rdx,%r14 + adoxq -16(%rbx),%r12 + adcxq %rdx,%r13 + leaq (%rcx,%rax,1),%rcx + leaq 32(%rsi),%rsi + adoxq -8(%rbx),%r13 + adcxq %rbp,%r14 + adoxq %rbp,%r14 + + movq %r8,%r15 + imulq 32+8(%rsp),%r8 + + movq %r8,%rdx + xorq %rbp,%rbp + movq %rdi,8+8(%rsp) + + mulxq 0(%rcx),%rax,%r10 + adcxq %rax,%r15 + adoxq %r11,%r10 + mulxq 8(%rcx),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + mulxq 16(%rcx),%rax,%r12 + adcxq %rax,%r11 + adoxq %r13,%r12 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq 24+8(%rsp),%rdi + movq %r10,-32(%rbx) + adcxq %rax,%r12 + movq %r11,-24(%rbx) + adoxq %rbp,%r15 + movq %r12,-16(%rbx) + leaq 32(%rcx),%rcx + jmp .Lmulx4x_inner + +.align 32 +.Lmulx4x_inner: + mulxq 0(%rsi),%r10,%rax + adcxq %rbp,%r15 + adoxq %r14,%r10 + mulxq 8(%rsi),%r11,%r14 + adcxq 0(%rbx),%r10 + adoxq %rax,%r11 + mulxq 16(%rsi),%r12,%rax + adcxq 8(%rbx),%r11 + adoxq %r14,%r12 + mulxq 24(%rsi),%r13,%r14 + movq %r8,%rdx + adcxq 16(%rbx),%r12 + adoxq %rax,%r13 + adcxq 24(%rbx),%r13 + adoxq %rbp,%r14 + leaq 32(%rsi),%rsi + leaq 32(%rbx),%rbx + adcxq %rbp,%r14 + + adoxq %r15,%r10 + mulxq 0(%rcx),%rax,%r15 + adcxq %rax,%r10 + adoxq %r15,%r11 + mulxq 8(%rcx),%rax,%r15 + adcxq %rax,%r11 + adoxq %r15,%r12 + mulxq 16(%rcx),%rax,%r15 + movq %r10,-40(%rbx) + adcxq %rax,%r12 + adoxq %r15,%r13 + movq %r11,-32(%rbx) + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + leaq 32(%rcx),%rcx + movq %r12,-24(%rbx) + adcxq %rax,%r13 + adoxq %rbp,%r15 + movq %r13,-16(%rbx) + + decq %rdi + jnz .Lmulx4x_inner + + movq 0+8(%rsp),%rax + adcq %rbp,%r15 + subq 0(%rbx),%rdi + movq 8+8(%rsp),%rdi + movq 16+8(%rsp),%r10 + adcq %r15,%r14 + leaq (%rsi,%rax,1),%rsi + adcq %rbp,%rbp + movq %r14,-8(%rbx) + + cmpq %r10,%rdi + jb .Lmulx4x_outer + + movq -8(%rcx),%r10 + movq %rbp,%r8 + movq (%rcx,%rax,1),%r12 + leaq (%rcx,%rax,1),%rbp + movq %rax,%rcx + leaq (%rbx,%rax,1),%rdi + xorl %eax,%eax + xorq %r15,%r15 + subq %r14,%r10 + adcq %r15,%r15 + orq %r15,%r8 + sarq $3+2,%rcx + subq %r8,%rax + movq 56+8(%rsp),%rdx + decq %r12 + movq 8(%rbp),%r13 + xorq %r8,%r8 + movq 16(%rbp),%r14 + movq 24(%rbp),%r15 + jmp .Lsqrx4x_sub_entry +.size mulx4x_internal,.-mulx4x_internal +.type bn_powerx5,@function +.align 32 +bn_powerx5: +.cfi_startproc + movq %rsp,%rax +.cfi_def_cfa_register %rax +.Lpowerx5_enter: + pushq %rbx +.cfi_offset %rbx,-16 + pushq %rbp +.cfi_offset %rbp,-24 + pushq %r12 +.cfi_offset %r12,-32 + pushq %r13 +.cfi_offset %r13,-40 + pushq %r14 +.cfi_offset %r14,-48 + pushq %r15 +.cfi_offset %r15,-56 +.Lpowerx5_prologue: + + shll $3,%r9d + leaq (%r9,%r9,2),%r10 + negq %r9 + movq (%r8),%r8 + + + + + + + + + leaq -320(%rsp,%r9,2),%r11 + movq %rsp,%rbp + subq %rdi,%r11 + andq $4095,%r11 + cmpq %r11,%r10 + jb .Lpwrx_sp_alt + subq %r11,%rbp + leaq -320(%rbp,%r9,2),%rbp + jmp .Lpwrx_sp_done + +.align 32 +.Lpwrx_sp_alt: + leaq 4096-320(,%r9,2),%r10 + leaq -320(%rbp,%r9,2),%rbp + subq %r10,%r11 + movq $0,%r10 + cmovcq %r10,%r11 + subq %r11,%rbp +.Lpwrx_sp_done: + andq $-64,%rbp + movq %rsp,%r11 + subq %rbp,%r11 + andq $-4096,%r11 + leaq (%r11,%rbp,1),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja .Lpwrx_page_walk + jmp .Lpwrx_page_walk_done + +.Lpwrx_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja .Lpwrx_page_walk +.Lpwrx_page_walk_done: + + movq %r9,%r10 + negq %r9 + + + + + + + + + + + + + pxor %xmm0,%xmm0 +.byte 102,72,15,110,207 +.byte 102,72,15,110,209 +.byte 102,73,15,110,218 +.byte 102,72,15,110,226 + movq %r8,32(%rsp) + movq %rax,40(%rsp) +.cfi_escape 0x0f,0x05,0x77,0x28,0x06,0x23,0x08 +.Lpowerx5_body: + + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + + movq %r10,%r9 + movq %rsi,%rdi +.byte 102,72,15,126,209 +.byte 102,72,15,126,226 + movq 40(%rsp),%rax + + call mulx4x_internal + + movq 40(%rsp),%rsi +.cfi_def_cfa %rsi,8 + movq $1,%rax + + movq -48(%rsi),%r15 +.cfi_restore %r15 + movq -40(%rsi),%r14 +.cfi_restore %r14 + movq -32(%rsi),%r13 +.cfi_restore %r13 + movq -24(%rsi),%r12 +.cfi_restore %r12 + movq -16(%rsi),%rbp +.cfi_restore %rbp + movq -8(%rsi),%rbx +.cfi_restore %rbx + leaq (%rsi),%rsp +.cfi_def_cfa_register %rsp +.Lpowerx5_epilogue: + .byte 0xf3,0xc3 +.cfi_endproc +.size bn_powerx5,.-bn_powerx5 + +.globl bn_sqrx8x_internal +.hidden bn_sqrx8x_internal +.hidden bn_sqrx8x_internal +.type bn_sqrx8x_internal,@function +.align 32 +bn_sqrx8x_internal: +__bn_sqrx8x_internal: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + leaq 48+8(%rsp),%rdi + leaq (%rsi,%r9,1),%rbp + movq %r9,0+8(%rsp) + movq %rbp,8+8(%rsp) + jmp .Lsqr8x_zero_start + +.align 32 +.byte 0x66,0x66,0x66,0x2e,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00 +.Lsqrx8x_zero: +.byte 0x3e + movdqa %xmm0,0(%rdi) + movdqa %xmm0,16(%rdi) + movdqa %xmm0,32(%rdi) + movdqa %xmm0,48(%rdi) +.Lsqr8x_zero_start: + movdqa %xmm0,64(%rdi) + movdqa %xmm0,80(%rdi) + movdqa %xmm0,96(%rdi) + movdqa %xmm0,112(%rdi) + leaq 128(%rdi),%rdi + subq $64,%r9 + jnz .Lsqrx8x_zero + + movq 0(%rsi),%rdx + + xorq %r10,%r10 + xorq %r11,%r11 + xorq %r12,%r12 + xorq %r13,%r13 + xorq %r14,%r14 + xorq %r15,%r15 + leaq 48+8(%rsp),%rdi + xorq %rbp,%rbp + jmp .Lsqrx8x_outer_loop + +.align 32 +.Lsqrx8x_outer_loop: + mulxq 8(%rsi),%r8,%rax + adcxq %r9,%r8 + adoxq %rax,%r10 + mulxq 16(%rsi),%r9,%rax + adcxq %r10,%r9 + adoxq %rax,%r11 +.byte 0xc4,0xe2,0xab,0xf6,0x86,0x18,0x00,0x00,0x00 + adcxq %r11,%r10 + adoxq %rax,%r12 +.byte 0xc4,0xe2,0xa3,0xf6,0x86,0x20,0x00,0x00,0x00 + adcxq %r12,%r11 + adoxq %rax,%r13 + mulxq 40(%rsi),%r12,%rax + adcxq %r13,%r12 + adoxq %rax,%r14 + mulxq 48(%rsi),%r13,%rax + adcxq %r14,%r13 + adoxq %r15,%rax + mulxq 56(%rsi),%r14,%r15 + movq 8(%rsi),%rdx + adcxq %rax,%r14 + adoxq %rbp,%r15 + adcq 64(%rdi),%r15 + movq %r8,8(%rdi) + movq %r9,16(%rdi) + sbbq %rcx,%rcx + xorq %rbp,%rbp + + + mulxq 16(%rsi),%r8,%rbx + mulxq 24(%rsi),%r9,%rax + adcxq %r10,%r8 + adoxq %rbx,%r9 + mulxq 32(%rsi),%r10,%rbx + adcxq %r11,%r9 + adoxq %rax,%r10 +.byte 0xc4,0xe2,0xa3,0xf6,0x86,0x28,0x00,0x00,0x00 + adcxq %r12,%r10 + adoxq %rbx,%r11 +.byte 0xc4,0xe2,0x9b,0xf6,0x9e,0x30,0x00,0x00,0x00 + adcxq %r13,%r11 + adoxq %r14,%r12 +.byte 0xc4,0x62,0x93,0xf6,0xb6,0x38,0x00,0x00,0x00 + movq 16(%rsi),%rdx + adcxq %rax,%r12 + adoxq %rbx,%r13 + adcxq %r15,%r13 + adoxq %rbp,%r14 + adcxq %rbp,%r14 + + movq %r8,24(%rdi) + movq %r9,32(%rdi) + + mulxq 24(%rsi),%r8,%rbx + mulxq 32(%rsi),%r9,%rax + adcxq %r10,%r8 + adoxq %rbx,%r9 + mulxq 40(%rsi),%r10,%rbx + adcxq %r11,%r9 + adoxq %rax,%r10 +.byte 0xc4,0xe2,0xa3,0xf6,0x86,0x30,0x00,0x00,0x00 + adcxq %r12,%r10 + adoxq %r13,%r11 +.byte 0xc4,0x62,0x9b,0xf6,0xae,0x38,0x00,0x00,0x00 +.byte 0x3e + movq 24(%rsi),%rdx + adcxq %rbx,%r11 + adoxq %rax,%r12 + adcxq %r14,%r12 + movq %r8,40(%rdi) + movq %r9,48(%rdi) + mulxq 32(%rsi),%r8,%rax + adoxq %rbp,%r13 + adcxq %rbp,%r13 + + mulxq 40(%rsi),%r9,%rbx + adcxq %r10,%r8 + adoxq %rax,%r9 + mulxq 48(%rsi),%r10,%rax + adcxq %r11,%r9 + adoxq %r12,%r10 + mulxq 56(%rsi),%r11,%r12 + movq 32(%rsi),%rdx + movq 40(%rsi),%r14 + adcxq %rbx,%r10 + adoxq %rax,%r11 + movq 48(%rsi),%r15 + adcxq %r13,%r11 + adoxq %rbp,%r12 + adcxq %rbp,%r12 + + movq %r8,56(%rdi) + movq %r9,64(%rdi) + + mulxq %r14,%r9,%rax + movq 56(%rsi),%r8 + adcxq %r10,%r9 + mulxq %r15,%r10,%rbx + adoxq %rax,%r10 + adcxq %r11,%r10 + mulxq %r8,%r11,%rax + movq %r14,%rdx + adoxq %rbx,%r11 + adcxq %r12,%r11 + + adcxq %rbp,%rax + + mulxq %r15,%r14,%rbx + mulxq %r8,%r12,%r13 + movq %r15,%rdx + leaq 64(%rsi),%rsi + adcxq %r14,%r11 + adoxq %rbx,%r12 + adcxq %rax,%r12 + adoxq %rbp,%r13 + +.byte 0x67,0x67 + mulxq %r8,%r8,%r14 + adcxq %r8,%r13 + adcxq %rbp,%r14 + + cmpq 8+8(%rsp),%rsi + je .Lsqrx8x_outer_break + + negq %rcx + movq $-8,%rcx + movq %rbp,%r15 + movq 64(%rdi),%r8 + adcxq 72(%rdi),%r9 + adcxq 80(%rdi),%r10 + adcxq 88(%rdi),%r11 + adcq 96(%rdi),%r12 + adcq 104(%rdi),%r13 + adcq 112(%rdi),%r14 + adcq 120(%rdi),%r15 + leaq (%rsi),%rbp + leaq 128(%rdi),%rdi + sbbq %rax,%rax + + movq -64(%rsi),%rdx + movq %rax,16+8(%rsp) + movq %rdi,24+8(%rsp) + + + xorl %eax,%eax + jmp .Lsqrx8x_loop + +.align 32 +.Lsqrx8x_loop: + movq %r8,%rbx + mulxq 0(%rbp),%rax,%r8 + adcxq %rax,%rbx + adoxq %r9,%r8 + + mulxq 8(%rbp),%rax,%r9 + adcxq %rax,%r8 + adoxq %r10,%r9 + + mulxq 16(%rbp),%rax,%r10 + adcxq %rax,%r9 + adoxq %r11,%r10 + + mulxq 24(%rbp),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + +.byte 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x00 + adcxq %rax,%r11 + adoxq %r13,%r12 + + mulxq 40(%rbp),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + + mulxq 48(%rbp),%rax,%r14 + movq %rbx,(%rdi,%rcx,8) + movl $0,%ebx + adcxq %rax,%r13 + adoxq %r15,%r14 + +.byte 0xc4,0x62,0xfb,0xf6,0xbd,0x38,0x00,0x00,0x00 + movq 8(%rsi,%rcx,8),%rdx + adcxq %rax,%r14 + adoxq %rbx,%r15 + adcxq %rbx,%r15 + +.byte 0x67 + incq %rcx + jnz .Lsqrx8x_loop + + leaq 64(%rbp),%rbp + movq $-8,%rcx + cmpq 8+8(%rsp),%rbp + je .Lsqrx8x_break + + subq 16+8(%rsp),%rbx +.byte 0x66 + movq -64(%rsi),%rdx + adcxq 0(%rdi),%r8 + adcxq 8(%rdi),%r9 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + leaq 64(%rdi),%rdi +.byte 0x67 + sbbq %rax,%rax + xorl %ebx,%ebx + movq %rax,16+8(%rsp) + jmp .Lsqrx8x_loop + +.align 32 +.Lsqrx8x_break: + xorq %rbp,%rbp + subq 16+8(%rsp),%rbx + adcxq %rbp,%r8 + movq 24+8(%rsp),%rcx + adcxq %rbp,%r9 + movq 0(%rsi),%rdx + adcq $0,%r10 + movq %r8,0(%rdi) + adcq $0,%r11 + adcq $0,%r12 + adcq $0,%r13 + adcq $0,%r14 + adcq $0,%r15 + cmpq %rcx,%rdi + je .Lsqrx8x_outer_loop + + movq %r9,8(%rdi) + movq 8(%rcx),%r9 + movq %r10,16(%rdi) + movq 16(%rcx),%r10 + movq %r11,24(%rdi) + movq 24(%rcx),%r11 + movq %r12,32(%rdi) + movq 32(%rcx),%r12 + movq %r13,40(%rdi) + movq 40(%rcx),%r13 + movq %r14,48(%rdi) + movq 48(%rcx),%r14 + movq %r15,56(%rdi) + movq 56(%rcx),%r15 + movq %rcx,%rdi + jmp .Lsqrx8x_outer_loop + +.align 32 +.Lsqrx8x_outer_break: + movq %r9,72(%rdi) +.byte 102,72,15,126,217 + movq %r10,80(%rdi) + movq %r11,88(%rdi) + movq %r12,96(%rdi) + movq %r13,104(%rdi) + movq %r14,112(%rdi) + leaq 48+8(%rsp),%rdi + movq (%rsi,%rcx,1),%rdx + + movq 8(%rdi),%r11 + xorq %r10,%r10 + movq 0+8(%rsp),%r9 + adoxq %r11,%r11 + movq 16(%rdi),%r12 + movq 24(%rdi),%r13 + + +.align 32 +.Lsqrx4x_shift_n_add: + mulxq %rdx,%rax,%rbx + adoxq %r12,%r12 + adcxq %r10,%rax +.byte 0x48,0x8b,0x94,0x0e,0x08,0x00,0x00,0x00 +.byte 0x4c,0x8b,0x97,0x20,0x00,0x00,0x00 + adoxq %r13,%r13 + adcxq %r11,%rbx + movq 40(%rdi),%r11 + movq %rax,0(%rdi) + movq %rbx,8(%rdi) + + mulxq %rdx,%rax,%rbx + adoxq %r10,%r10 + adcxq %r12,%rax + movq 16(%rsi,%rcx,1),%rdx + movq 48(%rdi),%r12 + adoxq %r11,%r11 + adcxq %r13,%rbx + movq 56(%rdi),%r13 + movq %rax,16(%rdi) + movq %rbx,24(%rdi) + + mulxq %rdx,%rax,%rbx + adoxq %r12,%r12 + adcxq %r10,%rax + movq 24(%rsi,%rcx,1),%rdx + leaq 32(%rcx),%rcx + movq 64(%rdi),%r10 + adoxq %r13,%r13 + adcxq %r11,%rbx + movq 72(%rdi),%r11 + movq %rax,32(%rdi) + movq %rbx,40(%rdi) + + mulxq %rdx,%rax,%rbx + adoxq %r10,%r10 + adcxq %r12,%rax + jrcxz .Lsqrx4x_shift_n_add_break +.byte 0x48,0x8b,0x94,0x0e,0x00,0x00,0x00,0x00 + adoxq %r11,%r11 + adcxq %r13,%rbx + movq 80(%rdi),%r12 + movq 88(%rdi),%r13 + movq %rax,48(%rdi) + movq %rbx,56(%rdi) + leaq 64(%rdi),%rdi + nop + jmp .Lsqrx4x_shift_n_add + +.align 32 +.Lsqrx4x_shift_n_add_break: + adcxq %r13,%rbx + movq %rax,48(%rdi) + movq %rbx,56(%rdi) + leaq 64(%rdi),%rdi +.byte 102,72,15,126,213 +__bn_sqrx8x_reduction: + xorl %eax,%eax + movq 32+8(%rsp),%rbx + movq 48+8(%rsp),%rdx + leaq -64(%rbp,%r9,1),%rcx + + movq %rcx,0+8(%rsp) + movq %rdi,8+8(%rsp) + + leaq 48+8(%rsp),%rdi + jmp .Lsqrx8x_reduction_loop + +.align 32 +.Lsqrx8x_reduction_loop: + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + movq 24(%rdi),%r11 + movq 32(%rdi),%r12 + movq %rdx,%r8 + imulq %rbx,%rdx + movq 40(%rdi),%r13 + movq 48(%rdi),%r14 + movq 56(%rdi),%r15 + movq %rax,24+8(%rsp) + + leaq 64(%rdi),%rdi + xorq %rsi,%rsi + movq $-8,%rcx + jmp .Lsqrx8x_reduce + +.align 32 +.Lsqrx8x_reduce: + movq %r8,%rbx + mulxq 0(%rbp),%rax,%r8 + adcxq %rbx,%rax + adoxq %r9,%r8 + + mulxq 8(%rbp),%rbx,%r9 + adcxq %rbx,%r8 + adoxq %r10,%r9 + + mulxq 16(%rbp),%rbx,%r10 + adcxq %rbx,%r9 + adoxq %r11,%r10 + + mulxq 24(%rbp),%rbx,%r11 + adcxq %rbx,%r10 + adoxq %r12,%r11 + +.byte 0xc4,0x62,0xe3,0xf6,0xa5,0x20,0x00,0x00,0x00 + movq %rdx,%rax + movq %r8,%rdx + adcxq %rbx,%r11 + adoxq %r13,%r12 + + mulxq 32+8(%rsp),%rbx,%rdx + movq %rax,%rdx + movq %rax,64+48+8(%rsp,%rcx,8) + + mulxq 40(%rbp),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + + mulxq 48(%rbp),%rax,%r14 + adcxq %rax,%r13 + adoxq %r15,%r14 + + mulxq 56(%rbp),%rax,%r15 + movq %rbx,%rdx + adcxq %rax,%r14 + adoxq %rsi,%r15 + adcxq %rsi,%r15 + +.byte 0x67,0x67,0x67 + incq %rcx + jnz .Lsqrx8x_reduce + + movq %rsi,%rax + cmpq 0+8(%rsp),%rbp + jae .Lsqrx8x_no_tail + + movq 48+8(%rsp),%rdx + addq 0(%rdi),%r8 + leaq 64(%rbp),%rbp + movq $-8,%rcx + adcxq 8(%rdi),%r9 + adcxq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + leaq 64(%rdi),%rdi + sbbq %rax,%rax + + xorq %rsi,%rsi + movq %rax,16+8(%rsp) + jmp .Lsqrx8x_tail + +.align 32 +.Lsqrx8x_tail: + movq %r8,%rbx + mulxq 0(%rbp),%rax,%r8 + adcxq %rax,%rbx + adoxq %r9,%r8 + + mulxq 8(%rbp),%rax,%r9 + adcxq %rax,%r8 + adoxq %r10,%r9 + + mulxq 16(%rbp),%rax,%r10 + adcxq %rax,%r9 + adoxq %r11,%r10 + + mulxq 24(%rbp),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + +.byte 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x00 + adcxq %rax,%r11 + adoxq %r13,%r12 + + mulxq 40(%rbp),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + + mulxq 48(%rbp),%rax,%r14 + adcxq %rax,%r13 + adoxq %r15,%r14 + + mulxq 56(%rbp),%rax,%r15 + movq 72+48+8(%rsp,%rcx,8),%rdx + adcxq %rax,%r14 + adoxq %rsi,%r15 + movq %rbx,(%rdi,%rcx,8) + movq %r8,%rbx + adcxq %rsi,%r15 + + incq %rcx + jnz .Lsqrx8x_tail + + cmpq 0+8(%rsp),%rbp + jae .Lsqrx8x_tail_done + + subq 16+8(%rsp),%rsi + movq 48+8(%rsp),%rdx + leaq 64(%rbp),%rbp + adcq 0(%rdi),%r8 + adcq 8(%rdi),%r9 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + leaq 64(%rdi),%rdi + sbbq %rax,%rax + subq $8,%rcx + + xorq %rsi,%rsi + movq %rax,16+8(%rsp) + jmp .Lsqrx8x_tail + +.align 32 +.Lsqrx8x_tail_done: + xorq %rax,%rax + addq 24+8(%rsp),%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + adcq $0,%r12 + adcq $0,%r13 + adcq $0,%r14 + adcq $0,%r15 + adcq $0,%rax + + subq 16+8(%rsp),%rsi +.Lsqrx8x_no_tail: + adcq 0(%rdi),%r8 +.byte 102,72,15,126,217 + adcq 8(%rdi),%r9 + movq 56(%rbp),%rsi +.byte 102,72,15,126,213 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + adcq $0,%rax + + movq 32+8(%rsp),%rbx + movq 64(%rdi,%rcx,1),%rdx + + movq %r8,0(%rdi) + leaq 64(%rdi),%r8 + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + leaq 64(%rdi,%rcx,1),%rdi + cmpq 8+8(%rsp),%r8 + jb .Lsqrx8x_reduction_loop + .byte 0xf3,0xc3 +.size bn_sqrx8x_internal,.-bn_sqrx8x_internal +.align 32 +__bn_postx4x_internal: + movq 0(%rbp),%r12 + movq %rcx,%r10 + movq %rcx,%r9 + negq %rax + sarq $3+2,%rcx + +.byte 102,72,15,126,202 +.byte 102,72,15,126,206 + decq %r12 + movq 8(%rbp),%r13 + xorq %r8,%r8 + movq 16(%rbp),%r14 + movq 24(%rbp),%r15 + jmp .Lsqrx4x_sub_entry + +.align 16 +.Lsqrx4x_sub: + movq 0(%rbp),%r12 + movq 8(%rbp),%r13 + movq 16(%rbp),%r14 + movq 24(%rbp),%r15 +.Lsqrx4x_sub_entry: + andnq %rax,%r12,%r12 + leaq 32(%rbp),%rbp + andnq %rax,%r13,%r13 + andnq %rax,%r14,%r14 + andnq %rax,%r15,%r15 + + negq %r8 + adcq 0(%rdi),%r12 + adcq 8(%rdi),%r13 + adcq 16(%rdi),%r14 + adcq 24(%rdi),%r15 + movq %r12,0(%rdx) + leaq 32(%rdi),%rdi + movq %r13,8(%rdx) + sbbq %r8,%r8 + movq %r14,16(%rdx) + movq %r15,24(%rdx) + leaq 32(%rdx),%rdx + + incq %rcx + jnz .Lsqrx4x_sub + + negq %r9 + + .byte 0xf3,0xc3 +.size __bn_postx4x_internal,.-__bn_postx4x_internal .globl bn_scatter5 .hidden bn_scatter5 .type bn_scatter5,@function
diff --git a/third_party/boringssl/mac-x86/crypto/fipsmodule/x86-mont.S b/third_party/boringssl/mac-x86/crypto/fipsmodule/x86-mont.S index e7353ae..3b1954d 100644 --- a/third_party/boringssl/mac-x86/crypto/fipsmodule/x86-mont.S +++ b/third_party/boringssl/mac-x86/crypto/fipsmodule/x86-mont.S
@@ -445,16 +445,18 @@ leal 1(%edx),%edx jge L017sub sbbl $0,%eax - andl %eax,%esi - notl %eax - movl %edi,%ebp - andl %eax,%ebp - orl %ebp,%esi + movl $-1,%edx + xorl %eax,%edx + jmp L018copy .align 4,0x90 L018copy: - movl (%esi,%ebx,4),%eax - movl %eax,(%edi,%ebx,4) + movl 32(%esp,%ebx,4),%esi + movl (%edi,%ebx,4),%ebp movl %ecx,32(%esp,%ebx,4) + andl %eax,%esi + andl %edx,%ebp + orl %esi,%ebp + movl %ebp,(%edi,%ebx,4) decl %ebx jge L018copy movl 24(%esp),%esp
diff --git a/third_party/boringssl/mac-x86_64/crypto/fipsmodule/p256-x86_64-asm.S b/third_party/boringssl/mac-x86_64/crypto/fipsmodule/p256-x86_64-asm.S index bc66e99..13658931 100644 --- a/third_party/boringssl/mac-x86_64/crypto/fipsmodule/p256-x86_64-asm.S +++ b/third_party/boringssl/mac-x86_64/crypto/fipsmodule/p256-x86_64-asm.S
@@ -90,6 +90,11 @@ .p2align 5 _ecp_nistz256_ord_mul_mont: + leaq _OPENSSL_ia32cap_P(%rip),%rcx + movq 8(%rcx),%rcx + andl $0x80100,%ecx + cmpl $0x80100,%ecx + je L$ecp_nistz256_ord_mul_montx pushq %rbp pushq %rbx @@ -413,6 +418,11 @@ .p2align 5 _ecp_nistz256_ord_sqr_mont: + leaq _OPENSSL_ia32cap_P(%rip),%rcx + movq 8(%rcx),%rcx + andl $0x80100,%ecx + cmpl $0x80100,%ecx + je L$ecp_nistz256_ord_sqr_montx pushq %rbp pushq %rbx @@ -695,6 +705,450 @@ +.p2align 5 +ecp_nistz256_ord_mul_montx: + +L$ecp_nistz256_ord_mul_montx: + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$ord_mulx_body: + + movq %rdx,%rbx + movq 0(%rdx),%rdx + movq 0(%rsi),%r9 + movq 8(%rsi),%r10 + movq 16(%rsi),%r11 + movq 24(%rsi),%r12 + leaq -128(%rsi),%rsi + leaq L$ord-128(%rip),%r14 + movq L$ordK(%rip),%r15 + + + mulxq %r9,%r8,%r9 + mulxq %r10,%rcx,%r10 + mulxq %r11,%rbp,%r11 + addq %rcx,%r9 + mulxq %r12,%rcx,%r12 + movq %r8,%rdx + mulxq %r15,%rdx,%rax + adcq %rbp,%r10 + adcq %rcx,%r11 + adcq $0,%r12 + + + xorq %r13,%r13 + mulxq 0+128(%r14),%rcx,%rbp + adcxq %rcx,%r8 + adoxq %rbp,%r9 + + mulxq 8+128(%r14),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + + mulxq 16+128(%r14),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 24+128(%r14),%rcx,%rbp + movq 8(%rbx),%rdx + adcxq %rcx,%r11 + adoxq %rbp,%r12 + adcxq %r8,%r12 + adoxq %r8,%r13 + adcq $0,%r13 + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r9,%rdx + mulxq %r15,%rdx,%rax + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + adcxq %r8,%r13 + adoxq %r8,%r8 + adcq $0,%r8 + + + mulxq 0+128(%r14),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + + mulxq 8+128(%r14),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 16+128(%r14),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 24+128(%r14),%rcx,%rbp + movq 16(%rbx),%rdx + adcxq %rcx,%r12 + adoxq %rbp,%r13 + adcxq %r9,%r13 + adoxq %r9,%r8 + adcq $0,%r8 + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r10,%rdx + mulxq %r15,%rdx,%rax + adcxq %rcx,%r13 + adoxq %rbp,%r8 + + adcxq %r9,%r8 + adoxq %r9,%r9 + adcq $0,%r9 + + + mulxq 0+128(%r14),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 8+128(%r14),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 16+128(%r14),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 24+128(%r14),%rcx,%rbp + movq 24(%rbx),%rdx + adcxq %rcx,%r13 + adoxq %rbp,%r8 + adcxq %r10,%r8 + adoxq %r10,%r9 + adcq $0,%r9 + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r13 + adoxq %rbp,%r8 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r11,%rdx + mulxq %r15,%rdx,%rax + adcxq %rcx,%r8 + adoxq %rbp,%r9 + + adcxq %r10,%r9 + adoxq %r10,%r10 + adcq $0,%r10 + + + mulxq 0+128(%r14),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 8+128(%r14),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 16+128(%r14),%rcx,%rbp + adcxq %rcx,%r13 + adoxq %rbp,%r8 + + mulxq 24+128(%r14),%rcx,%rbp + leaq 128(%r14),%r14 + movq %r12,%rbx + adcxq %rcx,%r8 + adoxq %rbp,%r9 + movq %r13,%rdx + adcxq %r11,%r9 + adoxq %r11,%r10 + adcq $0,%r10 + + + + movq %r8,%rcx + subq 0(%r14),%r12 + sbbq 8(%r14),%r13 + sbbq 16(%r14),%r8 + movq %r9,%rbp + sbbq 24(%r14),%r9 + sbbq $0,%r10 + + cmovcq %rbx,%r12 + cmovcq %rdx,%r13 + cmovcq %rcx,%r8 + cmovcq %rbp,%r9 + + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + movq 0(%rsp),%r15 + + movq 8(%rsp),%r14 + + movq 16(%rsp),%r13 + + movq 24(%rsp),%r12 + + movq 32(%rsp),%rbx + + movq 40(%rsp),%rbp + + leaq 48(%rsp),%rsp + +L$ord_mulx_epilogue: + .byte 0xf3,0xc3 + + + + +.p2align 5 +ecp_nistz256_ord_sqr_montx: + +L$ecp_nistz256_ord_sqr_montx: + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$ord_sqrx_body: + + movq %rdx,%rbx + movq 0(%rsi),%rdx + movq 8(%rsi),%r14 + movq 16(%rsi),%r15 + movq 24(%rsi),%r8 + leaq L$ord(%rip),%rsi + jmp L$oop_ord_sqrx + +.p2align 5 +L$oop_ord_sqrx: + mulxq %r14,%r9,%r10 + mulxq %r15,%rcx,%r11 + movq %rdx,%rax +.byte 102,73,15,110,206 + mulxq %r8,%rbp,%r12 + movq %r14,%rdx + addq %rcx,%r10 +.byte 102,73,15,110,215 + adcq %rbp,%r11 + adcq $0,%r12 + xorq %r13,%r13 + + mulxq %r15,%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq %r8,%rcx,%rbp + movq %r15,%rdx + adcxq %rcx,%r12 + adoxq %rbp,%r13 + adcq $0,%r13 + + mulxq %r8,%rcx,%r14 + movq %rax,%rdx +.byte 102,73,15,110,216 + xorq %r15,%r15 + adcxq %r9,%r9 + adoxq %rcx,%r13 + adcxq %r10,%r10 + adoxq %r15,%r14 + + + mulxq %rdx,%r8,%rbp +.byte 102,72,15,126,202 + adcxq %r11,%r11 + adoxq %rbp,%r9 + adcxq %r12,%r12 + mulxq %rdx,%rcx,%rax +.byte 102,72,15,126,210 + adcxq %r13,%r13 + adoxq %rcx,%r10 + adcxq %r14,%r14 + mulxq %rdx,%rcx,%rbp +.byte 0x67 +.byte 102,72,15,126,218 + adoxq %rax,%r11 + adcxq %r15,%r15 + adoxq %rcx,%r12 + adoxq %rbp,%r13 + mulxq %rdx,%rcx,%rax + adoxq %rcx,%r14 + adoxq %rax,%r15 + + + movq %r8,%rdx + mulxq 32(%rsi),%rdx,%rcx + + xorq %rax,%rax + mulxq 0(%rsi),%rcx,%rbp + adcxq %rcx,%r8 + adoxq %rbp,%r9 + mulxq 8(%rsi),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + mulxq 16(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + mulxq 24(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r8 + adcxq %rax,%r8 + + + movq %r9,%rdx + mulxq 32(%rsi),%rdx,%rcx + + mulxq 0(%rsi),%rcx,%rbp + adoxq %rcx,%r9 + adcxq %rbp,%r10 + mulxq 8(%rsi),%rcx,%rbp + adoxq %rcx,%r10 + adcxq %rbp,%r11 + mulxq 16(%rsi),%rcx,%rbp + adoxq %rcx,%r11 + adcxq %rbp,%r8 + mulxq 24(%rsi),%rcx,%rbp + adoxq %rcx,%r8 + adcxq %rbp,%r9 + adoxq %rax,%r9 + + + movq %r10,%rdx + mulxq 32(%rsi),%rdx,%rcx + + mulxq 0(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + mulxq 8(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r8 + mulxq 16(%rsi),%rcx,%rbp + adcxq %rcx,%r8 + adoxq %rbp,%r9 + mulxq 24(%rsi),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + adcxq %rax,%r10 + + + movq %r11,%rdx + mulxq 32(%rsi),%rdx,%rcx + + mulxq 0(%rsi),%rcx,%rbp + adoxq %rcx,%r11 + adcxq %rbp,%r8 + mulxq 8(%rsi),%rcx,%rbp + adoxq %rcx,%r8 + adcxq %rbp,%r9 + mulxq 16(%rsi),%rcx,%rbp + adoxq %rcx,%r9 + adcxq %rbp,%r10 + mulxq 24(%rsi),%rcx,%rbp + adoxq %rcx,%r10 + adcxq %rbp,%r11 + adoxq %rax,%r11 + + + addq %r8,%r12 + adcq %r13,%r9 + movq %r12,%rdx + adcq %r14,%r10 + adcq %r15,%r11 + movq %r9,%r14 + adcq $0,%rax + + + subq 0(%rsi),%r12 + movq %r10,%r15 + sbbq 8(%rsi),%r9 + sbbq 16(%rsi),%r10 + movq %r11,%r8 + sbbq 24(%rsi),%r11 + sbbq $0,%rax + + cmovncq %r12,%rdx + cmovncq %r9,%r14 + cmovncq %r10,%r15 + cmovncq %r11,%r8 + + decq %rbx + jnz L$oop_ord_sqrx + + movq %rdx,0(%rdi) + movq %r14,8(%rdi) + pxor %xmm1,%xmm1 + movq %r15,16(%rdi) + pxor %xmm2,%xmm2 + movq %r8,24(%rdi) + pxor %xmm3,%xmm3 + + movq 0(%rsp),%r15 + + movq 8(%rsp),%r14 + + movq 16(%rsp),%r13 + + movq 24(%rsp),%r12 + + movq 32(%rsp),%rbx + + movq 40(%rsp),%rbp + + leaq 48(%rsp),%rsp + +L$ord_sqrx_epilogue: + .byte 0xf3,0xc3 + + + + @@ -705,6 +1159,9 @@ .p2align 5 _ecp_nistz256_mul_mont: + leaq _OPENSSL_ia32cap_P(%rip),%rcx + movq 8(%rcx),%rcx + andl $0x80100,%ecx L$mul_mont: pushq %rbp @@ -719,6 +1176,8 @@ pushq %r15 L$mul_body: + cmpl $0x80100,%ecx + je L$mul_montx movq %rdx,%rbx movq 0(%rdx),%rax movq 0(%rsi),%r9 @@ -727,6 +1186,19 @@ movq 24(%rsi),%r12 call __ecp_nistz256_mul_montq + jmp L$mul_mont_done + +.p2align 5 +L$mul_montx: + movq %rdx,%rbx + movq 0(%rdx),%rdx + movq 0(%rsi),%r9 + movq 8(%rsi),%r10 + movq 16(%rsi),%r11 + movq 24(%rsi),%r12 + leaq -128(%rsi),%rsi + + call __ecp_nistz256_mul_montx L$mul_mont_done: movq 0(%rsp),%r15 @@ -976,6 +1448,9 @@ .p2align 5 _ecp_nistz256_sqr_mont: + leaq _OPENSSL_ia32cap_P(%rip),%rcx + movq 8(%rcx),%rcx + andl $0x80100,%ecx pushq %rbp pushq %rbx @@ -989,12 +1464,25 @@ pushq %r15 L$sqr_body: + cmpl $0x80100,%ecx + je L$sqr_montx movq 0(%rsi),%rax movq 8(%rsi),%r14 movq 16(%rsi),%r15 movq 24(%rsi),%r8 call __ecp_nistz256_sqr_montq + jmp L$sqr_mont_done + +.p2align 5 +L$sqr_montx: + movq 0(%rsi),%rdx + movq 8(%rsi),%r14 + movq 16(%rsi),%r15 + movq 24(%rsi),%r8 + leaq -128(%rsi),%rsi + + call __ecp_nistz256_sqr_montx L$sqr_mont_done: movq 0(%rsp),%r15 @@ -1177,6 +1665,300 @@ .byte 0xf3,0xc3 +.p2align 5 +__ecp_nistz256_mul_montx: + + + mulxq %r9,%r8,%r9 + mulxq %r10,%rcx,%r10 + movq $32,%r14 + xorq %r13,%r13 + mulxq %r11,%rbp,%r11 + movq L$poly+24(%rip),%r15 + adcq %rcx,%r9 + mulxq %r12,%rcx,%r12 + movq %r8,%rdx + adcq %rbp,%r10 + shlxq %r14,%r8,%rbp + adcq %rcx,%r11 + shrxq %r14,%r8,%rcx + adcq $0,%r12 + + + + addq %rbp,%r9 + adcq %rcx,%r10 + + mulxq %r15,%rcx,%rbp + movq 8(%rbx),%rdx + adcq %rcx,%r11 + adcq %rbp,%r12 + adcq $0,%r13 + xorq %r8,%r8 + + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r9 + adoxq %rbp,%r10 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r9,%rdx + adcxq %rcx,%r12 + shlxq %r14,%r9,%rcx + adoxq %rbp,%r13 + shrxq %r14,%r9,%rbp + + adcxq %r8,%r13 + adoxq %r8,%r8 + adcq $0,%r8 + + + + addq %rcx,%r10 + adcq %rbp,%r11 + + mulxq %r15,%rcx,%rbp + movq 16(%rbx),%rdx + adcq %rcx,%r12 + adcq %rbp,%r13 + adcq $0,%r8 + xorq %r9,%r9 + + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r10 + adoxq %rbp,%r11 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r10,%rdx + adcxq %rcx,%r13 + shlxq %r14,%r10,%rcx + adoxq %rbp,%r8 + shrxq %r14,%r10,%rbp + + adcxq %r9,%r8 + adoxq %r9,%r9 + adcq $0,%r9 + + + + addq %rcx,%r11 + adcq %rbp,%r12 + + mulxq %r15,%rcx,%rbp + movq 24(%rbx),%rdx + adcq %rcx,%r13 + adcq %rbp,%r8 + adcq $0,%r9 + xorq %r10,%r10 + + + + mulxq 0+128(%rsi),%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq 8+128(%rsi),%rcx,%rbp + adcxq %rcx,%r12 + adoxq %rbp,%r13 + + mulxq 16+128(%rsi),%rcx,%rbp + adcxq %rcx,%r13 + adoxq %rbp,%r8 + + mulxq 24+128(%rsi),%rcx,%rbp + movq %r11,%rdx + adcxq %rcx,%r8 + shlxq %r14,%r11,%rcx + adoxq %rbp,%r9 + shrxq %r14,%r11,%rbp + + adcxq %r10,%r9 + adoxq %r10,%r10 + adcq $0,%r10 + + + + addq %rcx,%r12 + adcq %rbp,%r13 + + mulxq %r15,%rcx,%rbp + movq %r12,%rbx + movq L$poly+8(%rip),%r14 + adcq %rcx,%r8 + movq %r13,%rdx + adcq %rbp,%r9 + adcq $0,%r10 + + + + xorl %eax,%eax + movq %r8,%rcx + sbbq $-1,%r12 + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%rbp + sbbq %r15,%r9 + sbbq $0,%r10 + + cmovcq %rbx,%r12 + cmovcq %rdx,%r13 + movq %r12,0(%rdi) + cmovcq %rcx,%r8 + movq %r13,8(%rdi) + cmovcq %rbp,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 + + + +.p2align 5 +__ecp_nistz256_sqr_montx: + mulxq %r14,%r9,%r10 + mulxq %r15,%rcx,%r11 + xorl %eax,%eax + adcq %rcx,%r10 + mulxq %r8,%rbp,%r12 + movq %r14,%rdx + adcq %rbp,%r11 + adcq $0,%r12 + xorq %r13,%r13 + + + mulxq %r15,%rcx,%rbp + adcxq %rcx,%r11 + adoxq %rbp,%r12 + + mulxq %r8,%rcx,%rbp + movq %r15,%rdx + adcxq %rcx,%r12 + adoxq %rbp,%r13 + adcq $0,%r13 + + + mulxq %r8,%rcx,%r14 + movq 0+128(%rsi),%rdx + xorq %r15,%r15 + adcxq %r9,%r9 + adoxq %rcx,%r13 + adcxq %r10,%r10 + adoxq %r15,%r14 + + mulxq %rdx,%r8,%rbp + movq 8+128(%rsi),%rdx + adcxq %r11,%r11 + adoxq %rbp,%r9 + adcxq %r12,%r12 + mulxq %rdx,%rcx,%rax + movq 16+128(%rsi),%rdx + adcxq %r13,%r13 + adoxq %rcx,%r10 + adcxq %r14,%r14 +.byte 0x67 + mulxq %rdx,%rcx,%rbp + movq 24+128(%rsi),%rdx + adoxq %rax,%r11 + adcxq %r15,%r15 + adoxq %rcx,%r12 + movq $32,%rsi + adoxq %rbp,%r13 +.byte 0x67,0x67 + mulxq %rdx,%rcx,%rax + movq L$poly+24(%rip),%rdx + adoxq %rcx,%r14 + shlxq %rsi,%r8,%rcx + adoxq %rax,%r15 + shrxq %rsi,%r8,%rax + movq %rdx,%rbp + + + addq %rcx,%r9 + adcq %rax,%r10 + + mulxq %r8,%rcx,%r8 + adcq %rcx,%r11 + shlxq %rsi,%r9,%rcx + adcq $0,%r8 + shrxq %rsi,%r9,%rax + + + addq %rcx,%r10 + adcq %rax,%r11 + + mulxq %r9,%rcx,%r9 + adcq %rcx,%r8 + shlxq %rsi,%r10,%rcx + adcq $0,%r9 + shrxq %rsi,%r10,%rax + + + addq %rcx,%r11 + adcq %rax,%r8 + + mulxq %r10,%rcx,%r10 + adcq %rcx,%r9 + shlxq %rsi,%r11,%rcx + adcq $0,%r10 + shrxq %rsi,%r11,%rax + + + addq %rcx,%r8 + adcq %rax,%r9 + + mulxq %r11,%rcx,%r11 + adcq %rcx,%r10 + adcq $0,%r11 + + xorq %rdx,%rdx + addq %r8,%r12 + movq L$poly+8(%rip),%rsi + adcq %r9,%r13 + movq %r12,%r8 + adcq %r10,%r14 + adcq %r11,%r15 + movq %r13,%r9 + adcq $0,%rdx + + subq $-1,%r12 + movq %r14,%r10 + sbbq %rsi,%r13 + sbbq $0,%r14 + movq %r15,%r11 + sbbq %rbp,%r15 + sbbq $0,%rdx + + cmovcq %r8,%r12 + cmovcq %r9,%r13 + movq %r12,0(%rdi) + cmovcq %r10,%r14 + movq %r13,8(%rdi) + cmovcq %r11,%r15 + movq %r14,16(%rdi) + movq %r15,24(%rdi) + + .byte 0xf3,0xc3 + + .globl _ecp_nistz256_select_w5 .private_extern _ecp_nistz256_select_w5 @@ -1561,6 +2343,11 @@ .p2align 5 _ecp_nistz256_point_double: + leaq _OPENSSL_ia32cap_P(%rip),%rcx + movq 8(%rcx),%rcx + andl $0x80100,%ecx + cmpl $0x80100,%ecx + je L$point_doublex pushq %rbp pushq %rbx @@ -1784,6 +2571,11 @@ .p2align 5 _ecp_nistz256_point_add: + leaq _OPENSSL_ia32cap_P(%rip),%rcx + movq 8(%rcx),%rcx + andl $0x80100,%ecx + cmpl $0x80100,%ecx + je L$point_addx pushq %rbp pushq %rbx @@ -2201,6 +2993,11 @@ .p2align 5 _ecp_nistz256_point_add_affine: + leaq _OPENSSL_ia32cap_P(%rip),%rcx + movq 8(%rcx),%rcx + andl $0x80100,%ecx + cmpl $0x80100,%ecx + je L$point_add_affinex pushq %rbp pushq %rbx @@ -2518,4 +3315,1091 @@ .byte 0xf3,0xc3 + +.p2align 5 +__ecp_nistz256_add_tox: + xorq %r11,%r11 + adcq 0(%rbx),%r12 + adcq 8(%rbx),%r13 + movq %r12,%rax + adcq 16(%rbx),%r8 + adcq 24(%rbx),%r9 + movq %r13,%rbp + adcq $0,%r11 + + xorq %r10,%r10 + sbbq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + cmovcq %rbp,%r13 + movq %r12,0(%rdi) + cmovcq %rcx,%r8 + movq %r13,8(%rdi) + cmovcq %r10,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 + + + +.p2align 5 +__ecp_nistz256_sub_fromx: + xorq %r11,%r11 + sbbq 0(%rbx),%r12 + sbbq 8(%rbx),%r13 + movq %r12,%rax + sbbq 16(%rbx),%r8 + sbbq 24(%rbx),%r9 + movq %r13,%rbp + sbbq $0,%r11 + + xorq %r10,%r10 + adcq $-1,%r12 + movq %r8,%rcx + adcq %r14,%r13 + adcq $0,%r8 + movq %r9,%r10 + adcq %r15,%r9 + + btq $0,%r11 + cmovncq %rax,%r12 + cmovncq %rbp,%r13 + movq %r12,0(%rdi) + cmovncq %rcx,%r8 + movq %r13,8(%rdi) + cmovncq %r10,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 + + + +.p2align 5 +__ecp_nistz256_subx: + xorq %r11,%r11 + sbbq %r12,%rax + sbbq %r13,%rbp + movq %rax,%r12 + sbbq %r8,%rcx + sbbq %r9,%r10 + movq %rbp,%r13 + sbbq $0,%r11 + + xorq %r9,%r9 + adcq $-1,%rax + movq %rcx,%r8 + adcq %r14,%rbp + adcq $0,%rcx + movq %r10,%r9 + adcq %r15,%r10 + + btq $0,%r11 + cmovcq %rax,%r12 + cmovcq %rbp,%r13 + cmovcq %rcx,%r8 + cmovcq %r10,%r9 + + .byte 0xf3,0xc3 + + + +.p2align 5 +__ecp_nistz256_mul_by_2x: + xorq %r11,%r11 + adcq %r12,%r12 + adcq %r13,%r13 + movq %r12,%rax + adcq %r8,%r8 + adcq %r9,%r9 + movq %r13,%rbp + adcq $0,%r11 + + xorq %r10,%r10 + sbbq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + cmovcq %rbp,%r13 + movq %r12,0(%rdi) + cmovcq %rcx,%r8 + movq %r13,8(%rdi) + cmovcq %r10,%r9 + movq %r8,16(%rdi) + movq %r9,24(%rdi) + + .byte 0xf3,0xc3 + + +.p2align 5 +ecp_nistz256_point_doublex: + +L$point_doublex: + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $160+8,%rsp + +L$point_doublex_body: + +L$point_double_shortcutx: + movdqu 0(%rsi),%xmm0 + movq %rsi,%rbx + movdqu 16(%rsi),%xmm1 + movq 32+0(%rsi),%r12 + movq 32+8(%rsi),%r13 + movq 32+16(%rsi),%r8 + movq 32+24(%rsi),%r9 + movq L$poly+8(%rip),%r14 + movq L$poly+24(%rip),%r15 + movdqa %xmm0,96(%rsp) + movdqa %xmm1,96+16(%rsp) + leaq 32(%rdi),%r10 + leaq 64(%rdi),%r11 +.byte 102,72,15,110,199 +.byte 102,73,15,110,202 +.byte 102,73,15,110,211 + + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_by_2x + + movq 64+0(%rsi),%rdx + movq 64+8(%rsi),%r14 + movq 64+16(%rsi),%r15 + movq 64+24(%rsi),%r8 + leaq 64-128(%rsi),%rsi + leaq 64(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 0+0(%rsp),%rdx + movq 8+0(%rsp),%r14 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r15 + movq 24+0(%rsp),%r8 + leaq 0(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 32(%rbx),%rdx + movq 64+0(%rbx),%r9 + movq 64+8(%rbx),%r10 + movq 64+16(%rbx),%r11 + movq 64+24(%rbx),%r12 + leaq 64-128(%rbx),%rsi + leaq 32(%rbx),%rbx +.byte 102,72,15,126,215 + call __ecp_nistz256_mul_montx + call __ecp_nistz256_mul_by_2x + + movq 96+0(%rsp),%r12 + movq 96+8(%rsp),%r13 + leaq 64(%rsp),%rbx + movq 96+16(%rsp),%r8 + movq 96+24(%rsp),%r9 + leaq 32(%rsp),%rdi + call __ecp_nistz256_add_tox + + movq 96+0(%rsp),%r12 + movq 96+8(%rsp),%r13 + leaq 64(%rsp),%rbx + movq 96+16(%rsp),%r8 + movq 96+24(%rsp),%r9 + leaq 64(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 0+0(%rsp),%rdx + movq 8+0(%rsp),%r14 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r15 + movq 24+0(%rsp),%r8 +.byte 102,72,15,126,207 + call __ecp_nistz256_sqr_montx + xorq %r9,%r9 + movq %r12,%rax + addq $-1,%r12 + movq %r13,%r10 + adcq %rsi,%r13 + movq %r14,%rcx + adcq $0,%r14 + movq %r15,%r8 + adcq %rbp,%r15 + adcq $0,%r9 + xorq %rsi,%rsi + testq $1,%rax + + cmovzq %rax,%r12 + cmovzq %r10,%r13 + cmovzq %rcx,%r14 + cmovzq %r8,%r15 + cmovzq %rsi,%r9 + + movq %r13,%rax + shrq $1,%r12 + shlq $63,%rax + movq %r14,%r10 + shrq $1,%r13 + orq %rax,%r12 + shlq $63,%r10 + movq %r15,%rcx + shrq $1,%r14 + orq %r10,%r13 + shlq $63,%rcx + movq %r12,0(%rdi) + shrq $1,%r15 + movq %r13,8(%rdi) + shlq $63,%r9 + orq %rcx,%r14 + orq %r9,%r15 + movq %r14,16(%rdi) + movq %r15,24(%rdi) + movq 64(%rsp),%rdx + leaq 64(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 128(%rsp),%rdi + call __ecp_nistz256_mul_by_2x + + leaq 32(%rsp),%rbx + leaq 32(%rsp),%rdi + call __ecp_nistz256_add_tox + + movq 96(%rsp),%rdx + leaq 96(%rsp),%rbx + movq 0+0(%rsp),%r9 + movq 8+0(%rsp),%r10 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r11 + movq 24+0(%rsp),%r12 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 128(%rsp),%rdi + call __ecp_nistz256_mul_by_2x + + movq 0+32(%rsp),%rdx + movq 8+32(%rsp),%r14 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r15 + movq 24+32(%rsp),%r8 +.byte 102,72,15,126,199 + call __ecp_nistz256_sqr_montx + + leaq 128(%rsp),%rbx + movq %r14,%r8 + movq %r15,%r9 + movq %rsi,%r14 + movq %rbp,%r15 + call __ecp_nistz256_sub_fromx + + movq 0+0(%rsp),%rax + movq 0+8(%rsp),%rbp + movq 0+16(%rsp),%rcx + movq 0+24(%rsp),%r10 + leaq 0(%rsp),%rdi + call __ecp_nistz256_subx + + movq 32(%rsp),%rdx + leaq 32(%rsp),%rbx + movq %r12,%r14 + xorl %ecx,%ecx + movq %r12,0+0(%rsp) + movq %r13,%r10 + movq %r13,0+8(%rsp) + cmovzq %r8,%r11 + movq %r8,0+16(%rsp) + leaq 0-128(%rsp),%rsi + cmovzq %r9,%r12 + movq %r9,0+24(%rsp) + movq %r14,%r9 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montx + +.byte 102,72,15,126,203 +.byte 102,72,15,126,207 + call __ecp_nistz256_sub_fromx + + leaq 160+56(%rsp),%rsi + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbx + + movq -8(%rsi),%rbp + + leaq (%rsi),%rsp + +L$point_doublex_epilogue: + .byte 0xf3,0xc3 + + + +.p2align 5 +ecp_nistz256_point_addx: + +L$point_addx: + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $576+8,%rsp + +L$point_addx_body: + + movdqu 0(%rsi),%xmm0 + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm3 + movdqu 64(%rsi),%xmm4 + movdqu 80(%rsi),%xmm5 + movq %rsi,%rbx + movq %rdx,%rsi + movdqa %xmm0,384(%rsp) + movdqa %xmm1,384+16(%rsp) + movdqa %xmm2,416(%rsp) + movdqa %xmm3,416+16(%rsp) + movdqa %xmm4,448(%rsp) + movdqa %xmm5,448+16(%rsp) + por %xmm4,%xmm5 + + movdqu 0(%rsi),%xmm0 + pshufd $0xb1,%xmm5,%xmm3 + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + por %xmm3,%xmm5 + movdqu 48(%rsi),%xmm3 + movq 64+0(%rsi),%rdx + movq 64+8(%rsi),%r14 + movq 64+16(%rsi),%r15 + movq 64+24(%rsi),%r8 + movdqa %xmm0,480(%rsp) + pshufd $0x1e,%xmm5,%xmm4 + movdqa %xmm1,480+16(%rsp) + movdqu 64(%rsi),%xmm0 + movdqu 80(%rsi),%xmm1 + movdqa %xmm2,512(%rsp) + movdqa %xmm3,512+16(%rsp) + por %xmm4,%xmm5 + pxor %xmm4,%xmm4 + por %xmm0,%xmm1 +.byte 102,72,15,110,199 + + leaq 64-128(%rsi),%rsi + movq %rdx,544+0(%rsp) + movq %r14,544+8(%rsp) + movq %r15,544+16(%rsp) + movq %r8,544+24(%rsp) + leaq 96(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + pcmpeqd %xmm4,%xmm5 + pshufd $0xb1,%xmm1,%xmm4 + por %xmm1,%xmm4 + pshufd $0,%xmm5,%xmm5 + pshufd $0x1e,%xmm4,%xmm3 + por %xmm3,%xmm4 + pxor %xmm3,%xmm3 + pcmpeqd %xmm3,%xmm4 + pshufd $0,%xmm4,%xmm4 + movq 64+0(%rbx),%rdx + movq 64+8(%rbx),%r14 + movq 64+16(%rbx),%r15 + movq 64+24(%rbx),%r8 +.byte 102,72,15,110,203 + + leaq 64-128(%rbx),%rsi + leaq 32(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 544(%rsp),%rdx + leaq 544(%rsp),%rbx + movq 0+96(%rsp),%r9 + movq 8+96(%rsp),%r10 + leaq -128+96(%rsp),%rsi + movq 16+96(%rsp),%r11 + movq 24+96(%rsp),%r12 + leaq 224(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 448(%rsp),%rdx + leaq 448(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 256(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 416(%rsp),%rdx + leaq 416(%rsp),%rbx + movq 0+224(%rsp),%r9 + movq 8+224(%rsp),%r10 + leaq -128+224(%rsp),%rsi + movq 16+224(%rsp),%r11 + movq 24+224(%rsp),%r12 + leaq 224(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 512(%rsp),%rdx + leaq 512(%rsp),%rbx + movq 0+256(%rsp),%r9 + movq 8+256(%rsp),%r10 + leaq -128+256(%rsp),%rsi + movq 16+256(%rsp),%r11 + movq 24+256(%rsp),%r12 + leaq 256(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 224(%rsp),%rbx + leaq 64(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + orq %r13,%r12 + movdqa %xmm4,%xmm2 + orq %r8,%r12 + orq %r9,%r12 + por %xmm5,%xmm2 +.byte 102,73,15,110,220 + + movq 384(%rsp),%rdx + leaq 384(%rsp),%rbx + movq 0+96(%rsp),%r9 + movq 8+96(%rsp),%r10 + leaq -128+96(%rsp),%rsi + movq 16+96(%rsp),%r11 + movq 24+96(%rsp),%r12 + leaq 160(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 480(%rsp),%rdx + leaq 480(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 192(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 160(%rsp),%rbx + leaq 0(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + orq %r13,%r12 + orq %r8,%r12 + orq %r9,%r12 + +.byte 0x3e + jnz L$add_proceedx +.byte 102,73,15,126,208 +.byte 102,73,15,126,217 + testq %r8,%r8 + jnz L$add_proceedx + testq %r9,%r9 + jz L$add_doublex + +.byte 102,72,15,126,199 + pxor %xmm0,%xmm0 + movdqu %xmm0,0(%rdi) + movdqu %xmm0,16(%rdi) + movdqu %xmm0,32(%rdi) + movdqu %xmm0,48(%rdi) + movdqu %xmm0,64(%rdi) + movdqu %xmm0,80(%rdi) + jmp L$add_donex + +.p2align 5 +L$add_doublex: +.byte 102,72,15,126,206 +.byte 102,72,15,126,199 + addq $416,%rsp + jmp L$point_double_shortcutx + +.p2align 5 +L$add_proceedx: + movq 0+64(%rsp),%rdx + movq 8+64(%rsp),%r14 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r15 + movq 24+64(%rsp),%r8 + leaq 96(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 448(%rsp),%rdx + leaq 448(%rsp),%rbx + movq 0+0(%rsp),%r9 + movq 8+0(%rsp),%r10 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r11 + movq 24+0(%rsp),%r12 + leaq 352(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 0+0(%rsp),%rdx + movq 8+0(%rsp),%r14 + leaq -128+0(%rsp),%rsi + movq 16+0(%rsp),%r15 + movq 24+0(%rsp),%r8 + leaq 32(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 544(%rsp),%rdx + leaq 544(%rsp),%rbx + movq 0+352(%rsp),%r9 + movq 8+352(%rsp),%r10 + leaq -128+352(%rsp),%rsi + movq 16+352(%rsp),%r11 + movq 24+352(%rsp),%r12 + leaq 352(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 0(%rsp),%rdx + leaq 0(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 128(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 160(%rsp),%rdx + leaq 160(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 192(%rsp),%rdi + call __ecp_nistz256_mul_montx + + + + + xorq %r11,%r11 + addq %r12,%r12 + leaq 96(%rsp),%rsi + adcq %r13,%r13 + movq %r12,%rax + adcq %r8,%r8 + adcq %r9,%r9 + movq %r13,%rbp + adcq $0,%r11 + + subq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + movq 0(%rsi),%rax + cmovcq %rbp,%r13 + movq 8(%rsi),%rbp + cmovcq %rcx,%r8 + movq 16(%rsi),%rcx + cmovcq %r10,%r9 + movq 24(%rsi),%r10 + + call __ecp_nistz256_subx + + leaq 128(%rsp),%rbx + leaq 288(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 192+0(%rsp),%rax + movq 192+8(%rsp),%rbp + movq 192+16(%rsp),%rcx + movq 192+24(%rsp),%r10 + leaq 320(%rsp),%rdi + + call __ecp_nistz256_subx + + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r8,16(%rdi) + movq %r9,24(%rdi) + movq 128(%rsp),%rdx + leaq 128(%rsp),%rbx + movq 0+224(%rsp),%r9 + movq 8+224(%rsp),%r10 + leaq -128+224(%rsp),%rsi + movq 16+224(%rsp),%r11 + movq 24+224(%rsp),%r12 + leaq 256(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 320(%rsp),%rdx + leaq 320(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 320(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 256(%rsp),%rbx + leaq 320(%rsp),%rdi + call __ecp_nistz256_sub_fromx + +.byte 102,72,15,126,199 + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 352(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 352+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 544(%rsp),%xmm2 + pand 544+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 448(%rsp),%xmm2 + pand 448+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,64(%rdi) + movdqu %xmm3,80(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 288(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 288+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 480(%rsp),%xmm2 + pand 480+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 384(%rsp),%xmm2 + pand 384+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,0(%rdi) + movdqu %xmm3,16(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 320(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 320+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 512(%rsp),%xmm2 + pand 512+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 416(%rsp),%xmm2 + pand 416+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,32(%rdi) + movdqu %xmm3,48(%rdi) + +L$add_donex: + leaq 576+56(%rsp),%rsi + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbx + + movq -8(%rsi),%rbp + + leaq (%rsi),%rsp + +L$point_addx_epilogue: + .byte 0xf3,0xc3 + + + +.p2align 5 +ecp_nistz256_point_add_affinex: + +L$point_add_affinex: + pushq %rbp + + pushq %rbx + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + + subq $480+8,%rsp + +L$add_affinex_body: + + movdqu 0(%rsi),%xmm0 + movq %rdx,%rbx + movdqu 16(%rsi),%xmm1 + movdqu 32(%rsi),%xmm2 + movdqu 48(%rsi),%xmm3 + movdqu 64(%rsi),%xmm4 + movdqu 80(%rsi),%xmm5 + movq 64+0(%rsi),%rdx + movq 64+8(%rsi),%r14 + movq 64+16(%rsi),%r15 + movq 64+24(%rsi),%r8 + movdqa %xmm0,320(%rsp) + movdqa %xmm1,320+16(%rsp) + movdqa %xmm2,352(%rsp) + movdqa %xmm3,352+16(%rsp) + movdqa %xmm4,384(%rsp) + movdqa %xmm5,384+16(%rsp) + por %xmm4,%xmm5 + + movdqu 0(%rbx),%xmm0 + pshufd $0xb1,%xmm5,%xmm3 + movdqu 16(%rbx),%xmm1 + movdqu 32(%rbx),%xmm2 + por %xmm3,%xmm5 + movdqu 48(%rbx),%xmm3 + movdqa %xmm0,416(%rsp) + pshufd $0x1e,%xmm5,%xmm4 + movdqa %xmm1,416+16(%rsp) + por %xmm0,%xmm1 +.byte 102,72,15,110,199 + movdqa %xmm2,448(%rsp) + movdqa %xmm3,448+16(%rsp) + por %xmm2,%xmm3 + por %xmm4,%xmm5 + pxor %xmm4,%xmm4 + por %xmm1,%xmm3 + + leaq 64-128(%rsi),%rsi + leaq 32(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + pcmpeqd %xmm4,%xmm5 + pshufd $0xb1,%xmm3,%xmm4 + movq 0(%rbx),%rdx + + movq %r12,%r9 + por %xmm3,%xmm4 + pshufd $0,%xmm5,%xmm5 + pshufd $0x1e,%xmm4,%xmm3 + movq %r13,%r10 + por %xmm3,%xmm4 + pxor %xmm3,%xmm3 + movq %r14,%r11 + pcmpeqd %xmm3,%xmm4 + pshufd $0,%xmm4,%xmm4 + + leaq 32-128(%rsp),%rsi + movq %r15,%r12 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 320(%rsp),%rbx + leaq 64(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 384(%rsp),%rdx + leaq 384(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 384(%rsp),%rdx + leaq 384(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 288(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 448(%rsp),%rdx + leaq 448(%rsp),%rbx + movq 0+32(%rsp),%r9 + movq 8+32(%rsp),%r10 + leaq -128+32(%rsp),%rsi + movq 16+32(%rsp),%r11 + movq 24+32(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 352(%rsp),%rbx + leaq 96(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 0+64(%rsp),%rdx + movq 8+64(%rsp),%r14 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r15 + movq 24+64(%rsp),%r8 + leaq 128(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 0+96(%rsp),%rdx + movq 8+96(%rsp),%r14 + leaq -128+96(%rsp),%rsi + movq 16+96(%rsp),%r15 + movq 24+96(%rsp),%r8 + leaq 192(%rsp),%rdi + call __ecp_nistz256_sqr_montx + + movq 128(%rsp),%rdx + leaq 128(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 160(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 320(%rsp),%rdx + leaq 320(%rsp),%rbx + movq 0+128(%rsp),%r9 + movq 8+128(%rsp),%r10 + leaq -128+128(%rsp),%rsi + movq 16+128(%rsp),%r11 + movq 24+128(%rsp),%r12 + leaq 0(%rsp),%rdi + call __ecp_nistz256_mul_montx + + + + + xorq %r11,%r11 + addq %r12,%r12 + leaq 192(%rsp),%rsi + adcq %r13,%r13 + movq %r12,%rax + adcq %r8,%r8 + adcq %r9,%r9 + movq %r13,%rbp + adcq $0,%r11 + + subq $-1,%r12 + movq %r8,%rcx + sbbq %r14,%r13 + sbbq $0,%r8 + movq %r9,%r10 + sbbq %r15,%r9 + sbbq $0,%r11 + + cmovcq %rax,%r12 + movq 0(%rsi),%rax + cmovcq %rbp,%r13 + movq 8(%rsi),%rbp + cmovcq %rcx,%r8 + movq 16(%rsi),%rcx + cmovcq %r10,%r9 + movq 24(%rsi),%r10 + + call __ecp_nistz256_subx + + leaq 160(%rsp),%rbx + leaq 224(%rsp),%rdi + call __ecp_nistz256_sub_fromx + + movq 0+0(%rsp),%rax + movq 0+8(%rsp),%rbp + movq 0+16(%rsp),%rcx + movq 0+24(%rsp),%r10 + leaq 64(%rsp),%rdi + + call __ecp_nistz256_subx + + movq %r12,0(%rdi) + movq %r13,8(%rdi) + movq %r8,16(%rdi) + movq %r9,24(%rdi) + movq 352(%rsp),%rdx + leaq 352(%rsp),%rbx + movq 0+160(%rsp),%r9 + movq 8+160(%rsp),%r10 + leaq -128+160(%rsp),%rsi + movq 16+160(%rsp),%r11 + movq 24+160(%rsp),%r12 + leaq 32(%rsp),%rdi + call __ecp_nistz256_mul_montx + + movq 96(%rsp),%rdx + leaq 96(%rsp),%rbx + movq 0+64(%rsp),%r9 + movq 8+64(%rsp),%r10 + leaq -128+64(%rsp),%rsi + movq 16+64(%rsp),%r11 + movq 24+64(%rsp),%r12 + leaq 64(%rsp),%rdi + call __ecp_nistz256_mul_montx + + leaq 32(%rsp),%rbx + leaq 256(%rsp),%rdi + call __ecp_nistz256_sub_fromx + +.byte 102,72,15,126,199 + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 288(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 288+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand L$ONE_mont(%rip),%xmm2 + pand L$ONE_mont+16(%rip),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 384(%rsp),%xmm2 + pand 384+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,64(%rdi) + movdqu %xmm3,80(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 224(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 224+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 416(%rsp),%xmm2 + pand 416+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 320(%rsp),%xmm2 + pand 320+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,0(%rdi) + movdqu %xmm3,16(%rdi) + + movdqa %xmm5,%xmm0 + movdqa %xmm5,%xmm1 + pandn 256(%rsp),%xmm0 + movdqa %xmm5,%xmm2 + pandn 256+16(%rsp),%xmm1 + movdqa %xmm5,%xmm3 + pand 448(%rsp),%xmm2 + pand 448+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + + movdqa %xmm4,%xmm0 + movdqa %xmm4,%xmm1 + pandn %xmm2,%xmm0 + movdqa %xmm4,%xmm2 + pandn %xmm3,%xmm1 + movdqa %xmm4,%xmm3 + pand 352(%rsp),%xmm2 + pand 352+16(%rsp),%xmm3 + por %xmm0,%xmm2 + por %xmm1,%xmm3 + movdqu %xmm2,32(%rdi) + movdqu %xmm3,48(%rdi) + + leaq 480+56(%rsp),%rsi + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbx + + movq -8(%rsi),%rbp + + leaq (%rsi),%rsp + +L$add_affinex_epilogue: + .byte 0xf3,0xc3 + + #endif
diff --git a/third_party/boringssl/mac-x86_64/crypto/fipsmodule/rsaz-avx2.S b/third_party/boringssl/mac-x86_64/crypto/fipsmodule/rsaz-avx2.S index 6dd50af..c82c9d6 100644 --- a/third_party/boringssl/mac-x86_64/crypto/fipsmodule/rsaz-avx2.S +++ b/third_party/boringssl/mac-x86_64/crypto/fipsmodule/rsaz-avx2.S
@@ -1723,6 +1723,11 @@ _rsaz_avx2_eligible: leaq _OPENSSL_ia32cap_P(%rip),%rax movl 8(%rax),%eax + movl $524544,%ecx + movl $0,%edx + andl %eax,%ecx + cmpl $524544,%ecx + cmovel %edx,%eax andl $32,%eax shrl $5,%eax .byte 0xf3,0xc3
diff --git a/third_party/boringssl/mac-x86_64/crypto/fipsmodule/x86_64-mont.S b/third_party/boringssl/mac-x86_64/crypto/fipsmodule/x86_64-mont.S index be3d13a..8bf6d55 100644 --- a/third_party/boringssl/mac-x86_64/crypto/fipsmodule/x86_64-mont.S +++ b/third_party/boringssl/mac-x86_64/crypto/fipsmodule/x86_64-mont.S
@@ -16,6 +16,8 @@ jnz L$mul_enter cmpl $8,%r9d jb L$mul_enter + leaq _OPENSSL_ia32cap_P(%rip),%r11 + movl 8(%r11),%r11d cmpq %rsi,%rdx jne L$mul4x_enter testl $7,%r9d @@ -207,30 +209,30 @@ xorq %r14,%r14 movq (%rsp),%rax - leaq (%rsp),%rsi movq %r9,%r15 - jmp L$sub + .p2align 4 L$sub: sbbq (%rcx,%r14,8),%rax movq %rax,(%rdi,%r14,8) - movq 8(%rsi,%r14,8),%rax + movq 8(%rsp,%r14,8),%rax leaq 1(%r14),%r14 decq %r15 jnz L$sub sbbq $0,%rax + movq $-1,%rbx + xorq %rax,%rbx xorq %r14,%r14 - andq %rax,%rsi - notq %rax - movq %rdi,%rcx - andq %rax,%rcx movq %r9,%r15 - orq %rcx,%rsi -.p2align 4 + L$copy: - movq (%rsi,%r14,8),%rax - movq %r14,(%rsp,%r14,8) - movq %rax,(%rdi,%r14,8) + movq (%rdi,%r14,8),%rcx + movq (%rsp,%r14,8),%rdx + andq %rbx,%rcx + andq %rax,%rdx + movq %r9,(%rsp,%r14,8) + orq %rcx,%rdx + movq %rdx,(%rdi,%r14,8) leaq 1(%r14),%r14 subq $1,%r15 jnz L$copy @@ -264,6 +266,9 @@ movq %rsp,%rax L$mul4x_enter: + andl $0x80100,%r11d + cmpl $0x80100,%r11d + je L$mulx4x_enter pushq %rbx pushq %rbp @@ -601,7 +606,6 @@ movq 16(%rsp,%r9,8),%rdi leaq -4(%r9),%r15 movq 0(%rsp),%rax - pxor %xmm0,%xmm0 movq 8(%rsp),%rdx shrq $2,%r15 leaq (%rsp),%rsi @@ -611,8 +615,7 @@ movq 16(%rsi),%rbx movq 24(%rsi),%rbp sbbq 8(%rcx),%rdx - jmp L$sub4x -.p2align 4 + L$sub4x: movq %rax,0(%rdi,%r14,8) movq %rdx,8(%rdi,%r14,8) @@ -639,34 +642,35 @@ sbbq $0,%rax movq %rbp,24(%rdi,%r14,8) - xorq %r14,%r14 - andq %rax,%rsi - notq %rax - movq %rdi,%rcx - andq %rax,%rcx - leaq -4(%r9),%r15 - orq %rcx,%rsi + pxor %xmm0,%xmm0 +.byte 102,72,15,110,224 + pcmpeqd %xmm5,%xmm5 + pshufd $0,%xmm4,%xmm4 + movq %r9,%r15 + pxor %xmm4,%xmm5 shrq $2,%r15 + xorl %eax,%eax - movdqu (%rsi),%xmm1 - movdqa %xmm0,(%rsp) - movdqu %xmm1,(%rdi) jmp L$copy4x .p2align 4 L$copy4x: - movdqu 16(%rsi,%r14,1),%xmm2 - movdqu 32(%rsi,%r14,1),%xmm1 - movdqa %xmm0,16(%rsp,%r14,1) - movdqu %xmm2,16(%rdi,%r14,1) - movdqa %xmm0,32(%rsp,%r14,1) - movdqu %xmm1,32(%rdi,%r14,1) - leaq 32(%r14),%r14 + movdqa (%rsp,%rax,1),%xmm1 + movdqu (%rdi,%rax,1),%xmm2 + pand %xmm4,%xmm1 + pand %xmm5,%xmm2 + movdqa 16(%rsp,%rax,1),%xmm3 + movdqa %xmm0,(%rsp,%rax,1) + por %xmm2,%xmm1 + movdqu 16(%rdi,%rax,1),%xmm2 + movdqu %xmm1,(%rdi,%rax,1) + pand %xmm4,%xmm3 + pand %xmm5,%xmm2 + movdqa %xmm0,16(%rsp,%rax,1) + por %xmm2,%xmm3 + movdqu %xmm3,16(%rdi,%rax,1) + leaq 32(%rax),%rax decq %r15 jnz L$copy4x - - movdqu 16(%rsi,%r14,1),%xmm2 - movdqa %xmm0,16(%rsp,%r14,1) - movdqu %xmm2,16(%rdi,%r14,1) movq 8(%rsp,%r9,8),%rsi movq $1,%rax @@ -691,6 +695,7 @@ + .p2align 5 bn_sqr8x_mont: @@ -771,6 +776,26 @@ pxor %xmm0,%xmm0 .byte 102,72,15,110,207 .byte 102,73,15,110,218 + leaq _OPENSSL_ia32cap_P(%rip),%rax + movl 8(%rax),%eax + andl $0x80100,%eax + cmpl $0x80100,%eax + jne L$sqr8x_nox + + call _bn_sqrx8x_internal + + + + + leaq (%r8,%rcx,1),%rbx + movq %rcx,%r9 + movq %rcx,%rdx +.byte 102,72,15,126,207 + sarq $3+2,%rcx + jmp L$sqr8x_sub + +.p2align 5 +L$sqr8x_nox: call _bn_sqr8x_internal @@ -858,6 +883,362 @@ .byte 0xf3,0xc3 + +.p2align 5 +bn_mulx4x_mont: + + movq %rsp,%rax + +L$mulx4x_enter: + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$mulx4x_prologue: + + shll $3,%r9d + xorq %r10,%r10 + subq %r9,%r10 + movq (%r8),%r8 + leaq -72(%rsp,%r10,1),%rbp + andq $-128,%rbp + movq %rsp,%r11 + subq %rbp,%r11 + andq $-4096,%r11 + leaq (%r11,%rbp,1),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja L$mulx4x_page_walk + jmp L$mulx4x_page_walk_done + +.p2align 4 +L$mulx4x_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja L$mulx4x_page_walk +L$mulx4x_page_walk_done: + + leaq (%rdx,%r9,1),%r10 + + + + + + + + + + + + + movq %r9,0(%rsp) + shrq $5,%r9 + movq %r10,16(%rsp) + subq $1,%r9 + movq %r8,24(%rsp) + movq %rdi,32(%rsp) + movq %rax,40(%rsp) + + movq %r9,48(%rsp) + jmp L$mulx4x_body + +.p2align 5 +L$mulx4x_body: + leaq 8(%rdx),%rdi + movq (%rdx),%rdx + leaq 64+32(%rsp),%rbx + movq %rdx,%r9 + + mulxq 0(%rsi),%r8,%rax + mulxq 8(%rsi),%r11,%r14 + addq %rax,%r11 + movq %rdi,8(%rsp) + mulxq 16(%rsi),%r12,%r13 + adcq %r14,%r12 + adcq $0,%r13 + + movq %r8,%rdi + imulq 24(%rsp),%r8 + xorq %rbp,%rbp + + mulxq 24(%rsi),%rax,%r14 + movq %r8,%rdx + leaq 32(%rsi),%rsi + adcxq %rax,%r13 + adcxq %rbp,%r14 + + mulxq 0(%rcx),%rax,%r10 + adcxq %rax,%rdi + adoxq %r11,%r10 + mulxq 8(%rcx),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 +.byte 0xc4,0x62,0xfb,0xf6,0xa1,0x10,0x00,0x00,0x00 + movq 48(%rsp),%rdi + movq %r10,-32(%rbx) + adcxq %rax,%r11 + adoxq %r13,%r12 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r11,-24(%rbx) + adcxq %rax,%r12 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r12,-16(%rbx) + + jmp L$mulx4x_1st + +.p2align 5 +L$mulx4x_1st: + adcxq %rbp,%r15 + mulxq 0(%rsi),%r10,%rax + adcxq %r14,%r10 + mulxq 8(%rsi),%r11,%r14 + adcxq %rax,%r11 + mulxq 16(%rsi),%r12,%rax + adcxq %r14,%r12 + mulxq 24(%rsi),%r13,%r14 +.byte 0x67,0x67 + movq %r8,%rdx + adcxq %rax,%r13 + adcxq %rbp,%r14 + leaq 32(%rsi),%rsi + leaq 32(%rbx),%rbx + + adoxq %r15,%r10 + mulxq 0(%rcx),%rax,%r15 + adcxq %rax,%r10 + adoxq %r15,%r11 + mulxq 8(%rcx),%rax,%r15 + adcxq %rax,%r11 + adoxq %r15,%r12 + mulxq 16(%rcx),%rax,%r15 + movq %r10,-40(%rbx) + adcxq %rax,%r12 + movq %r11,-32(%rbx) + adoxq %r15,%r13 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r12,-24(%rbx) + adcxq %rax,%r13 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r13,-16(%rbx) + + decq %rdi + jnz L$mulx4x_1st + + movq 0(%rsp),%rax + movq 8(%rsp),%rdi + adcq %rbp,%r15 + addq %r15,%r14 + sbbq %r15,%r15 + movq %r14,-8(%rbx) + jmp L$mulx4x_outer + +.p2align 5 +L$mulx4x_outer: + movq (%rdi),%rdx + leaq 8(%rdi),%rdi + subq %rax,%rsi + movq %r15,(%rbx) + leaq 64+32(%rsp),%rbx + subq %rax,%rcx + + mulxq 0(%rsi),%r8,%r11 + xorl %ebp,%ebp + movq %rdx,%r9 + mulxq 8(%rsi),%r14,%r12 + adoxq -32(%rbx),%r8 + adcxq %r14,%r11 + mulxq 16(%rsi),%r15,%r13 + adoxq -24(%rbx),%r11 + adcxq %r15,%r12 + adoxq -16(%rbx),%r12 + adcxq %rbp,%r13 + adoxq %rbp,%r13 + + movq %rdi,8(%rsp) + movq %r8,%r15 + imulq 24(%rsp),%r8 + xorl %ebp,%ebp + + mulxq 24(%rsi),%rax,%r14 + movq %r8,%rdx + adcxq %rax,%r13 + adoxq -8(%rbx),%r13 + adcxq %rbp,%r14 + leaq 32(%rsi),%rsi + adoxq %rbp,%r14 + + mulxq 0(%rcx),%rax,%r10 + adcxq %rax,%r15 + adoxq %r11,%r10 + mulxq 8(%rcx),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + mulxq 16(%rcx),%rax,%r12 + movq %r10,-32(%rbx) + adcxq %rax,%r11 + adoxq %r13,%r12 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r11,-24(%rbx) + leaq 32(%rcx),%rcx + adcxq %rax,%r12 + adoxq %rbp,%r15 + movq 48(%rsp),%rdi + movq %r12,-16(%rbx) + + jmp L$mulx4x_inner + +.p2align 5 +L$mulx4x_inner: + mulxq 0(%rsi),%r10,%rax + adcxq %rbp,%r15 + adoxq %r14,%r10 + mulxq 8(%rsi),%r11,%r14 + adcxq 0(%rbx),%r10 + adoxq %rax,%r11 + mulxq 16(%rsi),%r12,%rax + adcxq 8(%rbx),%r11 + adoxq %r14,%r12 + mulxq 24(%rsi),%r13,%r14 + movq %r8,%rdx + adcxq 16(%rbx),%r12 + adoxq %rax,%r13 + adcxq 24(%rbx),%r13 + adoxq %rbp,%r14 + leaq 32(%rsi),%rsi + leaq 32(%rbx),%rbx + adcxq %rbp,%r14 + + adoxq %r15,%r10 + mulxq 0(%rcx),%rax,%r15 + adcxq %rax,%r10 + adoxq %r15,%r11 + mulxq 8(%rcx),%rax,%r15 + adcxq %rax,%r11 + adoxq %r15,%r12 + mulxq 16(%rcx),%rax,%r15 + movq %r10,-40(%rbx) + adcxq %rax,%r12 + adoxq %r15,%r13 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r11,-32(%rbx) + movq %r12,-24(%rbx) + adcxq %rax,%r13 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r13,-16(%rbx) + + decq %rdi + jnz L$mulx4x_inner + + movq 0(%rsp),%rax + movq 8(%rsp),%rdi + adcq %rbp,%r15 + subq 0(%rbx),%rbp + adcq %r15,%r14 + sbbq %r15,%r15 + movq %r14,-8(%rbx) + + cmpq 16(%rsp),%rdi + jne L$mulx4x_outer + + leaq 64(%rsp),%rbx + subq %rax,%rcx + negq %r15 + movq %rax,%rdx + shrq $3+2,%rax + movq 32(%rsp),%rdi + jmp L$mulx4x_sub + +.p2align 5 +L$mulx4x_sub: + movq 0(%rbx),%r11 + movq 8(%rbx),%r12 + movq 16(%rbx),%r13 + movq 24(%rbx),%r14 + leaq 32(%rbx),%rbx + sbbq 0(%rcx),%r11 + sbbq 8(%rcx),%r12 + sbbq 16(%rcx),%r13 + sbbq 24(%rcx),%r14 + leaq 32(%rcx),%rcx + movq %r11,0(%rdi) + movq %r12,8(%rdi) + movq %r13,16(%rdi) + movq %r14,24(%rdi) + leaq 32(%rdi),%rdi + decq %rax + jnz L$mulx4x_sub + + sbbq $0,%r15 + leaq 64(%rsp),%rbx + subq %rdx,%rdi + +.byte 102,73,15,110,207 + pxor %xmm0,%xmm0 + pshufd $0,%xmm1,%xmm1 + movq 40(%rsp),%rsi + + jmp L$mulx4x_cond_copy + +.p2align 5 +L$mulx4x_cond_copy: + movdqa 0(%rbx),%xmm2 + movdqa 16(%rbx),%xmm3 + leaq 32(%rbx),%rbx + movdqu 0(%rdi),%xmm4 + movdqu 16(%rdi),%xmm5 + leaq 32(%rdi),%rdi + movdqa %xmm0,-32(%rbx) + movdqa %xmm0,-16(%rbx) + pcmpeqd %xmm1,%xmm0 + pand %xmm1,%xmm2 + pand %xmm1,%xmm3 + pand %xmm0,%xmm4 + pand %xmm0,%xmm5 + pxor %xmm0,%xmm0 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqu %xmm4,-32(%rdi) + movdqu %xmm5,-16(%rdi) + subq $32,%rdx + jnz L$mulx4x_cond_copy + + movq %rdx,(%rbx) + + movq $1,%rax + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$mulx4x_epilogue: + .byte 0xf3,0xc3 + + .byte 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105,112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 .p2align 4 #endif
diff --git a/third_party/boringssl/mac-x86_64/crypto/fipsmodule/x86_64-mont5.S b/third_party/boringssl/mac-x86_64/crypto/fipsmodule/x86_64-mont5.S index 91980d8..c8c888d 100644 --- a/third_party/boringssl/mac-x86_64/crypto/fipsmodule/x86_64-mont5.S +++ b/third_party/boringssl/mac-x86_64/crypto/fipsmodule/x86_64-mont5.S
@@ -14,6 +14,8 @@ testl $7,%r9d jnz L$mul_enter + leaq _OPENSSL_ia32cap_P(%rip),%r11 + movl 8(%r11),%r11d jmp L$mul4x_enter .p2align 4 @@ -403,18 +405,19 @@ jnz L$sub sbbq $0,%rax + movq $-1,%rbx + xorq %rax,%rbx xorq %r14,%r14 - andq %rax,%rsi - notq %rax - movq %rdi,%rcx - andq %rax,%rcx movq %r9,%r15 - orq %rcx,%rsi -.p2align 4 + L$copy: - movq (%rsi,%r14,8),%rax + movq (%rdi,%r14,8),%rcx + movq (%rsp,%r14,8),%rdx + andq %rbx,%rcx + andq %rax,%rdx movq %r14,(%rsp,%r14,8) - movq %rax,(%rdi,%r14,8) + orq %rcx,%rdx + movq %rdx,(%rdi,%r14,8) leaq 1(%r14),%r14 subq $1,%r15 jnz L$copy @@ -449,6 +452,9 @@ movq %rsp,%rax L$mul4x_enter: + andl $0x80108,%r11d + cmpl $0x80108,%r11d + je L$mulx4x_enter pushq %rbx pushq %rbp @@ -1077,6 +1083,11 @@ movq %rsp,%rax + leaq _OPENSSL_ia32cap_P(%rip),%r11 + movl 8(%r11),%r11d + andl $0x80108,%r11d + cmpl $0x80108,%r11d + je L$powerx5_enter pushq %rbx pushq %rbp @@ -2162,6 +2173,22 @@ .byte 0x67 movq %rcx,%rbp .byte 102,73,15,110,218 + leaq _OPENSSL_ia32cap_P(%rip),%r11 + movl 8(%r11),%r11d + andl $0x80108,%r11d + cmpl $0x80108,%r11d + jne L$from_mont_nox + + leaq (%rax,%r9,1),%rdi + call __bn_sqrx8x_reduction + call __bn_postx4x_internal + + pxor %xmm0,%xmm0 + leaq 48(%rsp),%rax + jmp L$from_mont_zero + +.p2align 5 +L$from_mont_nox: call __bn_sqr8x_reduction call __bn_post4x_internal @@ -2200,6 +2227,1343 @@ .byte 0xf3,0xc3 + +.p2align 5 +bn_mulx4x_mont_gather5: + + movq %rsp,%rax + +L$mulx4x_enter: + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$mulx4x_prologue: + + shll $3,%r9d + leaq (%r9,%r9,2),%r10 + negq %r9 + movq (%r8),%r8 + + + + + + + + + + + leaq -320(%rsp,%r9,2),%r11 + movq %rsp,%rbp + subq %rdi,%r11 + andq $4095,%r11 + cmpq %r11,%r10 + jb L$mulx4xsp_alt + subq %r11,%rbp + leaq -320(%rbp,%r9,2),%rbp + jmp L$mulx4xsp_done + +L$mulx4xsp_alt: + leaq 4096-320(,%r9,2),%r10 + leaq -320(%rbp,%r9,2),%rbp + subq %r10,%r11 + movq $0,%r10 + cmovcq %r10,%r11 + subq %r11,%rbp +L$mulx4xsp_done: + andq $-64,%rbp + movq %rsp,%r11 + subq %rbp,%r11 + andq $-4096,%r11 + leaq (%r11,%rbp,1),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja L$mulx4x_page_walk + jmp L$mulx4x_page_walk_done + +L$mulx4x_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja L$mulx4x_page_walk +L$mulx4x_page_walk_done: + + + + + + + + + + + + + + movq %r8,32(%rsp) + movq %rax,40(%rsp) + +L$mulx4x_body: + call mulx4x_internal + + movq 40(%rsp),%rsi + + movq $1,%rax + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$mulx4x_epilogue: + .byte 0xf3,0xc3 + + + + +.p2align 5 +mulx4x_internal: + movq %r9,8(%rsp) + movq %r9,%r10 + negq %r9 + shlq $5,%r9 + negq %r10 + leaq 128(%rdx,%r9,1),%r13 + shrq $5+5,%r9 + movd 8(%rax),%xmm5 + subq $1,%r9 + leaq L$inc(%rip),%rax + movq %r13,16+8(%rsp) + movq %r9,24+8(%rsp) + movq %rdi,56+8(%rsp) + movdqa 0(%rax),%xmm0 + movdqa 16(%rax),%xmm1 + leaq 88-112(%rsp,%r10,1),%r10 + leaq 128(%rdx),%rdi + + pshufd $0,%xmm5,%xmm5 + movdqa %xmm1,%xmm4 +.byte 0x67 + movdqa %xmm1,%xmm2 +.byte 0x67 + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,112(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,128(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,144(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,160(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,176(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,192(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,208(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,224(%r10) + movdqa %xmm4,%xmm3 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,240(%r10) + movdqa %xmm4,%xmm0 + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,256(%r10) + movdqa %xmm4,%xmm1 + + paddd %xmm3,%xmm0 + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,272(%r10) + movdqa %xmm4,%xmm2 + + paddd %xmm0,%xmm1 + pcmpeqd %xmm5,%xmm0 + movdqa %xmm3,288(%r10) + movdqa %xmm4,%xmm3 +.byte 0x67 + paddd %xmm1,%xmm2 + pcmpeqd %xmm5,%xmm1 + movdqa %xmm0,304(%r10) + + paddd %xmm2,%xmm3 + pcmpeqd %xmm5,%xmm2 + movdqa %xmm1,320(%r10) + + pcmpeqd %xmm5,%xmm3 + movdqa %xmm2,336(%r10) + + pand 64(%rdi),%xmm0 + pand 80(%rdi),%xmm1 + pand 96(%rdi),%xmm2 + movdqa %xmm3,352(%r10) + pand 112(%rdi),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa -128(%rdi),%xmm4 + movdqa -112(%rdi),%xmm5 + movdqa -96(%rdi),%xmm2 + pand 112(%r10),%xmm4 + movdqa -80(%rdi),%xmm3 + pand 128(%r10),%xmm5 + por %xmm4,%xmm0 + pand 144(%r10),%xmm2 + por %xmm5,%xmm1 + pand 160(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa -64(%rdi),%xmm4 + movdqa -48(%rdi),%xmm5 + movdqa -32(%rdi),%xmm2 + pand 176(%r10),%xmm4 + movdqa -16(%rdi),%xmm3 + pand 192(%r10),%xmm5 + por %xmm4,%xmm0 + pand 208(%r10),%xmm2 + por %xmm5,%xmm1 + pand 224(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + movdqa 0(%rdi),%xmm4 + movdqa 16(%rdi),%xmm5 + movdqa 32(%rdi),%xmm2 + pand 240(%r10),%xmm4 + movdqa 48(%rdi),%xmm3 + pand 256(%r10),%xmm5 + por %xmm4,%xmm0 + pand 272(%r10),%xmm2 + por %xmm5,%xmm1 + pand 288(%r10),%xmm3 + por %xmm2,%xmm0 + por %xmm3,%xmm1 + pxor %xmm1,%xmm0 + pshufd $0x4e,%xmm0,%xmm1 + por %xmm1,%xmm0 + leaq 256(%rdi),%rdi +.byte 102,72,15,126,194 + leaq 64+32+8(%rsp),%rbx + + movq %rdx,%r9 + mulxq 0(%rsi),%r8,%rax + mulxq 8(%rsi),%r11,%r12 + addq %rax,%r11 + mulxq 16(%rsi),%rax,%r13 + adcq %rax,%r12 + adcq $0,%r13 + mulxq 24(%rsi),%rax,%r14 + + movq %r8,%r15 + imulq 32+8(%rsp),%r8 + xorq %rbp,%rbp + movq %r8,%rdx + + movq %rdi,8+8(%rsp) + + leaq 32(%rsi),%rsi + adcxq %rax,%r13 + adcxq %rbp,%r14 + + mulxq 0(%rcx),%rax,%r10 + adcxq %rax,%r15 + adoxq %r11,%r10 + mulxq 8(%rcx),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + mulxq 16(%rcx),%rax,%r12 + movq 24+8(%rsp),%rdi + movq %r10,-32(%rbx) + adcxq %rax,%r11 + adoxq %r13,%r12 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r11,-24(%rbx) + adcxq %rax,%r12 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r12,-16(%rbx) + jmp L$mulx4x_1st + +.p2align 5 +L$mulx4x_1st: + adcxq %rbp,%r15 + mulxq 0(%rsi),%r10,%rax + adcxq %r14,%r10 + mulxq 8(%rsi),%r11,%r14 + adcxq %rax,%r11 + mulxq 16(%rsi),%r12,%rax + adcxq %r14,%r12 + mulxq 24(%rsi),%r13,%r14 +.byte 0x67,0x67 + movq %r8,%rdx + adcxq %rax,%r13 + adcxq %rbp,%r14 + leaq 32(%rsi),%rsi + leaq 32(%rbx),%rbx + + adoxq %r15,%r10 + mulxq 0(%rcx),%rax,%r15 + adcxq %rax,%r10 + adoxq %r15,%r11 + mulxq 8(%rcx),%rax,%r15 + adcxq %rax,%r11 + adoxq %r15,%r12 + mulxq 16(%rcx),%rax,%r15 + movq %r10,-40(%rbx) + adcxq %rax,%r12 + movq %r11,-32(%rbx) + adoxq %r15,%r13 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq %r12,-24(%rbx) + adcxq %rax,%r13 + adoxq %rbp,%r15 + leaq 32(%rcx),%rcx + movq %r13,-16(%rbx) + + decq %rdi + jnz L$mulx4x_1st + + movq 8(%rsp),%rax + adcq %rbp,%r15 + leaq (%rsi,%rax,1),%rsi + addq %r15,%r14 + movq 8+8(%rsp),%rdi + adcq %rbp,%rbp + movq %r14,-8(%rbx) + jmp L$mulx4x_outer + +.p2align 5 +L$mulx4x_outer: + leaq 16-256(%rbx),%r10 + pxor %xmm4,%xmm4 +.byte 0x67,0x67 + pxor %xmm5,%xmm5 + movdqa -128(%rdi),%xmm0 + movdqa -112(%rdi),%xmm1 + movdqa -96(%rdi),%xmm2 + pand 256(%r10),%xmm0 + movdqa -80(%rdi),%xmm3 + pand 272(%r10),%xmm1 + por %xmm0,%xmm4 + pand 288(%r10),%xmm2 + por %xmm1,%xmm5 + pand 304(%r10),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa -64(%rdi),%xmm0 + movdqa -48(%rdi),%xmm1 + movdqa -32(%rdi),%xmm2 + pand 320(%r10),%xmm0 + movdqa -16(%rdi),%xmm3 + pand 336(%r10),%xmm1 + por %xmm0,%xmm4 + pand 352(%r10),%xmm2 + por %xmm1,%xmm5 + pand 368(%r10),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 0(%rdi),%xmm0 + movdqa 16(%rdi),%xmm1 + movdqa 32(%rdi),%xmm2 + pand 384(%r10),%xmm0 + movdqa 48(%rdi),%xmm3 + pand 400(%r10),%xmm1 + por %xmm0,%xmm4 + pand 416(%r10),%xmm2 + por %xmm1,%xmm5 + pand 432(%r10),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + movdqa 64(%rdi),%xmm0 + movdqa 80(%rdi),%xmm1 + movdqa 96(%rdi),%xmm2 + pand 448(%r10),%xmm0 + movdqa 112(%rdi),%xmm3 + pand 464(%r10),%xmm1 + por %xmm0,%xmm4 + pand 480(%r10),%xmm2 + por %xmm1,%xmm5 + pand 496(%r10),%xmm3 + por %xmm2,%xmm4 + por %xmm3,%xmm5 + por %xmm5,%xmm4 + pshufd $0x4e,%xmm4,%xmm0 + por %xmm4,%xmm0 + leaq 256(%rdi),%rdi +.byte 102,72,15,126,194 + + movq %rbp,(%rbx) + leaq 32(%rbx,%rax,1),%rbx + mulxq 0(%rsi),%r8,%r11 + xorq %rbp,%rbp + movq %rdx,%r9 + mulxq 8(%rsi),%r14,%r12 + adoxq -32(%rbx),%r8 + adcxq %r14,%r11 + mulxq 16(%rsi),%r15,%r13 + adoxq -24(%rbx),%r11 + adcxq %r15,%r12 + mulxq 24(%rsi),%rdx,%r14 + adoxq -16(%rbx),%r12 + adcxq %rdx,%r13 + leaq (%rcx,%rax,1),%rcx + leaq 32(%rsi),%rsi + adoxq -8(%rbx),%r13 + adcxq %rbp,%r14 + adoxq %rbp,%r14 + + movq %r8,%r15 + imulq 32+8(%rsp),%r8 + + movq %r8,%rdx + xorq %rbp,%rbp + movq %rdi,8+8(%rsp) + + mulxq 0(%rcx),%rax,%r10 + adcxq %rax,%r15 + adoxq %r11,%r10 + mulxq 8(%rcx),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + mulxq 16(%rcx),%rax,%r12 + adcxq %rax,%r11 + adoxq %r13,%r12 + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + movq 24+8(%rsp),%rdi + movq %r10,-32(%rbx) + adcxq %rax,%r12 + movq %r11,-24(%rbx) + adoxq %rbp,%r15 + movq %r12,-16(%rbx) + leaq 32(%rcx),%rcx + jmp L$mulx4x_inner + +.p2align 5 +L$mulx4x_inner: + mulxq 0(%rsi),%r10,%rax + adcxq %rbp,%r15 + adoxq %r14,%r10 + mulxq 8(%rsi),%r11,%r14 + adcxq 0(%rbx),%r10 + adoxq %rax,%r11 + mulxq 16(%rsi),%r12,%rax + adcxq 8(%rbx),%r11 + adoxq %r14,%r12 + mulxq 24(%rsi),%r13,%r14 + movq %r8,%rdx + adcxq 16(%rbx),%r12 + adoxq %rax,%r13 + adcxq 24(%rbx),%r13 + adoxq %rbp,%r14 + leaq 32(%rsi),%rsi + leaq 32(%rbx),%rbx + adcxq %rbp,%r14 + + adoxq %r15,%r10 + mulxq 0(%rcx),%rax,%r15 + adcxq %rax,%r10 + adoxq %r15,%r11 + mulxq 8(%rcx),%rax,%r15 + adcxq %rax,%r11 + adoxq %r15,%r12 + mulxq 16(%rcx),%rax,%r15 + movq %r10,-40(%rbx) + adcxq %rax,%r12 + adoxq %r15,%r13 + movq %r11,-32(%rbx) + mulxq 24(%rcx),%rax,%r15 + movq %r9,%rdx + leaq 32(%rcx),%rcx + movq %r12,-24(%rbx) + adcxq %rax,%r13 + adoxq %rbp,%r15 + movq %r13,-16(%rbx) + + decq %rdi + jnz L$mulx4x_inner + + movq 0+8(%rsp),%rax + adcq %rbp,%r15 + subq 0(%rbx),%rdi + movq 8+8(%rsp),%rdi + movq 16+8(%rsp),%r10 + adcq %r15,%r14 + leaq (%rsi,%rax,1),%rsi + adcq %rbp,%rbp + movq %r14,-8(%rbx) + + cmpq %r10,%rdi + jb L$mulx4x_outer + + movq -8(%rcx),%r10 + movq %rbp,%r8 + movq (%rcx,%rax,1),%r12 + leaq (%rcx,%rax,1),%rbp + movq %rax,%rcx + leaq (%rbx,%rax,1),%rdi + xorl %eax,%eax + xorq %r15,%r15 + subq %r14,%r10 + adcq %r15,%r15 + orq %r15,%r8 + sarq $3+2,%rcx + subq %r8,%rax + movq 56+8(%rsp),%rdx + decq %r12 + movq 8(%rbp),%r13 + xorq %r8,%r8 + movq 16(%rbp),%r14 + movq 24(%rbp),%r15 + jmp L$sqrx4x_sub_entry + + +.p2align 5 +bn_powerx5: + + movq %rsp,%rax + +L$powerx5_enter: + pushq %rbx + + pushq %rbp + + pushq %r12 + + pushq %r13 + + pushq %r14 + + pushq %r15 + +L$powerx5_prologue: + + shll $3,%r9d + leaq (%r9,%r9,2),%r10 + negq %r9 + movq (%r8),%r8 + + + + + + + + + leaq -320(%rsp,%r9,2),%r11 + movq %rsp,%rbp + subq %rdi,%r11 + andq $4095,%r11 + cmpq %r11,%r10 + jb L$pwrx_sp_alt + subq %r11,%rbp + leaq -320(%rbp,%r9,2),%rbp + jmp L$pwrx_sp_done + +.p2align 5 +L$pwrx_sp_alt: + leaq 4096-320(,%r9,2),%r10 + leaq -320(%rbp,%r9,2),%rbp + subq %r10,%r11 + movq $0,%r10 + cmovcq %r10,%r11 + subq %r11,%rbp +L$pwrx_sp_done: + andq $-64,%rbp + movq %rsp,%r11 + subq %rbp,%r11 + andq $-4096,%r11 + leaq (%r11,%rbp,1),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja L$pwrx_page_walk + jmp L$pwrx_page_walk_done + +L$pwrx_page_walk: + leaq -4096(%rsp),%rsp + movq (%rsp),%r10 + cmpq %rbp,%rsp + ja L$pwrx_page_walk +L$pwrx_page_walk_done: + + movq %r9,%r10 + negq %r9 + + + + + + + + + + + + + pxor %xmm0,%xmm0 +.byte 102,72,15,110,207 +.byte 102,72,15,110,209 +.byte 102,73,15,110,218 +.byte 102,72,15,110,226 + movq %r8,32(%rsp) + movq %rax,40(%rsp) + +L$powerx5_body: + + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + + movq %r10,%r9 + movq %rsi,%rdi +.byte 102,72,15,126,209 +.byte 102,72,15,126,226 + movq 40(%rsp),%rax + + call mulx4x_internal + + movq 40(%rsp),%rsi + + movq $1,%rax + + movq -48(%rsi),%r15 + + movq -40(%rsi),%r14 + + movq -32(%rsi),%r13 + + movq -24(%rsi),%r12 + + movq -16(%rsi),%rbp + + movq -8(%rsi),%rbx + + leaq (%rsi),%rsp + +L$powerx5_epilogue: + .byte 0xf3,0xc3 + + + +.globl _bn_sqrx8x_internal +.private_extern _bn_sqrx8x_internal +.private_extern _bn_sqrx8x_internal + +.p2align 5 +_bn_sqrx8x_internal: +__bn_sqrx8x_internal: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + leaq 48+8(%rsp),%rdi + leaq (%rsi,%r9,1),%rbp + movq %r9,0+8(%rsp) + movq %rbp,8+8(%rsp) + jmp L$sqr8x_zero_start + +.p2align 5 +.byte 0x66,0x66,0x66,0x2e,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00 +L$sqrx8x_zero: +.byte 0x3e + movdqa %xmm0,0(%rdi) + movdqa %xmm0,16(%rdi) + movdqa %xmm0,32(%rdi) + movdqa %xmm0,48(%rdi) +L$sqr8x_zero_start: + movdqa %xmm0,64(%rdi) + movdqa %xmm0,80(%rdi) + movdqa %xmm0,96(%rdi) + movdqa %xmm0,112(%rdi) + leaq 128(%rdi),%rdi + subq $64,%r9 + jnz L$sqrx8x_zero + + movq 0(%rsi),%rdx + + xorq %r10,%r10 + xorq %r11,%r11 + xorq %r12,%r12 + xorq %r13,%r13 + xorq %r14,%r14 + xorq %r15,%r15 + leaq 48+8(%rsp),%rdi + xorq %rbp,%rbp + jmp L$sqrx8x_outer_loop + +.p2align 5 +L$sqrx8x_outer_loop: + mulxq 8(%rsi),%r8,%rax + adcxq %r9,%r8 + adoxq %rax,%r10 + mulxq 16(%rsi),%r9,%rax + adcxq %r10,%r9 + adoxq %rax,%r11 +.byte 0xc4,0xe2,0xab,0xf6,0x86,0x18,0x00,0x00,0x00 + adcxq %r11,%r10 + adoxq %rax,%r12 +.byte 0xc4,0xe2,0xa3,0xf6,0x86,0x20,0x00,0x00,0x00 + adcxq %r12,%r11 + adoxq %rax,%r13 + mulxq 40(%rsi),%r12,%rax + adcxq %r13,%r12 + adoxq %rax,%r14 + mulxq 48(%rsi),%r13,%rax + adcxq %r14,%r13 + adoxq %r15,%rax + mulxq 56(%rsi),%r14,%r15 + movq 8(%rsi),%rdx + adcxq %rax,%r14 + adoxq %rbp,%r15 + adcq 64(%rdi),%r15 + movq %r8,8(%rdi) + movq %r9,16(%rdi) + sbbq %rcx,%rcx + xorq %rbp,%rbp + + + mulxq 16(%rsi),%r8,%rbx + mulxq 24(%rsi),%r9,%rax + adcxq %r10,%r8 + adoxq %rbx,%r9 + mulxq 32(%rsi),%r10,%rbx + adcxq %r11,%r9 + adoxq %rax,%r10 +.byte 0xc4,0xe2,0xa3,0xf6,0x86,0x28,0x00,0x00,0x00 + adcxq %r12,%r10 + adoxq %rbx,%r11 +.byte 0xc4,0xe2,0x9b,0xf6,0x9e,0x30,0x00,0x00,0x00 + adcxq %r13,%r11 + adoxq %r14,%r12 +.byte 0xc4,0x62,0x93,0xf6,0xb6,0x38,0x00,0x00,0x00 + movq 16(%rsi),%rdx + adcxq %rax,%r12 + adoxq %rbx,%r13 + adcxq %r15,%r13 + adoxq %rbp,%r14 + adcxq %rbp,%r14 + + movq %r8,24(%rdi) + movq %r9,32(%rdi) + + mulxq 24(%rsi),%r8,%rbx + mulxq 32(%rsi),%r9,%rax + adcxq %r10,%r8 + adoxq %rbx,%r9 + mulxq 40(%rsi),%r10,%rbx + adcxq %r11,%r9 + adoxq %rax,%r10 +.byte 0xc4,0xe2,0xa3,0xf6,0x86,0x30,0x00,0x00,0x00 + adcxq %r12,%r10 + adoxq %r13,%r11 +.byte 0xc4,0x62,0x9b,0xf6,0xae,0x38,0x00,0x00,0x00 +.byte 0x3e + movq 24(%rsi),%rdx + adcxq %rbx,%r11 + adoxq %rax,%r12 + adcxq %r14,%r12 + movq %r8,40(%rdi) + movq %r9,48(%rdi) + mulxq 32(%rsi),%r8,%rax + adoxq %rbp,%r13 + adcxq %rbp,%r13 + + mulxq 40(%rsi),%r9,%rbx + adcxq %r10,%r8 + adoxq %rax,%r9 + mulxq 48(%rsi),%r10,%rax + adcxq %r11,%r9 + adoxq %r12,%r10 + mulxq 56(%rsi),%r11,%r12 + movq 32(%rsi),%rdx + movq 40(%rsi),%r14 + adcxq %rbx,%r10 + adoxq %rax,%r11 + movq 48(%rsi),%r15 + adcxq %r13,%r11 + adoxq %rbp,%r12 + adcxq %rbp,%r12 + + movq %r8,56(%rdi) + movq %r9,64(%rdi) + + mulxq %r14,%r9,%rax + movq 56(%rsi),%r8 + adcxq %r10,%r9 + mulxq %r15,%r10,%rbx + adoxq %rax,%r10 + adcxq %r11,%r10 + mulxq %r8,%r11,%rax + movq %r14,%rdx + adoxq %rbx,%r11 + adcxq %r12,%r11 + + adcxq %rbp,%rax + + mulxq %r15,%r14,%rbx + mulxq %r8,%r12,%r13 + movq %r15,%rdx + leaq 64(%rsi),%rsi + adcxq %r14,%r11 + adoxq %rbx,%r12 + adcxq %rax,%r12 + adoxq %rbp,%r13 + +.byte 0x67,0x67 + mulxq %r8,%r8,%r14 + adcxq %r8,%r13 + adcxq %rbp,%r14 + + cmpq 8+8(%rsp),%rsi + je L$sqrx8x_outer_break + + negq %rcx + movq $-8,%rcx + movq %rbp,%r15 + movq 64(%rdi),%r8 + adcxq 72(%rdi),%r9 + adcxq 80(%rdi),%r10 + adcxq 88(%rdi),%r11 + adcq 96(%rdi),%r12 + adcq 104(%rdi),%r13 + adcq 112(%rdi),%r14 + adcq 120(%rdi),%r15 + leaq (%rsi),%rbp + leaq 128(%rdi),%rdi + sbbq %rax,%rax + + movq -64(%rsi),%rdx + movq %rax,16+8(%rsp) + movq %rdi,24+8(%rsp) + + + xorl %eax,%eax + jmp L$sqrx8x_loop + +.p2align 5 +L$sqrx8x_loop: + movq %r8,%rbx + mulxq 0(%rbp),%rax,%r8 + adcxq %rax,%rbx + adoxq %r9,%r8 + + mulxq 8(%rbp),%rax,%r9 + adcxq %rax,%r8 + adoxq %r10,%r9 + + mulxq 16(%rbp),%rax,%r10 + adcxq %rax,%r9 + adoxq %r11,%r10 + + mulxq 24(%rbp),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + +.byte 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x00 + adcxq %rax,%r11 + adoxq %r13,%r12 + + mulxq 40(%rbp),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + + mulxq 48(%rbp),%rax,%r14 + movq %rbx,(%rdi,%rcx,8) + movl $0,%ebx + adcxq %rax,%r13 + adoxq %r15,%r14 + +.byte 0xc4,0x62,0xfb,0xf6,0xbd,0x38,0x00,0x00,0x00 + movq 8(%rsi,%rcx,8),%rdx + adcxq %rax,%r14 + adoxq %rbx,%r15 + adcxq %rbx,%r15 + +.byte 0x67 + incq %rcx + jnz L$sqrx8x_loop + + leaq 64(%rbp),%rbp + movq $-8,%rcx + cmpq 8+8(%rsp),%rbp + je L$sqrx8x_break + + subq 16+8(%rsp),%rbx +.byte 0x66 + movq -64(%rsi),%rdx + adcxq 0(%rdi),%r8 + adcxq 8(%rdi),%r9 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + leaq 64(%rdi),%rdi +.byte 0x67 + sbbq %rax,%rax + xorl %ebx,%ebx + movq %rax,16+8(%rsp) + jmp L$sqrx8x_loop + +.p2align 5 +L$sqrx8x_break: + xorq %rbp,%rbp + subq 16+8(%rsp),%rbx + adcxq %rbp,%r8 + movq 24+8(%rsp),%rcx + adcxq %rbp,%r9 + movq 0(%rsi),%rdx + adcq $0,%r10 + movq %r8,0(%rdi) + adcq $0,%r11 + adcq $0,%r12 + adcq $0,%r13 + adcq $0,%r14 + adcq $0,%r15 + cmpq %rcx,%rdi + je L$sqrx8x_outer_loop + + movq %r9,8(%rdi) + movq 8(%rcx),%r9 + movq %r10,16(%rdi) + movq 16(%rcx),%r10 + movq %r11,24(%rdi) + movq 24(%rcx),%r11 + movq %r12,32(%rdi) + movq 32(%rcx),%r12 + movq %r13,40(%rdi) + movq 40(%rcx),%r13 + movq %r14,48(%rdi) + movq 48(%rcx),%r14 + movq %r15,56(%rdi) + movq 56(%rcx),%r15 + movq %rcx,%rdi + jmp L$sqrx8x_outer_loop + +.p2align 5 +L$sqrx8x_outer_break: + movq %r9,72(%rdi) +.byte 102,72,15,126,217 + movq %r10,80(%rdi) + movq %r11,88(%rdi) + movq %r12,96(%rdi) + movq %r13,104(%rdi) + movq %r14,112(%rdi) + leaq 48+8(%rsp),%rdi + movq (%rsi,%rcx,1),%rdx + + movq 8(%rdi),%r11 + xorq %r10,%r10 + movq 0+8(%rsp),%r9 + adoxq %r11,%r11 + movq 16(%rdi),%r12 + movq 24(%rdi),%r13 + + +.p2align 5 +L$sqrx4x_shift_n_add: + mulxq %rdx,%rax,%rbx + adoxq %r12,%r12 + adcxq %r10,%rax +.byte 0x48,0x8b,0x94,0x0e,0x08,0x00,0x00,0x00 +.byte 0x4c,0x8b,0x97,0x20,0x00,0x00,0x00 + adoxq %r13,%r13 + adcxq %r11,%rbx + movq 40(%rdi),%r11 + movq %rax,0(%rdi) + movq %rbx,8(%rdi) + + mulxq %rdx,%rax,%rbx + adoxq %r10,%r10 + adcxq %r12,%rax + movq 16(%rsi,%rcx,1),%rdx + movq 48(%rdi),%r12 + adoxq %r11,%r11 + adcxq %r13,%rbx + movq 56(%rdi),%r13 + movq %rax,16(%rdi) + movq %rbx,24(%rdi) + + mulxq %rdx,%rax,%rbx + adoxq %r12,%r12 + adcxq %r10,%rax + movq 24(%rsi,%rcx,1),%rdx + leaq 32(%rcx),%rcx + movq 64(%rdi),%r10 + adoxq %r13,%r13 + adcxq %r11,%rbx + movq 72(%rdi),%r11 + movq %rax,32(%rdi) + movq %rbx,40(%rdi) + + mulxq %rdx,%rax,%rbx + adoxq %r10,%r10 + adcxq %r12,%rax + jrcxz L$sqrx4x_shift_n_add_break +.byte 0x48,0x8b,0x94,0x0e,0x00,0x00,0x00,0x00 + adoxq %r11,%r11 + adcxq %r13,%rbx + movq 80(%rdi),%r12 + movq 88(%rdi),%r13 + movq %rax,48(%rdi) + movq %rbx,56(%rdi) + leaq 64(%rdi),%rdi + nop + jmp L$sqrx4x_shift_n_add + +.p2align 5 +L$sqrx4x_shift_n_add_break: + adcxq %r13,%rbx + movq %rax,48(%rdi) + movq %rbx,56(%rdi) + leaq 64(%rdi),%rdi +.byte 102,72,15,126,213 +__bn_sqrx8x_reduction: + xorl %eax,%eax + movq 32+8(%rsp),%rbx + movq 48+8(%rsp),%rdx + leaq -64(%rbp,%r9,1),%rcx + + movq %rcx,0+8(%rsp) + movq %rdi,8+8(%rsp) + + leaq 48+8(%rsp),%rdi + jmp L$sqrx8x_reduction_loop + +.p2align 5 +L$sqrx8x_reduction_loop: + movq 8(%rdi),%r9 + movq 16(%rdi),%r10 + movq 24(%rdi),%r11 + movq 32(%rdi),%r12 + movq %rdx,%r8 + imulq %rbx,%rdx + movq 40(%rdi),%r13 + movq 48(%rdi),%r14 + movq 56(%rdi),%r15 + movq %rax,24+8(%rsp) + + leaq 64(%rdi),%rdi + xorq %rsi,%rsi + movq $-8,%rcx + jmp L$sqrx8x_reduce + +.p2align 5 +L$sqrx8x_reduce: + movq %r8,%rbx + mulxq 0(%rbp),%rax,%r8 + adcxq %rbx,%rax + adoxq %r9,%r8 + + mulxq 8(%rbp),%rbx,%r9 + adcxq %rbx,%r8 + adoxq %r10,%r9 + + mulxq 16(%rbp),%rbx,%r10 + adcxq %rbx,%r9 + adoxq %r11,%r10 + + mulxq 24(%rbp),%rbx,%r11 + adcxq %rbx,%r10 + adoxq %r12,%r11 + +.byte 0xc4,0x62,0xe3,0xf6,0xa5,0x20,0x00,0x00,0x00 + movq %rdx,%rax + movq %r8,%rdx + adcxq %rbx,%r11 + adoxq %r13,%r12 + + mulxq 32+8(%rsp),%rbx,%rdx + movq %rax,%rdx + movq %rax,64+48+8(%rsp,%rcx,8) + + mulxq 40(%rbp),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + + mulxq 48(%rbp),%rax,%r14 + adcxq %rax,%r13 + adoxq %r15,%r14 + + mulxq 56(%rbp),%rax,%r15 + movq %rbx,%rdx + adcxq %rax,%r14 + adoxq %rsi,%r15 + adcxq %rsi,%r15 + +.byte 0x67,0x67,0x67 + incq %rcx + jnz L$sqrx8x_reduce + + movq %rsi,%rax + cmpq 0+8(%rsp),%rbp + jae L$sqrx8x_no_tail + + movq 48+8(%rsp),%rdx + addq 0(%rdi),%r8 + leaq 64(%rbp),%rbp + movq $-8,%rcx + adcxq 8(%rdi),%r9 + adcxq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + leaq 64(%rdi),%rdi + sbbq %rax,%rax + + xorq %rsi,%rsi + movq %rax,16+8(%rsp) + jmp L$sqrx8x_tail + +.p2align 5 +L$sqrx8x_tail: + movq %r8,%rbx + mulxq 0(%rbp),%rax,%r8 + adcxq %rax,%rbx + adoxq %r9,%r8 + + mulxq 8(%rbp),%rax,%r9 + adcxq %rax,%r8 + adoxq %r10,%r9 + + mulxq 16(%rbp),%rax,%r10 + adcxq %rax,%r9 + adoxq %r11,%r10 + + mulxq 24(%rbp),%rax,%r11 + adcxq %rax,%r10 + adoxq %r12,%r11 + +.byte 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x00 + adcxq %rax,%r11 + adoxq %r13,%r12 + + mulxq 40(%rbp),%rax,%r13 + adcxq %rax,%r12 + adoxq %r14,%r13 + + mulxq 48(%rbp),%rax,%r14 + adcxq %rax,%r13 + adoxq %r15,%r14 + + mulxq 56(%rbp),%rax,%r15 + movq 72+48+8(%rsp,%rcx,8),%rdx + adcxq %rax,%r14 + adoxq %rsi,%r15 + movq %rbx,(%rdi,%rcx,8) + movq %r8,%rbx + adcxq %rsi,%r15 + + incq %rcx + jnz L$sqrx8x_tail + + cmpq 0+8(%rsp),%rbp + jae L$sqrx8x_tail_done + + subq 16+8(%rsp),%rsi + movq 48+8(%rsp),%rdx + leaq 64(%rbp),%rbp + adcq 0(%rdi),%r8 + adcq 8(%rdi),%r9 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + leaq 64(%rdi),%rdi + sbbq %rax,%rax + subq $8,%rcx + + xorq %rsi,%rsi + movq %rax,16+8(%rsp) + jmp L$sqrx8x_tail + +.p2align 5 +L$sqrx8x_tail_done: + xorq %rax,%rax + addq 24+8(%rsp),%r8 + adcq $0,%r9 + adcq $0,%r10 + adcq $0,%r11 + adcq $0,%r12 + adcq $0,%r13 + adcq $0,%r14 + adcq $0,%r15 + adcq $0,%rax + + subq 16+8(%rsp),%rsi +L$sqrx8x_no_tail: + adcq 0(%rdi),%r8 +.byte 102,72,15,126,217 + adcq 8(%rdi),%r9 + movq 56(%rbp),%rsi +.byte 102,72,15,126,213 + adcq 16(%rdi),%r10 + adcq 24(%rdi),%r11 + adcq 32(%rdi),%r12 + adcq 40(%rdi),%r13 + adcq 48(%rdi),%r14 + adcq 56(%rdi),%r15 + adcq $0,%rax + + movq 32+8(%rsp),%rbx + movq 64(%rdi,%rcx,1),%rdx + + movq %r8,0(%rdi) + leaq 64(%rdi),%r8 + movq %r9,8(%rdi) + movq %r10,16(%rdi) + movq %r11,24(%rdi) + movq %r12,32(%rdi) + movq %r13,40(%rdi) + movq %r14,48(%rdi) + movq %r15,56(%rdi) + + leaq 64(%rdi,%rcx,1),%rdi + cmpq 8+8(%rsp),%r8 + jb L$sqrx8x_reduction_loop + .byte 0xf3,0xc3 + +.p2align 5 +__bn_postx4x_internal: + movq 0(%rbp),%r12 + movq %rcx,%r10 + movq %rcx,%r9 + negq %rax + sarq $3+2,%rcx + +.byte 102,72,15,126,202 +.byte 102,72,15,126,206 + decq %r12 + movq 8(%rbp),%r13 + xorq %r8,%r8 + movq 16(%rbp),%r14 + movq 24(%rbp),%r15 + jmp L$sqrx4x_sub_entry + +.p2align 4 +L$sqrx4x_sub: + movq 0(%rbp),%r12 + movq 8(%rbp),%r13 + movq 16(%rbp),%r14 + movq 24(%rbp),%r15 +L$sqrx4x_sub_entry: + andnq %rax,%r12,%r12 + leaq 32(%rbp),%rbp + andnq %rax,%r13,%r13 + andnq %rax,%r14,%r14 + andnq %rax,%r15,%r15 + + negq %r8 + adcq 0(%rdi),%r12 + adcq 8(%rdi),%r13 + adcq 16(%rdi),%r14 + adcq 24(%rdi),%r15 + movq %r12,0(%rdx) + leaq 32(%rdi),%rdi + movq %r13,8(%rdx) + sbbq %r8,%r8 + movq %r14,16(%rdx) + movq %r15,24(%rdx) + leaq 32(%rdx),%rdx + + incq %rcx + jnz L$sqrx4x_sub + + negq %r9 + + .byte 0xf3,0xc3 + .globl _bn_scatter5 .private_extern _bn_scatter5
diff --git a/third_party/boringssl/win-x86/crypto/fipsmodule/x86-mont.asm b/third_party/boringssl/win-x86/crypto/fipsmodule/x86-mont.asm index b1a4d594..befb2fb 100644 --- a/third_party/boringssl/win-x86/crypto/fipsmodule/x86-mont.asm +++ b/third_party/boringssl/win-x86/crypto/fipsmodule/x86-mont.asm
@@ -456,16 +456,18 @@ lea edx,[1+edx] jge NEAR L$016sub sbb eax,0 - and esi,eax - not eax - mov ebp,edi - and ebp,eax - or esi,ebp + mov edx,-1 + xor edx,eax + jmp NEAR L$017copy align 16 L$017copy: - mov eax,DWORD [ebx*4+esi] - mov DWORD [ebx*4+edi],eax + mov esi,DWORD [32+ebx*4+esp] + mov ebp,DWORD [ebx*4+edi] mov DWORD [32+ebx*4+esp],ecx + and esi,eax + and ebp,edx + or ebp,esi + mov DWORD [ebx*4+edi],ebp dec ebx jge NEAR L$017copy mov esp,DWORD [24+esp]
diff --git a/third_party/boringssl/win-x86_64/crypto/fipsmodule/p256-x86_64-asm.asm b/third_party/boringssl/win-x86_64/crypto/fipsmodule/p256-x86_64-asm.asm index 888a87f..8027c04 100644 --- a/third_party/boringssl/win-x86_64/crypto/fipsmodule/p256-x86_64-asm.asm +++ b/third_party/boringssl/win-x86_64/crypto/fipsmodule/p256-x86_64-asm.asm
@@ -111,6 +111,11 @@ + lea rcx,[OPENSSL_ia32cap_P] + mov rcx,QWORD[8+rcx] + and ecx,0x80100 + cmp ecx,0x80100 + je NEAR $L$ecp_nistz256_ord_mul_montx push rbp push rbx @@ -444,6 +449,11 @@ + lea rcx,[OPENSSL_ia32cap_P] + mov rcx,QWORD[8+rcx] + and ecx,0x80100 + cmp ecx,0x80100 + je NEAR $L$ecp_nistz256_ord_sqr_montx push rbp push rbx @@ -728,6 +738,472 @@ $L$SEH_end_ecp_nistz256_ord_sqr_mont: +ALIGN 32 +ecp_nistz256_ord_mul_montx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_ord_mul_montx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +$L$ecp_nistz256_ord_mul_montx: + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + +$L$ord_mulx_body: + + mov rbx,rdx + mov rdx,QWORD[rdx] + mov r9,QWORD[rsi] + mov r10,QWORD[8+rsi] + mov r11,QWORD[16+rsi] + mov r12,QWORD[24+rsi] + lea rsi,[((-128))+rsi] + lea r14,[(($L$ord-128))] + mov r15,QWORD[$L$ordK] + + + mulx r9,r8,r9 + mulx r10,rcx,r10 + mulx r11,rbp,r11 + add r9,rcx + mulx r12,rcx,r12 + mov rdx,r8 + mulx rax,rdx,r15 + adc r10,rbp + adc r11,rcx + adc r12,0 + + + xor r13,r13 + mulx rbp,rcx,QWORD[((0+128))+r14] + adcx r8,rcx + adox r9,rbp + + mulx rbp,rcx,QWORD[((8+128))+r14] + adcx r9,rcx + adox r10,rbp + + mulx rbp,rcx,QWORD[((16+128))+r14] + adcx r10,rcx + adox r11,rbp + + mulx rbp,rcx,QWORD[((24+128))+r14] + mov rdx,QWORD[8+rbx] + adcx r11,rcx + adox r12,rbp + adcx r12,r8 + adox r13,r8 + adc r13,0 + + + mulx rbp,rcx,QWORD[((0+128))+rsi] + adcx r9,rcx + adox r10,rbp + + mulx rbp,rcx,QWORD[((8+128))+rsi] + adcx r10,rcx + adox r11,rbp + + mulx rbp,rcx,QWORD[((16+128))+rsi] + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,QWORD[((24+128))+rsi] + mov rdx,r9 + mulx rax,rdx,r15 + adcx r12,rcx + adox r13,rbp + + adcx r13,r8 + adox r8,r8 + adc r8,0 + + + mulx rbp,rcx,QWORD[((0+128))+r14] + adcx r9,rcx + adox r10,rbp + + mulx rbp,rcx,QWORD[((8+128))+r14] + adcx r10,rcx + adox r11,rbp + + mulx rbp,rcx,QWORD[((16+128))+r14] + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,QWORD[((24+128))+r14] + mov rdx,QWORD[16+rbx] + adcx r12,rcx + adox r13,rbp + adcx r13,r9 + adox r8,r9 + adc r8,0 + + + mulx rbp,rcx,QWORD[((0+128))+rsi] + adcx r10,rcx + adox r11,rbp + + mulx rbp,rcx,QWORD[((8+128))+rsi] + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,QWORD[((16+128))+rsi] + adcx r12,rcx + adox r13,rbp + + mulx rbp,rcx,QWORD[((24+128))+rsi] + mov rdx,r10 + mulx rax,rdx,r15 + adcx r13,rcx + adox r8,rbp + + adcx r8,r9 + adox r9,r9 + adc r9,0 + + + mulx rbp,rcx,QWORD[((0+128))+r14] + adcx r10,rcx + adox r11,rbp + + mulx rbp,rcx,QWORD[((8+128))+r14] + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,QWORD[((16+128))+r14] + adcx r12,rcx + adox r13,rbp + + mulx rbp,rcx,QWORD[((24+128))+r14] + mov rdx,QWORD[24+rbx] + adcx r13,rcx + adox r8,rbp + adcx r8,r10 + adox r9,r10 + adc r9,0 + + + mulx rbp,rcx,QWORD[((0+128))+rsi] + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,QWORD[((8+128))+rsi] + adcx r12,rcx + adox r13,rbp + + mulx rbp,rcx,QWORD[((16+128))+rsi] + adcx r13,rcx + adox r8,rbp + + mulx rbp,rcx,QWORD[((24+128))+rsi] + mov rdx,r11 + mulx rax,rdx,r15 + adcx r8,rcx + adox r9,rbp + + adcx r9,r10 + adox r10,r10 + adc r10,0 + + + mulx rbp,rcx,QWORD[((0+128))+r14] + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,QWORD[((8+128))+r14] + adcx r12,rcx + adox r13,rbp + + mulx rbp,rcx,QWORD[((16+128))+r14] + adcx r13,rcx + adox r8,rbp + + mulx rbp,rcx,QWORD[((24+128))+r14] + lea r14,[128+r14] + mov rbx,r12 + adcx r8,rcx + adox r9,rbp + mov rdx,r13 + adcx r9,r11 + adox r10,r11 + adc r10,0 + + + + mov rcx,r8 + sub r12,QWORD[r14] + sbb r13,QWORD[8+r14] + sbb r8,QWORD[16+r14] + mov rbp,r9 + sbb r9,QWORD[24+r14] + sbb r10,0 + + cmovc r12,rbx + cmovc r13,rdx + cmovc r8,rcx + cmovc r9,rbp + + mov QWORD[rdi],r12 + mov QWORD[8+rdi],r13 + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov r12,QWORD[24+rsp] + + mov rbx,QWORD[32+rsp] + + mov rbp,QWORD[40+rsp] + + lea rsp,[48+rsp] + +$L$ord_mulx_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_ord_mul_montx: + + +ALIGN 32 +ecp_nistz256_ord_sqr_montx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_ord_sqr_montx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +$L$ecp_nistz256_ord_sqr_montx: + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + +$L$ord_sqrx_body: + + mov rbx,rdx + mov rdx,QWORD[rsi] + mov r14,QWORD[8+rsi] + mov r15,QWORD[16+rsi] + mov r8,QWORD[24+rsi] + lea rsi,[$L$ord] + jmp NEAR $L$oop_ord_sqrx + +ALIGN 32 +$L$oop_ord_sqrx: + mulx r10,r9,r14 + mulx r11,rcx,r15 + mov rax,rdx +DB 102,73,15,110,206 + mulx r12,rbp,r8 + mov rdx,r14 + add r10,rcx +DB 102,73,15,110,215 + adc r11,rbp + adc r12,0 + xor r13,r13 + + mulx rbp,rcx,r15 + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,r8 + mov rdx,r15 + adcx r12,rcx + adox r13,rbp + adc r13,0 + + mulx r14,rcx,r8 + mov rdx,rax +DB 102,73,15,110,216 + xor r15,r15 + adcx r9,r9 + adox r13,rcx + adcx r10,r10 + adox r14,r15 + + + mulx rbp,r8,rdx +DB 102,72,15,126,202 + adcx r11,r11 + adox r9,rbp + adcx r12,r12 + mulx rax,rcx,rdx +DB 102,72,15,126,210 + adcx r13,r13 + adox r10,rcx + adcx r14,r14 + mulx rbp,rcx,rdx +DB 0x67 +DB 102,72,15,126,218 + adox r11,rax + adcx r15,r15 + adox r12,rcx + adox r13,rbp + mulx rax,rcx,rdx + adox r14,rcx + adox r15,rax + + + mov rdx,r8 + mulx rcx,rdx,QWORD[32+rsi] + + xor rax,rax + mulx rbp,rcx,QWORD[rsi] + adcx r8,rcx + adox r9,rbp + mulx rbp,rcx,QWORD[8+rsi] + adcx r9,rcx + adox r10,rbp + mulx rbp,rcx,QWORD[16+rsi] + adcx r10,rcx + adox r11,rbp + mulx rbp,rcx,QWORD[24+rsi] + adcx r11,rcx + adox r8,rbp + adcx r8,rax + + + mov rdx,r9 + mulx rcx,rdx,QWORD[32+rsi] + + mulx rbp,rcx,QWORD[rsi] + adox r9,rcx + adcx r10,rbp + mulx rbp,rcx,QWORD[8+rsi] + adox r10,rcx + adcx r11,rbp + mulx rbp,rcx,QWORD[16+rsi] + adox r11,rcx + adcx r8,rbp + mulx rbp,rcx,QWORD[24+rsi] + adox r8,rcx + adcx r9,rbp + adox r9,rax + + + mov rdx,r10 + mulx rcx,rdx,QWORD[32+rsi] + + mulx rbp,rcx,QWORD[rsi] + adcx r10,rcx + adox r11,rbp + mulx rbp,rcx,QWORD[8+rsi] + adcx r11,rcx + adox r8,rbp + mulx rbp,rcx,QWORD[16+rsi] + adcx r8,rcx + adox r9,rbp + mulx rbp,rcx,QWORD[24+rsi] + adcx r9,rcx + adox r10,rbp + adcx r10,rax + + + mov rdx,r11 + mulx rcx,rdx,QWORD[32+rsi] + + mulx rbp,rcx,QWORD[rsi] + adox r11,rcx + adcx r8,rbp + mulx rbp,rcx,QWORD[8+rsi] + adox r8,rcx + adcx r9,rbp + mulx rbp,rcx,QWORD[16+rsi] + adox r9,rcx + adcx r10,rbp + mulx rbp,rcx,QWORD[24+rsi] + adox r10,rcx + adcx r11,rbp + adox r11,rax + + + add r12,r8 + adc r9,r13 + mov rdx,r12 + adc r10,r14 + adc r11,r15 + mov r14,r9 + adc rax,0 + + + sub r12,QWORD[rsi] + mov r15,r10 + sbb r9,QWORD[8+rsi] + sbb r10,QWORD[16+rsi] + mov r8,r11 + sbb r11,QWORD[24+rsi] + sbb rax,0 + + cmovnc rdx,r12 + cmovnc r14,r9 + cmovnc r15,r10 + cmovnc r8,r11 + + dec rbx + jnz NEAR $L$oop_ord_sqrx + + mov QWORD[rdi],rdx + mov QWORD[8+rdi],r14 + pxor xmm1,xmm1 + mov QWORD[16+rdi],r15 + pxor xmm2,xmm2 + mov QWORD[24+rdi],r8 + pxor xmm3,xmm3 + + mov r15,QWORD[rsp] + + mov r14,QWORD[8+rsp] + + mov r13,QWORD[16+rsp] + + mov r12,QWORD[24+rsp] + + mov rbx,QWORD[32+rsp] + + mov rbp,QWORD[40+rsp] + + lea rsp,[48+rsp] + +$L$ord_sqrx_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_ord_sqr_montx: + + @@ -746,6 +1222,9 @@ + lea rcx,[OPENSSL_ia32cap_P] + mov rcx,QWORD[8+rcx] + and ecx,0x80100 $L$mul_mont: push rbp @@ -760,6 +1239,8 @@ push r15 $L$mul_body: + cmp ecx,0x80100 + je NEAR $L$mul_montx mov rbx,rdx mov rax,QWORD[rdx] mov r9,QWORD[rsi] @@ -768,6 +1249,19 @@ mov r12,QWORD[24+rsi] call __ecp_nistz256_mul_montq + jmp NEAR $L$mul_mont_done + +ALIGN 32 +$L$mul_montx: + mov rbx,rdx + mov rdx,QWORD[rdx] + mov r9,QWORD[rsi] + mov r10,QWORD[8+rsi] + mov r11,QWORD[16+rsi] + mov r12,QWORD[24+rsi] + lea rsi,[((-128))+rsi] + + call __ecp_nistz256_mul_montx $L$mul_mont_done: mov r15,QWORD[rsp] @@ -1026,6 +1520,9 @@ + lea rcx,[OPENSSL_ia32cap_P] + mov rcx,QWORD[8+rcx] + and ecx,0x80100 push rbp push rbx @@ -1039,12 +1536,25 @@ push r15 $L$sqr_body: + cmp ecx,0x80100 + je NEAR $L$sqr_montx mov rax,QWORD[rsi] mov r14,QWORD[8+rsi] mov r15,QWORD[16+rsi] mov r8,QWORD[24+rsi] call __ecp_nistz256_sqr_montq + jmp NEAR $L$sqr_mont_done + +ALIGN 32 +$L$sqr_montx: + mov rdx,QWORD[rsi] + mov r14,QWORD[8+rsi] + mov r15,QWORD[16+rsi] + mov r8,QWORD[24+rsi] + lea rsi,[((-128))+rsi] + + call __ecp_nistz256_sqr_montx $L$sqr_mont_done: mov r15,QWORD[rsp] @@ -1229,6 +1739,300 @@ DB 0F3h,0C3h ;repret +ALIGN 32 +__ecp_nistz256_mul_montx: + + + mulx r9,r8,r9 + mulx r10,rcx,r10 + mov r14,32 + xor r13,r13 + mulx r11,rbp,r11 + mov r15,QWORD[(($L$poly+24))] + adc r9,rcx + mulx r12,rcx,r12 + mov rdx,r8 + adc r10,rbp + shlx rbp,r8,r14 + adc r11,rcx + shrx rcx,r8,r14 + adc r12,0 + + + + add r9,rbp + adc r10,rcx + + mulx rbp,rcx,r15 + mov rdx,QWORD[8+rbx] + adc r11,rcx + adc r12,rbp + adc r13,0 + xor r8,r8 + + + + mulx rbp,rcx,QWORD[((0+128))+rsi] + adcx r9,rcx + adox r10,rbp + + mulx rbp,rcx,QWORD[((8+128))+rsi] + adcx r10,rcx + adox r11,rbp + + mulx rbp,rcx,QWORD[((16+128))+rsi] + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,QWORD[((24+128))+rsi] + mov rdx,r9 + adcx r12,rcx + shlx rcx,r9,r14 + adox r13,rbp + shrx rbp,r9,r14 + + adcx r13,r8 + adox r8,r8 + adc r8,0 + + + + add r10,rcx + adc r11,rbp + + mulx rbp,rcx,r15 + mov rdx,QWORD[16+rbx] + adc r12,rcx + adc r13,rbp + adc r8,0 + xor r9,r9 + + + + mulx rbp,rcx,QWORD[((0+128))+rsi] + adcx r10,rcx + adox r11,rbp + + mulx rbp,rcx,QWORD[((8+128))+rsi] + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,QWORD[((16+128))+rsi] + adcx r12,rcx + adox r13,rbp + + mulx rbp,rcx,QWORD[((24+128))+rsi] + mov rdx,r10 + adcx r13,rcx + shlx rcx,r10,r14 + adox r8,rbp + shrx rbp,r10,r14 + + adcx r8,r9 + adox r9,r9 + adc r9,0 + + + + add r11,rcx + adc r12,rbp + + mulx rbp,rcx,r15 + mov rdx,QWORD[24+rbx] + adc r13,rcx + adc r8,rbp + adc r9,0 + xor r10,r10 + + + + mulx rbp,rcx,QWORD[((0+128))+rsi] + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,QWORD[((8+128))+rsi] + adcx r12,rcx + adox r13,rbp + + mulx rbp,rcx,QWORD[((16+128))+rsi] + adcx r13,rcx + adox r8,rbp + + mulx rbp,rcx,QWORD[((24+128))+rsi] + mov rdx,r11 + adcx r8,rcx + shlx rcx,r11,r14 + adox r9,rbp + shrx rbp,r11,r14 + + adcx r9,r10 + adox r10,r10 + adc r10,0 + + + + add r12,rcx + adc r13,rbp + + mulx rbp,rcx,r15 + mov rbx,r12 + mov r14,QWORD[(($L$poly+8))] + adc r8,rcx + mov rdx,r13 + adc r9,rbp + adc r10,0 + + + + xor eax,eax + mov rcx,r8 + sbb r12,-1 + sbb r13,r14 + sbb r8,0 + mov rbp,r9 + sbb r9,r15 + sbb r10,0 + + cmovc r12,rbx + cmovc r13,rdx + mov QWORD[rdi],r12 + cmovc r8,rcx + mov QWORD[8+rdi],r13 + cmovc r9,rbp + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + + DB 0F3h,0C3h ;repret + + + +ALIGN 32 +__ecp_nistz256_sqr_montx: + mulx r10,r9,r14 + mulx r11,rcx,r15 + xor eax,eax + adc r10,rcx + mulx r12,rbp,r8 + mov rdx,r14 + adc r11,rbp + adc r12,0 + xor r13,r13 + + + mulx rbp,rcx,r15 + adcx r11,rcx + adox r12,rbp + + mulx rbp,rcx,r8 + mov rdx,r15 + adcx r12,rcx + adox r13,rbp + adc r13,0 + + + mulx r14,rcx,r8 + mov rdx,QWORD[((0+128))+rsi] + xor r15,r15 + adcx r9,r9 + adox r13,rcx + adcx r10,r10 + adox r14,r15 + + mulx rbp,r8,rdx + mov rdx,QWORD[((8+128))+rsi] + adcx r11,r11 + adox r9,rbp + adcx r12,r12 + mulx rax,rcx,rdx + mov rdx,QWORD[((16+128))+rsi] + adcx r13,r13 + adox r10,rcx + adcx r14,r14 +DB 0x67 + mulx rbp,rcx,rdx + mov rdx,QWORD[((24+128))+rsi] + adox r11,rax + adcx r15,r15 + adox r12,rcx + mov rsi,32 + adox r13,rbp +DB 0x67,0x67 + mulx rax,rcx,rdx + mov rdx,QWORD[(($L$poly+24))] + adox r14,rcx + shlx rcx,r8,rsi + adox r15,rax + shrx rax,r8,rsi + mov rbp,rdx + + + add r9,rcx + adc r10,rax + + mulx r8,rcx,r8 + adc r11,rcx + shlx rcx,r9,rsi + adc r8,0 + shrx rax,r9,rsi + + + add r10,rcx + adc r11,rax + + mulx r9,rcx,r9 + adc r8,rcx + shlx rcx,r10,rsi + adc r9,0 + shrx rax,r10,rsi + + + add r11,rcx + adc r8,rax + + mulx r10,rcx,r10 + adc r9,rcx + shlx rcx,r11,rsi + adc r10,0 + shrx rax,r11,rsi + + + add r8,rcx + adc r9,rax + + mulx r11,rcx,r11 + adc r10,rcx + adc r11,0 + + xor rdx,rdx + add r12,r8 + mov rsi,QWORD[(($L$poly+8))] + adc r13,r9 + mov r8,r12 + adc r14,r10 + adc r15,r11 + mov r9,r13 + adc rdx,0 + + sub r12,-1 + mov r10,r14 + sbb r13,rsi + sbb r14,0 + mov r11,r15 + sbb r15,rbp + sbb rdx,0 + + cmovc r12,r8 + cmovc r13,r9 + mov QWORD[rdi],r12 + cmovc r14,r10 + mov QWORD[8+rdi],r13 + cmovc r15,r11 + mov QWORD[16+rdi],r14 + mov QWORD[24+rdi],r15 + + DB 0F3h,0C3h ;repret + + global ecp_nistz256_select_w5 @@ -1715,6 +2519,11 @@ + lea rcx,[OPENSSL_ia32cap_P] + mov rcx,QWORD[8+rcx] + and ecx,0x80100 + cmp ecx,0x80100 + je NEAR $L$point_doublex push rbp push rbx @@ -1948,6 +2757,11 @@ + lea rcx,[OPENSSL_ia32cap_P] + mov rcx,QWORD[8+rcx] + and ecx,0x80100 + cmp ecx,0x80100 + je NEAR $L$point_addx push rbp push rbx @@ -2375,6 +3189,11 @@ + lea rcx,[OPENSSL_ia32cap_P] + mov rcx,QWORD[8+rcx] + and ecx,0x80100 + cmp ecx,0x80100 + je NEAR $L$point_add_affinex push rbp push rbx @@ -2694,6 +3513,1125 @@ DB 0F3h,0C3h ;repret $L$SEH_end_ecp_nistz256_point_add_affine: + +ALIGN 32 +__ecp_nistz256_add_tox: + xor r11,r11 + adc r12,QWORD[rbx] + adc r13,QWORD[8+rbx] + mov rax,r12 + adc r8,QWORD[16+rbx] + adc r9,QWORD[24+rbx] + mov rbp,r13 + adc r11,0 + + xor r10,r10 + sbb r12,-1 + mov rcx,r8 + sbb r13,r14 + sbb r8,0 + mov r10,r9 + sbb r9,r15 + sbb r11,0 + + cmovc r12,rax + cmovc r13,rbp + mov QWORD[rdi],r12 + cmovc r8,rcx + mov QWORD[8+rdi],r13 + cmovc r9,r10 + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + + DB 0F3h,0C3h ;repret + + + +ALIGN 32 +__ecp_nistz256_sub_fromx: + xor r11,r11 + sbb r12,QWORD[rbx] + sbb r13,QWORD[8+rbx] + mov rax,r12 + sbb r8,QWORD[16+rbx] + sbb r9,QWORD[24+rbx] + mov rbp,r13 + sbb r11,0 + + xor r10,r10 + adc r12,-1 + mov rcx,r8 + adc r13,r14 + adc r8,0 + mov r10,r9 + adc r9,r15 + + bt r11,0 + cmovnc r12,rax + cmovnc r13,rbp + mov QWORD[rdi],r12 + cmovnc r8,rcx + mov QWORD[8+rdi],r13 + cmovnc r9,r10 + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + + DB 0F3h,0C3h ;repret + + + +ALIGN 32 +__ecp_nistz256_subx: + xor r11,r11 + sbb rax,r12 + sbb rbp,r13 + mov r12,rax + sbb rcx,r8 + sbb r10,r9 + mov r13,rbp + sbb r11,0 + + xor r9,r9 + adc rax,-1 + mov r8,rcx + adc rbp,r14 + adc rcx,0 + mov r9,r10 + adc r10,r15 + + bt r11,0 + cmovc r12,rax + cmovc r13,rbp + cmovc r8,rcx + cmovc r9,r10 + + DB 0F3h,0C3h ;repret + + + +ALIGN 32 +__ecp_nistz256_mul_by_2x: + xor r11,r11 + adc r12,r12 + adc r13,r13 + mov rax,r12 + adc r8,r8 + adc r9,r9 + mov rbp,r13 + adc r11,0 + + xor r10,r10 + sbb r12,-1 + mov rcx,r8 + sbb r13,r14 + sbb r8,0 + mov r10,r9 + sbb r9,r15 + sbb r11,0 + + cmovc r12,rax + cmovc r13,rbp + mov QWORD[rdi],r12 + cmovc r8,rcx + mov QWORD[8+rdi],r13 + cmovc r9,r10 + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + + DB 0F3h,0C3h ;repret + + +ALIGN 32 +ecp_nistz256_point_doublex: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_point_doublex: + mov rdi,rcx + mov rsi,rdx + + + +$L$point_doublex: + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + + sub rsp,32*5+8 + +$L$point_doublex_body: + +$L$point_double_shortcutx: + movdqu xmm0,XMMWORD[rsi] + mov rbx,rsi + movdqu xmm1,XMMWORD[16+rsi] + mov r12,QWORD[((32+0))+rsi] + mov r13,QWORD[((32+8))+rsi] + mov r8,QWORD[((32+16))+rsi] + mov r9,QWORD[((32+24))+rsi] + mov r14,QWORD[(($L$poly+8))] + mov r15,QWORD[(($L$poly+24))] + movdqa XMMWORD[96+rsp],xmm0 + movdqa XMMWORD[(96+16)+rsp],xmm1 + lea r10,[32+rdi] + lea r11,[64+rdi] +DB 102,72,15,110,199 +DB 102,73,15,110,202 +DB 102,73,15,110,211 + + lea rdi,[rsp] + call __ecp_nistz256_mul_by_2x + + mov rdx,QWORD[((64+0))+rsi] + mov r14,QWORD[((64+8))+rsi] + mov r15,QWORD[((64+16))+rsi] + mov r8,QWORD[((64+24))+rsi] + lea rsi,[((64-128))+rsi] + lea rdi,[64+rsp] + call __ecp_nistz256_sqr_montx + + mov rdx,QWORD[((0+0))+rsp] + mov r14,QWORD[((8+0))+rsp] + lea rsi,[((-128+0))+rsp] + mov r15,QWORD[((16+0))+rsp] + mov r8,QWORD[((24+0))+rsp] + lea rdi,[rsp] + call __ecp_nistz256_sqr_montx + + mov rdx,QWORD[32+rbx] + mov r9,QWORD[((64+0))+rbx] + mov r10,QWORD[((64+8))+rbx] + mov r11,QWORD[((64+16))+rbx] + mov r12,QWORD[((64+24))+rbx] + lea rsi,[((64-128))+rbx] + lea rbx,[32+rbx] +DB 102,72,15,126,215 + call __ecp_nistz256_mul_montx + call __ecp_nistz256_mul_by_2x + + mov r12,QWORD[((96+0))+rsp] + mov r13,QWORD[((96+8))+rsp] + lea rbx,[64+rsp] + mov r8,QWORD[((96+16))+rsp] + mov r9,QWORD[((96+24))+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_add_tox + + mov r12,QWORD[((96+0))+rsp] + mov r13,QWORD[((96+8))+rsp] + lea rbx,[64+rsp] + mov r8,QWORD[((96+16))+rsp] + mov r9,QWORD[((96+24))+rsp] + lea rdi,[64+rsp] + call __ecp_nistz256_sub_fromx + + mov rdx,QWORD[((0+0))+rsp] + mov r14,QWORD[((8+0))+rsp] + lea rsi,[((-128+0))+rsp] + mov r15,QWORD[((16+0))+rsp] + mov r8,QWORD[((24+0))+rsp] +DB 102,72,15,126,207 + call __ecp_nistz256_sqr_montx + xor r9,r9 + mov rax,r12 + add r12,-1 + mov r10,r13 + adc r13,rsi + mov rcx,r14 + adc r14,0 + mov r8,r15 + adc r15,rbp + adc r9,0 + xor rsi,rsi + test rax,1 + + cmovz r12,rax + cmovz r13,r10 + cmovz r14,rcx + cmovz r15,r8 + cmovz r9,rsi + + mov rax,r13 + shr r12,1 + shl rax,63 + mov r10,r14 + shr r13,1 + or r12,rax + shl r10,63 + mov rcx,r15 + shr r14,1 + or r13,r10 + shl rcx,63 + mov QWORD[rdi],r12 + shr r15,1 + mov QWORD[8+rdi],r13 + shl r9,63 + or r14,rcx + or r15,r9 + mov QWORD[16+rdi],r14 + mov QWORD[24+rdi],r15 + mov rdx,QWORD[64+rsp] + lea rbx,[64+rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((-128+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_mul_montx + + lea rdi,[128+rsp] + call __ecp_nistz256_mul_by_2x + + lea rbx,[32+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_add_tox + + mov rdx,QWORD[96+rsp] + lea rbx,[96+rsp] + mov r9,QWORD[((0+0))+rsp] + mov r10,QWORD[((8+0))+rsp] + lea rsi,[((-128+0))+rsp] + mov r11,QWORD[((16+0))+rsp] + mov r12,QWORD[((24+0))+rsp] + lea rdi,[rsp] + call __ecp_nistz256_mul_montx + + lea rdi,[128+rsp] + call __ecp_nistz256_mul_by_2x + + mov rdx,QWORD[((0+32))+rsp] + mov r14,QWORD[((8+32))+rsp] + lea rsi,[((-128+32))+rsp] + mov r15,QWORD[((16+32))+rsp] + mov r8,QWORD[((24+32))+rsp] +DB 102,72,15,126,199 + call __ecp_nistz256_sqr_montx + + lea rbx,[128+rsp] + mov r8,r14 + mov r9,r15 + mov r14,rsi + mov r15,rbp + call __ecp_nistz256_sub_fromx + + mov rax,QWORD[((0+0))+rsp] + mov rbp,QWORD[((0+8))+rsp] + mov rcx,QWORD[((0+16))+rsp] + mov r10,QWORD[((0+24))+rsp] + lea rdi,[rsp] + call __ecp_nistz256_subx + + mov rdx,QWORD[32+rsp] + lea rbx,[32+rsp] + mov r14,r12 + xor ecx,ecx + mov QWORD[((0+0))+rsp],r12 + mov r10,r13 + mov QWORD[((0+8))+rsp],r13 + cmovz r11,r8 + mov QWORD[((0+16))+rsp],r8 + lea rsi,[((0-128))+rsp] + cmovz r12,r9 + mov QWORD[((0+24))+rsp],r9 + mov r9,r14 + lea rdi,[rsp] + call __ecp_nistz256_mul_montx + +DB 102,72,15,126,203 +DB 102,72,15,126,207 + call __ecp_nistz256_sub_fromx + + lea rsi,[((160+56))+rsp] + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbx,QWORD[((-16))+rsi] + + mov rbp,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$point_doublex_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_point_doublex: + +ALIGN 32 +ecp_nistz256_point_addx: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_point_addx: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +$L$point_addx: + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + + sub rsp,32*18+8 + +$L$point_addx_body: + + movdqu xmm0,XMMWORD[rsi] + movdqu xmm1,XMMWORD[16+rsi] + movdqu xmm2,XMMWORD[32+rsi] + movdqu xmm3,XMMWORD[48+rsi] + movdqu xmm4,XMMWORD[64+rsi] + movdqu xmm5,XMMWORD[80+rsi] + mov rbx,rsi + mov rsi,rdx + movdqa XMMWORD[384+rsp],xmm0 + movdqa XMMWORD[(384+16)+rsp],xmm1 + movdqa XMMWORD[416+rsp],xmm2 + movdqa XMMWORD[(416+16)+rsp],xmm3 + movdqa XMMWORD[448+rsp],xmm4 + movdqa XMMWORD[(448+16)+rsp],xmm5 + por xmm5,xmm4 + + movdqu xmm0,XMMWORD[rsi] + pshufd xmm3,xmm5,0xb1 + movdqu xmm1,XMMWORD[16+rsi] + movdqu xmm2,XMMWORD[32+rsi] + por xmm5,xmm3 + movdqu xmm3,XMMWORD[48+rsi] + mov rdx,QWORD[((64+0))+rsi] + mov r14,QWORD[((64+8))+rsi] + mov r15,QWORD[((64+16))+rsi] + mov r8,QWORD[((64+24))+rsi] + movdqa XMMWORD[480+rsp],xmm0 + pshufd xmm4,xmm5,0x1e + movdqa XMMWORD[(480+16)+rsp],xmm1 + movdqu xmm0,XMMWORD[64+rsi] + movdqu xmm1,XMMWORD[80+rsi] + movdqa XMMWORD[512+rsp],xmm2 + movdqa XMMWORD[(512+16)+rsp],xmm3 + por xmm5,xmm4 + pxor xmm4,xmm4 + por xmm1,xmm0 +DB 102,72,15,110,199 + + lea rsi,[((64-128))+rsi] + mov QWORD[((544+0))+rsp],rdx + mov QWORD[((544+8))+rsp],r14 + mov QWORD[((544+16))+rsp],r15 + mov QWORD[((544+24))+rsp],r8 + lea rdi,[96+rsp] + call __ecp_nistz256_sqr_montx + + pcmpeqd xmm5,xmm4 + pshufd xmm4,xmm1,0xb1 + por xmm4,xmm1 + pshufd xmm5,xmm5,0 + pshufd xmm3,xmm4,0x1e + por xmm4,xmm3 + pxor xmm3,xmm3 + pcmpeqd xmm4,xmm3 + pshufd xmm4,xmm4,0 + mov rdx,QWORD[((64+0))+rbx] + mov r14,QWORD[((64+8))+rbx] + mov r15,QWORD[((64+16))+rbx] + mov r8,QWORD[((64+24))+rbx] +DB 102,72,15,110,203 + + lea rsi,[((64-128))+rbx] + lea rdi,[32+rsp] + call __ecp_nistz256_sqr_montx + + mov rdx,QWORD[544+rsp] + lea rbx,[544+rsp] + mov r9,QWORD[((0+96))+rsp] + mov r10,QWORD[((8+96))+rsp] + lea rsi,[((-128+96))+rsp] + mov r11,QWORD[((16+96))+rsp] + mov r12,QWORD[((24+96))+rsp] + lea rdi,[224+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[448+rsp] + lea rbx,[448+rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((-128+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[256+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[416+rsp] + lea rbx,[416+rsp] + mov r9,QWORD[((0+224))+rsp] + mov r10,QWORD[((8+224))+rsp] + lea rsi,[((-128+224))+rsp] + mov r11,QWORD[((16+224))+rsp] + mov r12,QWORD[((24+224))+rsp] + lea rdi,[224+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[512+rsp] + lea rbx,[512+rsp] + mov r9,QWORD[((0+256))+rsp] + mov r10,QWORD[((8+256))+rsp] + lea rsi,[((-128+256))+rsp] + mov r11,QWORD[((16+256))+rsp] + mov r12,QWORD[((24+256))+rsp] + lea rdi,[256+rsp] + call __ecp_nistz256_mul_montx + + lea rbx,[224+rsp] + lea rdi,[64+rsp] + call __ecp_nistz256_sub_fromx + + or r12,r13 + movdqa xmm2,xmm4 + or r12,r8 + or r12,r9 + por xmm2,xmm5 +DB 102,73,15,110,220 + + mov rdx,QWORD[384+rsp] + lea rbx,[384+rsp] + mov r9,QWORD[((0+96))+rsp] + mov r10,QWORD[((8+96))+rsp] + lea rsi,[((-128+96))+rsp] + mov r11,QWORD[((16+96))+rsp] + mov r12,QWORD[((24+96))+rsp] + lea rdi,[160+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[480+rsp] + lea rbx,[480+rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((-128+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[192+rsp] + call __ecp_nistz256_mul_montx + + lea rbx,[160+rsp] + lea rdi,[rsp] + call __ecp_nistz256_sub_fromx + + or r12,r13 + or r12,r8 + or r12,r9 + +DB 0x3e + jnz NEAR $L$add_proceedx +DB 102,73,15,126,208 +DB 102,73,15,126,217 + test r8,r8 + jnz NEAR $L$add_proceedx + test r9,r9 + jz NEAR $L$add_doublex + +DB 102,72,15,126,199 + pxor xmm0,xmm0 + movdqu XMMWORD[rdi],xmm0 + movdqu XMMWORD[16+rdi],xmm0 + movdqu XMMWORD[32+rdi],xmm0 + movdqu XMMWORD[48+rdi],xmm0 + movdqu XMMWORD[64+rdi],xmm0 + movdqu XMMWORD[80+rdi],xmm0 + jmp NEAR $L$add_donex + +ALIGN 32 +$L$add_doublex: +DB 102,72,15,126,206 +DB 102,72,15,126,199 + add rsp,416 + jmp NEAR $L$point_double_shortcutx + +ALIGN 32 +$L$add_proceedx: + mov rdx,QWORD[((0+64))+rsp] + mov r14,QWORD[((8+64))+rsp] + lea rsi,[((-128+64))+rsp] + mov r15,QWORD[((16+64))+rsp] + mov r8,QWORD[((24+64))+rsp] + lea rdi,[96+rsp] + call __ecp_nistz256_sqr_montx + + mov rdx,QWORD[448+rsp] + lea rbx,[448+rsp] + mov r9,QWORD[((0+0))+rsp] + mov r10,QWORD[((8+0))+rsp] + lea rsi,[((-128+0))+rsp] + mov r11,QWORD[((16+0))+rsp] + mov r12,QWORD[((24+0))+rsp] + lea rdi,[352+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[((0+0))+rsp] + mov r14,QWORD[((8+0))+rsp] + lea rsi,[((-128+0))+rsp] + mov r15,QWORD[((16+0))+rsp] + mov r8,QWORD[((24+0))+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_sqr_montx + + mov rdx,QWORD[544+rsp] + lea rbx,[544+rsp] + mov r9,QWORD[((0+352))+rsp] + mov r10,QWORD[((8+352))+rsp] + lea rsi,[((-128+352))+rsp] + mov r11,QWORD[((16+352))+rsp] + mov r12,QWORD[((24+352))+rsp] + lea rdi,[352+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[rsp] + lea rbx,[rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((-128+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[128+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[160+rsp] + lea rbx,[160+rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((-128+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[192+rsp] + call __ecp_nistz256_mul_montx + + + + + xor r11,r11 + add r12,r12 + lea rsi,[96+rsp] + adc r13,r13 + mov rax,r12 + adc r8,r8 + adc r9,r9 + mov rbp,r13 + adc r11,0 + + sub r12,-1 + mov rcx,r8 + sbb r13,r14 + sbb r8,0 + mov r10,r9 + sbb r9,r15 + sbb r11,0 + + cmovc r12,rax + mov rax,QWORD[rsi] + cmovc r13,rbp + mov rbp,QWORD[8+rsi] + cmovc r8,rcx + mov rcx,QWORD[16+rsi] + cmovc r9,r10 + mov r10,QWORD[24+rsi] + + call __ecp_nistz256_subx + + lea rbx,[128+rsp] + lea rdi,[288+rsp] + call __ecp_nistz256_sub_fromx + + mov rax,QWORD[((192+0))+rsp] + mov rbp,QWORD[((192+8))+rsp] + mov rcx,QWORD[((192+16))+rsp] + mov r10,QWORD[((192+24))+rsp] + lea rdi,[320+rsp] + + call __ecp_nistz256_subx + + mov QWORD[rdi],r12 + mov QWORD[8+rdi],r13 + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + mov rdx,QWORD[128+rsp] + lea rbx,[128+rsp] + mov r9,QWORD[((0+224))+rsp] + mov r10,QWORD[((8+224))+rsp] + lea rsi,[((-128+224))+rsp] + mov r11,QWORD[((16+224))+rsp] + mov r12,QWORD[((24+224))+rsp] + lea rdi,[256+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[320+rsp] + lea rbx,[320+rsp] + mov r9,QWORD[((0+64))+rsp] + mov r10,QWORD[((8+64))+rsp] + lea rsi,[((-128+64))+rsp] + mov r11,QWORD[((16+64))+rsp] + mov r12,QWORD[((24+64))+rsp] + lea rdi,[320+rsp] + call __ecp_nistz256_mul_montx + + lea rbx,[256+rsp] + lea rdi,[320+rsp] + call __ecp_nistz256_sub_fromx + +DB 102,72,15,126,199 + + movdqa xmm0,xmm5 + movdqa xmm1,xmm5 + pandn xmm0,XMMWORD[352+rsp] + movdqa xmm2,xmm5 + pandn xmm1,XMMWORD[((352+16))+rsp] + movdqa xmm3,xmm5 + pand xmm2,XMMWORD[544+rsp] + pand xmm3,XMMWORD[((544+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + + movdqa xmm0,xmm4 + movdqa xmm1,xmm4 + pandn xmm0,xmm2 + movdqa xmm2,xmm4 + pandn xmm1,xmm3 + movdqa xmm3,xmm4 + pand xmm2,XMMWORD[448+rsp] + pand xmm3,XMMWORD[((448+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + movdqu XMMWORD[64+rdi],xmm2 + movdqu XMMWORD[80+rdi],xmm3 + + movdqa xmm0,xmm5 + movdqa xmm1,xmm5 + pandn xmm0,XMMWORD[288+rsp] + movdqa xmm2,xmm5 + pandn xmm1,XMMWORD[((288+16))+rsp] + movdqa xmm3,xmm5 + pand xmm2,XMMWORD[480+rsp] + pand xmm3,XMMWORD[((480+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + + movdqa xmm0,xmm4 + movdqa xmm1,xmm4 + pandn xmm0,xmm2 + movdqa xmm2,xmm4 + pandn xmm1,xmm3 + movdqa xmm3,xmm4 + pand xmm2,XMMWORD[384+rsp] + pand xmm3,XMMWORD[((384+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + movdqu XMMWORD[rdi],xmm2 + movdqu XMMWORD[16+rdi],xmm3 + + movdqa xmm0,xmm5 + movdqa xmm1,xmm5 + pandn xmm0,XMMWORD[320+rsp] + movdqa xmm2,xmm5 + pandn xmm1,XMMWORD[((320+16))+rsp] + movdqa xmm3,xmm5 + pand xmm2,XMMWORD[512+rsp] + pand xmm3,XMMWORD[((512+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + + movdqa xmm0,xmm4 + movdqa xmm1,xmm4 + pandn xmm0,xmm2 + movdqa xmm2,xmm4 + pandn xmm1,xmm3 + movdqa xmm3,xmm4 + pand xmm2,XMMWORD[416+rsp] + pand xmm3,XMMWORD[((416+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + movdqu XMMWORD[32+rdi],xmm2 + movdqu XMMWORD[48+rdi],xmm3 + +$L$add_donex: + lea rsi,[((576+56))+rsp] + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbx,QWORD[((-16))+rsi] + + mov rbp,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$point_addx_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_point_addx: + +ALIGN 32 +ecp_nistz256_point_add_affinex: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_ecp_nistz256_point_add_affinex: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + + + +$L$point_add_affinex: + push rbp + + push rbx + + push r12 + + push r13 + + push r14 + + push r15 + + sub rsp,32*15+8 + +$L$add_affinex_body: + + movdqu xmm0,XMMWORD[rsi] + mov rbx,rdx + movdqu xmm1,XMMWORD[16+rsi] + movdqu xmm2,XMMWORD[32+rsi] + movdqu xmm3,XMMWORD[48+rsi] + movdqu xmm4,XMMWORD[64+rsi] + movdqu xmm5,XMMWORD[80+rsi] + mov rdx,QWORD[((64+0))+rsi] + mov r14,QWORD[((64+8))+rsi] + mov r15,QWORD[((64+16))+rsi] + mov r8,QWORD[((64+24))+rsi] + movdqa XMMWORD[320+rsp],xmm0 + movdqa XMMWORD[(320+16)+rsp],xmm1 + movdqa XMMWORD[352+rsp],xmm2 + movdqa XMMWORD[(352+16)+rsp],xmm3 + movdqa XMMWORD[384+rsp],xmm4 + movdqa XMMWORD[(384+16)+rsp],xmm5 + por xmm5,xmm4 + + movdqu xmm0,XMMWORD[rbx] + pshufd xmm3,xmm5,0xb1 + movdqu xmm1,XMMWORD[16+rbx] + movdqu xmm2,XMMWORD[32+rbx] + por xmm5,xmm3 + movdqu xmm3,XMMWORD[48+rbx] + movdqa XMMWORD[416+rsp],xmm0 + pshufd xmm4,xmm5,0x1e + movdqa XMMWORD[(416+16)+rsp],xmm1 + por xmm1,xmm0 +DB 102,72,15,110,199 + movdqa XMMWORD[448+rsp],xmm2 + movdqa XMMWORD[(448+16)+rsp],xmm3 + por xmm3,xmm2 + por xmm5,xmm4 + pxor xmm4,xmm4 + por xmm3,xmm1 + + lea rsi,[((64-128))+rsi] + lea rdi,[32+rsp] + call __ecp_nistz256_sqr_montx + + pcmpeqd xmm5,xmm4 + pshufd xmm4,xmm3,0xb1 + mov rdx,QWORD[rbx] + + mov r9,r12 + por xmm4,xmm3 + pshufd xmm5,xmm5,0 + pshufd xmm3,xmm4,0x1e + mov r10,r13 + por xmm4,xmm3 + pxor xmm3,xmm3 + mov r11,r14 + pcmpeqd xmm4,xmm3 + pshufd xmm4,xmm4,0 + + lea rsi,[((32-128))+rsp] + mov r12,r15 + lea rdi,[rsp] + call __ecp_nistz256_mul_montx + + lea rbx,[320+rsp] + lea rdi,[64+rsp] + call __ecp_nistz256_sub_fromx + + mov rdx,QWORD[384+rsp] + lea rbx,[384+rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((-128+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[384+rsp] + lea rbx,[384+rsp] + mov r9,QWORD[((0+64))+rsp] + mov r10,QWORD[((8+64))+rsp] + lea rsi,[((-128+64))+rsp] + mov r11,QWORD[((16+64))+rsp] + mov r12,QWORD[((24+64))+rsp] + lea rdi,[288+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[448+rsp] + lea rbx,[448+rsp] + mov r9,QWORD[((0+32))+rsp] + mov r10,QWORD[((8+32))+rsp] + lea rsi,[((-128+32))+rsp] + mov r11,QWORD[((16+32))+rsp] + mov r12,QWORD[((24+32))+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_mul_montx + + lea rbx,[352+rsp] + lea rdi,[96+rsp] + call __ecp_nistz256_sub_fromx + + mov rdx,QWORD[((0+64))+rsp] + mov r14,QWORD[((8+64))+rsp] + lea rsi,[((-128+64))+rsp] + mov r15,QWORD[((16+64))+rsp] + mov r8,QWORD[((24+64))+rsp] + lea rdi,[128+rsp] + call __ecp_nistz256_sqr_montx + + mov rdx,QWORD[((0+96))+rsp] + mov r14,QWORD[((8+96))+rsp] + lea rsi,[((-128+96))+rsp] + mov r15,QWORD[((16+96))+rsp] + mov r8,QWORD[((24+96))+rsp] + lea rdi,[192+rsp] + call __ecp_nistz256_sqr_montx + + mov rdx,QWORD[128+rsp] + lea rbx,[128+rsp] + mov r9,QWORD[((0+64))+rsp] + mov r10,QWORD[((8+64))+rsp] + lea rsi,[((-128+64))+rsp] + mov r11,QWORD[((16+64))+rsp] + mov r12,QWORD[((24+64))+rsp] + lea rdi,[160+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[320+rsp] + lea rbx,[320+rsp] + mov r9,QWORD[((0+128))+rsp] + mov r10,QWORD[((8+128))+rsp] + lea rsi,[((-128+128))+rsp] + mov r11,QWORD[((16+128))+rsp] + mov r12,QWORD[((24+128))+rsp] + lea rdi,[rsp] + call __ecp_nistz256_mul_montx + + + + + xor r11,r11 + add r12,r12 + lea rsi,[192+rsp] + adc r13,r13 + mov rax,r12 + adc r8,r8 + adc r9,r9 + mov rbp,r13 + adc r11,0 + + sub r12,-1 + mov rcx,r8 + sbb r13,r14 + sbb r8,0 + mov r10,r9 + sbb r9,r15 + sbb r11,0 + + cmovc r12,rax + mov rax,QWORD[rsi] + cmovc r13,rbp + mov rbp,QWORD[8+rsi] + cmovc r8,rcx + mov rcx,QWORD[16+rsi] + cmovc r9,r10 + mov r10,QWORD[24+rsi] + + call __ecp_nistz256_subx + + lea rbx,[160+rsp] + lea rdi,[224+rsp] + call __ecp_nistz256_sub_fromx + + mov rax,QWORD[((0+0))+rsp] + mov rbp,QWORD[((0+8))+rsp] + mov rcx,QWORD[((0+16))+rsp] + mov r10,QWORD[((0+24))+rsp] + lea rdi,[64+rsp] + + call __ecp_nistz256_subx + + mov QWORD[rdi],r12 + mov QWORD[8+rdi],r13 + mov QWORD[16+rdi],r8 + mov QWORD[24+rdi],r9 + mov rdx,QWORD[352+rsp] + lea rbx,[352+rsp] + mov r9,QWORD[((0+160))+rsp] + mov r10,QWORD[((8+160))+rsp] + lea rsi,[((-128+160))+rsp] + mov r11,QWORD[((16+160))+rsp] + mov r12,QWORD[((24+160))+rsp] + lea rdi,[32+rsp] + call __ecp_nistz256_mul_montx + + mov rdx,QWORD[96+rsp] + lea rbx,[96+rsp] + mov r9,QWORD[((0+64))+rsp] + mov r10,QWORD[((8+64))+rsp] + lea rsi,[((-128+64))+rsp] + mov r11,QWORD[((16+64))+rsp] + mov r12,QWORD[((24+64))+rsp] + lea rdi,[64+rsp] + call __ecp_nistz256_mul_montx + + lea rbx,[32+rsp] + lea rdi,[256+rsp] + call __ecp_nistz256_sub_fromx + +DB 102,72,15,126,199 + + movdqa xmm0,xmm5 + movdqa xmm1,xmm5 + pandn xmm0,XMMWORD[288+rsp] + movdqa xmm2,xmm5 + pandn xmm1,XMMWORD[((288+16))+rsp] + movdqa xmm3,xmm5 + pand xmm2,XMMWORD[$L$ONE_mont] + pand xmm3,XMMWORD[(($L$ONE_mont+16))] + por xmm2,xmm0 + por xmm3,xmm1 + + movdqa xmm0,xmm4 + movdqa xmm1,xmm4 + pandn xmm0,xmm2 + movdqa xmm2,xmm4 + pandn xmm1,xmm3 + movdqa xmm3,xmm4 + pand xmm2,XMMWORD[384+rsp] + pand xmm3,XMMWORD[((384+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + movdqu XMMWORD[64+rdi],xmm2 + movdqu XMMWORD[80+rdi],xmm3 + + movdqa xmm0,xmm5 + movdqa xmm1,xmm5 + pandn xmm0,XMMWORD[224+rsp] + movdqa xmm2,xmm5 + pandn xmm1,XMMWORD[((224+16))+rsp] + movdqa xmm3,xmm5 + pand xmm2,XMMWORD[416+rsp] + pand xmm3,XMMWORD[((416+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + + movdqa xmm0,xmm4 + movdqa xmm1,xmm4 + pandn xmm0,xmm2 + movdqa xmm2,xmm4 + pandn xmm1,xmm3 + movdqa xmm3,xmm4 + pand xmm2,XMMWORD[320+rsp] + pand xmm3,XMMWORD[((320+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + movdqu XMMWORD[rdi],xmm2 + movdqu XMMWORD[16+rdi],xmm3 + + movdqa xmm0,xmm5 + movdqa xmm1,xmm5 + pandn xmm0,XMMWORD[256+rsp] + movdqa xmm2,xmm5 + pandn xmm1,XMMWORD[((256+16))+rsp] + movdqa xmm3,xmm5 + pand xmm2,XMMWORD[448+rsp] + pand xmm3,XMMWORD[((448+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + + movdqa xmm0,xmm4 + movdqa xmm1,xmm4 + pandn xmm0,xmm2 + movdqa xmm2,xmm4 + pandn xmm1,xmm3 + movdqa xmm3,xmm4 + pand xmm2,XMMWORD[352+rsp] + pand xmm3,XMMWORD[((352+16))+rsp] + por xmm2,xmm0 + por xmm3,xmm1 + movdqu XMMWORD[32+rdi],xmm2 + movdqu XMMWORD[48+rdi],xmm3 + + lea rsi,[((480+56))+rsp] + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbx,QWORD[((-16))+rsi] + + mov rbp,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$add_affinex_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_ecp_nistz256_point_add_affinex: EXTERN __imp_RtlVirtualUnwind @@ -2839,6 +4777,13 @@ DD $L$SEH_begin_ecp_nistz256_ord_sqr_mont wrt ..imagebase DD $L$SEH_end_ecp_nistz256_ord_sqr_mont wrt ..imagebase DD $L$SEH_info_ecp_nistz256_ord_sqr_mont wrt ..imagebase + DD $L$SEH_begin_ecp_nistz256_ord_mul_montx wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_ord_mul_montx wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_ord_mul_montx wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_ord_sqr_montx wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_ord_sqr_montx wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_ord_sqr_montx wrt ..imagebase DD $L$SEH_begin_ecp_nistz256_mul_mont wrt ..imagebase DD $L$SEH_end_ecp_nistz256_mul_mont wrt ..imagebase DD $L$SEH_info_ecp_nistz256_mul_mont wrt ..imagebase @@ -2872,6 +4817,17 @@ DD $L$SEH_begin_ecp_nistz256_point_add_affine wrt ..imagebase DD $L$SEH_end_ecp_nistz256_point_add_affine wrt ..imagebase DD $L$SEH_info_ecp_nistz256_point_add_affine wrt ..imagebase + DD $L$SEH_begin_ecp_nistz256_point_doublex wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_point_doublex wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_point_doublex wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_point_addx wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_point_addx wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_point_addx wrt ..imagebase + + DD $L$SEH_begin_ecp_nistz256_point_add_affinex wrt ..imagebase + DD $L$SEH_end_ecp_nistz256_point_add_affinex wrt ..imagebase + DD $L$SEH_info_ecp_nistz256_point_add_affinex wrt ..imagebase section .xdata rdata align=8 ALIGN 8 @@ -2889,6 +4845,16 @@ DD full_handler wrt ..imagebase DD $L$ord_sqr_body wrt ..imagebase,$L$ord_sqr_epilogue wrt ..imagebase DD 48,0 +$L$SEH_info_ecp_nistz256_ord_mul_montx: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$ord_mulx_body wrt ..imagebase,$L$ord_mulx_epilogue wrt ..imagebase + DD 48,0 +$L$SEH_info_ecp_nistz256_ord_sqr_montx: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$ord_sqrx_body wrt ..imagebase,$L$ord_sqrx_epilogue wrt ..imagebase + DD 48,0 $L$SEH_info_ecp_nistz256_mul_mont: DB 9,0,0,0 DD full_handler wrt ..imagebase @@ -2943,3 +4909,19 @@ DD full_handler wrt ..imagebase DD $L$add_affineq_body wrt ..imagebase,$L$add_affineq_epilogue wrt ..imagebase DD 32*15+56,0 +ALIGN 8 +$L$SEH_info_ecp_nistz256_point_doublex: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$point_doublex_body wrt ..imagebase,$L$point_doublex_epilogue wrt ..imagebase + DD 32*5+56,0 +$L$SEH_info_ecp_nistz256_point_addx: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$point_addx_body wrt ..imagebase,$L$point_addx_epilogue wrt ..imagebase + DD 32*18+56,0 +$L$SEH_info_ecp_nistz256_point_add_affinex: +DB 9,0,0,0 + DD full_handler wrt ..imagebase + DD $L$add_affinex_body wrt ..imagebase,$L$add_affinex_epilogue wrt ..imagebase + DD 32*15+56,0
diff --git a/third_party/boringssl/win-x86_64/crypto/fipsmodule/rsaz-avx2.asm b/third_party/boringssl/win-x86_64/crypto/fipsmodule/rsaz-avx2.asm index 32624ba..0c6f6e1 100644 --- a/third_party/boringssl/win-x86_64/crypto/fipsmodule/rsaz-avx2.asm +++ b/third_party/boringssl/win-x86_64/crypto/fipsmodule/rsaz-avx2.asm
@@ -1817,6 +1817,11 @@ rsaz_avx2_eligible: lea rax,[OPENSSL_ia32cap_P] mov eax,DWORD[8+rax] + mov ecx,524544 + mov edx,0 + and ecx,eax + cmp ecx,524544 + cmove eax,edx and eax,32 shr eax,5 DB 0F3h,0C3h ;repret
diff --git a/third_party/boringssl/win-x86_64/crypto/fipsmodule/x86_64-mont.asm b/third_party/boringssl/win-x86_64/crypto/fipsmodule/x86_64-mont.asm index 1a9da51..5385e26 100644 --- a/third_party/boringssl/win-x86_64/crypto/fipsmodule/x86_64-mont.asm +++ b/third_party/boringssl/win-x86_64/crypto/fipsmodule/x86_64-mont.asm
@@ -31,6 +31,8 @@ jnz NEAR $L$mul_enter cmp r9d,8 jb NEAR $L$mul_enter + lea r11,[OPENSSL_ia32cap_P] + mov r11d,DWORD[8+r11] cmp rdx,rsi jne NEAR $L$mul4x_enter test r9d,7 @@ -222,30 +224,30 @@ xor r14,r14 mov rax,QWORD[rsp] - lea rsi,[rsp] mov r15,r9 - jmp NEAR $L$sub + ALIGN 16 $L$sub: sbb rax,QWORD[r14*8+rcx] mov QWORD[r14*8+rdi],rax - mov rax,QWORD[8+r14*8+rsi] + mov rax,QWORD[8+r14*8+rsp] lea r14,[1+r14] dec r15 jnz NEAR $L$sub sbb rax,0 + mov rbx,-1 + xor rbx,rax xor r14,r14 - and rsi,rax - not rax - mov rcx,rdi - and rcx,rax mov r15,r9 - or rsi,rcx -ALIGN 16 + $L$copy: - mov rax,QWORD[r14*8+rsi] - mov QWORD[r14*8+rsp],r14 - mov QWORD[r14*8+rdi],rax + mov rcx,QWORD[r14*8+rdi] + mov rdx,QWORD[r14*8+rsp] + and rcx,rbx + and rdx,rax + mov QWORD[r14*8+rsp],r9 + or rdx,rcx + mov QWORD[r14*8+rdi],rdx lea r14,[1+r14] sub r15,1 jnz NEAR $L$copy @@ -293,6 +295,9 @@ mov rax,rsp $L$mul4x_enter: + and r11d,0x80100 + cmp r11d,0x80100 + je NEAR $L$mulx4x_enter push rbx push rbp @@ -630,7 +635,6 @@ mov rdi,QWORD[16+r9*8+rsp] lea r15,[((-4))+r9] mov rax,QWORD[rsp] - pxor xmm0,xmm0 mov rdx,QWORD[8+rsp] shr r15,2 lea rsi,[rsp] @@ -640,8 +644,7 @@ mov rbx,QWORD[16+rsi] mov rbp,QWORD[24+rsi] sbb rdx,QWORD[8+rcx] - jmp NEAR $L$sub4x -ALIGN 16 + $L$sub4x: mov QWORD[r14*8+rdi],rax mov QWORD[8+r14*8+rdi],rdx @@ -668,34 +671,35 @@ sbb rax,0 mov QWORD[24+r14*8+rdi],rbp - xor r14,r14 - and rsi,rax - not rax - mov rcx,rdi - and rcx,rax - lea r15,[((-4))+r9] - or rsi,rcx + pxor xmm0,xmm0 +DB 102,72,15,110,224 + pcmpeqd xmm5,xmm5 + pshufd xmm4,xmm4,0 + mov r15,r9 + pxor xmm5,xmm4 shr r15,2 + xor eax,eax - movdqu xmm1,XMMWORD[rsi] - movdqa XMMWORD[rsp],xmm0 - movdqu XMMWORD[rdi],xmm1 jmp NEAR $L$copy4x ALIGN 16 $L$copy4x: - movdqu xmm2,XMMWORD[16+r14*1+rsi] - movdqu xmm1,XMMWORD[32+r14*1+rsi] - movdqa XMMWORD[16+r14*1+rsp],xmm0 - movdqu XMMWORD[16+r14*1+rdi],xmm2 - movdqa XMMWORD[32+r14*1+rsp],xmm0 - movdqu XMMWORD[32+r14*1+rdi],xmm1 - lea r14,[32+r14] + movdqa xmm1,XMMWORD[rax*1+rsp] + movdqu xmm2,XMMWORD[rax*1+rdi] + pand xmm1,xmm4 + pand xmm2,xmm5 + movdqa xmm3,XMMWORD[16+rax*1+rsp] + movdqa XMMWORD[rax*1+rsp],xmm0 + por xmm1,xmm2 + movdqu xmm2,XMMWORD[16+rax*1+rdi] + movdqu XMMWORD[rax*1+rdi],xmm1 + pand xmm3,xmm4 + pand xmm2,xmm5 + movdqa XMMWORD[16+rax*1+rsp],xmm0 + por xmm3,xmm2 + movdqu XMMWORD[16+rax*1+rdi],xmm3 + lea rax,[32+rax] dec r15 jnz NEAR $L$copy4x - - movdqu xmm2,XMMWORD[16+r14*1+rsi] - movdqa XMMWORD[16+r14*1+rsp],xmm0 - movdqu XMMWORD[16+r14*1+rdi],xmm2 mov rsi,QWORD[8+r9*8+rsp] mov rax,1 @@ -719,6 +723,7 @@ DB 0F3h,0C3h ;repret $L$SEH_end_bn_mul4x_mont: +EXTERN bn_sqrx8x_internal EXTERN bn_sqr8x_internal @@ -814,6 +819,26 @@ pxor xmm0,xmm0 DB 102,72,15,110,207 DB 102,73,15,110,218 + lea rax,[OPENSSL_ia32cap_P] + mov eax,DWORD[8+rax] + and eax,0x80100 + cmp eax,0x80100 + jne NEAR $L$sqr8x_nox + + call bn_sqrx8x_internal + + + + + lea rbx,[rcx*1+r8] + mov r9,rcx + mov rdx,rcx +DB 102,72,15,126,207 + sar rcx,3+2 + jmp NEAR $L$sqr8x_sub + +ALIGN 32 +$L$sqr8x_nox: call bn_sqr8x_internal @@ -903,6 +928,376 @@ DB 0F3h,0C3h ;repret $L$SEH_end_bn_sqr8x_mont: + +ALIGN 32 +bn_mulx4x_mont: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_bn_mulx4x_mont: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + mov rax,rsp + +$L$mulx4x_enter: + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$mulx4x_prologue: + + shl r9d,3 + xor r10,r10 + sub r10,r9 + mov r8,QWORD[r8] + lea rbp,[((-72))+r10*1+rsp] + and rbp,-128 + mov r11,rsp + sub r11,rbp + and r11,-4096 + lea rsp,[rbp*1+r11] + mov r10,QWORD[rsp] + cmp rsp,rbp + ja NEAR $L$mulx4x_page_walk + jmp NEAR $L$mulx4x_page_walk_done + +ALIGN 16 +$L$mulx4x_page_walk: + lea rsp,[((-4096))+rsp] + mov r10,QWORD[rsp] + cmp rsp,rbp + ja NEAR $L$mulx4x_page_walk +$L$mulx4x_page_walk_done: + + lea r10,[r9*1+rdx] + + + + + + + + + + + + + mov QWORD[rsp],r9 + shr r9,5 + mov QWORD[16+rsp],r10 + sub r9,1 + mov QWORD[24+rsp],r8 + mov QWORD[32+rsp],rdi + mov QWORD[40+rsp],rax + + mov QWORD[48+rsp],r9 + jmp NEAR $L$mulx4x_body + +ALIGN 32 +$L$mulx4x_body: + lea rdi,[8+rdx] + mov rdx,QWORD[rdx] + lea rbx,[((64+32))+rsp] + mov r9,rdx + + mulx rax,r8,QWORD[rsi] + mulx r14,r11,QWORD[8+rsi] + add r11,rax + mov QWORD[8+rsp],rdi + mulx r13,r12,QWORD[16+rsi] + adc r12,r14 + adc r13,0 + + mov rdi,r8 + imul r8,QWORD[24+rsp] + xor rbp,rbp + + mulx r14,rax,QWORD[24+rsi] + mov rdx,r8 + lea rsi,[32+rsi] + adcx r13,rax + adcx r14,rbp + + mulx r10,rax,QWORD[rcx] + adcx rdi,rax + adox r10,r11 + mulx r11,rax,QWORD[8+rcx] + adcx r10,rax + adox r11,r12 +DB 0xc4,0x62,0xfb,0xf6,0xa1,0x10,0x00,0x00,0x00 + mov rdi,QWORD[48+rsp] + mov QWORD[((-32))+rbx],r10 + adcx r11,rax + adox r12,r13 + mulx r15,rax,QWORD[24+rcx] + mov rdx,r9 + mov QWORD[((-24))+rbx],r11 + adcx r12,rax + adox r15,rbp + lea rcx,[32+rcx] + mov QWORD[((-16))+rbx],r12 + + jmp NEAR $L$mulx4x_1st + +ALIGN 32 +$L$mulx4x_1st: + adcx r15,rbp + mulx rax,r10,QWORD[rsi] + adcx r10,r14 + mulx r14,r11,QWORD[8+rsi] + adcx r11,rax + mulx rax,r12,QWORD[16+rsi] + adcx r12,r14 + mulx r14,r13,QWORD[24+rsi] +DB 0x67,0x67 + mov rdx,r8 + adcx r13,rax + adcx r14,rbp + lea rsi,[32+rsi] + lea rbx,[32+rbx] + + adox r10,r15 + mulx r15,rax,QWORD[rcx] + adcx r10,rax + adox r11,r15 + mulx r15,rax,QWORD[8+rcx] + adcx r11,rax + adox r12,r15 + mulx r15,rax,QWORD[16+rcx] + mov QWORD[((-40))+rbx],r10 + adcx r12,rax + mov QWORD[((-32))+rbx],r11 + adox r13,r15 + mulx r15,rax,QWORD[24+rcx] + mov rdx,r9 + mov QWORD[((-24))+rbx],r12 + adcx r13,rax + adox r15,rbp + lea rcx,[32+rcx] + mov QWORD[((-16))+rbx],r13 + + dec rdi + jnz NEAR $L$mulx4x_1st + + mov rax,QWORD[rsp] + mov rdi,QWORD[8+rsp] + adc r15,rbp + add r14,r15 + sbb r15,r15 + mov QWORD[((-8))+rbx],r14 + jmp NEAR $L$mulx4x_outer + +ALIGN 32 +$L$mulx4x_outer: + mov rdx,QWORD[rdi] + lea rdi,[8+rdi] + sub rsi,rax + mov QWORD[rbx],r15 + lea rbx,[((64+32))+rsp] + sub rcx,rax + + mulx r11,r8,QWORD[rsi] + xor ebp,ebp + mov r9,rdx + mulx r12,r14,QWORD[8+rsi] + adox r8,QWORD[((-32))+rbx] + adcx r11,r14 + mulx r13,r15,QWORD[16+rsi] + adox r11,QWORD[((-24))+rbx] + adcx r12,r15 + adox r12,QWORD[((-16))+rbx] + adcx r13,rbp + adox r13,rbp + + mov QWORD[8+rsp],rdi + mov r15,r8 + imul r8,QWORD[24+rsp] + xor ebp,ebp + + mulx r14,rax,QWORD[24+rsi] + mov rdx,r8 + adcx r13,rax + adox r13,QWORD[((-8))+rbx] + adcx r14,rbp + lea rsi,[32+rsi] + adox r14,rbp + + mulx r10,rax,QWORD[rcx] + adcx r15,rax + adox r10,r11 + mulx r11,rax,QWORD[8+rcx] + adcx r10,rax + adox r11,r12 + mulx r12,rax,QWORD[16+rcx] + mov QWORD[((-32))+rbx],r10 + adcx r11,rax + adox r12,r13 + mulx r15,rax,QWORD[24+rcx] + mov rdx,r9 + mov QWORD[((-24))+rbx],r11 + lea rcx,[32+rcx] + adcx r12,rax + adox r15,rbp + mov rdi,QWORD[48+rsp] + mov QWORD[((-16))+rbx],r12 + + jmp NEAR $L$mulx4x_inner + +ALIGN 32 +$L$mulx4x_inner: + mulx rax,r10,QWORD[rsi] + adcx r15,rbp + adox r10,r14 + mulx r14,r11,QWORD[8+rsi] + adcx r10,QWORD[rbx] + adox r11,rax + mulx rax,r12,QWORD[16+rsi] + adcx r11,QWORD[8+rbx] + adox r12,r14 + mulx r14,r13,QWORD[24+rsi] + mov rdx,r8 + adcx r12,QWORD[16+rbx] + adox r13,rax + adcx r13,QWORD[24+rbx] + adox r14,rbp + lea rsi,[32+rsi] + lea rbx,[32+rbx] + adcx r14,rbp + + adox r10,r15 + mulx r15,rax,QWORD[rcx] + adcx r10,rax + adox r11,r15 + mulx r15,rax,QWORD[8+rcx] + adcx r11,rax + adox r12,r15 + mulx r15,rax,QWORD[16+rcx] + mov QWORD[((-40))+rbx],r10 + adcx r12,rax + adox r13,r15 + mulx r15,rax,QWORD[24+rcx] + mov rdx,r9 + mov QWORD[((-32))+rbx],r11 + mov QWORD[((-24))+rbx],r12 + adcx r13,rax + adox r15,rbp + lea rcx,[32+rcx] + mov QWORD[((-16))+rbx],r13 + + dec rdi + jnz NEAR $L$mulx4x_inner + + mov rax,QWORD[rsp] + mov rdi,QWORD[8+rsp] + adc r15,rbp + sub rbp,QWORD[rbx] + adc r14,r15 + sbb r15,r15 + mov QWORD[((-8))+rbx],r14 + + cmp rdi,QWORD[16+rsp] + jne NEAR $L$mulx4x_outer + + lea rbx,[64+rsp] + sub rcx,rax + neg r15 + mov rdx,rax + shr rax,3+2 + mov rdi,QWORD[32+rsp] + jmp NEAR $L$mulx4x_sub + +ALIGN 32 +$L$mulx4x_sub: + mov r11,QWORD[rbx] + mov r12,QWORD[8+rbx] + mov r13,QWORD[16+rbx] + mov r14,QWORD[24+rbx] + lea rbx,[32+rbx] + sbb r11,QWORD[rcx] + sbb r12,QWORD[8+rcx] + sbb r13,QWORD[16+rcx] + sbb r14,QWORD[24+rcx] + lea rcx,[32+rcx] + mov QWORD[rdi],r11 + mov QWORD[8+rdi],r12 + mov QWORD[16+rdi],r13 + mov QWORD[24+rdi],r14 + lea rdi,[32+rdi] + dec rax + jnz NEAR $L$mulx4x_sub + + sbb r15,0 + lea rbx,[64+rsp] + sub rdi,rdx + +DB 102,73,15,110,207 + pxor xmm0,xmm0 + pshufd xmm1,xmm1,0 + mov rsi,QWORD[40+rsp] + + jmp NEAR $L$mulx4x_cond_copy + +ALIGN 32 +$L$mulx4x_cond_copy: + movdqa xmm2,XMMWORD[rbx] + movdqa xmm3,XMMWORD[16+rbx] + lea rbx,[32+rbx] + movdqu xmm4,XMMWORD[rdi] + movdqu xmm5,XMMWORD[16+rdi] + lea rdi,[32+rdi] + movdqa XMMWORD[(-32)+rbx],xmm0 + movdqa XMMWORD[(-16)+rbx],xmm0 + pcmpeqd xmm0,xmm1 + pand xmm2,xmm1 + pand xmm3,xmm1 + pand xmm4,xmm0 + pand xmm5,xmm0 + pxor xmm0,xmm0 + por xmm4,xmm2 + por xmm5,xmm3 + movdqu XMMWORD[(-32)+rdi],xmm4 + movdqu XMMWORD[(-16)+rdi],xmm5 + sub rdx,32 + jnz NEAR $L$mulx4x_cond_copy + + mov QWORD[rbx],rdx + + mov rax,1 + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$mulx4x_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_bn_mulx4x_mont: DB 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 DB 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56 DB 54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83 @@ -1054,6 +1449,9 @@ DD $L$SEH_begin_bn_sqr8x_mont wrt ..imagebase DD $L$SEH_end_bn_sqr8x_mont wrt ..imagebase DD $L$SEH_info_bn_sqr8x_mont wrt ..imagebase + DD $L$SEH_begin_bn_mulx4x_mont wrt ..imagebase + DD $L$SEH_end_bn_mulx4x_mont wrt ..imagebase + DD $L$SEH_info_bn_mulx4x_mont wrt ..imagebase section .xdata rdata align=8 ALIGN 8 $L$SEH_info_bn_mul_mont: @@ -1069,3 +1467,8 @@ DD sqr_handler wrt ..imagebase DD $L$sqr8x_prologue wrt ..imagebase,$L$sqr8x_body wrt ..imagebase,$L$sqr8x_epilogue wrt ..imagebase ALIGN 8 +$L$SEH_info_bn_mulx4x_mont: +DB 9,0,0,0 + DD sqr_handler wrt ..imagebase + DD $L$mulx4x_prologue wrt ..imagebase,$L$mulx4x_body wrt ..imagebase,$L$mulx4x_epilogue wrt ..imagebase +ALIGN 8
diff --git a/third_party/boringssl/win-x86_64/crypto/fipsmodule/x86_64-mont5.asm b/third_party/boringssl/win-x86_64/crypto/fipsmodule/x86_64-mont5.asm index b330641..4902a75a 100644 --- a/third_party/boringssl/win-x86_64/crypto/fipsmodule/x86_64-mont5.asm +++ b/third_party/boringssl/win-x86_64/crypto/fipsmodule/x86_64-mont5.asm
@@ -29,6 +29,8 @@ test r9d,7 jnz NEAR $L$mul_enter + lea r11,[OPENSSL_ia32cap_P] + mov r11d,DWORD[8+r11] jmp NEAR $L$mul4x_enter ALIGN 16 @@ -418,18 +420,19 @@ jnz NEAR $L$sub sbb rax,0 + mov rbx,-1 + xor rbx,rax xor r14,r14 - and rsi,rax - not rax - mov rcx,rdi - and rcx,rax mov r15,r9 - or rsi,rcx -ALIGN 16 + $L$copy: - mov rax,QWORD[r14*8+rsi] + mov rcx,QWORD[r14*8+rdi] + mov rdx,QWORD[r14*8+rsp] + and rcx,rbx + and rdx,rax mov QWORD[r14*8+rsp],r14 - mov QWORD[r14*8+rdi],rax + or rdx,rcx + mov QWORD[r14*8+rdi],rdx lea r14,[1+r14] sub r15,1 jnz NEAR $L$copy @@ -478,6 +481,9 @@ mov rax,rsp $L$mul4x_enter: + and r11d,0x80108 + cmp r11d,0x80108 + je NEAR $L$mulx4x_enter push rbx push rbp @@ -1119,6 +1125,11 @@ mov rax,rsp + lea r11,[OPENSSL_ia32cap_P] + mov r11d,DWORD[8+r11] + and r11d,0x80108 + cmp r11d,0x80108 + je NEAR $L$powerx5_enter push rbx push rbp @@ -2216,6 +2227,22 @@ DB 0x67 mov rbp,rcx DB 102,73,15,110,218 + lea r11,[OPENSSL_ia32cap_P] + mov r11d,DWORD[8+r11] + and r11d,0x80108 + cmp r11d,0x80108 + jne NEAR $L$from_mont_nox + + lea rdi,[r9*1+rax] + call __bn_sqrx8x_reduction + call __bn_postx4x_internal + + pxor xmm0,xmm0 + lea rax,[48+rsp] + jmp NEAR $L$from_mont_zero + +ALIGN 32 +$L$from_mont_nox: call __bn_sqr8x_reduction call __bn_post4x_internal @@ -2256,6 +2283,1370 @@ DB 0F3h,0C3h ;repret $L$SEH_end_bn_from_mont8x: + +ALIGN 32 +bn_mulx4x_mont_gather5: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_bn_mulx4x_mont_gather5: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + mov rax,rsp + +$L$mulx4x_enter: + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$mulx4x_prologue: + + shl r9d,3 + lea r10,[r9*2+r9] + neg r9 + mov r8,QWORD[r8] + + + + + + + + + + + lea r11,[((-320))+r9*2+rsp] + mov rbp,rsp + sub r11,rdi + and r11,4095 + cmp r10,r11 + jb NEAR $L$mulx4xsp_alt + sub rbp,r11 + lea rbp,[((-320))+r9*2+rbp] + jmp NEAR $L$mulx4xsp_done + +$L$mulx4xsp_alt: + lea r10,[((4096-320))+r9*2] + lea rbp,[((-320))+r9*2+rbp] + sub r11,r10 + mov r10,0 + cmovc r11,r10 + sub rbp,r11 +$L$mulx4xsp_done: + and rbp,-64 + mov r11,rsp + sub r11,rbp + and r11,-4096 + lea rsp,[rbp*1+r11] + mov r10,QWORD[rsp] + cmp rsp,rbp + ja NEAR $L$mulx4x_page_walk + jmp NEAR $L$mulx4x_page_walk_done + +$L$mulx4x_page_walk: + lea rsp,[((-4096))+rsp] + mov r10,QWORD[rsp] + cmp rsp,rbp + ja NEAR $L$mulx4x_page_walk +$L$mulx4x_page_walk_done: + + + + + + + + + + + + + + mov QWORD[32+rsp],r8 + mov QWORD[40+rsp],rax + +$L$mulx4x_body: + call mulx4x_internal + + mov rsi,QWORD[40+rsp] + + mov rax,1 + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$mulx4x_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_bn_mulx4x_mont_gather5: + + +ALIGN 32 +mulx4x_internal: + mov QWORD[8+rsp],r9 + mov r10,r9 + neg r9 + shl r9,5 + neg r10 + lea r13,[128+r9*1+rdx] + shr r9,5+5 + movd xmm5,DWORD[56+rax] + sub r9,1 + lea rax,[$L$inc] + mov QWORD[((16+8))+rsp],r13 + mov QWORD[((24+8))+rsp],r9 + mov QWORD[((56+8))+rsp],rdi + movdqa xmm0,XMMWORD[rax] + movdqa xmm1,XMMWORD[16+rax] + lea r10,[((88-112))+r10*1+rsp] + lea rdi,[128+rdx] + + pshufd xmm5,xmm5,0 + movdqa xmm4,xmm1 +DB 0x67 + movdqa xmm2,xmm1 +DB 0x67 + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 + movdqa xmm3,xmm4 + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[112+r10],xmm0 + movdqa xmm0,xmm4 + + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[128+r10],xmm1 + movdqa xmm1,xmm4 + + paddd xmm0,xmm3 + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[144+r10],xmm2 + movdqa xmm2,xmm4 + + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 + movdqa XMMWORD[160+r10],xmm3 + movdqa xmm3,xmm4 + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[176+r10],xmm0 + movdqa xmm0,xmm4 + + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[192+r10],xmm1 + movdqa xmm1,xmm4 + + paddd xmm0,xmm3 + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[208+r10],xmm2 + movdqa xmm2,xmm4 + + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 + movdqa XMMWORD[224+r10],xmm3 + movdqa xmm3,xmm4 + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[240+r10],xmm0 + movdqa xmm0,xmm4 + + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[256+r10],xmm1 + movdqa xmm1,xmm4 + + paddd xmm0,xmm3 + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[272+r10],xmm2 + movdqa xmm2,xmm4 + + paddd xmm1,xmm0 + pcmpeqd xmm0,xmm5 + movdqa XMMWORD[288+r10],xmm3 + movdqa xmm3,xmm4 +DB 0x67 + paddd xmm2,xmm1 + pcmpeqd xmm1,xmm5 + movdqa XMMWORD[304+r10],xmm0 + + paddd xmm3,xmm2 + pcmpeqd xmm2,xmm5 + movdqa XMMWORD[320+r10],xmm1 + + pcmpeqd xmm3,xmm5 + movdqa XMMWORD[336+r10],xmm2 + + pand xmm0,XMMWORD[64+rdi] + pand xmm1,XMMWORD[80+rdi] + pand xmm2,XMMWORD[96+rdi] + movdqa XMMWORD[352+r10],xmm3 + pand xmm3,XMMWORD[112+rdi] + por xmm0,xmm2 + por xmm1,xmm3 + movdqa xmm4,XMMWORD[((-128))+rdi] + movdqa xmm5,XMMWORD[((-112))+rdi] + movdqa xmm2,XMMWORD[((-96))+rdi] + pand xmm4,XMMWORD[112+r10] + movdqa xmm3,XMMWORD[((-80))+rdi] + pand xmm5,XMMWORD[128+r10] + por xmm0,xmm4 + pand xmm2,XMMWORD[144+r10] + por xmm1,xmm5 + pand xmm3,XMMWORD[160+r10] + por xmm0,xmm2 + por xmm1,xmm3 + movdqa xmm4,XMMWORD[((-64))+rdi] + movdqa xmm5,XMMWORD[((-48))+rdi] + movdqa xmm2,XMMWORD[((-32))+rdi] + pand xmm4,XMMWORD[176+r10] + movdqa xmm3,XMMWORD[((-16))+rdi] + pand xmm5,XMMWORD[192+r10] + por xmm0,xmm4 + pand xmm2,XMMWORD[208+r10] + por xmm1,xmm5 + pand xmm3,XMMWORD[224+r10] + por xmm0,xmm2 + por xmm1,xmm3 + movdqa xmm4,XMMWORD[rdi] + movdqa xmm5,XMMWORD[16+rdi] + movdqa xmm2,XMMWORD[32+rdi] + pand xmm4,XMMWORD[240+r10] + movdqa xmm3,XMMWORD[48+rdi] + pand xmm5,XMMWORD[256+r10] + por xmm0,xmm4 + pand xmm2,XMMWORD[272+r10] + por xmm1,xmm5 + pand xmm3,XMMWORD[288+r10] + por xmm0,xmm2 + por xmm1,xmm3 + pxor xmm0,xmm1 + pshufd xmm1,xmm0,0x4e + por xmm0,xmm1 + lea rdi,[256+rdi] +DB 102,72,15,126,194 + lea rbx,[((64+32+8))+rsp] + + mov r9,rdx + mulx rax,r8,QWORD[rsi] + mulx r12,r11,QWORD[8+rsi] + add r11,rax + mulx r13,rax,QWORD[16+rsi] + adc r12,rax + adc r13,0 + mulx r14,rax,QWORD[24+rsi] + + mov r15,r8 + imul r8,QWORD[((32+8))+rsp] + xor rbp,rbp + mov rdx,r8 + + mov QWORD[((8+8))+rsp],rdi + + lea rsi,[32+rsi] + adcx r13,rax + adcx r14,rbp + + mulx r10,rax,QWORD[rcx] + adcx r15,rax + adox r10,r11 + mulx r11,rax,QWORD[8+rcx] + adcx r10,rax + adox r11,r12 + mulx r12,rax,QWORD[16+rcx] + mov rdi,QWORD[((24+8))+rsp] + mov QWORD[((-32))+rbx],r10 + adcx r11,rax + adox r12,r13 + mulx r15,rax,QWORD[24+rcx] + mov rdx,r9 + mov QWORD[((-24))+rbx],r11 + adcx r12,rax + adox r15,rbp + lea rcx,[32+rcx] + mov QWORD[((-16))+rbx],r12 + jmp NEAR $L$mulx4x_1st + +ALIGN 32 +$L$mulx4x_1st: + adcx r15,rbp + mulx rax,r10,QWORD[rsi] + adcx r10,r14 + mulx r14,r11,QWORD[8+rsi] + adcx r11,rax + mulx rax,r12,QWORD[16+rsi] + adcx r12,r14 + mulx r14,r13,QWORD[24+rsi] +DB 0x67,0x67 + mov rdx,r8 + adcx r13,rax + adcx r14,rbp + lea rsi,[32+rsi] + lea rbx,[32+rbx] + + adox r10,r15 + mulx r15,rax,QWORD[rcx] + adcx r10,rax + adox r11,r15 + mulx r15,rax,QWORD[8+rcx] + adcx r11,rax + adox r12,r15 + mulx r15,rax,QWORD[16+rcx] + mov QWORD[((-40))+rbx],r10 + adcx r12,rax + mov QWORD[((-32))+rbx],r11 + adox r13,r15 + mulx r15,rax,QWORD[24+rcx] + mov rdx,r9 + mov QWORD[((-24))+rbx],r12 + adcx r13,rax + adox r15,rbp + lea rcx,[32+rcx] + mov QWORD[((-16))+rbx],r13 + + dec rdi + jnz NEAR $L$mulx4x_1st + + mov rax,QWORD[8+rsp] + adc r15,rbp + lea rsi,[rax*1+rsi] + add r14,r15 + mov rdi,QWORD[((8+8))+rsp] + adc rbp,rbp + mov QWORD[((-8))+rbx],r14 + jmp NEAR $L$mulx4x_outer + +ALIGN 32 +$L$mulx4x_outer: + lea r10,[((16-256))+rbx] + pxor xmm4,xmm4 +DB 0x67,0x67 + pxor xmm5,xmm5 + movdqa xmm0,XMMWORD[((-128))+rdi] + movdqa xmm1,XMMWORD[((-112))+rdi] + movdqa xmm2,XMMWORD[((-96))+rdi] + pand xmm0,XMMWORD[256+r10] + movdqa xmm3,XMMWORD[((-80))+rdi] + pand xmm1,XMMWORD[272+r10] + por xmm4,xmm0 + pand xmm2,XMMWORD[288+r10] + por xmm5,xmm1 + pand xmm3,XMMWORD[304+r10] + por xmm4,xmm2 + por xmm5,xmm3 + movdqa xmm0,XMMWORD[((-64))+rdi] + movdqa xmm1,XMMWORD[((-48))+rdi] + movdqa xmm2,XMMWORD[((-32))+rdi] + pand xmm0,XMMWORD[320+r10] + movdqa xmm3,XMMWORD[((-16))+rdi] + pand xmm1,XMMWORD[336+r10] + por xmm4,xmm0 + pand xmm2,XMMWORD[352+r10] + por xmm5,xmm1 + pand xmm3,XMMWORD[368+r10] + por xmm4,xmm2 + por xmm5,xmm3 + movdqa xmm0,XMMWORD[rdi] + movdqa xmm1,XMMWORD[16+rdi] + movdqa xmm2,XMMWORD[32+rdi] + pand xmm0,XMMWORD[384+r10] + movdqa xmm3,XMMWORD[48+rdi] + pand xmm1,XMMWORD[400+r10] + por xmm4,xmm0 + pand xmm2,XMMWORD[416+r10] + por xmm5,xmm1 + pand xmm3,XMMWORD[432+r10] + por xmm4,xmm2 + por xmm5,xmm3 + movdqa xmm0,XMMWORD[64+rdi] + movdqa xmm1,XMMWORD[80+rdi] + movdqa xmm2,XMMWORD[96+rdi] + pand xmm0,XMMWORD[448+r10] + movdqa xmm3,XMMWORD[112+rdi] + pand xmm1,XMMWORD[464+r10] + por xmm4,xmm0 + pand xmm2,XMMWORD[480+r10] + por xmm5,xmm1 + pand xmm3,XMMWORD[496+r10] + por xmm4,xmm2 + por xmm5,xmm3 + por xmm4,xmm5 + pshufd xmm0,xmm4,0x4e + por xmm0,xmm4 + lea rdi,[256+rdi] +DB 102,72,15,126,194 + + mov QWORD[rbx],rbp + lea rbx,[32+rax*1+rbx] + mulx r11,r8,QWORD[rsi] + xor rbp,rbp + mov r9,rdx + mulx r12,r14,QWORD[8+rsi] + adox r8,QWORD[((-32))+rbx] + adcx r11,r14 + mulx r13,r15,QWORD[16+rsi] + adox r11,QWORD[((-24))+rbx] + adcx r12,r15 + mulx r14,rdx,QWORD[24+rsi] + adox r12,QWORD[((-16))+rbx] + adcx r13,rdx + lea rcx,[rax*1+rcx] + lea rsi,[32+rsi] + adox r13,QWORD[((-8))+rbx] + adcx r14,rbp + adox r14,rbp + + mov r15,r8 + imul r8,QWORD[((32+8))+rsp] + + mov rdx,r8 + xor rbp,rbp + mov QWORD[((8+8))+rsp],rdi + + mulx r10,rax,QWORD[rcx] + adcx r15,rax + adox r10,r11 + mulx r11,rax,QWORD[8+rcx] + adcx r10,rax + adox r11,r12 + mulx r12,rax,QWORD[16+rcx] + adcx r11,rax + adox r12,r13 + mulx r15,rax,QWORD[24+rcx] + mov rdx,r9 + mov rdi,QWORD[((24+8))+rsp] + mov QWORD[((-32))+rbx],r10 + adcx r12,rax + mov QWORD[((-24))+rbx],r11 + adox r15,rbp + mov QWORD[((-16))+rbx],r12 + lea rcx,[32+rcx] + jmp NEAR $L$mulx4x_inner + +ALIGN 32 +$L$mulx4x_inner: + mulx rax,r10,QWORD[rsi] + adcx r15,rbp + adox r10,r14 + mulx r14,r11,QWORD[8+rsi] + adcx r10,QWORD[rbx] + adox r11,rax + mulx rax,r12,QWORD[16+rsi] + adcx r11,QWORD[8+rbx] + adox r12,r14 + mulx r14,r13,QWORD[24+rsi] + mov rdx,r8 + adcx r12,QWORD[16+rbx] + adox r13,rax + adcx r13,QWORD[24+rbx] + adox r14,rbp + lea rsi,[32+rsi] + lea rbx,[32+rbx] + adcx r14,rbp + + adox r10,r15 + mulx r15,rax,QWORD[rcx] + adcx r10,rax + adox r11,r15 + mulx r15,rax,QWORD[8+rcx] + adcx r11,rax + adox r12,r15 + mulx r15,rax,QWORD[16+rcx] + mov QWORD[((-40))+rbx],r10 + adcx r12,rax + adox r13,r15 + mov QWORD[((-32))+rbx],r11 + mulx r15,rax,QWORD[24+rcx] + mov rdx,r9 + lea rcx,[32+rcx] + mov QWORD[((-24))+rbx],r12 + adcx r13,rax + adox r15,rbp + mov QWORD[((-16))+rbx],r13 + + dec rdi + jnz NEAR $L$mulx4x_inner + + mov rax,QWORD[((0+8))+rsp] + adc r15,rbp + sub rdi,QWORD[rbx] + mov rdi,QWORD[((8+8))+rsp] + mov r10,QWORD[((16+8))+rsp] + adc r14,r15 + lea rsi,[rax*1+rsi] + adc rbp,rbp + mov QWORD[((-8))+rbx],r14 + + cmp rdi,r10 + jb NEAR $L$mulx4x_outer + + mov r10,QWORD[((-8))+rcx] + mov r8,rbp + mov r12,QWORD[rax*1+rcx] + lea rbp,[rax*1+rcx] + mov rcx,rax + lea rdi,[rax*1+rbx] + xor eax,eax + xor r15,r15 + sub r10,r14 + adc r15,r15 + or r8,r15 + sar rcx,3+2 + sub rax,r8 + mov rdx,QWORD[((56+8))+rsp] + dec r12 + mov r13,QWORD[8+rbp] + xor r8,r8 + mov r14,QWORD[16+rbp] + mov r15,QWORD[24+rbp] + jmp NEAR $L$sqrx4x_sub_entry + + +ALIGN 32 +bn_powerx5: + mov QWORD[8+rsp],rdi ;WIN64 prologue + mov QWORD[16+rsp],rsi + mov rax,rsp +$L$SEH_begin_bn_powerx5: + mov rdi,rcx + mov rsi,rdx + mov rdx,r8 + mov rcx,r9 + mov r8,QWORD[40+rsp] + mov r9,QWORD[48+rsp] + + + + mov rax,rsp + +$L$powerx5_enter: + push rbx + + push rbp + + push r12 + + push r13 + + push r14 + + push r15 + +$L$powerx5_prologue: + + shl r9d,3 + lea r10,[r9*2+r9] + neg r9 + mov r8,QWORD[r8] + + + + + + + + + lea r11,[((-320))+r9*2+rsp] + mov rbp,rsp + sub r11,rdi + and r11,4095 + cmp r10,r11 + jb NEAR $L$pwrx_sp_alt + sub rbp,r11 + lea rbp,[((-320))+r9*2+rbp] + jmp NEAR $L$pwrx_sp_done + +ALIGN 32 +$L$pwrx_sp_alt: + lea r10,[((4096-320))+r9*2] + lea rbp,[((-320))+r9*2+rbp] + sub r11,r10 + mov r10,0 + cmovc r11,r10 + sub rbp,r11 +$L$pwrx_sp_done: + and rbp,-64 + mov r11,rsp + sub r11,rbp + and r11,-4096 + lea rsp,[rbp*1+r11] + mov r10,QWORD[rsp] + cmp rsp,rbp + ja NEAR $L$pwrx_page_walk + jmp NEAR $L$pwrx_page_walk_done + +$L$pwrx_page_walk: + lea rsp,[((-4096))+rsp] + mov r10,QWORD[rsp] + cmp rsp,rbp + ja NEAR $L$pwrx_page_walk +$L$pwrx_page_walk_done: + + mov r10,r9 + neg r9 + + + + + + + + + + + + + pxor xmm0,xmm0 +DB 102,72,15,110,207 +DB 102,72,15,110,209 +DB 102,73,15,110,218 +DB 102,72,15,110,226 + mov QWORD[32+rsp],r8 + mov QWORD[40+rsp],rax + +$L$powerx5_body: + + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + call __bn_sqrx8x_internal + call __bn_postx4x_internal + + mov r9,r10 + mov rdi,rsi +DB 102,72,15,126,209 +DB 102,72,15,126,226 + mov rax,QWORD[40+rsp] + + call mulx4x_internal + + mov rsi,QWORD[40+rsp] + + mov rax,1 + + mov r15,QWORD[((-48))+rsi] + + mov r14,QWORD[((-40))+rsi] + + mov r13,QWORD[((-32))+rsi] + + mov r12,QWORD[((-24))+rsi] + + mov rbp,QWORD[((-16))+rsi] + + mov rbx,QWORD[((-8))+rsi] + + lea rsp,[rsi] + +$L$powerx5_epilogue: + mov rdi,QWORD[8+rsp] ;WIN64 epilogue + mov rsi,QWORD[16+rsp] + DB 0F3h,0C3h ;repret + +$L$SEH_end_bn_powerx5: + +global bn_sqrx8x_internal + + +ALIGN 32 +bn_sqrx8x_internal: +__bn_sqrx8x_internal: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lea rdi,[((48+8))+rsp] + lea rbp,[r9*1+rsi] + mov QWORD[((0+8))+rsp],r9 + mov QWORD[((8+8))+rsp],rbp + jmp NEAR $L$sqr8x_zero_start + +ALIGN 32 +DB 0x66,0x66,0x66,0x2e,0x0f,0x1f,0x84,0x00,0x00,0x00,0x00,0x00 +$L$sqrx8x_zero: +DB 0x3e + movdqa XMMWORD[rdi],xmm0 + movdqa XMMWORD[16+rdi],xmm0 + movdqa XMMWORD[32+rdi],xmm0 + movdqa XMMWORD[48+rdi],xmm0 +$L$sqr8x_zero_start: + movdqa XMMWORD[64+rdi],xmm0 + movdqa XMMWORD[80+rdi],xmm0 + movdqa XMMWORD[96+rdi],xmm0 + movdqa XMMWORD[112+rdi],xmm0 + lea rdi,[128+rdi] + sub r9,64 + jnz NEAR $L$sqrx8x_zero + + mov rdx,QWORD[rsi] + + xor r10,r10 + xor r11,r11 + xor r12,r12 + xor r13,r13 + xor r14,r14 + xor r15,r15 + lea rdi,[((48+8))+rsp] + xor rbp,rbp + jmp NEAR $L$sqrx8x_outer_loop + +ALIGN 32 +$L$sqrx8x_outer_loop: + mulx rax,r8,QWORD[8+rsi] + adcx r8,r9 + adox r10,rax + mulx rax,r9,QWORD[16+rsi] + adcx r9,r10 + adox r11,rax +DB 0xc4,0xe2,0xab,0xf6,0x86,0x18,0x00,0x00,0x00 + adcx r10,r11 + adox r12,rax +DB 0xc4,0xe2,0xa3,0xf6,0x86,0x20,0x00,0x00,0x00 + adcx r11,r12 + adox r13,rax + mulx rax,r12,QWORD[40+rsi] + adcx r12,r13 + adox r14,rax + mulx rax,r13,QWORD[48+rsi] + adcx r13,r14 + adox rax,r15 + mulx r15,r14,QWORD[56+rsi] + mov rdx,QWORD[8+rsi] + adcx r14,rax + adox r15,rbp + adc r15,QWORD[64+rdi] + mov QWORD[8+rdi],r8 + mov QWORD[16+rdi],r9 + sbb rcx,rcx + xor rbp,rbp + + + mulx rbx,r8,QWORD[16+rsi] + mulx rax,r9,QWORD[24+rsi] + adcx r8,r10 + adox r9,rbx + mulx rbx,r10,QWORD[32+rsi] + adcx r9,r11 + adox r10,rax +DB 0xc4,0xe2,0xa3,0xf6,0x86,0x28,0x00,0x00,0x00 + adcx r10,r12 + adox r11,rbx +DB 0xc4,0xe2,0x9b,0xf6,0x9e,0x30,0x00,0x00,0x00 + adcx r11,r13 + adox r12,r14 +DB 0xc4,0x62,0x93,0xf6,0xb6,0x38,0x00,0x00,0x00 + mov rdx,QWORD[16+rsi] + adcx r12,rax + adox r13,rbx + adcx r13,r15 + adox r14,rbp + adcx r14,rbp + + mov QWORD[24+rdi],r8 + mov QWORD[32+rdi],r9 + + mulx rbx,r8,QWORD[24+rsi] + mulx rax,r9,QWORD[32+rsi] + adcx r8,r10 + adox r9,rbx + mulx rbx,r10,QWORD[40+rsi] + adcx r9,r11 + adox r10,rax +DB 0xc4,0xe2,0xa3,0xf6,0x86,0x30,0x00,0x00,0x00 + adcx r10,r12 + adox r11,r13 +DB 0xc4,0x62,0x9b,0xf6,0xae,0x38,0x00,0x00,0x00 +DB 0x3e + mov rdx,QWORD[24+rsi] + adcx r11,rbx + adox r12,rax + adcx r12,r14 + mov QWORD[40+rdi],r8 + mov QWORD[48+rdi],r9 + mulx rax,r8,QWORD[32+rsi] + adox r13,rbp + adcx r13,rbp + + mulx rbx,r9,QWORD[40+rsi] + adcx r8,r10 + adox r9,rax + mulx rax,r10,QWORD[48+rsi] + adcx r9,r11 + adox r10,r12 + mulx r12,r11,QWORD[56+rsi] + mov rdx,QWORD[32+rsi] + mov r14,QWORD[40+rsi] + adcx r10,rbx + adox r11,rax + mov r15,QWORD[48+rsi] + adcx r11,r13 + adox r12,rbp + adcx r12,rbp + + mov QWORD[56+rdi],r8 + mov QWORD[64+rdi],r9 + + mulx rax,r9,r14 + mov r8,QWORD[56+rsi] + adcx r9,r10 + mulx rbx,r10,r15 + adox r10,rax + adcx r10,r11 + mulx rax,r11,r8 + mov rdx,r14 + adox r11,rbx + adcx r11,r12 + + adcx rax,rbp + + mulx rbx,r14,r15 + mulx r13,r12,r8 + mov rdx,r15 + lea rsi,[64+rsi] + adcx r11,r14 + adox r12,rbx + adcx r12,rax + adox r13,rbp + +DB 0x67,0x67 + mulx r14,r8,r8 + adcx r13,r8 + adcx r14,rbp + + cmp rsi,QWORD[((8+8))+rsp] + je NEAR $L$sqrx8x_outer_break + + neg rcx + mov rcx,-8 + mov r15,rbp + mov r8,QWORD[64+rdi] + adcx r9,QWORD[72+rdi] + adcx r10,QWORD[80+rdi] + adcx r11,QWORD[88+rdi] + adc r12,QWORD[96+rdi] + adc r13,QWORD[104+rdi] + adc r14,QWORD[112+rdi] + adc r15,QWORD[120+rdi] + lea rbp,[rsi] + lea rdi,[128+rdi] + sbb rax,rax + + mov rdx,QWORD[((-64))+rsi] + mov QWORD[((16+8))+rsp],rax + mov QWORD[((24+8))+rsp],rdi + + + xor eax,eax + jmp NEAR $L$sqrx8x_loop + +ALIGN 32 +$L$sqrx8x_loop: + mov rbx,r8 + mulx r8,rax,QWORD[rbp] + adcx rbx,rax + adox r8,r9 + + mulx r9,rax,QWORD[8+rbp] + adcx r8,rax + adox r9,r10 + + mulx r10,rax,QWORD[16+rbp] + adcx r9,rax + adox r10,r11 + + mulx r11,rax,QWORD[24+rbp] + adcx r10,rax + adox r11,r12 + +DB 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x00 + adcx r11,rax + adox r12,r13 + + mulx r13,rax,QWORD[40+rbp] + adcx r12,rax + adox r13,r14 + + mulx r14,rax,QWORD[48+rbp] + mov QWORD[rcx*8+rdi],rbx + mov ebx,0 + adcx r13,rax + adox r14,r15 + +DB 0xc4,0x62,0xfb,0xf6,0xbd,0x38,0x00,0x00,0x00 + mov rdx,QWORD[8+rcx*8+rsi] + adcx r14,rax + adox r15,rbx + adcx r15,rbx + +DB 0x67 + inc rcx + jnz NEAR $L$sqrx8x_loop + + lea rbp,[64+rbp] + mov rcx,-8 + cmp rbp,QWORD[((8+8))+rsp] + je NEAR $L$sqrx8x_break + + sub rbx,QWORD[((16+8))+rsp] +DB 0x66 + mov rdx,QWORD[((-64))+rsi] + adcx r8,QWORD[rdi] + adcx r9,QWORD[8+rdi] + adc r10,QWORD[16+rdi] + adc r11,QWORD[24+rdi] + adc r12,QWORD[32+rdi] + adc r13,QWORD[40+rdi] + adc r14,QWORD[48+rdi] + adc r15,QWORD[56+rdi] + lea rdi,[64+rdi] +DB 0x67 + sbb rax,rax + xor ebx,ebx + mov QWORD[((16+8))+rsp],rax + jmp NEAR $L$sqrx8x_loop + +ALIGN 32 +$L$sqrx8x_break: + xor rbp,rbp + sub rbx,QWORD[((16+8))+rsp] + adcx r8,rbp + mov rcx,QWORD[((24+8))+rsp] + adcx r9,rbp + mov rdx,QWORD[rsi] + adc r10,0 + mov QWORD[rdi],r8 + adc r11,0 + adc r12,0 + adc r13,0 + adc r14,0 + adc r15,0 + cmp rdi,rcx + je NEAR $L$sqrx8x_outer_loop + + mov QWORD[8+rdi],r9 + mov r9,QWORD[8+rcx] + mov QWORD[16+rdi],r10 + mov r10,QWORD[16+rcx] + mov QWORD[24+rdi],r11 + mov r11,QWORD[24+rcx] + mov QWORD[32+rdi],r12 + mov r12,QWORD[32+rcx] + mov QWORD[40+rdi],r13 + mov r13,QWORD[40+rcx] + mov QWORD[48+rdi],r14 + mov r14,QWORD[48+rcx] + mov QWORD[56+rdi],r15 + mov r15,QWORD[56+rcx] + mov rdi,rcx + jmp NEAR $L$sqrx8x_outer_loop + +ALIGN 32 +$L$sqrx8x_outer_break: + mov QWORD[72+rdi],r9 +DB 102,72,15,126,217 + mov QWORD[80+rdi],r10 + mov QWORD[88+rdi],r11 + mov QWORD[96+rdi],r12 + mov QWORD[104+rdi],r13 + mov QWORD[112+rdi],r14 + lea rdi,[((48+8))+rsp] + mov rdx,QWORD[rcx*1+rsi] + + mov r11,QWORD[8+rdi] + xor r10,r10 + mov r9,QWORD[((0+8))+rsp] + adox r11,r11 + mov r12,QWORD[16+rdi] + mov r13,QWORD[24+rdi] + + +ALIGN 32 +$L$sqrx4x_shift_n_add: + mulx rbx,rax,rdx + adox r12,r12 + adcx rax,r10 +DB 0x48,0x8b,0x94,0x0e,0x08,0x00,0x00,0x00 +DB 0x4c,0x8b,0x97,0x20,0x00,0x00,0x00 + adox r13,r13 + adcx rbx,r11 + mov r11,QWORD[40+rdi] + mov QWORD[rdi],rax + mov QWORD[8+rdi],rbx + + mulx rbx,rax,rdx + adox r10,r10 + adcx rax,r12 + mov rdx,QWORD[16+rcx*1+rsi] + mov r12,QWORD[48+rdi] + adox r11,r11 + adcx rbx,r13 + mov r13,QWORD[56+rdi] + mov QWORD[16+rdi],rax + mov QWORD[24+rdi],rbx + + mulx rbx,rax,rdx + adox r12,r12 + adcx rax,r10 + mov rdx,QWORD[24+rcx*1+rsi] + lea rcx,[32+rcx] + mov r10,QWORD[64+rdi] + adox r13,r13 + adcx rbx,r11 + mov r11,QWORD[72+rdi] + mov QWORD[32+rdi],rax + mov QWORD[40+rdi],rbx + + mulx rbx,rax,rdx + adox r10,r10 + adcx rax,r12 + jrcxz $L$sqrx4x_shift_n_add_break +DB 0x48,0x8b,0x94,0x0e,0x00,0x00,0x00,0x00 + adox r11,r11 + adcx rbx,r13 + mov r12,QWORD[80+rdi] + mov r13,QWORD[88+rdi] + mov QWORD[48+rdi],rax + mov QWORD[56+rdi],rbx + lea rdi,[64+rdi] + nop + jmp NEAR $L$sqrx4x_shift_n_add + +ALIGN 32 +$L$sqrx4x_shift_n_add_break: + adcx rbx,r13 + mov QWORD[48+rdi],rax + mov QWORD[56+rdi],rbx + lea rdi,[64+rdi] +DB 102,72,15,126,213 +__bn_sqrx8x_reduction: + xor eax,eax + mov rbx,QWORD[((32+8))+rsp] + mov rdx,QWORD[((48+8))+rsp] + lea rcx,[((-64))+r9*1+rbp] + + mov QWORD[((0+8))+rsp],rcx + mov QWORD[((8+8))+rsp],rdi + + lea rdi,[((48+8))+rsp] + jmp NEAR $L$sqrx8x_reduction_loop + +ALIGN 32 +$L$sqrx8x_reduction_loop: + mov r9,QWORD[8+rdi] + mov r10,QWORD[16+rdi] + mov r11,QWORD[24+rdi] + mov r12,QWORD[32+rdi] + mov r8,rdx + imul rdx,rbx + mov r13,QWORD[40+rdi] + mov r14,QWORD[48+rdi] + mov r15,QWORD[56+rdi] + mov QWORD[((24+8))+rsp],rax + + lea rdi,[64+rdi] + xor rsi,rsi + mov rcx,-8 + jmp NEAR $L$sqrx8x_reduce + +ALIGN 32 +$L$sqrx8x_reduce: + mov rbx,r8 + mulx r8,rax,QWORD[rbp] + adcx rax,rbx + adox r8,r9 + + mulx r9,rbx,QWORD[8+rbp] + adcx r8,rbx + adox r9,r10 + + mulx r10,rbx,QWORD[16+rbp] + adcx r9,rbx + adox r10,r11 + + mulx r11,rbx,QWORD[24+rbp] + adcx r10,rbx + adox r11,r12 + +DB 0xc4,0x62,0xe3,0xf6,0xa5,0x20,0x00,0x00,0x00 + mov rax,rdx + mov rdx,r8 + adcx r11,rbx + adox r12,r13 + + mulx rdx,rbx,QWORD[((32+8))+rsp] + mov rdx,rax + mov QWORD[((64+48+8))+rcx*8+rsp],rax + + mulx r13,rax,QWORD[40+rbp] + adcx r12,rax + adox r13,r14 + + mulx r14,rax,QWORD[48+rbp] + adcx r13,rax + adox r14,r15 + + mulx r15,rax,QWORD[56+rbp] + mov rdx,rbx + adcx r14,rax + adox r15,rsi + adcx r15,rsi + +DB 0x67,0x67,0x67 + inc rcx + jnz NEAR $L$sqrx8x_reduce + + mov rax,rsi + cmp rbp,QWORD[((0+8))+rsp] + jae NEAR $L$sqrx8x_no_tail + + mov rdx,QWORD[((48+8))+rsp] + add r8,QWORD[rdi] + lea rbp,[64+rbp] + mov rcx,-8 + adcx r9,QWORD[8+rdi] + adcx r10,QWORD[16+rdi] + adc r11,QWORD[24+rdi] + adc r12,QWORD[32+rdi] + adc r13,QWORD[40+rdi] + adc r14,QWORD[48+rdi] + adc r15,QWORD[56+rdi] + lea rdi,[64+rdi] + sbb rax,rax + + xor rsi,rsi + mov QWORD[((16+8))+rsp],rax + jmp NEAR $L$sqrx8x_tail + +ALIGN 32 +$L$sqrx8x_tail: + mov rbx,r8 + mulx r8,rax,QWORD[rbp] + adcx rbx,rax + adox r8,r9 + + mulx r9,rax,QWORD[8+rbp] + adcx r8,rax + adox r9,r10 + + mulx r10,rax,QWORD[16+rbp] + adcx r9,rax + adox r10,r11 + + mulx r11,rax,QWORD[24+rbp] + adcx r10,rax + adox r11,r12 + +DB 0xc4,0x62,0xfb,0xf6,0xa5,0x20,0x00,0x00,0x00 + adcx r11,rax + adox r12,r13 + + mulx r13,rax,QWORD[40+rbp] + adcx r12,rax + adox r13,r14 + + mulx r14,rax,QWORD[48+rbp] + adcx r13,rax + adox r14,r15 + + mulx r15,rax,QWORD[56+rbp] + mov rdx,QWORD[((72+48+8))+rcx*8+rsp] + adcx r14,rax + adox r15,rsi + mov QWORD[rcx*8+rdi],rbx + mov rbx,r8 + adcx r15,rsi + + inc rcx + jnz NEAR $L$sqrx8x_tail + + cmp rbp,QWORD[((0+8))+rsp] + jae NEAR $L$sqrx8x_tail_done + + sub rsi,QWORD[((16+8))+rsp] + mov rdx,QWORD[((48+8))+rsp] + lea rbp,[64+rbp] + adc r8,QWORD[rdi] + adc r9,QWORD[8+rdi] + adc r10,QWORD[16+rdi] + adc r11,QWORD[24+rdi] + adc r12,QWORD[32+rdi] + adc r13,QWORD[40+rdi] + adc r14,QWORD[48+rdi] + adc r15,QWORD[56+rdi] + lea rdi,[64+rdi] + sbb rax,rax + sub rcx,8 + + xor rsi,rsi + mov QWORD[((16+8))+rsp],rax + jmp NEAR $L$sqrx8x_tail + +ALIGN 32 +$L$sqrx8x_tail_done: + xor rax,rax + add r8,QWORD[((24+8))+rsp] + adc r9,0 + adc r10,0 + adc r11,0 + adc r12,0 + adc r13,0 + adc r14,0 + adc r15,0 + adc rax,0 + + sub rsi,QWORD[((16+8))+rsp] +$L$sqrx8x_no_tail: + adc r8,QWORD[rdi] +DB 102,72,15,126,217 + adc r9,QWORD[8+rdi] + mov rsi,QWORD[56+rbp] +DB 102,72,15,126,213 + adc r10,QWORD[16+rdi] + adc r11,QWORD[24+rdi] + adc r12,QWORD[32+rdi] + adc r13,QWORD[40+rdi] + adc r14,QWORD[48+rdi] + adc r15,QWORD[56+rdi] + adc rax,0 + + mov rbx,QWORD[((32+8))+rsp] + mov rdx,QWORD[64+rcx*1+rdi] + + mov QWORD[rdi],r8 + lea r8,[64+rdi] + mov QWORD[8+rdi],r9 + mov QWORD[16+rdi],r10 + mov QWORD[24+rdi],r11 + mov QWORD[32+rdi],r12 + mov QWORD[40+rdi],r13 + mov QWORD[48+rdi],r14 + mov QWORD[56+rdi],r15 + + lea rdi,[64+rcx*1+rdi] + cmp r8,QWORD[((8+8))+rsp] + jb NEAR $L$sqrx8x_reduction_loop + DB 0F3h,0C3h ;repret + +ALIGN 32 +__bn_postx4x_internal: + mov r12,QWORD[rbp] + mov r10,rcx + mov r9,rcx + neg rax + sar rcx,3+2 + +DB 102,72,15,126,202 +DB 102,72,15,126,206 + dec r12 + mov r13,QWORD[8+rbp] + xor r8,r8 + mov r14,QWORD[16+rbp] + mov r15,QWORD[24+rbp] + jmp NEAR $L$sqrx4x_sub_entry + +ALIGN 16 +$L$sqrx4x_sub: + mov r12,QWORD[rbp] + mov r13,QWORD[8+rbp] + mov r14,QWORD[16+rbp] + mov r15,QWORD[24+rbp] +$L$sqrx4x_sub_entry: + andn r12,r12,rax + lea rbp,[32+rbp] + andn r13,r13,rax + andn r14,r14,rax + andn r15,r15,rax + + neg r8 + adc r12,QWORD[rdi] + adc r13,QWORD[8+rdi] + adc r14,QWORD[16+rdi] + adc r15,QWORD[24+rdi] + mov QWORD[rdx],r12 + lea rdi,[32+rdi] + mov QWORD[8+rdx],r13 + sbb r8,r8 + mov QWORD[16+rdx],r14 + mov QWORD[24+rdx],r15 + lea rdx,[32+rdx] + + inc rcx + jnz NEAR $L$sqrx4x_sub + + neg r9 + + DB 0F3h,0C3h ;repret + global bn_scatter5 ALIGN 16 @@ -2567,6 +3958,13 @@ DD $L$SEH_begin_bn_from_mont8x wrt ..imagebase DD $L$SEH_end_bn_from_mont8x wrt ..imagebase DD $L$SEH_info_bn_from_mont8x wrt ..imagebase + DD $L$SEH_begin_bn_mulx4x_mont_gather5 wrt ..imagebase + DD $L$SEH_end_bn_mulx4x_mont_gather5 wrt ..imagebase + DD $L$SEH_info_bn_mulx4x_mont_gather5 wrt ..imagebase + + DD $L$SEH_begin_bn_powerx5 wrt ..imagebase + DD $L$SEH_end_bn_powerx5 wrt ..imagebase + DD $L$SEH_info_bn_powerx5 wrt ..imagebase DD $L$SEH_begin_bn_gather5 wrt ..imagebase DD $L$SEH_end_bn_gather5 wrt ..imagebase DD $L$SEH_info_bn_gather5 wrt ..imagebase @@ -2593,6 +3991,16 @@ DD mul_handler wrt ..imagebase DD $L$from_prologue wrt ..imagebase,$L$from_body wrt ..imagebase,$L$from_epilogue wrt ..imagebase ALIGN 8 +$L$SEH_info_bn_mulx4x_mont_gather5: +DB 9,0,0,0 + DD mul_handler wrt ..imagebase + DD $L$mulx4x_prologue wrt ..imagebase,$L$mulx4x_body wrt ..imagebase,$L$mulx4x_epilogue wrt ..imagebase +ALIGN 8 +$L$SEH_info_bn_powerx5: +DB 9,0,0,0 + DD mul_handler wrt ..imagebase + DD $L$powerx5_prologue wrt ..imagebase,$L$powerx5_body wrt ..imagebase,$L$powerx5_epilogue wrt ..imagebase +ALIGN 8 $L$SEH_info_bn_gather5: DB 0x01,0x0b,0x03,0x0a DB 0x0b,0x01,0x21,0x00
diff --git a/third_party/closure_compiler/externs/file_manager_private.js b/third_party/closure_compiler/externs/file_manager_private.js index c64d44c..ea7ef4d 100644 --- a/third_party/closure_compiler/externs/file_manager_private.js +++ b/third_party/closure_compiler/externs/file_manager_private.js
@@ -736,7 +736,9 @@ /** * Starts and mounts crostini container. - * @param {function(boolean)} callback + * @param {function()} callback Callback called after the crostini container + * is started and mounted. + * chrome.runtime.lastError will be set if there was an error. */ chrome.fileManagerPrivate.mountCrostiniContainer = function(callback) {};
diff --git a/third_party/freetype/README.chromium b/third_party/freetype/README.chromium index d206ee4..5e0a64bb 100644 --- a/third_party/freetype/README.chromium +++ b/third_party/freetype/README.chromium
@@ -1,7 +1,7 @@ Name: FreeType URL: http://www.freetype.org/ -Version: VER-2-9-67 -Revision: 2157d8fa6f7e12063ca166476ed2223d24234db7 +Version: VER-2-9-1-7 +Revision: 9e345c911714ed62250be13d03d72e25d91fbc77 License: Custom license "inspired by the BSD, Artistic, and IJG (Independent JPEG Group) licenses" License File: src/docs/FTL.TXT
diff --git a/third_party/freetype/roll-freetype.sh b/third_party/freetype/roll-freetype.sh index 7e503e9..7d5cbd3 100755 --- a/third_party/freetype/roll-freetype.sh +++ b/third_party/freetype/roll-freetype.sh
@@ -18,11 +18,10 @@ } addotherprojectbugs() { - STEP="add pdfium and chromiumos bugs" && + STEP="add pdfium bug" && OLD_MSG=$(git show -s --format=%B HEAD) && git commit --amend -m"$OLD_MSG" -m" -PDFium-Issue: pdfium: -ChromiumOS-Issue: chromium:" +PDFium-Issue: pdfium:" } checkmodules() {
diff --git a/third_party/libwebp/BUILD.gn b/third_party/libwebp/BUILD.gn index fb3811b2..dc741e0 100644 --- a/third_party/libwebp/BUILD.gn +++ b/third_party/libwebp/BUILD.gn
@@ -22,9 +22,8 @@ } } -set_opt_level = - !is_debug && (is_posix || is_fuchsia) && - (current_cpu == "arm" || current_cpu == "arm64") +set_opt_level = !is_debug && (is_posix || is_fuchsia) && + (current_cpu == "arm" || current_cpu == "arm64") # webp's dsp code can be built for all configurations. Skipping it when both # arm_use_neon and arm_optionally_use_neon are false will result in link errors @@ -111,6 +110,7 @@ configs -= [ "//build/config/compiler:chromium_code" ] configs += [ "//build/config/compiler:no_chromium_code" ] deps = [ + ":libwebp_dec", ":libwebp_utils", ":libwebp_webp", ] @@ -374,6 +374,10 @@ all_dependent_configs = [ ":libwebp_config" ] public_configs = [ ":libwebp_utils_warnings" ] + + deps = [ + ":libwebp_webp", + ] } group("libwebp") { @@ -408,6 +412,7 @@ } deps = [ + ":imageio_util", ":libwebp_webp", ] configs += [ ":libwebp_config" ]
diff --git a/third_party/snappy/OWNERS b/third_party/snappy/OWNERS index 59814dec..fdee416 100644 --- a/third_party/snappy/OWNERS +++ b/third_party/snappy/OWNERS
@@ -2,8 +2,8 @@ pwnall@chromium.org # Secondary +cmumford@chromium.org jsbell@chromium.org -michaeln@chromium.org # TEAM: storage-dev@chromium.org # COMPONENT: Internals>Storage
diff --git a/third_party/sqlite/OWNERS b/third_party/sqlite/OWNERS index 03c959e..b542429 100644 --- a/third_party/sqlite/OWNERS +++ b/third_party/sqlite/OWNERS
@@ -1,8 +1,8 @@ -# Reviewers: +# Primary: pwnall@chromium.org -# Owners: -michaeln@chromium.org +# Secondary: +cmumford@chromium.org # TEAM: storage-dev@chromium.org # COMPONENT: Internals>Storage
diff --git a/third_party/test_fonts/BUILD.gn b/third_party/test_fonts/BUILD.gn index 1d92bcb..94d09ad 100644 --- a/third_party/test_fonts/BUILD.gn +++ b/third_party/test_fonts/BUILD.gn
@@ -5,6 +5,7 @@ copy("test_fonts") { sources = [ "LICENSE", + "test_fonts/Ahem.ttf", "test_fonts/Arimo-Bold.ttf", "test_fonts/Arimo-BoldItalic.ttf", "test_fonts/Arimo-Italic.ttf",
diff --git a/third_party/test_fonts/LICENSE b/third_party/test_fonts/LICENSE index 50738f4..dfb2db8 100644 --- a/third_party/test_fonts/LICENSE +++ b/third_party/test_fonts/LICENSE
@@ -957,3 +957,45 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + + +-------------------------------------------------------------------------------- +The public domain/Creative Commons Zero license applies to the following files +Ahem.ttf + +The Ahem font in this directory belongs to the public domain. In +jurisdictions that do not recognize public domain ownership of these +files, the following Creative Commons Zero declaration applies: + +<http://labs.creativecommons.org/licenses/zero-waive/1.0/us/legalcode> + +which is quoted below: + + The person who has associated a work with this document (the "Work") + affirms that he or she (the "Affirmer") is the/an author or owner of + the Work. The Work may be any work of authorship, including a + database. + + The Affirmer hereby fully, permanently and irrevocably waives and + relinquishes all of her or his copyright and related or neighboring + legal rights in the Work available under any federal or state law, + treaty or contract, including but not limited to moral rights, + publicity and privacy rights, rights protecting against unfair + competition and any rights protecting the extraction, dissemination + and reuse of data, whether such rights are present or future, vested + or contingent (the "Waiver"). The Affirmer makes the Waiver for the + benefit of the public at large and to the detriment of the Affirmer's + heirs or successors. + + The Affirmer understands and intends that the Waiver has the effect + of eliminating and entirely removing from the Affirmer's control all + the copyright and related or neighboring legal rights previously held + by the Affirmer in the Work, to that extent making the Work freely + available to the public for any and all uses and purposes without + restriction of any kind, including commercial use and uses in media + and formats or by methods that have not yet been invented or + conceived. Should the Waiver for any reason be judged legally + ineffective in any jurisdiction, the Affirmer hereby grants a free, + full, permanent, irrevocable, nonexclusive and worldwide license for + all her or his copyright and related or neighboring legal rights in + the Work.
diff --git a/third_party/test_fonts/README.chromium b/third_party/test_fonts/README.chromium index 3b252a3..d889c9b2 100644 --- a/third_party/test_fonts/README.chromium +++ b/third_party/test_fonts/README.chromium
@@ -36,6 +36,7 @@ Font Origins: +Ahem.ttf https://web-platform-tests.org/writing-tests/ahem.html Arimo-Bold.ttf https://github.com/google/fonts/tree/master/apache/arimo Arimo-BoldItalic.ttf https://github.com/google/fonts/tree/master/apache/arimo Arimo-Italic.ttf https://github.com/google/fonts/tree/master/apache/arimo
diff --git a/third_party/test_fonts/test_fonts.tar.gz.sha1 b/third_party/test_fonts/test_fonts.tar.gz.sha1 index 1ecedbc..e5c483b7 100644 --- a/third_party/test_fonts/test_fonts.tar.gz.sha1 +++ b/third_party/test_fonts/test_fonts.tar.gz.sha1
@@ -1 +1 @@ -2c437fdc6f6ff8db8737d29bf32351985a9e102c \ No newline at end of file +3a889836c66b5eea318462a50de04d607ad5df6c \ No newline at end of file
diff --git a/tools/cfi/blacklist.txt b/tools/cfi/blacklist.txt index d7b086b..60258743 100644 --- a/tools/cfi/blacklist.txt +++ b/tools/cfi/blacklist.txt
@@ -188,6 +188,8 @@ # the unit tests do not exercise those code paths. Be careful removing. src:*net/http/http_auth_gssapi_posix.cc +src:*third_party/breakpad/breakpad/src/client/linux/handler/exception_handler_unittest.cc + ######### Function pointers cast to incorrect type signatures # libicu is currently compiled such that in libicu the 'UChar' type is a
diff --git a/tools/code_coverage/coverage.py b/tools/code_coverage/coverage.py index 4f73bd27..7f45542 100755 --- a/tools/code_coverage/coverage.py +++ b/tools/code_coverage/coverage.py
@@ -742,17 +742,15 @@ component_view_index_file_path) html_generator = _CoverageReportHtmlGenerator(component_view_index_file_path, 'Component') - totals_coverage_summary = _CoverageSummary() - for component in per_component_coverage_summary: - totals_coverage_summary.AddSummary( - per_component_coverage_summary[component]) - html_generator.AddLinkToAnotherReport( _GetCoverageHtmlReportPathForComponent(component), component, per_component_coverage_summary[component]) - html_generator.CreateTotalsEntry(totals_coverage_summary) + # Do not create a totals row for the component view as the value is incorrect + # due to failure to account for UNKNOWN component and some paths belonging to + # multiple components. + html_generator.WriteHtmlCoverageReport(no_file_view) logging.debug('Finished generating component view html index file.')
diff --git a/tools/code_coverage/html_templates/table.html b/tools/code_coverage/html_templates/table.html index 28f88952..63cca09 100644 --- a/tools/code_coverage/html_templates/table.html +++ b/tools/code_coverage/html_templates/table.html
@@ -31,16 +31,18 @@ </tr> {% endfor %} </tbody> - <tfoot> - <tr class="light-row-bold"> - <td> - <pre>Totals</pre> - </td> - {% for feature in ("lines", "functions", "regions") %} - <td class='column-entry-{{ total_entry[feature]["color_class"] }}'> - <pre>{{ total_entry[feature]["percentage"] }}% ({{ total_entry[feature]["covered"] }}/{{ total_entry[feature]["total"] }})</pre> - </td> - {% endfor %} - </tr> - </tfoot> + {% if total_entry %} + <tfoot> + <tr class="light-row-bold"> + <td> + <pre>Totals</pre> + </td> + {% for feature in ("lines", "functions", "regions") %} + <td class='column-entry-{{ total_entry[feature]["color_class"] }}'> + <pre>{{ total_entry[feature]["percentage"] }}% ({{ total_entry[feature]["covered"] }}/{{ total_entry[feature]["total"] }})</pre> + </td> + {% endfor %} + </tr> + </tfoot> + {% endif %} </table> \ No newline at end of file
diff --git a/tools/fuchsia/comparative_tester/comparative_tester.py b/tools/fuchsia/comparative_tester/comparative_tester.py new file mode 100755 index 0000000..d42f339 --- /dev/null +++ b/tools/fuchsia/comparative_tester/comparative_tester.py
@@ -0,0 +1,390 @@ +#!/usr/bin/env python3 +# Copyright 2018 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# This script takes in a list of test targets to be run on both Linux and +# Fuchsia devices and then compares their output to each other, extracting the +# relevant performance data from the output of gtest. + +import os +import re +import subprocess +import sys +from typing import * + +import target_spec + + +def RunCommand(command: List[str], msg: str, + ignore_errors: bool = False) -> str: + "One-shot start and complete command with useful default kwargs" + proc = subprocess.run( + command, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + stdin=subprocess.DEVNULL) + out = proc.stdout.decode("utf-8", errors="ignore") + err = proc.stderr.decode("utf-8", errors="ignore") + if proc.returncode != 0: + sys.stderr.write("{}\nreturn code: {}\nstdout: {}\nstderr: {}".format( + msg, proc.returncode, out, err)) + if not ignore_errors: + raise subprocess.SubprocessError( + "Command failed to complete successfully. {}".format(command)) + return out + + +class TestTarget(object): + """TestTarget encapsulates a single BUILD.gn target, extracts a name from the + target string, and manages the building and running of the target for both + Linux and Fuchsia. + """ + + def __init__(self, target: str, filters: str = "") -> None: + self.Target = target + self.Name = target.split(":")[-1] + if filters != "": + self.FilterFlag = "--gtest_filter='" + filters + "'" + else: + self.FilterFlag = "" + + def ExecFuchsia(self, out_dir: str, run_locally: bool) -> str: + runner_name = "{}/bin/run_{}".format(out_dir, self.Name) + command = [runner_name, self.FilterFlag] + if not run_locally: + command.append("-d") + + # TODO(stephanstross): Remove this when fuchsia logging fix lands + command.extend([ + "--test-launcher-summary-output", "/tmp/fuchsia.json", "--", + "--gtest_output=json:/data/test_summary.json" + ]) + return RunCommand( + command, + "Test {} failed on fuchsia!".format(self.Target), + ignore_errors=True) + + def ExecLinux(self, out_dir: str, run_locally: bool) -> str: + local_path = "{}/{}".format(out_dir, self.Name) + command = [] + if not run_locally: + user = target_spec.linux_device_user + ip = target_spec.linux_device_hostname + host_machine = "{0}@{1}".format(user, ip) + # Next is the transfer of all the directories to the destination device. + self.TransferDependencies(out_dir, host_machine) + command = [ + "ssh", "{}@{}".format(user, ip), "xvfb-run -a {1}/{0}/{1} {2}".format( + out_dir, self.Name, self.FilterFlag) + ] + else: + command = [local_path, self.FilterFlag] + result = RunCommand( + command, + "Test {} failed on linux!".format(self.Target), + ignore_errors=True) + # Clean up the copy of the test files on the host after execution + RunCommand(["rm", "-rf", self.Name], + "Failed to remove host directory for {}".format(self.Target)) + return result + + def TransferDependencies(self, out_dir: str, host: str): + gn_desc = ["gn", "desc", out_dir, self.Target, "runtime_deps"] + out = RunCommand( + gn_desc, "Failed to get dependencies of target {}".format(self.Target)) + + paths = [] + for line in out.split("\n"): + if line == "": + continue + line = out_dir + "/" + line.strip() + line = os.path.abspath(line) + paths.append(line) + common = os.path.commonpath(paths) + paths = [os.path.relpath(path, common) for path in paths] + + archive_name = self.Name + ".tar.gz" + # Compress the dependencies of the test. + RunCommand( + ["tar", "-czf", archive_name] + paths, + "{} dependency compression failed".format(self.Target), + ) + # Make sure the containing directory exists on the host, for easy cleanup. + RunCommand(["ssh", host, "mkdir -p {}".format(self.Name)], + "Failed to create directory on host for {}".format(self.Target)) + # Transfer the test deps to the host. + RunCommand( + ["scp", archive_name, "{}:{}/{}".format(host, self.Name, archive_name)], + "{} dependency transfer failed".format(self.Target), + ) + # Decompress the dependencies once they're on the host. + RunCommand( + [ + "ssh", host, "tar -xzf {0}/{1} -C {0}".format( + self.Name, archive_name) + ], + "{} dependency decompression failed".format(self.Target), + ) + # Clean up the local copy of the archive that is no longer needed. + RunCommand( + ["rm", archive_name], + "{} dependency archive cleanup failed".format(self.Target), + ) + + +def ExtractParts(string: str) -> (str, float, str): + """This function accepts lines like the one that follow this sentence, and + attempts to extract all of the relevant pieces of information from it. + + task: 1_threads_scheduling_to_io_pump= .47606626678091973 us/task + + The above line would be split into chunks as follows: + + info=data units + + info and units can be any string, and data must be a valid float. data and + units must be separated by a space, and info and data must be separated by + at least an '=' + """ + pieces = string.split("=") + info = pieces[0].strip() + measure = pieces[1].strip().split(" ") + data = float(measure[0]) + units = measure[1].strip() + return info, data, units + + +class ResultLine(object): + """This class is a single line of the comparison between linux and fuchsia. + GTests output several lines of important info per test, which are collected, + and then the pertinent pieces of information are extracted and stored in a + ResultLine for each line, containing a shared description and unit, as well as + linux and fuchsia performance scores. + """ + + def __init__(self, linux_line: str, fuchsia_line: str) -> None: + linux_info, linux_val, linux_unit = ExtractParts(linux_line) + fuchsia_info, fuchsia_val, fuchsia_unit = ExtractParts(fuchsia_line) + + if linux_info != fuchsia_info: + print("Info mismatch! fuchsia was: {}".format(fuchsia_info)) + if linux_unit != fuchsia_unit: + print("Unit mismatch! fuchsia was: {}".format(fuchsia_unit)) + + self.desc = linux_info + self.linux = linux_val + self.fuchsia = fuchsia_val + self.unit = fuchsia_unit + + def comparison(self) -> float: + return (self.fuchsia / self.linux) * 100.0 + + def ToCsvFormat(self) -> str: + return ",".join([ + self.desc.replace(",", ";"), + str(self.linux), + str(self.fuchsia), + str(self.comparison()), + self.unit, + ]) + + def __format__(self, format_spec: str) -> str: + return "{} in {}: linux:{}, fuchsia:{}, ratio:{}".format( + self.desc, self.unit, self.linux, self.fuchsia, self.comparison()) + + +class TestComparison(object): + """This class represents a single test target, and all of its informative + lines of output for each test case, extracted into statistical comparisons of + this run on linux v fuchsia. + """ + + def __init__(self, name: str, tests: Dict[str, List[ResultLine]]) -> None: + self.suite_name = name + self.tests = tests + + def MakeCsvFormat(self) -> str: + lines = [] + for test_name, lines in self.tests.items(): + for line in lines: + lines.append("{},{},{}".format(self.suite_name, test_name, + line.MakeCsvFormat())) + return "\n".join(lines) + + def __format__(self, format_spec: str) -> str: + lines = [self.suite_name] + for test_case, lines in self.tests.items(): + lines.append(" {}".format(test_case)) + for line in lines: + lines.append(" {}".format(line)) + return "\n".join(lines) + + +def ExtractCases(out_lines: List[str]) -> Dict[str, List[str]]: + """ExtractCases attempts to associate GTest names to the lines of output that + they produce. Given a list of input like the following: + + [==========] Running 24 tests from 10 test cases. + [----------] Global test environment set-up. + [----------] 9 tests from ScheduleWorkTest + [ RUN ] ScheduleWorkTest.ThreadTimeToIOFromOneThread + *RESULT task: 1_threads_scheduling_to_io_pump= .47606626678091973 us/task + RESULT task_min_batch_time: 1_threads_scheduling_to_io_pump= .335 us/task + RESULT task_max_batch_time: 1_threads_scheduling_to_io_pump= 5.071 us/task + *RESULT task_thread_time: 1_threads_scheduling_to_io_pump= .3908787013 us/task + [ OK ] ScheduleWorkTest.ThreadTimeToIOFromOneThread (5352 ms) + [ RUN ] ScheduleWorkTest.ThreadTimeToIOFromTwoThreads + *RESULT task: 2_threads_scheduling_to_io_pump= 6.216794903666874 us/task + RESULT task_min_batch_time: 2_threads_scheduling_to_io_pump= 2.523 us/task + RESULT task_max_batch_time: 2_threads_scheduling_to_io_pump= 142.989 us/task + *RESULT task_thread_time: 2_threads_scheduling_to_io_pump= 2.02621823 us/task + [ OK ] ScheduleWorkTest.ThreadTimeToIOFromTwoThreads (5022 ms) + [ RUN ] ScheduleWorkTest.ThreadTimeToIOFromFourThreads + + It will first skip all lines which do not contain either RUN or RESULT. + Then, each 'RUN' line is stripped of the bracketed portion, down to just the + name of the test, and then placed into a dictionary that maps it to all the + lines beneath it, up to the next RUN line. The RESULT lines all have their + RESULT portions chopped out as well, and only the piece following RESULT is + kept + + {'ScheduleWorkTest.ThreadTimeToIOFromOneThread':[ + 'task: 1_threads_scheduling_to_io_pump= .47606626678091973 us/task', + 'task_min_batch_time: 1_threads_scheduling_to_io_pump= .335 us/task', + 'task_max_batch_time: 1_threads_scheduling_to_io_pump= 5.071 us/task', + 'task_thread_time: 1_threads_scheduling_to_io_pump= .390834314 us/task'], + 'ScheduleWorkTest.ThreadTimeToIOFromTwoThreads':[ + 'task: 2_threads_scheduling_to_io_pump= 6.216794903666874 us/task', + 'task_min_batch_time: 2_threads_scheduling_to_io_pump= 2.523 us/task', + 'task_max_batch_time: 2_threads_scheduling_to_io_pump= 142.989 us/task', + 'task_thread_time: 2_threads_scheduling_to_io_pump= 2.02620013 us/task'], + 'ScheduleWorkTest.ThreadTimeToIOFromFourThreads':[]} + """ + lines = [] + for line in out_lines: + if "RUN" in line or "RESULT" in line: + lines.append(line) + cases = {} + name = "" + case_lines = [] + for line in lines: + # We've hit a new test suite, write the old accumulators and start new + # ones. The name variable is checked to make sure this isn't the first one + # in the list of lines + if "RUN" in line: + if name != "": + cases[name] = case_lines + case_lines = [] + name = line.split("]")[-1] # Get the actual name of the test case. + + else: + if "RESULT" not in line: + print("{} did not get filtered!".format(line)) + line_trimmed = line.split("RESULT")[-1].strip() + case_lines.append(line_trimmed) + return cases + + +def CollateTests(linux_lines: List[str], fuchsia_lines: List[str], + test_target: str) -> TestComparison: + """This function takes the GTest output of a single test target, and matches + the informational sections of the outputs together, before collapsing them + down into ResultLines attached to TestComparisons. + """ + + linux_cases = ExtractCases(linux_lines) + fuchsia_cases = ExtractCases(fuchsia_lines) + + comparisons = {} + for case_name, linux_case_lines in linux_cases.items(): + # If fuchsia didn't contain that test case, skip it, but alert the user. + if not case_name in fuchsia_cases: + print("Fuchsia is missing test case {}".format(case_name)) + continue + + fuchsia_case_lines = fuchsia_cases[case_name] + + # Each test case should output its informational lines in the same order, so + # if tests only produce partial output, any tailing info should be dropped, + # and only data that was produced by both tests will be compared. + paired_case_lines = zip(linux_case_lines, fuchsia_case_lines) + if len(linux_case_lines) != len(fuchsia_case_lines): + print("Linux and Fuchsia have produced different output lengths for the " + "test {}!".format(case_name)) + desc_lines = [ResultLine(*pair) for pair in paired_case_lines] + comparisons[case_name] = desc_lines + + for case_name in fuchsia_cases.keys(): + if case_name not in comparisons.keys(): + print("Linux is missing test case {}".format(case_name)) + + return TestComparison(test_target, comparisons) + + +def RunTest(target: TestTarget, run_locally: bool = False) -> TestComparison: + + linux_output = target.ExecLinux(target_spec.linux_out_dir, run_locally) + fuchsia_output = target.ExecFuchsia(target_spec.fuchsia_out_dir, run_locally) + return CollateTests( + linux_output.split("\n"), fuchsia_output.split("\n"), target.Name) + + +def RunGnForDirectory(dir_name: str, target_os: str) -> None: + if not os.path.exists(dir_name): + os.makedirs(dir_name) + with open("{}/{}".format(dir_name, "args.gn"), "w") as args_file: + args_file.write("is_debug = false\n") + args_file.write("dcheck_always_on = false\n") + args_file.write("is_component_build = false\n") + args_file.write("use_goma = true\n") + args_file.write("target_os = \"{}\"\n".format(target_os)) + + subprocess.run(["gn", "gen", dir_name]).check_returncode() + + +def GenerateTestData() -> List[List[TestComparison]]: + DIR_SOURCE_ROOT = os.path.abspath( + os.path.join(os.path.dirname(__file__), *([os.pardir] * 3))) + os.chdir(DIR_SOURCE_ROOT) + + # Grab parameters from config file. + linux_dir = target_spec.linux_out_dir + fuchsia_dir = target_spec.fuchsia_out_dir + test_input = [] + for (test, filters) in target_spec.test_targets.items(): + test_input.append(TestTarget(test, filters)) + print("Test targets collected:\n{}".format("\n".join( + [test.Target for test in test_input]))) + + RunGnForDirectory(linux_dir, "linux") + RunGnForDirectory(fuchsia_dir, "fuchsia") + + # Build test targets in both output directories. + for directory in [linux_dir, fuchsia_dir]: + build_command = ["autoninja", "-C", directory] \ + + [test.Target for test in test_input] + RunCommand( + build_command, + "Unable to build targets in directory {}".format(directory), + ) + print("Builds completed.") + + # Execute the tests, one at a time, per system, and collect their results. + results = [] + print("Running Tests") + for test in test_input: + results.append(RunTest(test)) + + print("Tests Completed") + with open("comparison_results.csv", "w") as out_file: + out_file.write( + "target,test,description,linux,fuchsia,fuchsia/linux,units\n") + for result in results: + out_file.write(result.MakeCsvFormat()) + out_file.write("\n") + return results + + +if __name__ == "__main__": + sys.exit(GenerateTestData())
diff --git a/tools/fuchsia/comparative_tester/target_spec.py b/tools/fuchsia/comparative_tester/target_spec.py new file mode 100644 index 0000000..0aac16b --- /dev/null +++ b/tools/fuchsia/comparative_tester/target_spec.py
@@ -0,0 +1,19 @@ +# Copyright 2018 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Fields for use when working with a physical linux device connected locally +linux_device_hostname = "192.168.42.32" +linux_device_user = "potat" + +linux_out_dir = "out/default" +fuchsia_out_dir = "out/fuchsia" + +# A map of test target names to a list of test filters to be passed to +# --gtest_filter. Stick to *_perftests. Also, whoo implicit string +# joining! +test_targets = { + "base:base_perftests": "-WaitableEventPerfTest.Throughput" + ":MessageLoopPerfTest.PostTaskRate/1_Posting_Thread", + "net:net_perftests": "", +}
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl index d1453d5..0608200 100644 --- a/tools/mb/mb_config.pyl +++ b/tools/mb/mb_config.pyl
@@ -115,10 +115,10 @@ 'CrWinAsan(dll)': 'asan_clang_shared_v8_heap_x86_full_symbols_release', 'CrWinAsanCov': 'asan_clang_edge_fuzzer_static_v8_heap_x86_full_symbols_release', - 'CrWinClangLLD': 'clang_tot_official_static_use_lld_x86', - 'CrWinClangLLD64': 'clang_tot_shared_release_use_lld_dcheck', - 'CrWinClngLLD64dbg': 'clang_tot_full_symbols_shared_debug_use_lld', - 'CrWinClngLLDdbg': 'clang_tot_full_symbols_shared_debug_use_lld_x86', + 'CrWinClangLLD': 'clang_tot_official_static_no_lld_x86', + 'CrWinClangLLD64': 'clang_tot_shared_release_no_lld_dcheck', + 'CrWinClngLLD64dbg': 'clang_tot_full_symbols_shared_debug_no_lld', + 'CrWinClngLLDdbg': 'clang_tot_full_symbols_shared_debug_no_lld_x86', 'linux-win_cross-rel': 'clang_tot_win_release_cross', 'ToTAndroid': 'android_clang_tot_release_minimal_symbols', 'ToTAndroid64': 'android_clang_tot_release_arm64', @@ -1119,24 +1119,24 @@ 'clang_tot', 'shared', 'debug', ], - 'clang_tot_full_symbols_shared_debug_use_lld': [ - 'clang_tot', 'full_symbols', 'shared', 'debug', 'use_lld', + 'clang_tot_full_symbols_shared_debug_no_lld': [ + 'clang_tot', 'full_symbols', 'shared', 'debug', 'no_lld', ], - 'clang_tot_full_symbols_shared_debug_use_lld_x86': [ - 'clang_tot', 'full_symbols', 'shared', 'debug', 'use_lld', 'x86', + 'clang_tot_full_symbols_shared_debug_no_lld_x86': [ + 'clang_tot', 'full_symbols', 'shared', 'debug', 'no_lld', 'x86', ], 'clang_tot_shared_debug_x86': [ 'clang_tot', 'shared', 'debug', 'x86', ], - 'clang_tot_shared_release_use_lld_dcheck': [ - 'clang_tot', 'minimal_symbols', 'shared', 'release', 'use_lld', 'dcheck_always_on', + 'clang_tot_shared_release_no_lld_dcheck': [ + 'clang_tot', 'minimal_symbols', 'shared', 'release', 'no_lld', 'dcheck_always_on', ], - 'clang_tot_official_static_use_lld_x86': [ - 'clang_tot', 'minimal_symbols', 'official', 'static', 'release', 'use_lld', 'x86', + 'clang_tot_official_static_no_lld_x86': [ + 'clang_tot', 'minimal_symbols', 'official', 'static', 'release', 'no_lld', 'x86', ], 'clang_tot_minimal_symbols_shared_release': [ @@ -2087,6 +2087,10 @@ 'gn_args': 'use_lld=true', }, + 'no_lld': { + 'gn_args': 'use_lld=false', + }, + 'use_vaapi': { 'gn_args': 'use_vaapi=true', },
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index b4408b196..4ac03e5 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -18657,6 +18657,21 @@ <int value="2435" label="PaymentRequestInvalidCurrencyCode"/> <int value="2436" label="V8ArraySortNoElementsProtector"/> <int value="2437" label="V8ArrayPrototypeSortJSArrayModifiedPrototype"/> + <int value="2438" label="V8Document_PictureInPictureEnabled_AttributeGetter"/> + <int value="2439" label="V8Document_PictureInPictureElement_AttributeGetter"/> + <int value="2440" label="V8Document_ExitPictureInPicture_Method"/> + <int value="2441" + label="V8ShadowRoot_PictureInPictureElement_AttributeGetter"/> + <int value="2442" + label="V8HTMLVideoElement_DisablePictureInPicture_AttributeGetter"/> + <int value="2443" + label="V8HTMLVideoElement_DisablePictureInPicture_AttributeSetter"/> + <int value="2444" label="V8HTMLVideoElement_RequestPictureInPicture_Method"/> + <int value="2445" label="EnterPictureInPictureEventListener"/> + <int value="2446" label="LeavePictureInPictureEventListener"/> + <int value="2447" label="V8PictureInPictureWindow_Height_AttributeGetter"/> + <int value="2448" label="V8PictureInPictureWindow_Width_AttributeGetter"/> + <int value="2449" label="PictureInPictureWindowResizeEventListener"/> </enum> <enum name="FeedbackSource"> @@ -26474,6 +26489,7 @@ <int value="-1946522787" label="VrCustomTabBrowsing:disabled"/> <int value="-1945524394" label="EnableBackgroundBlur:disabled"/> <int value="-1943507605" label="enable-new-video-renderer"/> + <int value="-1943313820" label="SystemKeyboardLock:disabled"/> <int value="-1941852572" label="floating-virtual-keyboard"/> <int value="-1940806558" label="enable-syncfs-directory-operation"/> <int value="-1940377152" label="MacRTL:enabled"/> @@ -27760,6 +27776,7 @@ <int value="986796748" label="AccountConsistency:enabled"/> <int value="988981463" label="ImageCaptureAPI:enabled"/> <int value="989062160" label="ModuleScriptsImportMetaUrl:enabled"/> + <int value="996701528" label="SystemKeyboardLock:enabled"/> <int value="996797157" label="V8ContextSnapshot:enabled"/> <int value="1000587036" label="OfflinePagesDescriptiveFailStatus:disabled"/> <int value="1000706989" label="AutomaticTabDiscarding:disabled"/> @@ -44271,6 +44288,17 @@ <int value="2" label="Tab is loaded"/> </enum> +<enum name="TabManagerTabRankerResult"> + <int value="0" label="Success">Tab score was calculated successfully.</int> + <int value="1" label="Preprocessor initialization failed"> + The ExamplePreprocessorConfig could not be loaded or parsed. + </int> + <int value="2" label="Preprocessor other error"> + The ExamplePreprocessor returned an error other than, or in addition to, the + kNoFeatureIndexFound error. + </int> +</enum> + <enum name="TabRendererCrashStatus"> <int value="0" label="Shown in foreground app"/> <int value="1" label="Hidden in foreground app"/>
diff --git a/tools/metrics/histograms/histograms.xml b/tools/metrics/histograms/histograms.xml index 9de926e4..d6e4a11 100644 --- a/tools/metrics/histograms/histograms.xml +++ b/tools/metrics/histograms/histograms.xml
@@ -13713,6 +13713,16 @@ </summary> </histogram> +<histogram name="CryptAuth.DeviceSyncSoftwareFeaturesResult" + enum="BooleanSuccess"> + <owner>hansberry@chromium.org</owner> + <summary> + Indicates that there was no issue retrieving supported and enabled software + features, or that there were enabled features which were not in the + supported feature set. + </summary> +</histogram> + <histogram name="CryptAuth.Enrollment.Result" enum="BooleanSuccess"> <owner>jhawkins@chromium.org</owner> <summary> @@ -96077,6 +96087,17 @@ </summary> </histogram> +<histogram name="TabManager.TabRanker.Result" enum="TabManagerTabRankerResult"> + <owner>michaelpg@chromium.org</owner> + <owner>charleszhao@chromium.org</owner> + <summary> + Logged when calculating a tab reactivation score for a background tab. Any + value other than "none" may indicate a bug in the inference code, + a problem with the preprocessor configuration shipped with the model, or a + bug in the code that populates the RankerExample for a tab. + </summary> +</histogram> + <histogram name="TabRestore.error_move_session_at_path_to_backup" enum="FoundationFileSystemError"> <owner>sky@chromium.org</owner>
diff --git a/tools/metrics/rappor/rappor.xml b/tools/metrics/rappor/rappor.xml index 620910b..6ed177e 100644 --- a/tools/metrics/rappor/rappor.xml +++ b/tools/metrics/rappor/rappor.xml
@@ -2426,6 +2426,9 @@ </rappor-metric> <rappor-metric name="SubresourceFilter.UIShown" type="UMA_RAPPOR_TYPE"> + <obsolete> + Deprecated May 2018 in favor of SubresourceFilter UKM. + </obsolete> <owner>csharrison@chromium.org</owner> <summary> The eTLD+1 that caused the SubresourceFilter UI to show that ads are being
diff --git a/tools/perf/benchmarks/benchmark_smoke_unittest.py b/tools/perf/benchmarks/benchmark_smoke_unittest.py index 86d0820..6095d4cd 100644 --- a/tools/perf/benchmarks/benchmark_smoke_unittest.py +++ b/tools/perf/benchmarks/benchmark_smoke_unittest.py
@@ -51,7 +51,7 @@ @decorators.Disabled('android') # crbug.com/641934 def BenchmarkSmokeTest(self): # Only measure a single page so that this test cycles reasonably quickly. - benchmark.options['pageset_repeat'] = 1 + benchmark.options['smoke_test_mode'] = True # Some benchmarks are running multiple iterations # which is not needed for a smoke test
diff --git a/tools/perf/core/perf_data_generator.py b/tools/perf/core/perf_data_generator.py index 940c143c..7a07c3cf 100755 --- a/tools/perf/core/perf_data_generator.py +++ b/tools/perf/core/perf_data_generator.py
@@ -965,6 +965,7 @@ 'tests': [ { 'isolate': 'performance_test_suite', + 'extra_args': ['--run-ref-build'], 'num_shards': 26 }, { @@ -991,7 +992,8 @@ 'tests': [ { 'isolate': 'telemetry_perf_tests_without_chrome', - 'extra_args': ['--xvfb'], + 'extra_args': ['--xvfb', + '--run-ref-build'], 'num_shards': 3 }, { @@ -1015,6 +1017,7 @@ { 'name': 'performance_test_suite', 'isolate': 'performance_test_suite', + 'extra_args': ['--run-ref-build'], 'num_shards': 14 } ], @@ -1049,6 +1052,7 @@ 'tests': [ { 'isolate': 'performance_test_suite', + 'extra_args': ['--run-ref-build'], 'num_shards': 7 } ], @@ -1072,6 +1076,7 @@ 'tests': [ { 'isolate': 'performance_test_suite', + 'extra_args': ['--run-ref-build'], }, { 'isolate': 'load_library_perf_tests', @@ -1101,6 +1106,7 @@ # Add views_perftests, crbug.com/811766 { 'isolate': 'performance_test_suite', + 'extra_args': ['--run-ref-build'], }, { 'isolate': 'load_library_perf_tests',
diff --git a/tools/perf/expectations.config b/tools/perf/expectations.config index 9c9bccd..a610842 100644 --- a/tools/perf/expectations.config +++ b/tools/perf/expectations.config
@@ -285,6 +285,7 @@ crbug.com/649392 [ Win ] system_health.memory_desktop/play:media:soundcloud [ Skip ] crbug.com/649392 [ All ] system_health.memory_desktop/play:media:google_play_music [ Skip ] crbug.com/742475 [ Mac ] system_health.memory_desktop/multitab:misc:typical24 [ Skip ] +crbug.com/838504 [ Linux ] system_health.memory_desktop/multitab:misc:typical24 [ Skip ] crbug.com/773084 [ Mac ] system_health.memory_desktop/browse:tools:maps [ Skip ] crbug.com/769809 [ All ] system_health.memory_desktop/browse_accessibility:tools:gmail_compose [ Skip ] crbug.com/673775 [ Win ] system_health.memory_desktop/browse:search:google [ Skip ] @@ -319,6 +320,7 @@ crbug.com/797261 [ Android_Webview ] system_health.memory_mobile/load:games:spychase [ Skip ] crbug.com/803462 [ Nexus_5 ] system_health.memory_mobile/browse:chrome:newtab [ Skip ] crbug.com/834905 [ Nexus_5 ] system_health.memory_mobile/browse:social:pinterest_infinite_scroll [ Skip ] +crbug.com/842731 [ Android_One ] system_health.memory_mobile/background:news:nytimes [ Skip ] # Benchmark: tab_switching.typical_25 crbug.com/747026 [ Mac ] tab_switching.typical_25/multitab:misc:typical24 [ Skip ] @@ -428,6 +430,8 @@ [ Android_One ] wasm/WasmSpaceBuggy [ Skip ] crbug.com/814012 [ Mac ] wasm/AsmJsZenGarden [ Skip ] crbug.com/814012 [ Win ] wasm/AsmJsZenGarden [ Skip ] +crbug.com/842729 [ Mac ] wasm/WasmZenGarden [ Skip ] +crbug.com/842729 [ Win ] wasm/WasmZenGarden [ Skip ] ##### Perf FYI benchmarks go after here ##### # Benchmark: loading.desktop.network_service
diff --git a/ui/accessibility/ax_node.h b/ui/accessibility/ax_node.h index 2a751c0..d28e09f 100644 --- a/ui/accessibility/ax_node.h +++ b/ui/accessibility/ax_node.h
@@ -130,8 +130,6 @@ base::string16* value) const { return data().GetString16Attribute(attribute, value); } - // Cannot be constexpr because |base::string16| doesn't have a constexpr - // constructor. base::string16 GetString16Attribute( ax::mojom::StringAttribute attribute) const { return data().GetString16Attribute(attribute);
diff --git a/ui/android/delegated_frame_host_android.cc b/ui/android/delegated_frame_host_android.cc index ad15a65..bd5db7c3 100644 --- a/ui/android/delegated_frame_host_android.cc +++ b/ui/android/delegated_frame_host_android.cc
@@ -50,7 +50,7 @@ layer->SetBounds(size_in_pixels); layer->SetIsDrawable(true); layer->SetContentsOpaque(surface_opaque); - layer->SetHitTestable(true); + layer->SetSurfaceHitTestable(true); return layer; }
diff --git a/ui/android/java/src/org/chromium/ui/DropdownPopupWindow.java b/ui/android/java/src/org/chromium/ui/DropdownPopupWindow.java index e664bd7..b3897c3 100644 --- a/ui/android/java/src/org/chromium/ui/DropdownPopupWindow.java +++ b/ui/android/java/src/org/chromium/ui/DropdownPopupWindow.java
@@ -29,7 +29,7 @@ * @param anchorView Popup view to be anchored. */ public DropdownPopupWindow(Context context, View anchorView) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { mPopup = new DropdownPopupWindowImpl(context, anchorView); } else { mPopup = new DropdownPopupWindowJellyBean(context, anchorView);
diff --git a/ui/aura/BUILD.gn b/ui/aura/BUILD.gn index 0a6f3bf7..c5eb719e 100644 --- a/ui/aura/BUILD.gn +++ b/ui/aura/BUILD.gn
@@ -70,6 +70,7 @@ "mus/window_tree_host_mus_delegate.h", "mus/window_tree_host_mus_init_params.h", "scoped_keyboard_hook.h", + "scoped_simple_keyboard_hook.h", "scoped_window_targeter.h", "window.h", "window_delegate.h", @@ -134,6 +135,7 @@ "mus/window_tree_host_mus.cc", "mus/window_tree_host_mus_init_params.cc", "scoped_keyboard_hook.cc", + "scoped_simple_keyboard_hook.cc", "scoped_window_targeter.cc", "window.cc", "window_event_dispatcher.cc",
diff --git a/ui/aura/mus/window_tree_client.cc b/ui/aura/mus/window_tree_client.cc index 0b41aab..aabad3d 100644 --- a/ui/aura/mus/window_tree_client.cc +++ b/ui/aura/mus/window_tree_client.cc
@@ -1615,6 +1615,7 @@ ConvertPointerEventLocationToDip(display_id, window, event_in_dip->AsLocatedEvent()); delegate_->OnPointerEventObserved(*event_in_dip->AsPointerEvent(), + display_id, window ? window->GetWindow() : nullptr); } @@ -1717,7 +1718,7 @@ ConvertPointerEventLocationToDip(display_id, target_window, event->AsLocatedEvent()); delegate_->OnPointerEventObserved( - *event->AsPointerEvent(), + *event->AsPointerEvent(), display_id, target_window ? target_window->GetWindow() : nullptr); }
diff --git a/ui/aura/mus/window_tree_client_delegate.h b/ui/aura/mus/window_tree_client_delegate.h index 2481d0e0..8673f43 100644 --- a/ui/aura/mus/window_tree_client_delegate.h +++ b/ui/aura/mus/window_tree_client_delegate.h
@@ -5,6 +5,8 @@ #ifndef UI_AURA_MUS_WINDOW_TREE_CLIENT_DELEGATE_H_ #define UI_AURA_MUS_WINDOW_TREE_CLIENT_DELEGATE_H_ +#include <stdint.h> + #include <memory> #include <string> @@ -56,6 +58,7 @@ // StartPointerWatcher(). |target| may be null for events that were sent to // windows owned by other processes. virtual void OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, Window* target) = 0; virtual PropertyConverter* GetPropertyConverter() = 0;
diff --git a/ui/aura/mus/window_tree_client_unittest.cc b/ui/aura/mus/window_tree_client_unittest.cc index a3b99cb..c0e068e 100644 --- a/ui/aura/mus/window_tree_client_unittest.cc +++ b/ui/aura/mus/window_tree_client_unittest.cc
@@ -245,6 +245,7 @@ WindowTreeClientClientTest::SetUp(); } void OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, Window* target) override { last_event_observed_.reset(new ui::PointerEvent(event)); } @@ -1492,15 +1493,19 @@ const ui::PointerEvent* last_event_observed() const { return last_event_observed_.get(); } + int64_t last_display_id() const { return last_display_id_; } // WindowTreeClientClientTest: void OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, Window* target) override { last_event_observed_.reset(new ui::PointerEvent(event)); + last_display_id_ = display_id; } private: std::unique_ptr<ui::PointerEvent> last_event_observed_; + int64_t last_display_id_ = 0; DISALLOW_COPY_AND_ASSIGN(WindowTreeClientPointerObserverTest); }; @@ -1518,18 +1523,20 @@ window_tree_client_impl()->StartPointerWatcher(false /* want_moves */); // Simulate the server sending an observed event. + const int64_t kDisplayId = 111; std::unique_ptr<ui::PointerEvent> pointer_event_down(new ui::PointerEvent( ui::ET_POINTER_DOWN, gfx::Point(), gfx::Point(), ui::EF_CONTROL_DOWN, 0, ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH, 1), base::TimeTicks())); window_tree_client()->OnPointerEventObserved(std::move(pointer_event_down), - 0u, 0); + 0u, kDisplayId); // Delegate sensed the event. const ui::PointerEvent* last_event = last_event_observed(); ASSERT_TRUE(last_event); EXPECT_EQ(ui::ET_POINTER_DOWN, last_event->type()); EXPECT_EQ(ui::EF_CONTROL_DOWN, last_event->flags()); + EXPECT_EQ(kDisplayId, last_display_id()); DeleteLastEventObserved(); // Stop the pointer watcher. @@ -1541,7 +1548,7 @@ ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH, 1), base::TimeTicks())); window_tree_client()->OnPointerEventObserved(std::move(pointer_event_up), 0u, - 0); + kDisplayId); // No event was sensed. EXPECT_FALSE(last_event_observed());
diff --git a/ui/aura/scoped_simple_keyboard_hook.cc b/ui/aura/scoped_simple_keyboard_hook.cc new file mode 100644 index 0000000..7b1895a --- /dev/null +++ b/ui/aura/scoped_simple_keyboard_hook.cc
@@ -0,0 +1,27 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "ui/aura/scoped_simple_keyboard_hook.h" + +#include <utility> + +#include "base/stl_util.h" +#include "ui/events/keycodes/dom/dom_code.h" + +namespace aura { + +ScopedSimpleKeyboardHook::ScopedSimpleKeyboardHook( + base::Optional<base::flat_set<ui::DomCode>> dom_codes) + : dom_codes_(std::move(dom_codes)) {} + +ScopedSimpleKeyboardHook::~ScopedSimpleKeyboardHook() = default; + +bool ScopedSimpleKeyboardHook::IsKeyLocked(ui::DomCode dom_code) { + if (dom_code == ui::DomCode::NONE) + return false; + + return !dom_codes_ || base::ContainsKey(dom_codes_.value(), dom_code); +} + +} // namespace aura
diff --git a/ui/aura/scoped_simple_keyboard_hook.h b/ui/aura/scoped_simple_keyboard_hook.h new file mode 100644 index 0000000..18d3c51 --- /dev/null +++ b/ui/aura/scoped_simple_keyboard_hook.h
@@ -0,0 +1,41 @@ +// Copyright 2018 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef UI_AURA_SCOPED_SIMPLE_KEYBOARD_HOOK_H_ +#define UI_AURA_SCOPED_SIMPLE_KEYBOARD_HOOK_H_ + +#include "base/containers/flat_set.h" +#include "base/macros.h" +#include "base/optional.h" +#include "ui/aura/scoped_keyboard_hook.h" + +namespace ui { +enum class DomCode; +} + +namespace aura { + +// This subclass of ScopedKeyboardHook will not set up a system-level keyboard +// hook or call into any WindowTreeHost methods for lock state or cleanup. +// It allows for disabling system-level keyboard lock functionality while +// continuing to support browser-level keyboard lock. +// TODO(joedow): Remove this class after 'system-keyboard-lock' is removed. +class ScopedSimpleKeyboardHook : public ScopedKeyboardHook { + public: + explicit ScopedSimpleKeyboardHook( + base::Optional<base::flat_set<ui::DomCode>> dom_codes); + ~ScopedSimpleKeyboardHook() override; + + // ScopedKeyboardHook override. + bool IsKeyLocked(ui::DomCode dom_code) override; + + private: + base::Optional<base::flat_set<ui::DomCode>> dom_codes_; + + DISALLOW_COPY_AND_ASSIGN(ScopedSimpleKeyboardHook); +}; + +} // namespace aura + +#endif // UI_AURA_SCOPED_SIMPLE_KEYBOARD_HOOK_H_
diff --git a/ui/aura/test/aura_test_base.cc b/ui/aura/test/aura_test_base.cc index 335c45d..bb0b43fd 100644 --- a/ui/aura/test/aura_test_base.cc +++ b/ui/aura/test/aura_test_base.cc
@@ -180,6 +180,7 @@ void AuraTestBase::OnLostConnection(WindowTreeClient* client) {} void AuraTestBase::OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, Window* target) { observed_pointer_events_.push_back(std::unique_ptr<ui::PointerEvent>( static_cast<ui::PointerEvent*>(ui::Event::Clone(event).release())));
diff --git a/ui/aura/test/aura_test_base.h b/ui/aura/test/aura_test_base.h index dc9eb51..27d5176 100644 --- a/ui/aura/test/aura_test_base.h +++ b/ui/aura/test/aura_test_base.h
@@ -109,6 +109,7 @@ void OnEmbedRootDestroyed(WindowTreeHostMus* window_tree_host) override; void OnLostConnection(WindowTreeClient* client) override; void OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, Window* target) override; // WindowManagerDelegate:
diff --git a/ui/aura/test/mus/test_window_tree_client_delegate.cc b/ui/aura/test/mus/test_window_tree_client_delegate.cc index b89604e..ab3c18e5 100644 --- a/ui/aura/test/mus/test_window_tree_client_delegate.cc +++ b/ui/aura/test/mus/test_window_tree_client_delegate.cc
@@ -26,6 +26,7 @@ void TestWindowTreeClientDelegate::OnPointerEventObserved( const ui::PointerEvent& event, + int64_t display_id, Window* target) {} PropertyConverter* TestWindowTreeClientDelegate::GetPropertyConverter() {
diff --git a/ui/aura/test/mus/test_window_tree_client_delegate.h b/ui/aura/test/mus/test_window_tree_client_delegate.h index 766cffc..fea7026 100644 --- a/ui/aura/test/mus/test_window_tree_client_delegate.h +++ b/ui/aura/test/mus/test_window_tree_client_delegate.h
@@ -24,6 +24,7 @@ void OnEmbedRootDestroyed(WindowTreeHostMus* window_tree_host) override; void OnLostConnection(WindowTreeClient* client) override; void OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, Window* target) override; PropertyConverter* GetPropertyConverter() override;
diff --git a/ui/aura/window_tree_host.cc b/ui/aura/window_tree_host.cc index 3fbd8fc..50df6aa 100644 --- a/ui/aura/window_tree_host.cc +++ b/ui/aura/window_tree_host.cc
@@ -5,6 +5,7 @@ #include "ui/aura/window_tree_host.h" #include "base/command_line.h" +#include "base/feature_list.h" #include "base/metrics/histogram_macros.h" #include "base/threading/thread_task_runner_handle.h" #include "base/trace_event/trace_event.h" @@ -13,6 +14,7 @@ #include "ui/aura/client/cursor_client.h" #include "ui/aura/env.h" #include "ui/aura/scoped_keyboard_hook.h" +#include "ui/aura/scoped_simple_keyboard_hook.h" #include "ui/aura/window.h" #include "ui/aura/window_event_dispatcher.h" #include "ui/aura/window_port.h" @@ -21,6 +23,7 @@ #include "ui/base/ime/input_method.h" #include "ui/base/ime/input_method_factory.h" #include "ui/base/layout.h" +#include "ui/base/ui_base_features.h" #include "ui/base/view_prop.h" #include "ui/compositor/compositor_switches.h" #include "ui/compositor/dip_util.h" @@ -274,8 +277,12 @@ } std::unique_ptr<ScopedKeyboardHook> WindowTreeHost::CaptureSystemKeyEvents( - base::Optional<base::flat_set<ui::DomCode>> codes) { - if (CaptureSystemKeyEventsImpl(std::move(codes))) + base::Optional<base::flat_set<ui::DomCode>> dom_codes) { + // TODO(joedow): Remove the simple hook class/logic once this flag is removed. + if (!base::FeatureList::IsEnabled(features::kSystemKeyboardLock)) + return std::make_unique<ScopedSimpleKeyboardHook>(std::move(dom_codes)); + + if (CaptureSystemKeyEventsImpl(std::move(dom_codes))) return std::make_unique<ScopedKeyboardHook>(weak_factory_.GetWeakPtr()); return nullptr; }
diff --git a/ui/base/ui_base_features.cc b/ui/base/ui_base_features.cc index 227c00b..5b1acb0 100644 --- a/ui/base/ui_base_features.cc +++ b/ui/base/ui_base_features.cc
@@ -42,6 +42,10 @@ #endif }; +// Allows system keyboard event capture when |features::kKeyboardLockApi| is on. +const base::Feature kSystemKeyboardLock{"SystemKeyboardLock", + base::FEATURE_DISABLED_BY_DEFAULT}; + const base::Feature kTouchableAppContextMenu = { "EnableTouchableAppContextMenu", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/ui/base/ui_base_features.h b/ui/base/ui_base_features.h index 85e6084b..b0fca332 100644 --- a/ui/base/ui_base_features.h +++ b/ui/base/ui_base_features.h
@@ -19,6 +19,7 @@ kEnableFullscreenHandwritingVirtualKeyboard; UI_BASE_EXPORT extern const base::Feature kEnableStylusVirtualKeyboard; UI_BASE_EXPORT extern const base::Feature kSecondaryUiMd; +UI_BASE_EXPORT extern const base::Feature kSystemKeyboardLock; UI_BASE_EXPORT extern const base::Feature kTouchableAppContextMenu; UI_BASE_EXPORT extern const base::Feature kUiCompositorScrollWithLayers;
diff --git a/ui/base/ui_base_switches.cc b/ui/base/ui_base_switches.cc index c8d658d..8f40a787 100644 --- a/ui/base/ui_base_switches.cc +++ b/ui/base/ui_base_switches.cc
@@ -100,14 +100,6 @@ // Red: Overdrawn four or more times. const char kShowOverdrawFeedback[] = "show-overdraw-feedback"; -// Use Skia Deferred Display List, with this option, SkiaRenderer will record -// frames to Skia DDLs and play them back on the GPU thread. This flag is only -// be effective with --use-skia-renderer. -const char kUseSkiaDeferredDisplayList[] = "use-skia-deferred-display-list"; - -// Use SkiaRenderer instead of GLRenderer for direct rendering. -const char kUseSkiaRenderer[] = "use-skia-renderer"; - // Disable re-use of non-exact resources to fulfill ResourcePool requests. // Intended only for use in layout or pixel tests to reduce noise. const char kDisallowNonExactResourceReuse[] =
diff --git a/ui/base/ui_base_switches.h b/ui/base/ui_base_switches.h index 22a9f498..512d382 100644 --- a/ui/base/ui_base_switches.h +++ b/ui/base/ui_base_switches.h
@@ -41,8 +41,6 @@ UI_BASE_EXPORT extern const char kTopChromeMDMaterialTouchOptimized[]; UI_BASE_EXPORT extern const char kTopChromeMDMaterialRefresh[]; UI_BASE_EXPORT extern const char kUIDisablePartialSwap[]; -UI_BASE_EXPORT extern const char kUseSkiaDeferredDisplayList[]; -UI_BASE_EXPORT extern const char kUseSkiaRenderer[]; // Test related. UI_BASE_EXPORT extern const char kDisallowNonExactResourceReuse[];
diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc index f8db7ae1..b648013e 100644 --- a/ui/compositor/layer.cc +++ b/ui/compositor/layer.cc
@@ -775,7 +775,7 @@ if (!surface_layer_) { scoped_refptr<cc::SurfaceLayer> new_layer = cc::SurfaceLayer::Create(); - new_layer->SetHitTestable(true); + new_layer->SetSurfaceHitTestable(true); SwitchToLayer(new_layer); surface_layer_ = new_layer; }
diff --git a/ui/compositor/layer_unittest.cc b/ui/compositor/layer_unittest.cc index 144e7c7e..4388e432 100644 --- a/ui/compositor/layer_unittest.cc +++ b/ui/compositor/layer_unittest.cc
@@ -905,16 +905,16 @@ cc::DeadlinePolicy::UseDefaultDeadline(), false); EXPECT_FALSE(layer->StretchContentToFillBounds()); EXPECT_TRUE(static_cast<cc::SurfaceLayer*>(layer->cc_layer_for_testing()) - ->hit_testable()); + ->surface_hit_testable()); auto clone = layer->Clone(); EXPECT_FALSE(clone->StretchContentToFillBounds()); EXPECT_TRUE(static_cast<cc::SurfaceLayer*>(clone->cc_layer_for_testing()) - ->hit_testable()); + ->surface_hit_testable()); auto mirror = layer->Mirror(); EXPECT_FALSE(mirror->StretchContentToFillBounds()); EXPECT_TRUE(static_cast<cc::SurfaceLayer*>(mirror->cc_layer_for_testing()) - ->hit_testable()); + ->surface_hit_testable()); local_surface_id = allocator.GenerateId(); viz::SurfaceId surface_id_two(arbitrary_frame_sink, local_surface_id); @@ -922,16 +922,16 @@ cc::DeadlinePolicy::UseDefaultDeadline(), true); EXPECT_TRUE(layer->StretchContentToFillBounds()); EXPECT_TRUE(static_cast<cc::SurfaceLayer*>(layer->cc_layer_for_testing()) - ->hit_testable()); + ->surface_hit_testable()); clone = layer->Clone(); EXPECT_TRUE(clone->StretchContentToFillBounds()); EXPECT_TRUE(static_cast<cc::SurfaceLayer*>(clone->cc_layer_for_testing()) - ->hit_testable()); + ->surface_hit_testable()); mirror = layer->Mirror(); EXPECT_TRUE(mirror->StretchContentToFillBounds()); EXPECT_TRUE(static_cast<cc::SurfaceLayer*>(mirror->cc_layer_for_testing()) - ->hit_testable()); + ->surface_hit_testable()); } class LayerWithNullDelegateTest : public LayerWithDelegateTest {
diff --git a/ui/events/mojo/event_struct_traits.cc b/ui/events/mojo/event_struct_traits.cc index 1dd08b6..e4b316d 100644 --- a/ui/events/mojo/event_struct_traits.cc +++ b/ui/events/mojo/event_struct_traits.cc
@@ -406,6 +406,8 @@ pointer_data->location->y); const gfx::Point screen_location(pointer_data->location->screen_x, pointer_data->location->screen_y); + // This uses the event root_location field to store screen pixel + // coordinates. See http://crbug.com/608547 *out = std::make_unique<ui::PointerEvent>( MojoPointerEventTypeToUIEvent(event.action()), location, screen_location, event.flags(), pointer_data->changed_button_flags,
diff --git a/ui/file_manager/file_manager/foreground/js/navigation_list_model.js b/ui/file_manager/file_manager/foreground/js/navigation_list_model.js index 1285dec..a404428 100644 --- a/ui/file_manager/file_manager/foreground/js/navigation_list_model.js +++ b/ui/file_manager/file_manager/foreground/js/navigation_list_model.js
@@ -159,9 +159,12 @@ * Start crostini container and mount it. */ mount: function() { - chrome.fileManagerPrivate.mountCrostiniContainer((success) => { + chrome.fileManagerPrivate.mountCrostiniContainer(() => { // TODO(crbug.com/834103): implement crostini error handling. - console.debug('mountCrostiniContainer success: ', success); + if (chrome.runtime.lastError) { + console.error( + 'mountCrostiniContainer error: ', chrome.runtime.lastError.message); + } }); }, };
diff --git a/ui/gl/gl_image.h b/ui/gl/gl_image.h index c23670f..294e010 100644 --- a/ui/gl/gl_image.h +++ b/ui/gl/gl_image.h
@@ -26,6 +26,10 @@ } } +namespace gfx { +class GpuFence; +} + namespace gl { // Encapsulates an image that can be bound and/or copied to a texture, hiding @@ -72,7 +76,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) = 0; + bool enable_blend, + gfx::GpuFence* gpu_fence) = 0; // Set the color space when image is used as an overlay. virtual void SetColorSpace(const gfx::ColorSpace& color_space) = 0;
diff --git a/ui/gl/gl_image_ahardwarebuffer.cc b/ui/gl/gl_image_ahardwarebuffer.cc index f9dd6d81..0a2d65ed 100644 --- a/ui/gl/gl_image_ahardwarebuffer.cc +++ b/ui/gl/gl_image_ahardwarebuffer.cc
@@ -42,7 +42,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) { + bool enable_blend, + gfx::GpuFence* gpu_fence) { return false; }
diff --git a/ui/gl/gl_image_ahardwarebuffer.h b/ui/gl/gl_image_ahardwarebuffer.h index 6674f1a..7315c84 100644 --- a/ui/gl/gl_image_ahardwarebuffer.h +++ b/ui/gl/gl_image_ahardwarebuffer.h
@@ -30,7 +30,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) override; + bool enable_blend, + gfx::GpuFence* gpu_fence) override; void SetColorSpace(const gfx::ColorSpace& color_space) override {} void Flush() override; void OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd,
diff --git a/ui/gl/gl_image_dxgi.cc b/ui/gl/gl_image_dxgi.cc index f35f264..3cee8cb 100644 --- a/ui/gl/gl_image_dxgi.cc +++ b/ui/gl/gl_image_dxgi.cc
@@ -176,7 +176,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) { + bool enable_blend, + gfx::GpuFence* gpu_fence) { return false; }
diff --git a/ui/gl/gl_image_dxgi.h b/ui/gl/gl_image_dxgi.h index 74bdf59..285e41e0 100644 --- a/ui/gl/gl_image_dxgi.h +++ b/ui/gl/gl_image_dxgi.h
@@ -43,7 +43,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) override; + bool enable_blend, + gfx::GpuFence* gpu_fence) override; void SetColorSpace(const gfx::ColorSpace& color_space) override; void Flush() override; void OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd,
diff --git a/ui/gl/gl_image_glx.cc b/ui/gl/gl_image_glx.cc index 176e86a..ccdd359 100644 --- a/ui/gl/gl_image_glx.cc +++ b/ui/gl/gl_image_glx.cc
@@ -180,7 +180,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) { + bool enable_blend, + gfx::GpuFence* gpu_fence) { return false; }
diff --git a/ui/gl/gl_image_glx.h b/ui/gl/gl_image_glx.h index 9bd917f6..ef501284 100644 --- a/ui/gl/gl_image_glx.h +++ b/ui/gl/gl_image_glx.h
@@ -35,7 +35,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) override; + bool enable_blend, + gfx::GpuFence* gpu_fence) override; void SetColorSpace(const gfx::ColorSpace& color_space) override {} void Flush() override {} void OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd,
diff --git a/ui/gl/gl_image_io_surface.h b/ui/gl/gl_image_io_surface.h index 1a595941..56424e9 100644 --- a/ui/gl/gl_image_io_surface.h +++ b/ui/gl/gl_image_io_surface.h
@@ -59,7 +59,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) override; + bool enable_blend, + gfx::GpuFence* gpu_fence) override; void SetColorSpace(const gfx::ColorSpace& color_space) override; void Flush() override {} void OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd,
diff --git a/ui/gl/gl_image_io_surface.mm b/ui/gl/gl_image_io_surface.mm index 40f282b..97ae4fff 100644 --- a/ui/gl/gl_image_io_surface.mm +++ b/ui/gl/gl_image_io_surface.mm
@@ -389,7 +389,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) { + bool enable_blend, + gfx::GpuFence* gpu_fence) { NOTREACHED(); return false; }
diff --git a/ui/gl/gl_image_memory.cc b/ui/gl/gl_image_memory.cc index 167ed71..fe275e81 100644 --- a/ui/gl/gl_image_memory.cc +++ b/ui/gl/gl_image_memory.cc
@@ -503,7 +503,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) { + bool enable_blend, + gfx::GpuFence* gpu_fence) { return false; }
diff --git a/ui/gl/gl_image_memory.h b/ui/gl/gl_image_memory.h index 349bbdf..16df9d2 100644 --- a/ui/gl/gl_image_memory.h +++ b/ui/gl/gl_image_memory.h
@@ -41,7 +41,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) override; + bool enable_blend, + gfx::GpuFence* gpu_fence) override; void SetColorSpace(const gfx::ColorSpace& color_space) override {} void Flush() override {} Type GetType() const override;
diff --git a/ui/gl/gl_image_native_pixmap.cc b/ui/gl/gl_image_native_pixmap.cc index 206fe84..272cbe4 100644 --- a/ui/gl/gl_image_native_pixmap.cc +++ b/ui/gl/gl_image_native_pixmap.cc
@@ -351,10 +351,11 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) { + bool enable_blend, + gfx::GpuFence* gpu_fence) { DCHECK(pixmap_); return pixmap_->ScheduleOverlayPlane(widget, z_order, transform, bounds_rect, - crop_rect, enable_blend, nullptr); + crop_rect, enable_blend, gpu_fence); } void GLImageNativePixmap::Flush() {
diff --git a/ui/gl/gl_image_native_pixmap.h b/ui/gl/gl_image_native_pixmap.h index 7bf1e66..f5e9aef 100644 --- a/ui/gl/gl_image_native_pixmap.h +++ b/ui/gl/gl_image_native_pixmap.h
@@ -37,7 +37,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) override; + bool enable_blend, + gfx::GpuFence* gpu_fence) override; void SetColorSpace(const gfx::ColorSpace& color_space) override {} void Flush() override; void OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd,
diff --git a/ui/gl/gl_image_stub.cc b/ui/gl/gl_image_stub.cc index 8317cf6..2880122e4 100644 --- a/ui/gl/gl_image_stub.cc +++ b/ui/gl/gl_image_stub.cc
@@ -35,7 +35,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) { + bool enable_blend, + gfx::GpuFence* gpu_fence) { return false; }
diff --git a/ui/gl/gl_image_stub.h b/ui/gl/gl_image_stub.h index 524113f..bf9eeaa9 100644 --- a/ui/gl/gl_image_stub.h +++ b/ui/gl/gl_image_stub.h
@@ -31,7 +31,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) override; + bool enable_blend, + gfx::GpuFence* gpu_fence) override; void SetColorSpace(const gfx::ColorSpace& color_space) override {} void Flush() override {} void OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd,
diff --git a/ui/gl/gl_image_surface_texture.cc b/ui/gl/gl_image_surface_texture.cc index de07bd7..2c7124d 100644 --- a/ui/gl/gl_image_surface_texture.cc +++ b/ui/gl/gl_image_surface_texture.cc
@@ -87,7 +87,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) { + bool enable_blend, + gfx::GpuFence* gpu_fence) { return false; }
diff --git a/ui/gl/gl_image_surface_texture.h b/ui/gl/gl_image_surface_texture.h index 22e3327..b72da2d 100644 --- a/ui/gl/gl_image_surface_texture.h +++ b/ui/gl/gl_image_surface_texture.h
@@ -38,7 +38,8 @@ gfx::OverlayTransform transform, const gfx::Rect& bounds_rect, const gfx::RectF& crop_rect, - bool enable_blend) override; + bool enable_blend, + gfx::GpuFence* gpu_fence) override; void SetColorSpace(const gfx::ColorSpace& color_space) override {} void Flush() override {} void OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd,
diff --git a/ui/gl/gl_surface_overlay.cc b/ui/gl/gl_surface_overlay.cc index 0078c78f..e173562 100644 --- a/ui/gl/gl_surface_overlay.cc +++ b/ui/gl/gl_surface_overlay.cc
@@ -32,7 +32,8 @@ bool GLSurfaceOverlay::ScheduleOverlayPlane( gfx::AcceleratedWidget widget) const { return image_->ScheduleOverlayPlane(widget, z_order_, transform_, - bounds_rect_, crop_rect_, enable_blend_); + bounds_rect_, crop_rect_, enable_blend_, + /* gpu_fence */ nullptr); } void GLSurfaceOverlay::Flush() const {
diff --git a/ui/ozone/platform/cast/gl_surface_cast.cc b/ui/ozone/platform/cast/gl_surface_cast.cc index dc93e8a3..bd4ef595 100644 --- a/ui/ozone/platform/cast/gl_surface_cast.cc +++ b/ui/ozone/platform/cast/gl_surface_cast.cc
@@ -104,7 +104,8 @@ const gfx::RectF& crop_rect, bool enable_blend) { return image->ScheduleOverlayPlane(widget_, z_order, transform, bounds_rect, - crop_rect, enable_blend); + crop_rect, enable_blend, + /* gpu_fence */ nullptr); } EGLConfig GLSurfaceCast::GetConfig() {
diff --git a/ui/ozone/platform/drm/gpu/gbm_buffer.cc b/ui/ozone/platform/drm/gpu/gbm_buffer.cc index decdf42..165b5e2d 100644 --- a/ui/ozone/platform/drm/gpu/gbm_buffer.cc +++ b/ui/ozone/platform/drm/gpu/gbm_buffer.cc
@@ -375,7 +375,9 @@ bool enable_blend, gfx::GpuFence* gpu_fence) { DCHECK(buffer_->GetFlags() & GBM_BO_USE_SCANOUT); - + // |framebuffer_id| might be 0 if AddFramebuffer2 failed, in that case we + // already logged the error in GbmBuffer ctor. We avoid logging the error + // here since this method might be called every pageflip. if (buffer_->GetFramebufferId()) { surface_manager_->GetSurface(widget)->QueueOverlayPlane( OverlayPlane(buffer_, plane_z_order, plane_transform, display_bounds,
diff --git a/ui/ozone/platform/drm/gpu/gbm_surface.cc b/ui/ozone/platform/drm/gpu/gbm_surface.cc index 56c05a9..a3a31e0 100644 --- a/ui/ozone/platform/drm/gpu/gbm_surface.cc +++ b/ui/ozone/platform/drm/gpu/gbm_surface.cc
@@ -8,6 +8,7 @@ #include "base/logging.h" #include "ui/display/types/display_snapshot.h" +#include "ui/gfx/gpu_fence_handle.h" #include "ui/gfx/native_pixmap.h" #include "ui/gl/gl_image_native_pixmap.h" #include "ui/gl/gl_surface_egl.h" @@ -65,7 +66,8 @@ const PresentationCallback& presentation_callback) { if (!images_[current_surface_]->ScheduleOverlayPlane( widget(), 0, gfx::OverlayTransform::OVERLAY_TRANSFORM_NONE, - gfx::Rect(GetSize()), gfx::RectF(1, 1), /* enable_blend */ false)) { + gfx::Rect(GetSize()), gfx::RectF(1, 1), /* enable_blend */ false, + /* gpu_fence */ nullptr)) { completion_callback.Run(gfx::SwapResult::SWAP_FAILED); // Notify the caller, the buffer is never presented on a screen. presentation_callback.Run(gfx::PresentationFeedback());
diff --git a/ui/views/mus/mus_client.cc b/ui/views/mus/mus_client.cc index 2b16e01..7c99143 100644 --- a/ui/views/mus/mus_client.cc +++ b/ui/views/mus/mus_client.cc
@@ -320,8 +320,10 @@ } void MusClient::OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, aura::Window* target) { - pointer_watcher_event_router_->OnPointerEventObserved(event, target); + pointer_watcher_event_router_->OnPointerEventObserved(event, display_id, + target); } void MusClient::OnWindowManagerFrameValuesChanged() {
diff --git a/ui/views/mus/mus_client.h b/ui/views/mus/mus_client.h index 0543e03..ea39755 100644 --- a/ui/views/mus/mus_client.h +++ b/ui/views/mus/mus_client.h
@@ -99,6 +99,9 @@ return pointer_watcher_event_router_.get(); } + // Getter for type safety. Most code can use display::Screen::GetScreen(). + ScreenMus* screen() { return screen_.get(); } + // Creates DesktopNativeWidgetAura with DesktopWindowTreeHostMus. This is // set as the factory function used for creating NativeWidgets when a // NativeWidget has not been explicitly set. @@ -149,6 +152,7 @@ void OnLostConnection(aura::WindowTreeClient* client) override; void OnEmbedRootDestroyed(aura::WindowTreeHostMus* window_tree_host) override; void OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, aura::Window* target) override; aura::PropertyConverter* GetPropertyConverter() override;
diff --git a/ui/views/mus/pointer_watcher_event_router.cc b/ui/views/mus/pointer_watcher_event_router.cc index 82bf200..beed6b5 100644 --- a/ui/views/mus/pointer_watcher_event_router.cc +++ b/ui/views/mus/pointer_watcher_event_router.cc
@@ -7,12 +7,16 @@ #include "ui/aura/client/capture_client.h" #include "ui/aura/mus/window_tree_client.h" #include "ui/aura/window.h" +#include "ui/display/display.h" #include "ui/display/screen.h" #include "ui/events/base_event_utils.h" #include "ui/events/event.h" #include "ui/views/pointer_watcher.h" #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" +using display::Display; +using display::Screen; + namespace views { namespace { @@ -85,6 +89,7 @@ void PointerWatcherEventRouter::OnPointerEventObserved( const ui::PointerEvent& event, + int64_t display_id, aura::Window* target) { Widget* target_widget = nullptr; ui::PointerEvent updated_event(event); @@ -113,10 +118,13 @@ } } - // The mojo input events type converter uses the event root_location field - // to store screen coordinates. Screen coordinates really should be returned - // separately. See http://crbug.com/608547 - gfx::Point location_in_screen = event.root_location(); + // Compute screen coordinates via |display_id| because there may not be a + // |target| that can be used to find a ScreenPositionClient. + gfx::Point location_in_screen = event.location(); + Display display; + if (Screen::GetScreen()->GetDisplayWithDisplayId(display_id, &display)) + location_in_screen.Offset(display.bounds().x(), display.bounds().y()); + for (PointerWatcher& observer : move_watchers_) { observer.OnPointerEventObserved( updated_event, location_in_screen, @@ -157,8 +165,7 @@ const ui::MouseEvent mouse_event(ui::ET_MOUSE_CAPTURE_CHANGED, gfx::Point(), gfx::Point(), ui::EventTimeForNow(), 0, 0); const ui::PointerEvent event(mouse_event); - gfx::Point location_in_screen = - display::Screen::GetScreen()->GetCursorScreenPoint(); + gfx::Point location_in_screen = Screen::GetScreen()->GetCursorScreenPoint(); for (PointerWatcher& observer : move_watchers_) observer.OnPointerEventObserved(event, location_in_screen, nullptr); for (PointerWatcher& observer : non_move_watchers_)
diff --git a/ui/views/mus/pointer_watcher_event_router.h b/ui/views/mus/pointer_watcher_event_router.h index 2487fbc8e..2c9dd56 100644 --- a/ui/views/mus/pointer_watcher_event_router.h +++ b/ui/views/mus/pointer_watcher_event_router.h
@@ -5,7 +5,8 @@ #ifndef UI_VIEWS_MUS_POINTER_WATCHER_EVENT_ROUTER_H_ #define UI_VIEWS_MUS_POINTER_WATCHER_EVENT_ROUTER_H_ -#include "base/compiler_specific.h" +#include <stdint.h> + #include "base/macros.h" #include "base/observer_list.h" #include "ui/aura/client/capture_client_observer.h" @@ -58,6 +59,7 @@ // Called by WindowTreeClientDelegate to notify PointerWatchers appropriately. void OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, aura::Window* target); // Called when the |capture_client| has been set or will be unset.
diff --git a/ui/views/mus/pointer_watcher_event_router_unittest.cc b/ui/views/mus/pointer_watcher_event_router_unittest.cc index 7634fff7..821cefdc 100644 --- a/ui/views/mus/pointer_watcher_event_router_unittest.cc +++ b/ui/views/mus/pointer_watcher_event_router_unittest.cc
@@ -11,6 +11,7 @@ #include "ui/aura/test/mus/window_tree_client_private.h" #include "ui/events/event.h" #include "ui/views/mus/mus_client.h" +#include "ui/views/mus/screen_mus.h" #include "ui/views/pointer_watcher.h" #include "ui/views/test/scoped_views_test_helper.h" @@ -23,18 +24,24 @@ ~TestPointerWatcher() override {} ui::PointerEvent* last_event_observed() { return last_event_observed_.get(); } + gfx::Point last_location_in_screen() { return last_location_in_screen_; } - void Reset() { last_event_observed_.reset(); } + void Reset() { + last_event_observed_.reset(); + last_location_in_screen_ = gfx::Point(); + } // PointerWatcher: void OnPointerEventObserved(const ui::PointerEvent& event, const gfx::Point& location_in_screen, gfx::NativeView target) override { last_event_observed_ = std::make_unique<ui::PointerEvent>(event); + last_location_in_screen_ = location_in_screen; } private: std::unique_ptr<ui::PointerEvent> last_event_observed_; + gfx::Point last_location_in_screen_; DISALLOW_COPY_AND_ASSIGN(TestPointerWatcher); }; @@ -43,12 +50,13 @@ class PointerWatcherEventRouterTest : public testing::Test { public: - PointerWatcherEventRouterTest() {} - ~PointerWatcherEventRouterTest() override {} + PointerWatcherEventRouterTest() = default; + ~PointerWatcherEventRouterTest() override = default; - void OnPointerEventObserved(const ui::PointerEvent& event) { + void OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id = 0) { MusClient::Get()->pointer_watcher_event_router()->OnPointerEventObserved( - event, nullptr); + event, display_id, nullptr); } PointerWatcherEventRouter::EventTypes event_types() const { @@ -56,13 +64,14 @@ } private: + base::test::ScopedTaskEnvironment scoped_task_environment_{ + base::test::ScopedTaskEnvironment::MainThreadType::UI}; + ScopedViewsTestHelper helper_; + DISALLOW_COPY_AND_ASSIGN(PointerWatcherEventRouterTest); }; TEST_F(PointerWatcherEventRouterTest, EventTypes) { - base::test::ScopedTaskEnvironment scoped_task_environment( - base::test::ScopedTaskEnvironment::MainThreadType::UI); - ScopedViewsTestHelper helper; TestPointerWatcher pointer_watcher1, pointer_watcher2; PointerWatcherEventRouter* pointer_watcher_event_router = MusClient::Get()->pointer_watcher_event_router(); @@ -114,9 +123,6 @@ } TEST_F(PointerWatcherEventRouterTest, PointerWatcherNoMove) { - base::test::ScopedTaskEnvironment scoped_task_environment( - base::test::ScopedTaskEnvironment::MainThreadType::UI); - ScopedViewsTestHelper helper; ASSERT_TRUE(MusClient::Get()); PointerWatcherEventRouter* pointer_watcher_event_router = MusClient::Get()->pointer_watcher_event_router(); @@ -188,9 +194,6 @@ } TEST_F(PointerWatcherEventRouterTest, PointerWatcherMove) { - base::test::ScopedTaskEnvironment scoped_task_environment( - base::test::ScopedTaskEnvironment::MainThreadType::UI); - ScopedViewsTestHelper helper; ASSERT_TRUE(MusClient::Get()); PointerWatcherEventRouter* pointer_watcher_event_router = MusClient::Get()->pointer_watcher_event_router(); @@ -241,4 +244,36 @@ EXPECT_FALSE(watcher2.last_event_observed()); } +TEST_F(PointerWatcherEventRouterTest, SecondaryDisplay) { + PointerWatcherEventRouter* pointer_watcher_event_router = + MusClient::Get()->pointer_watcher_event_router(); + TestPointerWatcher watcher; + pointer_watcher_event_router->AddPointerWatcher(&watcher, false); + + ScreenMus* screen = MusClient::Get()->screen(); + const uint64_t kFirstDisplayId = screen->GetPrimaryDisplay().id(); + + // The first display is at 0,0. + ASSERT_TRUE(screen->GetPrimaryDisplay().bounds().origin().IsOrigin()); + + // Add a secondary display to the right of the primary. + const uint64_t kSecondDisplayId = 222; + screen->display_list().AddDisplay( + display::Display(kSecondDisplayId, gfx::Rect(800, 0, 640, 480)), + display::DisplayList::Type::NOT_PRIMARY); + + ui::PointerEvent tap_event( + ui::ET_POINTER_DOWN, gfx::Point(1, 1), gfx::Point(1, 1), ui::EF_NONE, 0, + ui::PointerDetails(ui::EventPointerType::POINTER_TYPE_TOUCH, 1), + base::TimeTicks()); + + OnPointerEventObserved(tap_event, kFirstDisplayId); + EXPECT_EQ(gfx::Point(1, 1), watcher.last_location_in_screen()); + + OnPointerEventObserved(tap_event, kSecondDisplayId); + EXPECT_EQ(gfx::Point(801, 1), watcher.last_location_in_screen()); + + pointer_watcher_event_router->RemovePointerWatcher(&watcher); +} + } // namespace views
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc index 88bebe01..e249e6100 100644 --- a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc +++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
@@ -573,6 +573,7 @@ std::move(dom_codes), GetAcceleratedWidget(), base::BindRepeating(&DesktopWindowTreeHostWin::HandleKeyEvent, base::Unretained(this))); + return keyboard_hook_ != nullptr; }
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc index cafa344a..02040627 100644 --- a/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc +++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
@@ -1311,6 +1311,7 @@ std::move(dom_codes), GetAcceleratedWidget(), base::BindRepeating(&DesktopWindowTreeHostX11::DispatchKeyEvent, base::Unretained(this))); + return keyboard_hook_ != nullptr; }
diff --git a/ui/webui/resources/cr_elements/cr_action_menu/cr_action_menu.html b/ui/webui/resources/cr_elements/cr_action_menu/cr_action_menu.html index 3d74601..af9dc9c 100644 --- a/ui/webui/resources/cr_elements/cr_action_menu/cr_action_menu.html +++ b/ui/webui/resources/cr_elements/cr_action_menu/cr_action_menu.html
@@ -51,7 +51,7 @@ } :host ::slotted(.dropdown-item:focus) { - background-color: var(--paper-grey-300); + background-color: var(--google-grey-200); outline: none; }
diff --git a/ui/webui/resources/cr_elements/shared_vars_css.html b/ui/webui/resources/cr_elements/shared_vars_css.html index 5bdb548..3ffc0b3 100644 --- a/ui/webui/resources/cr_elements/shared_vars_css.html +++ b/ui/webui/resources/cr_elements/shared_vars_css.html
@@ -120,6 +120,7 @@ /** MD Refresh Styles */ --google-blue-600: #1A73E8; + --google-grey-200: #E8EAED; --google-grey-400: #BDC1C6; --google-grey-900: #202124; }
diff --git a/ui/webui/resources/cr_polymer_resources.grdp b/ui/webui/resources/cr_polymer_resources.grdp index 96e7fecc..72c2ee2 100644 --- a/ui/webui/resources/cr_polymer_resources.grdp +++ b/ui/webui/resources/cr_polymer_resources.grdp
@@ -12,6 +12,9 @@ <structure name="IDR_WEBUI_HTML_I18N_BEHAVIOR" file="html/i18n_behavior.html" type="chrome_html" compress="gzip" /> + <structure name="IDR_WEBUI_HTML_LIST_PROPERTY_UPDATE_BEHAVIOR" + file="html/list_property_update_behavior.html" type="chrome_html" + compress="gzip" /> <structure name="IDR_WEBUI_HTML_MD_SELECT_CSS_HTML" file="html/md_select_css.html" type="chrome_html" compress="gzip" flattenhtml="true" /> @@ -35,6 +38,9 @@ <structure name="IDR_WEBUI_JS_CR_UI_FOCUS_WITHOUT_INK" file="js/cr/ui/focus_without_ink.js" type="chrome_html" compress="gzip" /> + <structure name="IDR_WEBUI_JS_LIST_PROPERTY_UPDATE_BEHAVIOR" + file="js/list_property_update_behavior.js" type="chrome_html" + compress="gzip" /> <structure name="IDR_WEBUI_JS_POLYMER_CONFIG" file="js/polymer_config.js" type="chrome_html" compress="gzip" />
diff --git a/ui/webui/resources/html/list_property_update_behavior.html b/ui/webui/resources/html/list_property_update_behavior.html new file mode 100644 index 0000000..1a17af9 --- /dev/null +++ b/ui/webui/resources/html/list_property_update_behavior.html
@@ -0,0 +1 @@ +<script src="chrome://resources/js/list_property_update_behavior.js"></script>
diff --git a/ui/webui/resources/js/BUILD.gn b/ui/webui/resources/js/BUILD.gn index b9d148cc7..8a6c5d5 100644 --- a/ui/webui/resources/js/BUILD.gn +++ b/ui/webui/resources/js/BUILD.gn
@@ -22,6 +22,7 @@ ":i18n_template", ":i18n_template_no_process", ":icon", + ":list_property_update_behavior", ":load_time_data", ":parse_html_subset", ":promise_resolver", @@ -86,6 +87,9 @@ ] } +js_library("list_property_update_behavior") { +} + js_library("load_time_data") { deps = [ ":assert",
diff --git a/ui/webui/resources/js/compiled_resources2.gyp b/ui/webui/resources/js/compiled_resources2.gyp index 3b759c0..fdbd3235 100644 --- a/ui/webui/resources/js/compiled_resources2.gyp +++ b/ui/webui/resources/js/compiled_resources2.gyp
@@ -68,6 +68,15 @@ 'includes': ['../../../../third_party/closure_compiler/compile_js2.gypi'], }, { + 'target_name': 'list_property_update_behavior', + 'dependencies': [ + '<(DEPTH)/third_party/jstemplate/compiled_resources2.gyp:jstemplate', + 'assert', + 'parse_html_subset', + ], + 'includes': ['../../../../third_party/closure_compiler/compile_js2.gypi'], + }, + { 'target_name': 'load_time_data', 'dependencies': [ '<(DEPTH)/third_party/jstemplate/compiled_resources2.gyp:jstemplate',
diff --git a/chrome/browser/resources/settings/list_property_update_behavior.js b/ui/webui/resources/js/list_property_update_behavior.js similarity index 100% rename from chrome/browser/resources/settings/list_property_update_behavior.js rename to ui/webui/resources/js/list_property_update_behavior.js
diff --git a/ui/wm/test/wm_test_helper.cc b/ui/wm/test/wm_test_helper.cc index ee54d37..045d3f8 100644 --- a/ui/wm/test/wm_test_helper.cc +++ b/ui/wm/test/wm_test_helper.cc
@@ -96,6 +96,7 @@ void WMTestHelper::OnLostConnection(aura::WindowTreeClient* client) {} void WMTestHelper::OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, aura::Window* target) {} aura::PropertyConverter* WMTestHelper::GetPropertyConverter() {
diff --git a/ui/wm/test/wm_test_helper.h b/ui/wm/test/wm_test_helper.h index c6fa10f..8d794fc 100644 --- a/ui/wm/test/wm_test_helper.h +++ b/ui/wm/test/wm_test_helper.h
@@ -74,6 +74,7 @@ void OnEmbedRootDestroyed(aura::WindowTreeHostMus* window_tree_host) override; void OnLostConnection(aura::WindowTreeClient* client) override; void OnPointerEventObserved(const ui::PointerEvent& event, + int64_t display_id, aura::Window* target) override; aura::PropertyConverter* GetPropertyConverter() override;