diff --git a/BUILD.gn b/BUILD.gn index 0f945b9..99c1363 100644 --- a/BUILD.gn +++ b/BUILD.gn
@@ -1015,6 +1015,9 @@ "//media/gpu/vaapi:vaapi_unittest", ] } + if (use_v4l2_codec) { + data_deps += [ "//media/gpu/v4l2:v4l2_stateless_decoder" ] + } } } }
diff --git a/DEPS b/DEPS index d617945..98c00b4e 100644 --- a/DEPS +++ b/DEPS
@@ -245,15 +245,15 @@ # 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': '78219a355197e5f4403ed0a712475f5cb80f959d', + 'skia_revision': '40df2e3cf51e401a7c052b4a014cf4d315e75e5a', # 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': '1adc3b1ecc7191c4be01dd0958c6367bb1b5cc08', + 'v8_revision': 'ef9b5c3a6d0ca76cb2a034abbe40da7caa33c84a', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. - 'angle_revision': '7820ca23e721ce4b60738d850a7347b15a4c8b90', + 'angle_revision': 'c48e35b94aa3ed30a6e332c449b48a6958b164e9', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling SwiftShader # and whatever else without interference from each other. @@ -509,7 +509,7 @@ 'packages': [ { 'package': 'chromium/third_party/android_rust_toolchain/linux-amd64', - 'version': 'Bu8heOPkhOm7UcWIQy5lqgr7sVusGKVi_LjAzmJ1MrcC', + 'version': 'BKAbvHjGv4-os-v8MS3I54bPsY-397xgaJ3yBeIVS20C', }, ], 'dep_type': 'cipd', @@ -1473,7 +1473,7 @@ }, 'src/third_party/perfetto': - Var('android_git') + '/platform/external/perfetto.git' + '@' + 'e7314895882693974527529802b087ab54f83702', + Var('android_git') + '/platform/external/perfetto.git' + '@' + '57b59d6e2effdc5d3b9dc8da68fa519d9d37f2e0', 'src/third_party/perl': { 'url': Var('chromium_git') + '/chromium/deps/perl.git' + '@' + '6f3e5028eb65d0b4c5fdd792106ac4c84eee1eb3', @@ -1629,7 +1629,7 @@ Var('swiftshader_git') + '/SwiftShader.git' + '@' + Var('swiftshader_revision'), 'src/third_party/text-fragments-polyfill/src': { - 'url': Var('chromium_git') + '/external/github.com/GoogleChromeLabs/text-fragments-polyfill.git' + '@' + '13c5f9ad57cf179ef1c7ae1a8093073b8f080ff0', + 'url': Var('chromium_git') + '/external/github.com/GoogleChromeLabs/text-fragments-polyfill.git' + '@' + '41fe0172ee82325d1c408eced1a0ebc65fe53a06', 'condition': 'checkout_ios', }, @@ -1694,7 +1694,7 @@ Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + '729be85c2f01876a1ea075c523d542ebaaa76301', 'src/third_party/webrtc': - Var('webrtc_git') + '/src.git' + '@' + 'bfaaa95f36f36f24494506a8186528fe998910ea', + Var('webrtc_git') + '/src.git' + '@' + 'bab128555afa0f94994a5d5689b7d8da930cdee1', 'src/third_party/libgifcodec': Var('skia_git') + '/libgifcodec' + '@'+ Var('libgifcodec_revision'), @@ -1764,7 +1764,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@51e07fe7bd4bd308e3c910dc83880b8d11e8792c', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@dbb4c1d3b6dfbeefa22e3d76ba4d4e95df7fff9d', 'condition': 'checkout_src_internal', }, @@ -1794,7 +1794,7 @@ 'packages': [ { 'package': 'chromeos_internal/apps/help_app/app', - 'version': 'ukvpW97JmsEe_PUH_dAYvpTReZZk5ZNRDtg_eWouu7AC', + 'version': 'ZOOMYdIWCDdtCcTdYwULxiQ2xpnPkOUJCbhZ7SEfxBkC', }, ], 'condition': 'checkout_chromeos and checkout_src_internal',
diff --git a/ash/app_list/views/app_list_reorder_undo_container_view.cc b/ash/app_list/views/app_list_reorder_undo_container_view.cc index 3c25923..c318957b 100644 --- a/ash/app_list/views/app_list_reorder_undo_container_view.cc +++ b/ash/app_list/views/app_list_reorder_undo_container_view.cc
@@ -11,7 +11,8 @@ #include "ash/app_list/views/app_list_toast_view.h" #include "ash/public/cpp/app_list/app_list_model_delegate.h" #include "ash/resources/vector_icons/vector_icons.h" -#include "base/strings/strcat.h" +#include "ash/strings/grit/ash_strings.h" +#include "ui/base/l10n/l10n_util.h" #include "ui/views/layout/flex_layout.h" #include "ui/views/layout/flex_layout_types.h" #include "ui/views/view_class_properties.h" @@ -20,21 +21,6 @@ namespace { -// TODO(https://crbug.com/1269386): Raw strings are used for now. It should be -// replaced by an i18n string after the ui design is finalized. - -// The toast text's fixed part that is independent of the sorting order. -constexpr char16_t kToastTextFixedPart[] = u"Apps are now reordered "; - -// The toast texts that depend on the sorting order. -constexpr char16_t kToastAlphabeticalOrderText[] = u"alphabetically"; -constexpr char16_t kToastReverseAlphabeticalOrderText[] = - u"reverse-alphabetically"; -constexpr char16_t kToastColorOrderText[] = u"by color"; - -// The text shown on the toast dismiss button. -constexpr char16_t kToastDismissText[] = u"Undo"; - const gfx::VectorIcon* GetToastIconForOrder(AppListSortOrder order) { switch (order) { case AppListSortOrder::kNameAlphabetical: @@ -70,7 +56,7 @@ void AppListReorderUndoContainerView::OnTemporarySortOrderChanged( const absl::optional<AppListSortOrder>& new_order) { // Remove `toast_view_` when the temporary sorting order is cleared. - if (!new_order) { + if (!new_order || *new_order == AppListSortOrder::kCustom) { RemoveChildView(toast_view_); delete toast_view_; toast_view_ = nullptr; @@ -85,13 +71,13 @@ return; } - // TODO(crbug.com/1277001): Add icon to the toast. toast_view_ = AddChildView( AppListToastView::Builder(toast_text) .SetStyleForTabletMode(tablet_mode_) .SetIcon(toast_icon) .SetButton( - kToastDismissText, + l10n_util::GetStringUTF16( + IDS_ASH_LAUNCHER_UNDO_SORT_TOAST_ACTION_BUTTON), base::BindRepeating( &AppListReorderUndoContainerView::OnReorderUndoButtonClicked, base::Unretained(this))) @@ -109,27 +95,18 @@ std::u16string AppListReorderUndoContainerView::CalculateToastTextFromOrder( AppListSortOrder order) const { - base::StringPiece16 toast_text_variable_part; - switch (order) { case AppListSortOrder::kNameAlphabetical: - toast_text_variable_part = - base::StringPiece16(kToastAlphabeticalOrderText); - break; case AppListSortOrder::kNameReverseAlphabetical: - toast_text_variable_part = - base::StringPiece16(kToastReverseAlphabeticalOrderText); - break; + return l10n_util::GetStringUTF16( + IDS_ASH_LAUNCHER_UNDO_SORT_TOAST_FOR_NAME_SORT); case AppListSortOrder::kColor: - toast_text_variable_part = base::StringPiece16(kToastColorOrderText); - break; + return l10n_util::GetStringUTF16( + IDS_ASH_LAUNCHER_UNDO_SORT_TOAST_FOR_COLOR_SORT); case AppListSortOrder::kCustom: NOTREACHED(); - break; + return u""; } - - return base::StrCat( - {base::StringPiece16(kToastTextFixedPart), toast_text_variable_part}); } } // namespace ash
diff --git a/ash/app_list/views/legacy_remove_query_confirmation_dialog.cc b/ash/app_list/views/legacy_remove_query_confirmation_dialog.cc index 017b6de..8a0f6617 100644 --- a/ash/app_list/views/legacy_remove_query_confirmation_dialog.cc +++ b/ash/app_list/views/legacy_remove_query_confirmation_dialog.cc
@@ -26,7 +26,6 @@ } // namespace LegacyRemoveQueryConfirmationDialog::LegacyRemoveQueryConfirmationDialog( - const std::u16string& query, RemovalConfirmationCallback confirm_callback) : confirm_callback_(std::move(confirm_callback)) { SetModalType(ui::MODAL_TYPE_WINDOW); @@ -53,8 +52,8 @@ views::DialogContentType::kText), provider->GetDistanceMetric(views::DISTANCE_RELATED_CONTROL_VERTICAL))); - views::Label* label = new views::Label(l10n_util::GetStringFUTF16( - IDS_REMOVE_ZERO_STATE_SUGGESTION_DETAILS, query)); + views::Label* label = new views::Label( + l10n_util::GetStringUTF16(IDS_REMOVE_ZERO_STATE_SUGGESTION_DETAILS)); label->SetMultiLine(true); label->SetHorizontalAlignment(gfx::ALIGN_LEFT); label->SetAllowCharacterBreak(true);
diff --git a/ash/app_list/views/legacy_remove_query_confirmation_dialog.h b/ash/app_list/views/legacy_remove_query_confirmation_dialog.h index 59af5a3..4002f30 100644 --- a/ash/app_list/views/legacy_remove_query_confirmation_dialog.h +++ b/ash/app_list/views/legacy_remove_query_confirmation_dialog.h
@@ -23,8 +23,8 @@ // associated result. using RemovalConfirmationCallback = base::OnceCallback<void(bool)>; - LegacyRemoveQueryConfirmationDialog(const std::u16string& query, - RemovalConfirmationCallback callback); + explicit LegacyRemoveQueryConfirmationDialog( + RemovalConfirmationCallback callback); LegacyRemoveQueryConfirmationDialog( const LegacyRemoveQueryConfirmationDialog&) = delete;
diff --git a/ash/app_list/views/remove_query_confirmation_dialog.cc b/ash/app_list/views/remove_query_confirmation_dialog.cc index cd76cad..92eda7d 100644 --- a/ash/app_list/views/remove_query_confirmation_dialog.cc +++ b/ash/app_list/views/remove_query_confirmation_dialog.cc
@@ -42,7 +42,6 @@ } // namespace RemoveQueryConfirmationDialog::RemoveQueryConfirmationDialog( - const std::u16string& query, RemovalConfirmationCallback confirm_callback) : confirm_callback_(std::move(confirm_callback)) { SetModalType(ui::MODAL_TYPE_WINDOW); @@ -68,9 +67,8 @@ title_->layer()->SetFillsBoundsOpaquely(false); // Add dialog body. - body_ = - AddChildView(std::make_unique<views::Label>(l10n_util::GetStringFUTF16( - IDS_REMOVE_ZERO_STATE_SUGGESTION_DETAILS, query))); + body_ = AddChildView(std::make_unique<views::Label>( + l10n_util::GetStringUTF16(IDS_REMOVE_ZERO_STATE_SUGGESTION_DETAILS))); body_->SetProperty(views::kMarginsKey, gfx::Insets(kMarginBetweenTitleAndBody, 0, kMarginBetweenBodyAndButtons, 0));
diff --git a/ash/app_list/views/remove_query_confirmation_dialog.h b/ash/app_list/views/remove_query_confirmation_dialog.h index 8d7a975..dc8cbc49 100644 --- a/ash/app_list/views/remove_query_confirmation_dialog.h +++ b/ash/app_list/views/remove_query_confirmation_dialog.h
@@ -30,8 +30,7 @@ // associated result. using RemovalConfirmationCallback = base::OnceCallback<void(bool)>; - RemoveQueryConfirmationDialog(const std::u16string& query, - RemovalConfirmationCallback callback); + explicit RemoveQueryConfirmationDialog(RemovalConfirmationCallback callback); RemoveQueryConfirmationDialog(const RemoveQueryConfirmationDialog&) = delete; RemoveQueryConfirmationDialog& operator=(
diff --git a/ash/app_list/views/search_result_view.cc b/ash/app_list/views/search_result_view.cc index 9d3901e..adc258b 100644 --- a/ash/app_list/views/search_result_view.cc +++ b/ash/app_list/views/search_result_view.cc
@@ -859,12 +859,10 @@ std::unique_ptr<views::WidgetDelegate> dialog; if (features::IsProductivityLauncherEnabled()) { dialog = std::make_unique<RemoveQueryConfirmationDialog>( - result()->title(), base::BindOnce(&SearchResultView::OnQueryRemovalAccepted, weak_ptr_factory_.GetWeakPtr())); } else { dialog = std::make_unique<LegacyRemoveQueryConfirmationDialog>( - result()->title(), base::BindOnce(&SearchResultView::OnQueryRemovalAccepted, weak_ptr_factory_.GetWeakPtr())); }
diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd index d34acc2..5eb33e0 100644 --- a/ash/ash_strings.grd +++ b/ash/ash_strings.grd
@@ -4438,8 +4438,8 @@ </message> <!-- Launcher: Continue Section --> - <message name="IDS_ASH_LAUNCHER_CONTINUE_SECTION_LABEL" desc="Label for the continue section of the launcher, which shows recent files and apps that the user can continue using."> - Continue + <message name="IDS_ASH_LAUNCHER_CONTINUE_SECTION_LABEL" desc="Label for the continue section of the launcher, which shows recent files and apps that the user can continue using. [CHAR_LIMIT=70]"> + Continue where you left off </message> <message name="IDS_ASH_LAUNCHER_CONTINUE_SECTION_CONTEXT_MENU_OPEN" desc="Context menu option title to open a suggestion for a task in the launcher. Tasks display in the continue section located above the app list."> Open @@ -4449,8 +4449,8 @@ </message> <!-- Launcher / App List --> - <message name="IDS_ASH_LAUNCHER_APPS_GRID_CONTEXT_MENU_REORDER_TITLE" desc="Title of the context menu in apps grid view in Productivity Launcher."> - Reorder by + <message name="IDS_ASH_LAUNCHER_APPS_GRID_CONTEXT_MENU_REORDER_TITLE" desc="Title of the context menu in apps grid view in Productivity Launcher that allows users to sort their apps in the laucher. The context menu will have provide options to sort by name or color."> + Sort by </message> <message name="IDS_ASH_LAUNCHER_APPS_GRID_CONTEXT_MENU_REORDER_BY_NAME" desc="Title of the context menu item in apps grid view in Productivity Launcher for reordering the apps by their names"> Name @@ -4458,6 +4458,15 @@ <message name="IDS_ASH_LAUNCHER_APPS_GRID_CONTEXT_MENU_REORDER_BY_COLOR" desc="Title of the context menu item in apps grid view in Productivity Launcher for reordering the apps by their icon colors"> Color </message> + <message name="IDS_ASH_LAUNCHER_UNDO_SORT_TOAST_FOR_NAME_SORT" desc="The text shown in a toast within the launcher UI that appears after the user sorts their apps alphabetically. The toast informs the user that the apps are sorted, and has an action button that allows the user to undo sort."> + Apps are sorted by name + </message> + <message name="IDS_ASH_LAUNCHER_UNDO_SORT_TOAST_FOR_COLOR_SORT" desc="The text shown in a toast within the launcher UI that appears after the user sorts their apps by their icon color. The toast informs the user that the apps are sorted, and has an action button that allows the user to undo sort."> + Apps are sorted by color + </message> + <message name="IDS_ASH_LAUNCHER_UNDO_SORT_TOAST_ACTION_BUTTON" desc="The label for the action button for a toast shown within the launcher UI that appears after the user sorts their apps, either aplhabetically or by icon color. The action button reverts the order of apps in the launcher to the one from before the user requested sort."> + Undo + </message> <message name="IDS_SUGGESTED_APPS_INDICATOR" desc="Indicator text in the launcher on top of suggested apps."> SUGGESTED APPS </message> @@ -4546,11 +4555,11 @@ <message name="IDS_REMOVE_ZERO_STATE_SUGGESTION_TITLE" desc="Titlebar of removing zero state suggestion confirmation dialog"> Delete this search from your history? </message> - <message name="IDS_REMOVE_ZERO_STATE_SUGGESTION_DETAILS" desc="Detailed explanation message for removing zero state suggestion"> - You searched for this before. Deleting "<ph name="query">$1<ex>Previously Searched Query</ex></ph>" from your history will permanently remove it from your account across all your devices. + <message name="IDS_REMOVE_ZERO_STATE_SUGGESTION_DETAILS" desc="Detailed explanation message for removing removing an omnibox search result from launcher search results UI. This is a text in the dialog shown to the user when they try to remove a suggested omnibox search result from list of results shown in the launcher search - the omnibox search result may appear if the search query in launcher search matches a previous user search. The dialog asks the user to confirm the result removal."> + You searched for this query before. Deleting this search from your history will permanently remove it from your Google Account across all of your devices. </message> <message name="IDS_REMOVE_SUGGESTION_BUTTON_LABEL" desc="Remove suggestion button label"> - Remove + Delete </message> <message name="IDS_APP_LIST_KEYBOARD_SHORTCUT_OR" desc="Joiner text for several keyboard shortcuts that all do the same thing. Eg: 'Ctrl-A or Ctrl-B or Ctrl-C'"> Or
diff --git a/ash/ash_strings_grd/IDS_ASH_LAUNCHER_APPS_GRID_CONTEXT_MENU_REORDER_TITLE.png.sha1 b/ash/ash_strings_grd/IDS_ASH_LAUNCHER_APPS_GRID_CONTEXT_MENU_REORDER_TITLE.png.sha1 index 8a041395..4fac8ab 100644 --- a/ash/ash_strings_grd/IDS_ASH_LAUNCHER_APPS_GRID_CONTEXT_MENU_REORDER_TITLE.png.sha1 +++ b/ash/ash_strings_grd/IDS_ASH_LAUNCHER_APPS_GRID_CONTEXT_MENU_REORDER_TITLE.png.sha1
@@ -1 +1 @@ -ba70bbadceddf5c7de3fd5944955446cabed2c49 \ No newline at end of file +c400077a15dcb652a14e1b91d90c193d17c57f55 \ No newline at end of file
diff --git a/ash/ash_strings_grd/IDS_ASH_LAUNCHER_CONTINUE_SECTION_LABEL.png.sha1 b/ash/ash_strings_grd/IDS_ASH_LAUNCHER_CONTINUE_SECTION_LABEL.png.sha1 index 7ae0ffda..bca7395d 100644 --- a/ash/ash_strings_grd/IDS_ASH_LAUNCHER_CONTINUE_SECTION_LABEL.png.sha1 +++ b/ash/ash_strings_grd/IDS_ASH_LAUNCHER_CONTINUE_SECTION_LABEL.png.sha1
@@ -1 +1 @@ -da6739cce85d374f5d83c0ff25cc552487ee4e8b \ No newline at end of file +207b62c36ce4be6005158d1c6804c956e9d0846a \ No newline at end of file
diff --git a/ash/ash_strings_grd/IDS_ASH_LAUNCHER_UNDO_SORT_TOAST_ACTION_BUTTON.png.sha1 b/ash/ash_strings_grd/IDS_ASH_LAUNCHER_UNDO_SORT_TOAST_ACTION_BUTTON.png.sha1 new file mode 100644 index 0000000..02b2a28 --- /dev/null +++ b/ash/ash_strings_grd/IDS_ASH_LAUNCHER_UNDO_SORT_TOAST_ACTION_BUTTON.png.sha1
@@ -0,0 +1 @@ +7e0f3b6af81ea2e747ed5bdbae9d11cae8c6b0c6 \ No newline at end of file
diff --git a/ash/ash_strings_grd/IDS_ASH_LAUNCHER_UNDO_SORT_TOAST_FOR_COLOR_SORT.png.sha1 b/ash/ash_strings_grd/IDS_ASH_LAUNCHER_UNDO_SORT_TOAST_FOR_COLOR_SORT.png.sha1 new file mode 100644 index 0000000..c1118cc2 --- /dev/null +++ b/ash/ash_strings_grd/IDS_ASH_LAUNCHER_UNDO_SORT_TOAST_FOR_COLOR_SORT.png.sha1
@@ -0,0 +1 @@ +69459daa20f04e60135c2587d8b88c89aa1ef65e \ No newline at end of file
diff --git a/ash/ash_strings_grd/IDS_ASH_LAUNCHER_UNDO_SORT_TOAST_FOR_NAME_SORT.png.sha1 b/ash/ash_strings_grd/IDS_ASH_LAUNCHER_UNDO_SORT_TOAST_FOR_NAME_SORT.png.sha1 new file mode 100644 index 0000000..02b2a28 --- /dev/null +++ b/ash/ash_strings_grd/IDS_ASH_LAUNCHER_UNDO_SORT_TOAST_FOR_NAME_SORT.png.sha1
@@ -0,0 +1 @@ +7e0f3b6af81ea2e747ed5bdbae9d11cae8c6b0c6 \ No newline at end of file
diff --git a/ash/ash_strings_grd/IDS_REMOVE_SUGGESTION_BUTTON_LABEL.png.sha1 b/ash/ash_strings_grd/IDS_REMOVE_SUGGESTION_BUTTON_LABEL.png.sha1 new file mode 100644 index 0000000..8231c51 --- /dev/null +++ b/ash/ash_strings_grd/IDS_REMOVE_SUGGESTION_BUTTON_LABEL.png.sha1
@@ -0,0 +1 @@ +6b121537d382709ea33681163e9a40ded7905fb8 \ No newline at end of file
diff --git a/ash/ash_strings_grd/IDS_REMOVE_ZERO_STATE_SUGGESTION_DETAILS.png.sha1 b/ash/ash_strings_grd/IDS_REMOVE_ZERO_STATE_SUGGESTION_DETAILS.png.sha1 new file mode 100644 index 0000000..8231c51 --- /dev/null +++ b/ash/ash_strings_grd/IDS_REMOVE_ZERO_STATE_SUGGESTION_DETAILS.png.sha1
@@ -0,0 +1 @@ +6b121537d382709ea33681163e9a40ded7905fb8 \ No newline at end of file
diff --git a/ash/clipboard/OWNERS b/ash/clipboard/OWNERS index c369348..2fbdb96 100644 --- a/ash/clipboard/OWNERS +++ b/ash/clipboard/OWNERS
@@ -1,2 +1,2 @@ +ckincaid@chromium.org dmblack@google.com -newcomer@chromium.org
diff --git a/ash/clipboard/clipboard_history_controller_impl.cc b/ash/clipboard/clipboard_history_controller_impl.cc index a738e86a..9580f1f 100644 --- a/ash/clipboard/clipboard_history_controller_impl.cc +++ b/ash/clipboard/clipboard_history_controller_impl.cc
@@ -24,14 +24,19 @@ #include "ash/resources/vector_icons/vector_icons.h" #include "ash/shell.h" #include "ash/wm/window_util.h" +#include "base/barrier_closure.h" #include "base/bind.h" +#include "base/callback_forward.h" #include "base/json/values_util.h" #include "base/location.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" #include "base/ranges/algorithm.h" #include "base/strings/utf_string_conversions.h" +#include "base/synchronization/lock.h" +#include "base/task/bind_post_task.h" #include "base/task/thread_pool.h" +#include "base/threading/sequenced_task_runner_handle.h" #include "base/threading/thread_task_runner_handle.h" #include "base/unguessable_token.h" #include "base/values.h" @@ -78,22 +83,22 @@ return clipboard; } -// Serially encodes bitmaps in |bitmaps_to_be_encoded| to PNGs. -// This function should run on a background thread. -// |bitmaps_to_be_encoded| maps ClipboardHistoryItem IDs to their corresponding -// bitmaps which need to be encoded. Returns a map of ClipboardHistoryItem -// IDs to encoded PNGs. -// TODO(crbug.com/1277000): Rather than encoding serially, consider posting each -// encoding as a task. -std::map<base::UnguessableToken, std::vector<uint8_t>> EncodeBitmapsToPNG( - std::map<base::UnguessableToken, SkBitmap> bitmaps_to_be_encoded) { - std::map<base::UnguessableToken, std::vector<uint8_t>> encoded_pngs; - base::ranges::for_each(bitmaps_to_be_encoded, [&](const auto& id_and_bitmap) { - encoded_pngs.emplace( - id_and_bitmap.first, - ui::ClipboardData::EncodeBitmapData(id_and_bitmap.second)); - }); - return encoded_pngs; +// Encodes `bitmap` and maps the corresponding ClipboardHistoryItem ID, `id, to +// the resulting PNG in `encoded_pngs`. This function should run on a background +// thread. +void EncodeBitmapToPNG( + base::OnceClosure barrier_callback, + std::map<base::UnguessableToken, std::vector<uint8_t>>* const encoded_pngs, + base::Lock* const map_lock, + base::UnguessableToken id, + SkBitmap bitmap) { + auto png = ui::ClipboardData::EncodeBitmapData(bitmap); + + // Don't acquire the lock until after the image encoding has finished. + base::AutoLock lock(*map_lock); + + encoded_pngs->emplace(id, std::move(png)); + std::move(barrier_callback).Run(); } } // namespace @@ -346,11 +351,6 @@ clipboard_history_.get()); } -// TODO(crbug.com/1272798): If there are multiple calls in a row to -// GetHistoryValues, the same bitmaps may be encoded to PNG multiple times which -// is a resource waste. The ClipboardHistoryControllerImpl should track the ids -// of ClipboardHistoryItems for which there is a pending encoding task and avoid -// scheduling a duplicate encoding task for these items. void ClipboardHistoryControllerImpl::GetHistoryValues( const std::set<std::string>& item_id_filter, GetHistoryValuesCallback callback) const { @@ -379,13 +379,33 @@ } } - // Encode images on a background thread. - base::ThreadPool::PostTaskAndReplyWithResult( - FROM_HERE, - base::BindOnce(&EncodeBitmapsToPNG, std::move(bitmaps_to_be_encoded)), - base::BindOnce( - &ClipboardHistoryControllerImpl::GetHistoryValuesWithEncodedPNGs, - weak_ptr_factory_.GetWeakPtr(), item_id_filter, std::move(callback))); + // Map of ClipboardHistoryItem ID to its encoded PNG. Since encoding images + // may happen on separate threads, `map_lock` is used to ensure thread-safe + // insertion into `encoded_pngs`; + auto encoded_pngs = std::make_unique< + std::map<base::UnguessableToken, std::vector<uint8_t>>>(); + auto* encoded_pngs_ptr = encoded_pngs.get(); + auto map_lock = std::make_unique<base::Lock>(); + auto* map_lock_ptr = map_lock.get(); + + // Post back to this sequence once all images have been encoded. + base::RepeatingClosure barrier = base::BarrierClosure( + bitmaps_to_be_encoded.size(), + base::BindPostTask( + base::SequencedTaskRunnerHandle::Get(), + base::BindOnce( + &ClipboardHistoryControllerImpl::GetHistoryValuesWithEncodedPNGs, + weak_ptr_factory_.GetWeakPtr(), item_id_filter, + std::move(callback), std::move(encoded_pngs), + std::move(map_lock)))); + + // Encode images on background threads. + for (auto id_and_bitmap : bitmaps_to_be_encoded) { + base::ThreadPool::PostTask( + FROM_HERE, base::BindOnce(&EncodeBitmapToPNG, barrier, encoded_pngs_ptr, + map_lock_ptr, std::move(id_and_bitmap.first), + std::move(id_and_bitmap.second))); + } if (!new_bitmap_to_write_while_encoding_for_test_.isNull()) { ui::ScopedClipboardWriter scw(ui::ClipboardBuffer::kCopyPaste); @@ -397,8 +417,11 @@ void ClipboardHistoryControllerImpl::GetHistoryValuesWithEncodedPNGs( const std::set<std::string>& item_id_filter, GetHistoryValuesCallback callback, - std::map<base::UnguessableToken, std::vector<uint8_t>> encoded_pngs) { + std::unique_ptr<std::map<base::UnguessableToken, std::vector<uint8_t>>> + encoded_pngs, + std::unique_ptr<base::Lock> /*map_lock*/) { base::Value item_results(base::Value::Type::LIST); + DCHECK(encoded_pngs); bool all_images_encoded = true; // Get the clipboard data for each clipboard history item. @@ -418,8 +441,8 @@ // PNG. Hopefully we just finished encoding and the PNG can be found // in `encoded_pngs`, otherwise this item was added while other PNGs // were being encoded. - auto png_it = encoded_pngs.find(item.id()); - if (png_it == encoded_pngs.end()) { + auto png_it = encoded_pngs->find(item.id()); + if (png_it == encoded_pngs->end()) { // Can't find the encoded PNG. We'll need to restart // GetHistoryValues from the top, but allow this for loop to finish // to let PNGs we've already encoded get set to their appropriate
diff --git a/ash/clipboard/clipboard_history_controller_impl.h b/ash/clipboard/clipboard_history_controller_impl.h index ddad1fc43..6612f32 100644 --- a/ash/clipboard/clipboard_history_controller_impl.h +++ b/ash/clipboard/clipboard_history_controller_impl.h
@@ -147,7 +147,9 @@ void GetHistoryValuesWithEncodedPNGs( const std::set<std::string>& item_id_filter, GetHistoryValuesCallback callback, - std::map<base::UnguessableToken, std::vector<uint8_t>> encoded_pngs); + std::unique_ptr<std::map<base::UnguessableToken, std::vector<uint8_t>>> + encoded_pngs, + std::unique_ptr<base::Lock> map_lock); void ExecuteSelectedMenuItem(int event_flags);
diff --git a/ash/components/arc/arc_features.h b/ash/components/arc/arc_features.h index f28bfcd..ed877941 100644 --- a/ash/components/arc/arc_features.h +++ b/ash/components/arc/arc_features.h
@@ -8,6 +8,7 @@ #define ASH_COMPONENTS_ARC_ARC_FEATURES_H_ #include "base/feature_list.h" +#include "base/metrics/field_trial_params.h" namespace arc {
diff --git a/ash/components/phonehub/proto/phonehub_api.proto b/ash/components/phonehub/proto/phonehub_api.proto index 423e7757..e86eb2f7 100644 --- a/ash/components/phonehub/proto/phonehub_api.proto +++ b/ash/components/phonehub/proto/phonehub_api.proto
@@ -128,14 +128,23 @@ // device message CameraRollAccessState { // Whether the camera roll feature is enabled - // DEPRECATED: this is now checked during CryptAuth enrollment on the Android - // device and no longer checked by the Phone Hub CrOS code. + // DEPRECATED: whether the Camera Roll feature can be enabled is now solely + // controlled by the storage_permission_granted bit. bool feature_enabled = 1 [deprecated = true]; // Whether necessary storage permissions have been granted to access camera // roll items bool storage_permission_granted = 2; } +// Information about the phone's support for cross-device feature setup. +message FeatureSetupConfig { + // Whether the phone supports setting up multiple features at the same time + // using the FeatureSetupRequest. When this is false, the notification + // feature will be set up using the legacy + // ShowNotificationAccessSetupRequest. + bool feature_setup_request_supported = 1; +} + message PhoneProperties { int32 battery_percentage = 1; ChargingState charging_state = 2; @@ -166,6 +175,10 @@ // Note: This is whether the phone uses a lock screen(and not whether the // phone is currently locked). ScreenLockState screen_lock_state = 16; + + FeatureSetupConfig feature_setup_config = 18; + + // Next ID: 19 } message App { @@ -283,6 +296,13 @@ message ShowNotificationAccessSetupResponse {} +message FeatureSetupRequest { + bool notification_setup_requested = 1; + bool camera_roll_setup_requested = 2; +} + +message FeatureSetupResponse {} + // When adding new fields to this message, update CameraRollItem#operator== // Located in ash/components/phonehub/camera_roll_item.cc. message CameraRollItemMetadata {
diff --git a/ash/login/ui/login_auth_factors_view.cc b/ash/login/ui/login_auth_factors_view.cc index 71ea148..7061e5b 100644 --- a/ash/login/ui/login_auth_factors_view.cc +++ b/ash/login/ui/login_auth_factors_view.cc
@@ -304,6 +304,11 @@ label_wrapper_->SetLabelTextAndAccessibleName( IDS_AUTH_FACTOR_LABEL_UNLOCKED, IDS_AUTH_FACTOR_LABEL_UNLOCKED); } + + // Clear focus so that the focus on arrow button does not jump to another + // element after the view transitions. + GetFocusManager()->ClearFocus(); + return; case PrioritizedAuthFactorViewState::kClickRequired: // An auth factor requires a click to enter. Show arrow button.
diff --git a/ash/login/ui/login_auth_factors_view_unittest.cc b/ash/login/ui/login_auth_factors_view_unittest.cc index 9250bd3..29939822 100644 --- a/ash/login/ui/login_auth_factors_view_unittest.cc +++ b/ash/login/ui/login_auth_factors_view_unittest.cc
@@ -111,15 +111,14 @@ } // namespace -class LoginAuthFactorsViewUnittest : public AshTestBase { +class LoginAuthFactorsViewUnittest : public LoginTestBase { public: LoginAuthFactorsViewUnittest(const LoginAuthFactorsViewUnittest&) = delete; LoginAuthFactorsViewUnittest& operator=(const LoginAuthFactorsViewUnittest&) = delete; protected: - LoginAuthFactorsViewUnittest() - : AshTestBase(base::test::TaskEnvironment::TimeSource::MOCK_TIME) { + LoginAuthFactorsViewUnittest() : LoginTestBase() { feature_list_.InitAndEnableFeature(features::kSmartLockUIRevamp); } @@ -127,12 +126,12 @@ // LoginTestBase: void SetUp() override { - AshTestBase::SetUp(); + LoginTestBase::SetUp(); // We proxy |view_| inside of |container_| so we can control layout. // TODO(crbug.com/1233614): Add layout tests to check // positioning/ordering of icons. - container_ = std::make_unique<views::View>(); + container_ = new views::View(); container_->SetLayoutManager(std::make_unique<views::BoxLayout>( views::BoxLayout::Orientation::kVertical)); @@ -140,12 +139,13 @@ std::make_unique<LoginAuthFactorsView>(base::BindRepeating( &LoginAuthFactorsViewUnittest::set_click_to_enter_called, base::Unretained(this), true))); + SetWidget(CreateWidgetWithContent(container_)); } void TearDown() override { - container_.reset(); + container_ = nullptr; view_ = nullptr; - AshTestBase::TearDown(); + LoginTestBase::TearDown(); } void AddAuthFactors(std::vector<AuthFactorType> types) { @@ -189,8 +189,27 @@ ShouldHidePasswordField()); } + void TestArrowButtonClearsFocus(AuthFactorState state_after_click_required) { + ui::ScopedAnimationDurationScaleMode non_zero_duration_mode( + ui::ScopedAnimationDurationScaleMode::NORMAL_DURATION); + AddAuthFactors({AuthFactorType::kFingerprint, AuthFactorType::kSmartLock}); + + LoginAuthFactorsView::TestApi test_api(view_); + auth_factors_[0]->state_ = AuthFactorState::kReady; + auth_factors_[1]->state_ = AuthFactorState::kClickRequired; + test_api.UpdateState(); + + EXPECT_TRUE(view_->GetFocusManager()->GetFocusedView()); + EXPECT_TRUE(test_api.arrow_button()->HasFocus()); + + auth_factors_[1]->state_ = state_after_click_required; + test_api.UpdateState(); + + EXPECT_FALSE(view_->GetFocusManager()->GetFocusedView()); + } + base::test::ScopedFeatureList feature_list_; - std::unique_ptr<views::View> container_; + views::View* container_ = nullptr; LoginAuthFactorsView* view_ = nullptr; // Owned by container. std::vector<FakeAuthFactorModel*> auth_factors_; bool click_to_enter_called_ = false; @@ -550,4 +569,57 @@ } } +// Ensure that when Smart Lock state is kClickRequired, the arrow button +// automatically becomes focused. +TEST_F(LoginAuthFactorsViewUnittest, ArrowButtonRequestsFocus) { + ui::ScopedAnimationDurationScaleMode non_zero_duration_mode( + ui::ScopedAnimationDurationScaleMode::NORMAL_DURATION); + AddAuthFactors({AuthFactorType::kFingerprint, AuthFactorType::kSmartLock}); + LoginAuthFactorsView::TestApi test_api(view_); + auth_factors_[0]->state_ = AuthFactorState::kReady; + auth_factors_[1]->state_ = AuthFactorState::kReady; + test_api.UpdateState(); + + // Check that there is no focus initially. + EXPECT_FALSE(view_->GetFocusManager()->GetFocusedView()); + EXPECT_FALSE(test_api.arrow_button()->HasFocus()); + + auth_factors_[1]->state_ = AuthFactorState::kClickRequired; + test_api.UpdateState(); + + // Check that the arrow button becomes focused. + EXPECT_TRUE(view_->GetFocusManager()->GetFocusedView()); + EXPECT_TRUE(test_api.arrow_button()->HasFocus()); +} + +// Regression test for b/215754583. +// The arrow button automatically becomes focused when Smart Lock state is +// kClickRequired. After the state changes, the button loses visibility and the +// entire view should have its focus cleared. +TEST_F(LoginAuthFactorsViewUnittest, ArrowButtonClearsFocus_Authenticated) { + GetSessionControllerClient()->SetSessionState( + session_manager::SessionState::LOCKED); + Shell::Get()->login_screen_controller()->ShowLockScreen(); + + TestArrowButtonClearsFocus( + /*state_after_click_required=*/AuthFactorState::kAuthenticated); +} + +// When the state transitions from kClickRequired to kReady, kErrorTemporary +// or kErrorPermanent, the focus is also cleared. The actual experience seems +// as though the focus is not cleared and instead jumps to the password input. +// This focus happens inside LoginAuthUserView when the state change causes +// the password input to become visible. +TEST_F(LoginAuthFactorsViewUnittest, ArrowButtonClearsFocus_Ready) { + TestArrowButtonClearsFocus( + /*state_after_click_required=*/AuthFactorState::kReady); +} + +TEST_F(LoginAuthFactorsViewUnittest, ArrowButtonClearsFocus_Error) { + TestArrowButtonClearsFocus( + /*state_after_click_required=*/AuthFactorState::kErrorTemporary); + TestArrowButtonClearsFocus( + /*state_after_click_required=*/AuthFactorState::kErrorPermanent); +} + } // namespace ash
diff --git a/ash/webui/camera_app_ui/camera_app_ui.cc b/ash/webui/camera_app_ui/camera_app_ui.cc index 4a39291e..623f4678 100644 --- a/ash/webui/camera_app_ui/camera_app_ui.cc +++ b/ash/webui/camera_app_ui/camera_app_ui.cc
@@ -4,11 +4,11 @@ #include "ash/webui/camera_app_ui/camera_app_ui.h" -#include "ash/grit/ash_camera_app_resources_map.h" #include "ash/public/cpp/window_properties.h" #include "ash/webui/camera_app_ui/camera_app_helper_impl.h" #include "ash/webui/camera_app_ui/resources.h" #include "ash/webui/camera_app_ui/url_constants.h" +#include "ash/webui/grit/ash_camera_app_resources_map.h" #include "base/bind.h" #include "base/strings/string_util.h" #include "components/arc/intent_helper/arc_intent_helper_bridge.h"
diff --git a/ash/webui/color_internals/DEPS b/ash/webui/color_internals/DEPS index 92c2044..4244eece 100644 --- a/ash/webui/color_internals/DEPS +++ b/ash/webui/color_internals/DEPS
@@ -1,5 +1,4 @@ include_rules = [ # Do not add chrome here. Use a delegate instead. - "+ash/grit/ash_color_internals_resources.h", "+ui/webui", ]
diff --git a/ash/webui/color_internals/color_internals_ui.cc b/ash/webui/color_internals/color_internals_ui.cc index fbf21703..ae37002 100644 --- a/ash/webui/color_internals/color_internals_ui.cc +++ b/ash/webui/color_internals/color_internals_ui.cc
@@ -4,9 +4,9 @@ #include "ash/webui/color_internals/color_internals_ui.h" -#include "ash/grit/ash_color_internals_resources.h" -#include "ash/grit/ash_color_internals_resources_map.h" #include "ash/webui/color_internals/url_constants.h" +#include "ash/webui/grit/ash_color_internals_resources.h" +#include "ash/webui/grit/ash_color_internals_resources_map.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_ui.h" #include "content/public/browser/web_ui_data_source.h"
diff --git a/ash/webui/connectivity_diagnostics/connectivity_diagnostics_ui.cc b/ash/webui/connectivity_diagnostics/connectivity_diagnostics_ui.cc index 765a379..62dbb0dc 100644 --- a/ash/webui/connectivity_diagnostics/connectivity_diagnostics_ui.cc +++ b/ash/webui/connectivity_diagnostics/connectivity_diagnostics_ui.cc
@@ -6,9 +6,9 @@ #include <utility> -#include "ash/grit/connectivity_diagnostics_resources.h" -#include "ash/grit/connectivity_diagnostics_resources_map.h" #include "ash/webui/connectivity_diagnostics/url_constants.h" +#include "ash/webui/grit/connectivity_diagnostics_resources.h" +#include "ash/webui/grit/connectivity_diagnostics_resources_map.h" #include "ash/webui/network_ui/network_diagnostics_resource_provider.h" #include "ash/webui/network_ui/network_health_resource_provider.h" #include "chromeos/services/network_health/public/mojom/network_diagnostics.mojom.h"
diff --git a/ash/webui/demo_mode_app_ui/demo_mode_app_ui.cc b/ash/webui/demo_mode_app_ui/demo_mode_app_ui.cc index afa8a8c..0cce03c 100644 --- a/ash/webui/demo_mode_app_ui/demo_mode_app_ui.cc +++ b/ash/webui/demo_mode_app_ui/demo_mode_app_ui.cc
@@ -4,10 +4,10 @@ #include "ash/webui/demo_mode_app_ui/demo_mode_app_ui.h" -#include "ash/grit/ash_demo_mode_app_resources.h" -#include "ash/grit/ash_demo_mode_app_resources_map.h" #include "ash/webui/demo_mode_app_ui/demo_mode_page_handler.h" #include "ash/webui/demo_mode_app_ui/url_constants.h" +#include "ash/webui/grit/ash_demo_mode_app_resources.h" +#include "ash/webui/grit/ash_demo_mode_app_resources_map.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_ui_data_source.h" #include "services/network/public/mojom/content_security_policy.mojom.h"
diff --git a/ash/webui/diagnostics_ui/DEPS b/ash/webui/diagnostics_ui/DEPS index c325318..3f6f56d 100644 --- a/ash/webui/diagnostics_ui/DEPS +++ b/ash/webui/diagnostics_ui/DEPS
@@ -1,5 +1,4 @@ include_rules = [ - "+ash/grit/ash_diagnostics_app_resources.h", "+chromeos/login/login_state", "+chromeos/strings/grit/chromeos_strings.h", "+components",
diff --git a/ash/webui/diagnostics_ui/diagnostics_ui.cc b/ash/webui/diagnostics_ui/diagnostics_ui.cc index b65b6362..7e80725 100644 --- a/ash/webui/diagnostics_ui/diagnostics_ui.cc +++ b/ash/webui/diagnostics_ui/diagnostics_ui.cc
@@ -8,8 +8,6 @@ #include <string> #include "ash/constants/ash_features.h" -#include "ash/grit/ash_diagnostics_app_resources.h" -#include "ash/grit/ash_diagnostics_app_resources_map.h" #include "ash/webui/common/backend/plural_string_handler.h" #include "ash/webui/diagnostics_ui/backend/diagnostics_manager.h" #include "ash/webui/diagnostics_ui/backend/histogram_util.h" @@ -23,6 +21,8 @@ #include "ash/webui/diagnostics_ui/mojom/network_health_provider.mojom.h" #include "ash/webui/diagnostics_ui/mojom/system_data_provider.mojom.h" #include "ash/webui/diagnostics_ui/url_constants.h" +#include "ash/webui/grit/ash_diagnostics_app_resources.h" +#include "ash/webui/grit/ash_diagnostics_app_resources_map.h" #include "base/containers/span.h" #include "base/files/file_path.h" #include "base/logging.h"
diff --git a/ash/webui/eche_app_ui/DEPS b/ash/webui/eche_app_ui/DEPS index e81a168e..c85b845 100644 --- a/ash/webui/eche_app_ui/DEPS +++ b/ash/webui/eche_app_ui/DEPS
@@ -1,7 +1,5 @@ include_rules = [ # Do not add chrome here (use a delegate instead). - "+ash/grit/ash_eche_bundle_resources.h", - "+ash/grit/ash_eche_bundle_resources_map.h", "+chromeos/services/device_sync/public/cpp", "+components/keyed_service/core/keyed_service.h", "+crypto/random.h",
diff --git a/ash/webui/eche_app_ui/eche_app_ui.cc b/ash/webui/eche_app_ui/eche_app_ui.cc index 0c113f6..db853dce 100644 --- a/ash/webui/eche_app_ui/eche_app_ui.cc +++ b/ash/webui/eche_app_ui/eche_app_ui.cc
@@ -4,12 +4,12 @@ #include <memory> -#include "ash/grit/ash_eche_app_resources.h" -#include "ash/grit/ash_eche_bundle_resources.h" #include "ash/webui/eche_app_ui/eche_app_manager.h" #include "ash/webui/eche_app_ui/eche_app_ui.h" #include "ash/webui/eche_app_ui/mojom/eche_app.mojom.h" #include "ash/webui/eche_app_ui/url_constants.h" +#include "ash/webui/grit/ash_eche_app_resources.h" +#include "ash/webui/grit/ash_eche_bundle_resources.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_ui.h" #include "content/public/browser/web_ui_data_source.h"
diff --git a/ash/webui/eche_app_ui/untrusted_eche_app_ui.cc b/ash/webui/eche_app_ui/untrusted_eche_app_ui.cc index 8856501..6b2df83b 100644 --- a/ash/webui/eche_app_ui/untrusted_eche_app_ui.cc +++ b/ash/webui/eche_app_ui/untrusted_eche_app_ui.cc
@@ -4,10 +4,10 @@ #include "ash/webui/eche_app_ui/untrusted_eche_app_ui.h" -#include "ash/grit/ash_eche_app_resources.h" -#include "ash/grit/ash_eche_bundle_resources.h" -#include "ash/grit/ash_eche_bundle_resources_map.h" #include "ash/webui/eche_app_ui/url_constants.h" +#include "ash/webui/grit/ash_eche_app_resources.h" +#include "ash/webui/grit/ash_eche_bundle_resources.h" +#include "ash/webui/grit/ash_eche_bundle_resources_map.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_ui.h" #include "content/public/browser/web_ui_data_source.h"
diff --git a/ash/webui/file_manager/DEPS b/ash/webui/file_manager/DEPS index 96c8cf6a..2483c32 100644 --- a/ash/webui/file_manager/DEPS +++ b/ash/webui/file_manager/DEPS
@@ -1,6 +1,5 @@ include_rules = [ # Do not add chrome here (use a delegate instead). - "+ash/grit/ash_file_manager_resources.h", "+ui/file_manager/grit", "+ui/webui", ]
diff --git a/ash/webui/firmware_update_ui/DEPS b/ash/webui/firmware_update_ui/DEPS index 0db0cc9..5ea09cfd 100644 --- a/ash/webui/firmware_update_ui/DEPS +++ b/ash/webui/firmware_update_ui/DEPS
@@ -1,5 +1,3 @@ include_rules = [ - "+ash/grit/ash_firmware_update_app_resources.h", - "+ash/grit/ash_firmware_update_app_resources_map.h", "+ui/resources", ]
diff --git a/ash/webui/firmware_update_ui/firmware_update_app_ui.cc b/ash/webui/firmware_update_ui/firmware_update_app_ui.cc index 97f9e81..f16f07b 100644 --- a/ash/webui/firmware_update_ui/firmware_update_app_ui.cc +++ b/ash/webui/firmware_update_ui/firmware_update_app_ui.cc
@@ -8,10 +8,10 @@ #include <utility> #include "ash/components/fwupd/firmware_update_manager.h" -#include "ash/grit/ash_firmware_update_app_resources.h" -#include "ash/grit/ash_firmware_update_app_resources_map.h" #include "ash/webui/firmware_update_ui/mojom/firmware_update.mojom.h" #include "ash/webui/firmware_update_ui/url_constants.h" +#include "ash/webui/grit/ash_firmware_update_app_resources.h" +#include "ash/webui/grit/ash_firmware_update_app_resources_map.h" #include "chromeos/strings/grit/chromeos_strings.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_ui.h"
diff --git a/ash/webui/firmware_update_ui/resources/firmware_update_dialog.html b/ash/webui/firmware_update_ui/resources/firmware_update_dialog.html index f9d13ed1..df18ad15 100644 --- a/ash/webui/firmware_update_ui/resources/firmware_update_dialog.html +++ b/ash/webui/firmware_update_ui/resources/firmware_update_dialog.html
@@ -32,18 +32,20 @@ isInitiallyInflight_)]]" restamp> <cr-dialog id="updateDialog" show-on-attach on-close="closeDialog_"> - <div slot="title" id="updateDialogTitle" class="firmware-dialog-title-font"> + <div slot="title" id="updateDialogTitle" class="firmware-dialog-title-font" + tabindex="0" aria-labelledby="updateDialogTitle"> [[dialogContent.title]] </div> <div slot="body" class="firmware-dialog-body-font"> - <div id="updateDialogBody"> + <div id="updateDialogBody" aria-hidden="true" tabindex="0"> [[dialogContent.body]] </div> </div> <div slot="footer" hidden$="[[!shouldShowProgressBar_(installationProgress.*, isInitiallyInflight_)]]"> - <label id="progress" class="firmware-dialog-installing-font"> + <label id="progress" class="firmware-dialog-installing-font" + aria-live="polite" tabindex="0"> [[dialogContent.footer]] </label> <template is="dom-if"
diff --git a/ash/webui/firmware_update_ui/resources/firmware_update_dialog.js b/ash/webui/firmware_update_ui/resources/firmware_update_dialog.js index a86b4861..07f587a 100644 --- a/ash/webui/firmware_update_ui/resources/firmware_update_dialog.js +++ b/ash/webui/firmware_update_ui/resources/firmware_update_dialog.js
@@ -64,6 +64,7 @@ installationProgress: { type: Object, value: {percentage: 0, state: UpdateState.kIdle}, + observer: 'stateChanged_', }, /** @private {boolean} */ @@ -122,6 +123,26 @@ this.isInitiallyInflight_ = false; } this.installationProgress = update; + if (this.isUpdateInProgress_() && this.isDialogOpen_()) { + // 'aria-hidden' is used to prevent ChromeVox from announcing + // the body text automatically. Setting 'aria-hidden' to false + // here allows ChromeVox to announce the body text when a user + // navigates to it. + this.shadowRoot.querySelector('#updateDialogBody') + .setAttribute('aria-hidden', 'false'); + } + } + + /** + * @param {!InstallationProgress} prevProgress + * @param {?InstallationProgress} currProgress + */ + progressChanged_(prevProgress, currProgress) { + if (!currProgress || prevProgress.state == currProgress.state) { + return; + } + // Focus the dialog title if the update state has changed. + this.shadowRoot.querySelector('#updateDialogTitle').focus(); } /** @protected */ @@ -230,8 +251,17 @@ * @return {boolean} */ shouldShowProgressBar_() { - return this.isUpdateInProgress_() || this.isDeviceRestarting_() || + const res = this.isUpdateInProgress_() || this.isDeviceRestarting_() || this.isInitiallyInflight_; + const progressIsActiveEl = this.shadowRoot.activeElement == + this.shadowRoot.querySelector('#progress'); + // Move focus to the dialog title if the progress label is currently + // active and set to be hidden. This case is reached when the dialog state + // moves from restarting to completed. + if (progressIsActiveEl && !res) { + this.shadowRoot.querySelector('#updateDialogTitle').focus(); + } + return res; } /** * @protected @@ -331,6 +361,13 @@ this.i18n('doneButton') : this.i18n('okButton'); } + /** + * @protected + * @return {boolean} + */ + isDialogOpen_() { + return !!this.shadowRoot.querySelector('#updateDialog'); + } } customElements.define(
diff --git a/ash/webui/help_app_ui/help_app_ui.cc b/ash/webui/help_app_ui/help_app_ui.cc index 5ac1003..7d188c0 100644 --- a/ash/webui/help_app_ui/help_app_ui.cc +++ b/ash/webui/help_app_ui/help_app_ui.cc
@@ -7,7 +7,7 @@ #include <utility> #include "ash/constants/ash_features.h" -#include "ash/grit/ash_help_app_resources.h" +#include "ash/webui/grit/ash_help_app_resources.h" #include "ash/webui/help_app_ui/help_app_manager.h" #include "ash/webui/help_app_ui/help_app_manager_factory.h" #include "ash/webui/help_app_ui/help_app_page_handler.h"
diff --git a/ash/webui/help_app_ui/help_app_untrusted_ui.cc b/ash/webui/help_app_ui/help_app_untrusted_ui.cc index cdcedfd2..ee58d6d 100644 --- a/ash/webui/help_app_ui/help_app_untrusted_ui.cc +++ b/ash/webui/help_app_ui/help_app_untrusted_ui.cc
@@ -4,7 +4,7 @@ #include "ash/webui/help_app_ui/help_app_untrusted_ui.h" -#include "ash/grit/ash_help_app_resources.h" +#include "ash/webui/grit/ash_help_app_resources.h" #include "ash/webui/help_app_ui/url_constants.h" #include "ash/webui/web_applications/webui_test_prod_util.h" #include "chromeos/grit/chromeos_help_app_bundle_resources.h"
diff --git a/ash/webui/media_app_ui/media_app_guest_ui.cc b/ash/webui/media_app_ui/media_app_guest_ui.cc index fd954db..383ce8a 100644 --- a/ash/webui/media_app_ui/media_app_guest_ui.cc +++ b/ash/webui/media_app_ui/media_app_guest_ui.cc
@@ -4,7 +4,7 @@ #include "ash/webui/media_app_ui/media_app_guest_ui.h" -#include "ash/grit/ash_media_app_resources.h" +#include "ash/webui/grit/ash_media_app_resources.h" #include "ash/webui/media_app_ui/url_constants.h" #include "ash/webui/web_applications/webui_test_prod_util.h" #include "chromeos/grit/chromeos_media_app_bundle_resources.h"
diff --git a/ash/webui/media_app_ui/media_app_ui.cc b/ash/webui/media_app_ui/media_app_ui.cc index ac26db8..42685eb 100644 --- a/ash/webui/media_app_ui/media_app_ui.cc +++ b/ash/webui/media_app_ui/media_app_ui.cc
@@ -6,7 +6,7 @@ #include <utility> -#include "ash/grit/ash_media_app_resources.h" +#include "ash/webui/grit/ash_media_app_resources.h" #include "ash/webui/media_app_ui/media_app_page_handler.h" #include "ash/webui/media_app_ui/url_constants.h" #include "ash/webui/web_applications/webui_test_prod_util.h"
diff --git a/ash/webui/multidevice_debug/proximity_auth_ui.cc b/ash/webui/multidevice_debug/proximity_auth_ui.cc index d761916..e10699c 100644 --- a/ash/webui/multidevice_debug/proximity_auth_ui.cc +++ b/ash/webui/multidevice_debug/proximity_auth_ui.cc
@@ -6,7 +6,7 @@ #include <memory> -#include "ash/grit/ash_multidevice_debug_resources.h" +#include "ash/webui/grit/ash_multidevice_debug_resources.h" #include "ash/webui/multidevice_debug/proximity_auth_webui_handler.h" #include "ash/webui/multidevice_debug/url_constants.h" #include "base/bind.h"
diff --git a/ash/webui/os_feedback_ui/os_feedback_ui.cc b/ash/webui/os_feedback_ui/os_feedback_ui.cc index 99c97522..c5c0ea5 100644 --- a/ash/webui/os_feedback_ui/os_feedback_ui.cc +++ b/ash/webui/os_feedback_ui/os_feedback_ui.cc
@@ -4,8 +4,8 @@ #include "ash/webui/os_feedback_ui/os_feedback_ui.h" -#include "ash/grit/ash_os_feedback_resources.h" -#include "ash/grit/ash_os_feedback_resources_map.h" +#include "ash/webui/grit/ash_os_feedback_resources.h" +#include "ash/webui/grit/ash_os_feedback_resources_map.h" #include "ash/webui/os_feedback_ui/url_constants.h" #include "base/memory/ptr_util.h" #include "content/public/browser/web_contents.h"
diff --git a/ash/webui/os_feedback_ui/os_feedback_untrusted_ui.cc b/ash/webui/os_feedback_ui/os_feedback_untrusted_ui.cc index 1ec962b6..93c79c4 100644 --- a/ash/webui/os_feedback_ui/os_feedback_untrusted_ui.cc +++ b/ash/webui/os_feedback_ui/os_feedback_untrusted_ui.cc
@@ -6,9 +6,9 @@ #include <memory> -#include "ash/grit/ash_os_feedback_resources.h" -#include "ash/grit/ash_os_feedback_untrusted_resources.h" -#include "ash/grit/ash_os_feedback_untrusted_resources_map.h" +#include "ash/webui/grit/ash_os_feedback_resources.h" +#include "ash/webui/grit/ash_os_feedback_untrusted_resources.h" +#include "ash/webui/grit/ash_os_feedback_untrusted_resources_map.h" #include "ash/webui/os_feedback_ui/url_constants.h" #include "base/containers/span.h" #include "base/memory/ptr_util.h"
diff --git a/ash/webui/personalization_app/personalization_app_ui.cc b/ash/webui/personalization_app/personalization_app_ui.cc index 2c09250..e152a13 100644 --- a/ash/webui/personalization_app/personalization_app_ui.cc +++ b/ash/webui/personalization_app/personalization_app_ui.cc
@@ -5,8 +5,8 @@ #include "ash/webui/personalization_app/personalization_app_ui.h" #include "ash/constants/ash_features.h" -#include "ash/grit/ash_personalization_app_resources.h" -#include "ash/grit/ash_personalization_app_resources_map.h" +#include "ash/webui/grit/ash_personalization_app_resources.h" +#include "ash/webui/grit/ash_personalization_app_resources_map.h" #include "ash/webui/personalization_app/personalization_app_ambient_provider.h" #include "ash/webui/personalization_app/personalization_app_theme_provider.h" #include "ash/webui/personalization_app/personalization_app_url_constants.h"
diff --git a/ash/webui/personalization_app/untrusted_personalization_app_ui_config.cc b/ash/webui/personalization_app/untrusted_personalization_app_ui_config.cc index d6877e2..8485a5c 100644 --- a/ash/webui/personalization_app/untrusted_personalization_app_ui_config.cc +++ b/ash/webui/personalization_app/untrusted_personalization_app_ui_config.cc
@@ -5,8 +5,8 @@ #include "ash/webui/personalization_app/untrusted_personalization_app_ui_config.h" #include "ash/constants/ash_features.h" -#include "ash/grit/ash_personalization_app_resources.h" -#include "ash/grit/ash_personalization_app_resources_map.h" +#include "ash/webui/grit/ash_personalization_app_resources.h" +#include "ash/webui/grit/ash_personalization_app_resources_map.h" #include "ash/webui/personalization_app/personalization_app_url_constants.h" #include "base/strings/string_util.h" #include "chromeos/strings/grit/chromeos_strings.h"
diff --git a/ash/webui/print_management/print_management_ui.cc b/ash/webui/print_management/print_management_ui.cc index 0047466..597d7d4e 100644 --- a/ash/webui/print_management/print_management_ui.cc +++ b/ash/webui/print_management/print_management_ui.cc
@@ -4,8 +4,8 @@ #include "ash/webui/print_management/print_management_ui.h" -#include "ash/grit/ash_print_management_resources.h" -#include "ash/grit/ash_print_management_resources_map.h" +#include "ash/webui/grit/ash_print_management_resources.h" +#include "ash/webui/grit/ash_print_management_resources_map.h" #include "ash/webui/print_management/mojom/printing_manager.mojom.h" #include "ash/webui/print_management/url_constants.h" #include "base/memory/ptr_util.h"
diff --git a/ash/webui/projector_app/trusted_projector_annotator_ui.cc b/ash/webui/projector_app/trusted_projector_annotator_ui.cc index 9087937..0acd45b 100644 --- a/ash/webui/projector_app/trusted_projector_annotator_ui.cc +++ b/ash/webui/projector_app/trusted_projector_annotator_ui.cc
@@ -4,9 +4,9 @@ #include "ash/webui/projector_app/trusted_projector_annotator_ui.h" -#include "ash/grit/ash_projector_app_trusted_resources.h" -#include "ash/grit/ash_projector_app_trusted_resources_map.h" #include "ash/public/cpp/projector/projector_annotator_controller.h" +#include "ash/webui/grit/ash_projector_app_trusted_resources.h" +#include "ash/webui/grit/ash_projector_app_trusted_resources_map.h" #include "ash/webui/projector_app/annotator_message_handler.h" #include "ash/webui/projector_app/projector_message_handler.h" #include "ash/webui/projector_app/public/cpp/projector_app_constants.h"
diff --git a/ash/webui/projector_app/trusted_projector_ui.cc b/ash/webui/projector_app/trusted_projector_ui.cc index 65caf0e..db000f9 100644 --- a/ash/webui/projector_app/trusted_projector_ui.cc +++ b/ash/webui/projector_app/trusted_projector_ui.cc
@@ -4,9 +4,9 @@ #include "ash/webui/projector_app/trusted_projector_ui.h" -#include "ash/grit/ash_projector_app_trusted_resources.h" -#include "ash/grit/ash_projector_app_trusted_resources_map.h" #include "ash/public/cpp/projector/projector_annotator_controller.h" +#include "ash/webui/grit/ash_projector_app_trusted_resources.h" +#include "ash/webui/grit/ash_projector_app_trusted_resources_map.h" #include "ash/webui/projector_app/annotator_message_handler.h" #include "ash/webui/projector_app/projector_message_handler.h" #include "ash/webui/projector_app/public/cpp/projector_app_constants.h"
diff --git a/ash/webui/projector_app/untrusted_projector_annotator_ui.cc b/ash/webui/projector_app/untrusted_projector_annotator_ui.cc index e085976..bdfc967 100644 --- a/ash/webui/projector_app/untrusted_projector_annotator_ui.cc +++ b/ash/webui/projector_app/untrusted_projector_annotator_ui.cc
@@ -4,8 +4,8 @@ #include "ash/webui/projector_app/untrusted_projector_annotator_ui.h" -#include "ash/grit/ash_projector_app_untrusted_resources.h" -#include "ash/grit/ash_projector_app_untrusted_resources_map.h" +#include "ash/webui/grit/ash_projector_app_untrusted_resources.h" +#include "ash/webui/grit/ash_projector_app_untrusted_resources_map.h" #include "ash/webui/media_app_ui/buildflags.h" #include "ash/webui/projector_app/public/cpp/projector_app_constants.h" #include "chromeos/grit/chromeos_projector_app_bundle_resources.h"
diff --git a/ash/webui/projector_app/untrusted_projector_ui.cc b/ash/webui/projector_app/untrusted_projector_ui.cc index 383bd99d..bd2f0ff 100644 --- a/ash/webui/projector_app/untrusted_projector_ui.cc +++ b/ash/webui/projector_app/untrusted_projector_ui.cc
@@ -4,8 +4,8 @@ #include "ash/webui/projector_app/untrusted_projector_ui.h" -#include "ash/grit/ash_projector_app_untrusted_resources.h" -#include "ash/grit/ash_projector_app_untrusted_resources_map.h" +#include "ash/webui/grit/ash_projector_app_untrusted_resources.h" +#include "ash/webui/grit/ash_projector_app_untrusted_resources_map.h" #include "ash/webui/media_app_ui/buildflags.h" #include "ash/webui/projector_app/public/cpp/projector_app_constants.h" #include "chromeos/grit/chromeos_projector_app_bundle_resources.h"
diff --git a/ash/webui/resources/BUILD.gn b/ash/webui/resources/BUILD.gn index 493de55..6e3ad667 100644 --- a/ash/webui/resources/BUILD.gn +++ b/ash/webui/resources/BUILD.gn
@@ -10,6 +10,8 @@ assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //ash") +ash_webui_grit_output_dir = "$root_gen_dir/ash/webui" + # Convenience template for WebUIs using generate_grd. # TODO(calamity): Further deduplicate with non-generated grit targets. template("ash_generated_grit") { @@ -22,13 +24,14 @@ # These arguments are needed since the grd is generated at build time. enable_input_discovery_for_gn_analyze = false + outputs = [ - "ash_$target_name.pak", - "grit/ash_$target_name.h", + "ash_${target_name}.pak", + "grit/ash_${target_name}.h", "grit/ash_${target_name}_map.cc", "grit/ash_${target_name}_map.h", ] - output_dir = "$root_gen_dir/ash" + output_dir = "$ash_webui_grit_output_dir" } } @@ -133,7 +136,7 @@ "grit/ash_scanning_app_resources_map.h", ] - output_dir = "$root_gen_dir/ash" + output_dir = "$ash_webui_grit_output_dir" } grit("diagnostics_app_resources") { @@ -151,7 +154,7 @@ "grit/ash_diagnostics_app_resources_map.h", ] - output_dir = "$root_gen_dir/ash" + output_dir = "$ash_webui_grit_output_dir" } # Resources used by chrome://help-app, and parts of the sandboxed app it hosts @@ -165,7 +168,7 @@ "grit/ash_help_app_resources_map.h", "ash_help_app_resources.pak", ] - output_dir = "$root_gen_dir/ash" + output_dir = "$ash_webui_grit_output_dir" deps = [ "//ash/webui/help_app_ui:mojo_bindings_js", @@ -228,7 +231,7 @@ "grit/ash_media_app_resources.h", "ash_media_app_resources.pak", ] - output_dir = "$root_gen_dir/ash" + output_dir = "$ash_webui_grit_output_dir" use_brotli = true @@ -279,7 +282,7 @@ "ash_print_management_resources.pak", ] - output_dir = "$root_gen_dir/ash" + output_dir = "$ash_webui_grit_output_dir" } # Resources used by chrome-untrusted://projector SWA. @@ -341,7 +344,7 @@ "grit/ash_eche_bundle_resources_map.h", "ash_eche_bundle_resources.pak", ] - output_dir = "$root_gen_dir/ash" + output_dir = "$ash_webui_grit_output_dir" } # Resources used by chrome://connectivity-diagnostics @@ -361,7 +364,7 @@ "grit/connectivity_diagnostics_resources_map.h", ] - output_dir = "$root_gen_dir/ash" + output_dir = "$ash_webui_grit_output_dir" } grit("multidevice_debug_resources") { @@ -375,5 +378,5 @@ "ash_multidevice_debug_resources.pak", ] - output_dir = "$root_gen_dir/ash" + output_dir = "$ash_webui_grit_output_dir" }
diff --git a/ash/webui/sample_system_web_app_ui/DEPS b/ash/webui/sample_system_web_app_ui/DEPS index 1da0510b..52336fd4 100644 --- a/ash/webui/sample_system_web_app_ui/DEPS +++ b/ash/webui/sample_system_web_app_ui/DEPS
@@ -1,5 +1,4 @@ include_rules = [ # Do not add chrome here (use a delegate instead). - "+ash/grit/ash_sample_system_web_app_resources.h", "+ui/webui", ]
diff --git a/ash/webui/sample_system_web_app_ui/sample_system_web_app_ui.cc b/ash/webui/sample_system_web_app_ui/sample_system_web_app_ui.cc index 57bbd8f6..64724f25 100644 --- a/ash/webui/sample_system_web_app_ui/sample_system_web_app_ui.cc +++ b/ash/webui/sample_system_web_app_ui/sample_system_web_app_ui.cc
@@ -6,8 +6,8 @@ #include <utility> -#include "ash/grit/ash_sample_system_web_app_resources.h" -#include "ash/grit/ash_sample_system_web_app_resources_map.h" +#include "ash/webui/grit/ash_sample_system_web_app_resources.h" +#include "ash/webui/grit/ash_sample_system_web_app_resources_map.h" #include "ash/webui/sample_system_web_app_ui/sample_page_handler.h" #include "ash/webui/sample_system_web_app_ui/url_constants.h" #include "base/memory/ptr_util.h"
diff --git a/ash/webui/sample_system_web_app_ui/untrusted_sample_system_web_app_ui.cc b/ash/webui/sample_system_web_app_ui/untrusted_sample_system_web_app_ui.cc index 6463c35..54c913e 100644 --- a/ash/webui/sample_system_web_app_ui/untrusted_sample_system_web_app_ui.cc +++ b/ash/webui/sample_system_web_app_ui/untrusted_sample_system_web_app_ui.cc
@@ -4,7 +4,7 @@ #include "ash/webui/sample_system_web_app_ui/untrusted_sample_system_web_app_ui.h" -#include "ash/grit/ash_sample_system_web_app_untrusted_resources_map.h" +#include "ash/webui/grit/ash_sample_system_web_app_untrusted_resources_map.h" #include "ash/webui/sample_system_web_app_ui/sample_system_web_app_ui.h" #include "ash/webui/sample_system_web_app_ui/url_constants.h" #include "content/public/browser/web_contents.h"
diff --git a/ash/webui/scanning/DEPS b/ash/webui/scanning/DEPS index f911907..fd995e3 100644 --- a/ash/webui/scanning/DEPS +++ b/ash/webui/scanning/DEPS
@@ -1,6 +1,4 @@ include_rules = [ - "+ash/grit/ash_scanning_app_resources.h", - "+ash/grit/ash_scanning_app_resources_map.h", "+chromeos/strings/grit/chromeos_strings.h", "+ui/base", "+ui/gfx",
diff --git a/ash/webui/scanning/scanning_ui.cc b/ash/webui/scanning/scanning_ui.cc index db759663..486cc33 100644 --- a/ash/webui/scanning/scanning_ui.cc +++ b/ash/webui/scanning/scanning_ui.cc
@@ -9,10 +9,10 @@ #include <utility> #include "ash/constants/ash_features.h" -#include "ash/grit/ash_scanning_app_resources.h" -#include "ash/grit/ash_scanning_app_resources_map.h" #include "ash/webui/common/backend/accessibility_features.h" #include "ash/webui/common/mojom/accessibility_features.mojom.h" +#include "ash/webui/grit/ash_scanning_app_resources.h" +#include "ash/webui/grit/ash_scanning_app_resources_map.h" #include "ash/webui/scanning/mojom/scanning.mojom.h" #include "ash/webui/scanning/scanning_app_delegate.h" #include "ash/webui/scanning/scanning_metrics_handler.h"
diff --git a/ash/webui/shimless_rma/DEPS b/ash/webui/shimless_rma/DEPS index cdebd9908..c72c12ae 100644 --- a/ash/webui/shimless_rma/DEPS +++ b/ash/webui/shimless_rma/DEPS
@@ -1,5 +1,4 @@ include_rules = [ - "+ash/grit/ash_shimless_rma_resources.h", "+chromeos/dbus", "+chromeos/dbus/power", "+chromeos/dbus/rmad",
diff --git a/ash/webui/shimless_rma/shimless_rma.cc b/ash/webui/shimless_rma/shimless_rma.cc index 39e6e763..e61cfa48 100644 --- a/ash/webui/shimless_rma/shimless_rma.cc +++ b/ash/webui/shimless_rma/shimless_rma.cc
@@ -8,9 +8,9 @@ #include <string> #include <utility> -#include "ash/grit/ash_shimless_rma_resources.h" -#include "ash/grit/ash_shimless_rma_resources_map.h" #include "ash/public/cpp/network_config_service.h" +#include "ash/webui/grit/ash_shimless_rma_resources.h" +#include "ash/webui/grit/ash_shimless_rma_resources_map.h" #include "ash/webui/shimless_rma/backend/shimless_rma_delegate.h" #include "ash/webui/shimless_rma/url_constants.h" #include "base/containers/span.h"
diff --git a/ash/webui/shortcut_customization_ui/DEPS b/ash/webui/shortcut_customization_ui/DEPS index 4ff4187..93138d4 100644 --- a/ash/webui/shortcut_customization_ui/DEPS +++ b/ash/webui/shortcut_customization_ui/DEPS
@@ -1,6 +1,4 @@ include_rules = [ - "+ash/grit/ash_shortcut_customization_app_resources.h", - "+ash/grit/ash_shortcut_customization_app_resources_map.h", "+ui/resources", "+ui/webui", ]
diff --git a/ash/webui/shortcut_customization_ui/shortcut_customization_app_ui.cc b/ash/webui/shortcut_customization_ui/shortcut_customization_app_ui.cc index b38294b..66c04a2 100644 --- a/ash/webui/shortcut_customization_ui/shortcut_customization_app_ui.cc +++ b/ash/webui/shortcut_customization_ui/shortcut_customization_app_ui.cc
@@ -7,8 +7,8 @@ #include <memory> #include <utility> -#include "ash/grit/ash_shortcut_customization_app_resources.h" -#include "ash/grit/ash_shortcut_customization_app_resources_map.h" +#include "ash/webui/grit/ash_shortcut_customization_app_resources.h" +#include "ash/webui/grit/ash_shortcut_customization_app_resources_map.h" #include "ash/webui/shortcut_customization_ui/backend/accelerator_configuration_provider.h" #include "ash/webui/shortcut_customization_ui/mojom/shortcut_customization.mojom.h" #include "ash/webui/shortcut_customization_ui/url_constants.h"
diff --git a/ash/webui/system_extensions_internals_ui/DEPS b/ash/webui/system_extensions_internals_ui/DEPS index e1a02ef..4244eece 100644 --- a/ash/webui/system_extensions_internals_ui/DEPS +++ b/ash/webui/system_extensions_internals_ui/DEPS
@@ -1,5 +1,4 @@ include_rules = [ # Do not add chrome here. Use a delegate instead. - "+ash/grit/ash_system_extensions_internals_resources.h", "+ui/webui", ]
diff --git a/ash/webui/system_extensions_internals_ui/system_extensions_internals_ui.cc b/ash/webui/system_extensions_internals_ui/system_extensions_internals_ui.cc index 69458872..0b6a2a1 100644 --- a/ash/webui/system_extensions_internals_ui/system_extensions_internals_ui.cc +++ b/ash/webui/system_extensions_internals_ui/system_extensions_internals_ui.cc
@@ -4,8 +4,8 @@ #include "ash/webui/system_extensions_internals_ui/system_extensions_internals_ui.h" -#include "ash/grit/ash_system_extensions_internals_resources.h" -#include "ash/grit/ash_system_extensions_internals_resources_map.h" +#include "ash/webui/grit/ash_system_extensions_internals_resources.h" +#include "ash/webui/grit/ash_system_extensions_internals_resources_map.h" #include "ash/webui/system_extensions_internals_ui/url_constants.h" #include "base/memory/ptr_util.h" #include "content/public/browser/web_contents.h"
diff --git a/ash/webui/telemetry_extension_ui/DEPS b/ash/webui/telemetry_extension_ui/DEPS index e16f58c..f396279 100644 --- a/ash/webui/telemetry_extension_ui/DEPS +++ b/ash/webui/telemetry_extension_ui/DEPS
@@ -1,6 +1,5 @@ include_rules = [ # Do not add chrome here (use a delegate instead). - "+ash/grit/ash_telemetry_extension_resources.h", "+chrome/browser/ash/wilco_dtc_supportd/mojo_utils.h", # TODO(https://crbug.com/1164001): Remove when these moves to ash.
diff --git a/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc b/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc index 8a112af9..e92a0fc 100644 --- a/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc +++ b/base/allocator/allocator_shim_default_dispatch_to_partition_alloc.cc
@@ -440,6 +440,33 @@ return size; } +unsigned PartitionBatchMalloc(const AllocatorDispatch*, + size_t size, + void** results, + unsigned num_requested, + void* context) { + // No real batching: we could only acquire the lock once for instance, keep it + // simple for now. + for (unsigned i = 0; i < num_requested; i++) { + // No need to check the results, we crash if it fails. + results[i] = PartitionMalloc(nullptr, size, nullptr); + } + + // Either all succeeded, or we crashed. + return num_requested; +} + +void PartitionBatchFree(const AllocatorDispatch*, + void** to_be_freed, + unsigned num_to_be_freed, + void* context) { + // No real batching: we could only acquire the lock once for instance, keep it + // simple for now. + for (unsigned i = 0; i < num_to_be_freed; i++) { + PartitionFree(nullptr, to_be_freed[i], nullptr); + } +} + // static ThreadSafePartitionRoot* PartitionAllocMalloc::Allocator() { return ::Allocator(); @@ -603,8 +630,8 @@ &base::internal::PartitionRealloc, // realloc_function &base::internal::PartitionFree, // free_function &base::internal::PartitionGetSizeEstimate, // get_size_estimate_function - nullptr, // batch_malloc_function - nullptr, // batch_free_function + &base::internal::PartitionBatchMalloc, // batch_malloc_function + &base::internal::PartitionBatchFree, // batch_free_function #if BUILDFLAG(IS_APPLE) // On Apple OSes, free_definite_size() is always called from free(), since // get_size_estimate() is used to determine whether an allocation belongs to
diff --git a/base/allocator/allocator_shim_override_mac_default_zone.h b/base/allocator/allocator_shim_override_mac_default_zone.h index d0dacd35..a7419cb1 100644 --- a/base/allocator/allocator_shim_override_mac_default_zone.h +++ b/base/allocator/allocator_shim_override_mac_default_zone.h
@@ -174,6 +174,19 @@ return ShimFreeDefiniteSize(ptr, size, nullptr); } +unsigned MallocZoneBatchMalloc(malloc_zone_t* zone, + size_t size, + void** results, + unsigned num_requested) { + return ShimBatchMalloc(size, results, num_requested, nullptr); +} + +void MallocZoneBatchFree(malloc_zone_t* zone, + void** to_be_freed, + unsigned num) { + return ShimBatchFree(to_be_freed, num, nullptr); +} + malloc_introspection_t g_mac_malloc_introspection{}; malloc_zone_t g_mac_malloc_zone{}; @@ -286,8 +299,8 @@ g_mac_malloc_zone.free = MallocZoneFree; g_mac_malloc_zone.realloc = MallocZoneRealloc; g_mac_malloc_zone.destroy = MallocZoneDestroy; - g_mac_malloc_zone.batch_malloc = nullptr; - g_mac_malloc_zone.batch_free = nullptr; + g_mac_malloc_zone.batch_malloc = MallocZoneBatchMalloc; + g_mac_malloc_zone.batch_free = MallocZoneBatchFree; g_mac_malloc_zone.memalign = MallocZoneMemalign; g_mac_malloc_zone.free_definite_size = MallocZoneFreeDefiniteSize; g_mac_malloc_zone.pressure_relief = nullptr;
diff --git a/base/allocator/allocator_shim_unittest.cc b/base/allocator/allocator_shim_unittest.cc index 31ac718b..270cdd3 100644 --- a/base/allocator/allocator_shim_unittest.cc +++ b/base/allocator/allocator_shim_unittest.cc
@@ -707,10 +707,26 @@ EXPECT_GT(stream.str().size(), 30u); // Should not crash. } + #endif // BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) #endif // BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && BUILDFLAG(IS_APPLE) + +// Non-regression test for crbug.com/1291885. +TEST_F(AllocatorShimTest, BatchMalloc) { + constexpr unsigned kNumToAllocate = 20; + void* pointers[kNumToAllocate]; + + EXPECT_EQ(kNumToAllocate, malloc_zone_batch_malloc(malloc_default_zone(), 10, + pointers, kNumToAllocate)); + malloc_zone_batch_free(malloc_default_zone(), pointers, kNumToAllocate); + // Should not crash. +} + +#endif // BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) && BUILDFLAG(IS_APPLE) + } // namespace } // namespace allocator } // namespace base
diff --git a/base/android/junit/src/org/chromium/base/PiiEliderTest.java b/base/android/junit/src/org/chromium/base/PiiEliderTest.java index e613f91..d9f51ce 100644 --- a/base/android/junit/src/org/chromium/base/PiiEliderTest.java +++ b/base/android/junit/src/org/chromium/base/PiiEliderTest.java
@@ -160,7 +160,7 @@ @Test public void testDoesNotElideMethodNameInStacktrace() { String original = "java.lang.NullPointerException: Attempt to invoke virtual method 'int " - + "androidx.fragment.app.FragmentManager.getBackStackEntryCount()' on a null " + + "org.robolectric.internal.AndroidSandbox.getBackStackEntryCount()' on a null " + "object reference"; assertEquals(original, PiiElider.sanitizeStacktrace(original)); }
diff --git a/base/feature_list.cc b/base/feature_list.cc index d0a2474..99703f8 100644 --- a/base/feature_list.cc +++ b/base/feature_list.cc
@@ -24,7 +24,9 @@ #include "base/logging.h" #include "base/memory/ptr_util.h" #include "base/metrics/field_trial.h" +#include "base/metrics/field_trial_params.h" #include "base/metrics/persistent_memory_allocator.h" +#include "base/notreached.h" #include "base/path_service.h" #include "base/pickle.h" #include "base/strings/string_piece.h"
diff --git a/base/feature_list.h b/base/feature_list.h index 50b3b2d..f993804 100644 --- a/base/feature_list.h +++ b/base/feature_list.h
@@ -16,8 +16,8 @@ #include "base/containers/flat_map.h" #include "base/feature_list_buildflags.h" #include "base/gtest_prod_util.h" +#include "base/logging.h" #include "base/memory/raw_ptr.h" -#include "base/metrics/field_trial_params.h" #include "base/strings/string_piece.h" #include "base/synchronization/lock.h" #include "third_party/abseil-cpp/absl/types/optional.h"
diff --git a/base/profiler/chrome_unwinder_android_unittest.cc b/base/profiler/chrome_unwinder_android_unittest.cc index 4dbbf99c..d6de663e 100644 --- a/base/profiler/chrome_unwinder_android_unittest.cc +++ b/base/profiler/chrome_unwinder_android_unittest.cc
@@ -9,6 +9,7 @@ #include "base/profiler/profile_builder.h" #include "base/profiler/stack_buffer.h" #include "base/profiler/stack_copier_signal.h" +#include "base/profiler/stack_sampling_profiler_test_util.h" #include "base/profiler/thread_delegate_posix.h" #include "base/test/gtest_util.h" #include "build/build_config.h" @@ -39,25 +40,6 @@ 0x9, }; -class TestModule : public ModuleCache::Module { - public: - TestModule(uintptr_t base_address, - size_t size, - const std::string& build_id = "TestModule") - : base_address_(base_address), size_(size), build_id_(build_id) {} - - uintptr_t GetBaseAddress() const override { return base_address_; } - std::string GetId() const override { return build_id_; } - FilePath GetDebugBasename() const override { return FilePath(); } - size_t GetSize() const override { return size_; } - bool IsNative() const override { return true; } - - private: - const uintptr_t base_address_; - const size_t size_; - const std::string build_id_; -}; - // Utility function to add a single native module during test setup. Returns // a pointer to the provided module. const ModuleCache::Module* AddNativeModule( @@ -77,10 +59,6 @@ } // namespace -bool operator==(const Frame& a, const Frame& b) { - return a.instruction_pointer == b.instruction_pointer && a.module == b.module; -} - // Tests unwind step under normal operation. TEST(ChromeUnwinderAndroidTest, Step) { const std::vector<uintptr_t> stack_buffer = { @@ -209,10 +187,8 @@ auto cfi_table = ArmCFITable::Parse( {reinterpret_cast<const uint8_t*>(cfi_data), sizeof(cfi_data)}); - auto chrome_module = - std::make_unique<TestModule>(0x1000, 0x500, "ChromeModule"); - auto non_chrome_module = - std::make_unique<TestModule>(0x2000, 0x500, "OtherModule"); + auto chrome_module = std::make_unique<TestModule>(0x1000, 0x500); + auto non_chrome_module = std::make_unique<TestModule>(0x2000, 0x500); ModuleCache module_cache; ChromeUnwinderAndroid unwinder(cfi_table.get(),
diff --git a/base/profiler/chrome_unwinder_android_v2_unittest.cc b/base/profiler/chrome_unwinder_android_v2_unittest.cc index 8f14225d..b76d5d9 100644 --- a/base/profiler/chrome_unwinder_android_v2_unittest.cc +++ b/base/profiler/chrome_unwinder_android_v2_unittest.cc
@@ -5,6 +5,7 @@ #include "base/profiler/chrome_unwinder_android_v2.h" #include "base/profiler/chrome_unwind_info_android.h" +#include "base/profiler/stack_sampling_profiler_test_util.h" #include "base/test/gtest_util.h" #include "build/build_config.h" #include "testing/gtest/include/gtest/gtest.h" @@ -949,25 +950,6 @@ } } -class TestModule : public ModuleCache::Module { - public: - TestModule(uintptr_t base_address, - size_t size, - const std::string& build_id = "TestModule") - : base_address_(base_address), size_(size), build_id_(build_id) {} - - uintptr_t GetBaseAddress() const override { return base_address_; } - std::string GetId() const override { return build_id_; } - FilePath GetDebugBasename() const override { return FilePath(); } - size_t GetSize() const override { return size_; } - bool IsNative() const override { return true; } - - private: - const uintptr_t base_address_; - const size_t size_; - const std::string build_id_; -}; - // Utility function to add a single native module during test setup. Returns // a pointer to the provided module. const ModuleCache::Module* AddNativeModule( @@ -990,10 +972,8 @@ make_span(page_table, 1ul), }; - auto chrome_module = - std::make_unique<TestModule>(0x1000, 0x500, "ChromeModule"); - auto non_chrome_module = - std::make_unique<TestModule>(0x2000, 0x500, "OtherModule"); + auto chrome_module = std::make_unique<TestModule>(0x1000, 0x500); + auto non_chrome_module = std::make_unique<TestModule>(0x2000, 0x500); ModuleCache module_cache; ChromeUnwinderAndroidV2 unwinder(dummy_unwind_info,
diff --git a/base/profiler/stack_sampler_impl_unittest.cc b/base/profiler/stack_sampler_impl_unittest.cc index d31c49a8..19c83965 100644 --- a/base/profiler/stack_sampler_impl_unittest.cc +++ b/base/profiler/stack_sampler_impl_unittest.cc
@@ -17,6 +17,7 @@ #include "base/profiler/stack_buffer.h" #include "base/profiler/stack_copier.h" #include "base/profiler/stack_sampler_impl.h" +#include "base/profiler/stack_sampling_profiler_test_util.h" #include "base/profiler/suspendable_thread_delegate.h" #include "base/profiler/unwinder.h" #include "build/build_config.h" @@ -167,23 +168,6 @@ bool update_modules_was_invoked_ = false; }; -class TestModule : public ModuleCache::Module { - public: - TestModule(uintptr_t base_address, size_t size, bool is_native = true) - : base_address_(base_address), size_(size), is_native_(is_native) {} - - uintptr_t GetBaseAddress() const override { return base_address_; } - std::string GetId() const override { return ""; } - FilePath GetDebugBasename() const override { return FilePath(); } - size_t GetSize() const override { return size_; } - bool IsNative() const override { return is_native_; } - - private: - const uintptr_t base_address_; - const size_t size_; - const bool is_native_; -}; - // Utility function to form a vector from a single module. std::vector<std::unique_ptr<const ModuleCache::Module>> ToModuleVector( std::unique_ptr<const ModuleCache::Module> module) {
diff --git a/base/profiler/stack_sampling_profiler_test_util.cc b/base/profiler/stack_sampling_profiler_test_util.cc index 083fa7f..975ee98 100644 --- a/base/profiler/stack_sampling_profiler_test_util.cc +++ b/base/profiler/stack_sampling_profiler_test_util.cc
@@ -439,4 +439,23 @@ #endif } +uintptr_t TestModule::GetBaseAddress() const { + return base_address_; +} +std::string TestModule::GetId() const { + return id_; +} +FilePath TestModule::GetDebugBasename() const { + return debug_basename_; +} +size_t TestModule::GetSize() const { + return size_; +} +bool TestModule::IsNative() const { + return is_native_; +} + +bool operator==(const Frame& a, const Frame& b) { + return a.instruction_pointer == b.instruction_pointer && a.module == b.module; +} } // namespace base
diff --git a/base/profiler/stack_sampling_profiler_test_util.h b/base/profiler/stack_sampling_profiler_test_util.h index 9b949e0..c23200ec 100644 --- a/base/profiler/stack_sampling_profiler_test_util.h +++ b/base/profiler/stack_sampling_profiler_test_util.h
@@ -9,6 +9,7 @@ #include <string> #include <vector> +#include "base/base_export.h" #include "base/callback.h" #include "base/native_library.h" #include "base/profiler/frame.h" @@ -93,6 +94,34 @@ const SetupFunction setup_function_; }; +class TestModule : public ModuleCache::Module { + public: + explicit TestModule(uintptr_t base_address = 0, + size_t size = 0, + bool is_native = true) + : base_address_(base_address), size_(size), is_native_(is_native) {} + + uintptr_t GetBaseAddress() const override; + std::string GetId() const override; + FilePath GetDebugBasename() const override; + size_t GetSize() const override; + bool IsNative() const override; + + void set_id(const std::string& id) { id_ = id; } + void set_debug_basename(const FilePath& basename) { + debug_basename_ = basename; + } + + private: + const uintptr_t base_address_; + const size_t size_; + const bool is_native_; + std::string id_; + FilePath debug_basename_; +}; + +bool operator==(const Frame& a, const Frame& b); + // UnwindScenario setup function that calls into |wait_for_sample| without doing // any special unwinding setup, to exercise the "normal" unwind scenario. FunctionAddressRange CallWithPlainFunction(OnceClosure wait_for_sample);
diff --git a/base/profiler/win32_stack_frame_unwinder_unittest.cc b/base/profiler/win32_stack_frame_unwinder_unittest.cc index 37aab10..7d32546 100644 --- a/base/profiler/win32_stack_frame_unwinder_unittest.cc +++ b/base/profiler/win32_stack_frame_unwinder_unittest.cc
@@ -11,6 +11,8 @@ #include "base/compiler_specific.h" #include "base/memory/ptr_util.h" #include "base/memory/raw_ptr.h" +#include "base/profiler/stack_sampling_profiler_test_util.h" +#include "build/build_config.h" #include "testing/gtest/include/gtest/gtest.h" namespace base { @@ -21,21 +23,6 @@ // incremented by the same value with each call. const uintptr_t kImageBaseIncrement = 1 << 20; -// Stub module for testing. -class TestModule : public ModuleCache::Module { - public: - TestModule(uintptr_t base_address) : base_address_(base_address) {} - - uintptr_t GetBaseAddress() const override { return base_address_; } - std::string GetId() const override { return ""; } - FilePath GetDebugBasename() const override { return FilePath(); } - size_t GetSize() const override { return 0; } - bool IsNative() const override { return true; } - - private: - const uintptr_t base_address_; -}; - class TestUnwindFunctions : public Win32StackFrameUnwinder::UnwindFunctions { public: TestUnwindFunctions();
diff --git a/build/config/chromeos/BUILD.gn b/build/config/chromeos/BUILD.gn index f3dfe70..690ff88c 100644 --- a/build/config/chromeos/BUILD.gn +++ b/build/config/chromeos/BUILD.gn
@@ -13,11 +13,6 @@ dump_call_chain_clustering_order = "" } -declare_args() { - # Whether or not we're using new pass manager to build and link Chrome - use_new_pass_manager = dump_call_chain_clustering_order != "" -} - config("print_orderfile") { if (dump_call_chain_clustering_order != "") { _output_orderfile = @@ -27,8 +22,4 @@ } config("compiler") { - if (use_new_pass_manager) { - cflags = [ "-fexperimental-new-pass-manager" ] - ldflags = [ "-fexperimental-new-pass-manager" ] - } }
diff --git a/build/config/rust.gni b/build/config/rust.gni index 3de7f0e8..418dd2f 100644 --- a/build/config/rust.gni +++ b/build/config/rust.gni
@@ -17,7 +17,7 @@ enable_rust = false # The version string returned by rustc -V. - rustc_version = "rustc 1.56.1-dev" + rustc_version = "rustc 1.58.1-dev" # Use experimental Rust toolchain built in-tree. See //tools/rust/build.py. # When set to true rustc_version will need to be manually set.
diff --git a/build/fuchsia/linux_internal.sdk.sha1 b/build/fuchsia/linux_internal.sdk.sha1 index 181e4816..55d38c7 100644 --- a/build/fuchsia/linux_internal.sdk.sha1 +++ b/build/fuchsia/linux_internal.sdk.sha1
@@ -1 +1 @@ -7.20220204.0.1 +7.20220204.2.1
diff --git a/build/rust/BUILD.gn b/build/rust/BUILD.gn index 0fa5ea8c..ae18260 100644 --- a/build/rust/BUILD.gn +++ b/build/rust/BUILD.gn
@@ -47,13 +47,3 @@ group("cxx_rustdeps") { deps = [ "//third_party/rust/cxx/v1:lib" ] } - -# lld currently eats a section which Rust executables need to -# determine their command line arguments. These lines work around this -# by retaining all sections. -# TODO(crbug/1281664) - remove these lines when this is fixed. -config("keep_sections") { - if (is_linux || is_chromeos || is_android) { - ldflags = [ "-Wl,--no-gc-sections" ] - } -}
diff --git a/build/rust/cargo_crate.gni b/build/rust/cargo_crate.gni index 47eb6511..e2d4e6a 100644 --- a/build/rust/cargo_crate.gni +++ b/build/rust/cargo_crate.gni
@@ -260,14 +260,4 @@ executable_configs = default_executable_configs executable_configs -= [ "//build/config/compiler:chromium_code" ] executable_configs += [ "//build/config/compiler:no_chromium_code" ] - - # lld currently eats a section which Rust executables need to - # determine their command line arguments. These lines work around this - # by retaining all sections. - # TODO(crbug/1281664) - remove these lines when this is fixed. - executable_configs -= [ "//build/config/compiler:default_optimization" ] - executable_configs += [ - "//build/config/compiler:no_optimize", - "//build/rust:keep_sections", - ] }
diff --git a/build/rust/mixed_executable.gni b/build/rust/mixed_executable.gni index bec8e94..ced6426 100644 --- a/build/rust/mixed_executable.gni +++ b/build/rust/mixed_executable.gni
@@ -20,16 +20,4 @@ set_defaults("mixed_executable") { configs = default_executable_configs - - # lld currently eats a section which Rust executables need to - # determine their command line arguments. These lines work around this - # by retaining all sections. - # TODO(crbug/1281664) - remove these lines when this is fixed. - if (toolchain_has_rust) { - configs -= [ "//build/config/compiler:default_optimization" ] - configs += [ - "//build/config/compiler:no_optimize", - "//build/rust:keep_sections", - ] - } }
diff --git a/build/rust/rust_target.gni b/build/rust/rust_target.gni index 773ff87..0ec6033 100644 --- a/build/rust/rust_target.gni +++ b/build/rust/rust_target.gni
@@ -233,16 +233,5 @@ set_defaults("rust_target") { executable_configs = default_executable_configs - - # lld currently eats a section which Rust executables need to - # determine their command line arguments. These lines work around this - # by retaining all sections. - # TODO(crbug/1281664) - remove these lines when this is fixed. - executable_configs -= [ "//build/config/compiler:default_optimization" ] - executable_configs += [ - "//build/config/compiler:no_optimize", - "//build/rust:keep_sections", - ] - library_configs = default_compiler_configs }
diff --git a/build/rust/rust_unit_test.gni b/build/rust/rust_unit_test.gni index 2afd193..1ad1142 100644 --- a/build/rust/rust_unit_test.gni +++ b/build/rust/rust_unit_test.gni
@@ -120,16 +120,6 @@ set_defaults("rust_unit_test") { configs = default_executable_configs - - # lld currently eats a section which Rust executables need to - # determine their command line arguments. These lines work around this - # by retaining all sections. - # TODO(crbug/1281664) - remove these lines when this is fixed. - configs -= [ "//build/config/compiler:default_optimization" ] - configs += [ - "//build/config/compiler:no_optimize", - "//build/rust:keep_sections", - ] deps = [] rustflags = [] }
diff --git a/cc/layers/tile_size_calculator.cc b/cc/layers/tile_size_calculator.cc index b6397bc..133876e 100644 --- a/cc/layers/tile_size_calculator.cc +++ b/cc/layers/tile_size_calculator.cc
@@ -4,9 +4,12 @@ #include "cc/layers/tile_size_calculator.h" +#include <algorithm> + #include "cc/base/math_util.h" #include "cc/layers/picture_layer_impl.h" #include "cc/trees/layer_tree_impl.h" +#include "ui/base/ui_base_features.h" namespace cc { namespace { @@ -35,25 +38,10 @@ return content_size_in_dps; } -// For GPU rasterization, we pick an ideal tile size using the viewport so we -// don't need any settings. The current approach uses 4 tiles to cover the -// viewport vertically. -gfx::Size CalculateGpuTileSize(const gfx::Size& base_tile_size, - const gfx::Size& content_bounds, - const gfx::Size& max_tile_size, - int min_height_for_gpu_raster_tile) { - int tile_width = base_tile_size.width(); - - // Increase the height proportionally as the width decreases, and pad by our - // border texels to make the tiles exactly match the viewport. - int divisor = 4; - if (content_bounds.width() <= base_tile_size.width() / 2) - divisor = 2; - if (content_bounds.width() <= base_tile_size.width() / 4) - divisor = 1; - int tile_height = - MathUtil::UncheckedRoundUp(base_tile_size.height(), divisor) / divisor; - +gfx::Size AdjustGpuTileSize(int tile_width, + int tile_height, + const gfx::Size& max_tile_size, + int min_height_for_gpu_raster_tile) { // Grow default sizes to account for overlapping border texels. tile_width += 2 * PictureLayerTiling::kBorderTexels; tile_height += 2 * PictureLayerTiling::kBorderTexels; @@ -73,6 +61,46 @@ return gfx::Size(tile_width, tile_height); } +// For GPU rasterization, we pick an ideal tile size using the viewport so we +// don't need any settings. The current approach uses 4 tiles to cover the +// viewport vertically. +gfx::Size CalculateGpuTileSize(const gfx::Size& base_tile_size, + const gfx::Size& content_bounds, + const gfx::Size& max_tile_size, + int min_height_for_gpu_raster_tile) { + int tile_width = base_tile_size.width(); + + // Increase the height proportionally as the width decreases, and pad by our + // border texels to make the tiles exactly match the viewport. + int divisor = 4; + if (content_bounds.width() <= base_tile_size.width() / 2) + divisor = 2; + if (content_bounds.width() <= base_tile_size.width() / 4) + divisor = 1; + int tile_height = + MathUtil::UncheckedRoundUp(base_tile_size.height(), divisor) / divisor; + + return AdjustGpuTileSize(tile_width, tile_height, max_tile_size, + min_height_for_gpu_raster_tile); +} + +gfx::Size CalculateGpuRawDrawTileSize(const gfx::Size& base_tile_size, + const gfx::Size& content_bounds, + const gfx::Size& max_tile_size, + int min_height_for_gpu_raster_tile, + double raw_draw_tile_size_factor) { + int tile_size = + std::ceil(std::max(base_tile_size.width(), base_tile_size.height()) * + raw_draw_tile_size_factor); + + // Clamp tile size with content bounds + int tile_width = std::min(tile_size, content_bounds.width()); + int tile_height = std::min(tile_size, content_bounds.height()); + + return AdjustGpuTileSize(tile_width, tile_height, max_tile_size, + min_height_for_gpu_raster_tile); +} + } // namespace // AffectingParams. @@ -90,7 +118,9 @@ // TileSizeCalculator. TileSizeCalculator::TileSizeCalculator(PictureLayerImpl* layer_impl) - : layer_impl_(layer_impl) {} + : layer_impl_(layer_impl), + is_using_raw_draw_(features::IsUsingRawDraw()), + raw_draw_tile_size_factor_(features::RawDrawTileSizeFactor()) {} bool TileSizeCalculator::IsAffectingParamsChanged() { AffectingParams new_params = GetAffectingParams(); @@ -151,18 +181,26 @@ // Set our initial size assuming a |base_tile_size| equal to our // |viewport_size|. - gfx::Size default_tile_size = - CalculateGpuTileSize(base_tile_size, content_bounds, max_tile_size, - affecting_params_.min_height_for_gpu_raster_tile); - - // Use half-width GPU tiles when the content_width is greater than our - // calculated tile size. - if (content_bounds.width() > default_tile_size.width()) { - // Divide width by 2 and round up. - base_tile_size.set_width((base_tile_size.width() + 1) / 2); + gfx::Size default_tile_size; + if (is_using_raw_draw_) { + default_tile_size = CalculateGpuRawDrawTileSize( + base_tile_size, content_bounds, max_tile_size, + affecting_params_.min_height_for_gpu_raster_tile, + raw_draw_tile_size_factor_); + } else { default_tile_size = CalculateGpuTileSize( base_tile_size, content_bounds, max_tile_size, affecting_params_.min_height_for_gpu_raster_tile); + + // Use half-width GPU tiles when the content_width is greater than our + // calculated tile size. + if (content_bounds.width() > default_tile_size.width()) { + // Divide width by 2 and round up. + base_tile_size.set_width((base_tile_size.width() + 1) / 2); + default_tile_size = CalculateGpuTileSize( + base_tile_size, content_bounds, max_tile_size, + affecting_params_.min_height_for_gpu_raster_tile); + } } default_tile_width = default_tile_size.width();
diff --git a/cc/layers/tile_size_calculator.h b/cc/layers/tile_size_calculator.h index 0cafa69..e4616b8 100644 --- a/cc/layers/tile_size_calculator.h +++ b/cc/layers/tile_size_calculator.h
@@ -41,6 +41,8 @@ bool IsAffectingParamsChanged(); raw_ptr<PictureLayerImpl> layer_impl_; + const bool is_using_raw_draw_; + const double raw_draw_tile_size_factor_; AffectingParams affecting_params_;
diff --git a/cc/metrics/compositor_timing_history.cc b/cc/metrics/compositor_timing_history.cc index ba2ea31..e8549001 100644 --- a/cc/metrics/compositor_timing_history.cc +++ b/cc/metrics/compositor_timing_history.cc
@@ -12,6 +12,7 @@ #include "base/cxx17_backports.h" #include "base/memory/ptr_util.h" +#include "base/metrics/field_trial_params.h" #include "base/metrics/histogram_macros.h" #include "base/trace_event/trace_event.h" #include "cc/base/features.h"
diff --git a/cc/metrics/dropped_frame_counter.cc b/cc/metrics/dropped_frame_counter.cc index a2d0a15..5283cca 100644 --- a/cc/metrics/dropped_frame_counter.cc +++ b/cc/metrics/dropped_frame_counter.cc
@@ -575,7 +575,7 @@ dropped_frame_count_in_window_[SmoothnessStrategy::kDefaultStrategy] += count; } - if (frame_info.WasCompositorUpdateDropped()) { + if (frame_info.WasSmoothCompositorUpdateDropped()) { DCHECK_GE(dropped_frame_count_in_window_ [SmoothnessStrategy::kCompositorFocusedStrategy] + count, @@ -583,7 +583,7 @@ dropped_frame_count_in_window_ [SmoothnessStrategy::kCompositorFocusedStrategy] += count; } - if (frame_info.WasMainUpdateDropped()) { + if (frame_info.WasSmoothMainUpdateDropped()) { DCHECK_GE(dropped_frame_count_in_window_ [SmoothnessStrategy::kMainFocusedStrategy] + count,
diff --git a/cc/metrics/frame_info.cc b/cc/metrics/frame_info.cc index 00d12e8..a87973c1 100644 --- a/cc/metrics/frame_info.cc +++ b/cc/metrics/frame_info.cc
@@ -45,15 +45,7 @@ if (smooth_thread == SmoothThread::kSmoothNone) return false; - if (IsMainSmooth(smooth_thread) && WasMainUpdateDropped()) { - return true; - } - - if (IsCompositorSmooth(smooth_thread) && WasCompositorUpdateDropped()) { - return true; - } - - return false; + return WasSmoothMainUpdateDropped() || WasSmoothCompositorUpdateDropped(); } void FrameInfo::MergeWith(const FrameInfo& other) { @@ -143,13 +135,19 @@ return true; } -bool FrameInfo::WasCompositorUpdateDropped() const { +bool FrameInfo::WasSmoothCompositorUpdateDropped() const { + if (!IsCompositorSmooth(smooth_thread)) + return false; + if (was_merged) return compositor_update_was_dropped; return final_state == FrameFinalState::kDropped; } -bool FrameInfo::WasMainUpdateDropped() const { +bool FrameInfo::WasSmoothMainUpdateDropped() const { + if (!IsMainSmooth(smooth_thread)) + return false; + if (was_merged) return main_update_was_dropped; @@ -178,9 +176,9 @@ // affecting smoothness. switch (scroll_thread) { case SmoothEffectDrivingThread::kCompositor: - return WasCompositorUpdateDropped(); + return WasSmoothCompositorUpdateDropped(); case SmoothEffectDrivingThread::kMain: - return WasMainUpdateDropped(); + return WasSmoothMainUpdateDropped(); case SmoothEffectDrivingThread::kUnknown: return IsDroppedAffectingSmoothness(); }
diff --git a/cc/metrics/frame_info.h b/cc/metrics/frame_info.h index aa3a3a2..1ebdfd8 100644 --- a/cc/metrics/frame_info.h +++ b/cc/metrics/frame_info.h
@@ -66,8 +66,11 @@ bool Validate() const; - bool WasCompositorUpdateDropped() const; - bool WasMainUpdateDropped() const; + // Returns whether any update from the compositor/main thread was dropped, and + // whether the update was part of a smooth sequence. + bool WasSmoothCompositorUpdateDropped() const; + bool WasSmoothMainUpdateDropped() const; + bool IsScrollPrioritizeFrameDropped() const; private:
diff --git a/cc/metrics/frame_info_unittest.cc b/cc/metrics/frame_info_unittest.cc index 2ac2cb2..5673d9da 100644 --- a/cc/metrics/frame_info_unittest.cc +++ b/cc/metrics/frame_info_unittest.cc
@@ -9,12 +9,16 @@ namespace cc { namespace { -using MainThreadResponse = FrameInfo::MainThreadResponse; using FrameFinalState = FrameInfo::FrameFinalState; +using MainThreadResponse = FrameInfo::MainThreadResponse; +using SmoothThread = FrameInfo::SmoothThread; TEST(FrameInfoTest, WasMainUpdateDroppedForkedReporters) { FrameInfo main, compositor; + main.smooth_thread = SmoothThread::kSmoothBoth; + compositor.smooth_thread = SmoothThread::kSmoothCompositor; + main.main_thread_response = MainThreadResponse::kIncluded; compositor.main_thread_response = MainThreadResponse::kMissing; @@ -27,8 +31,8 @@ auto test = main; test.MergeWith(compositor); - EXPECT_TRUE(test.WasMainUpdateDropped()); - EXPECT_TRUE(test.WasCompositorUpdateDropped()); + EXPECT_TRUE(test.WasSmoothMainUpdateDropped()); + EXPECT_TRUE(test.WasSmoothCompositorUpdateDropped()); // Even if the compositor-thread update is presented, the overall main-thread // update is dropped if the compositor-update is not accompanied by new @@ -36,8 +40,8 @@ compositor.final_state = FrameFinalState::kPresentedPartialOldMain; test = main; test.MergeWith(compositor); - EXPECT_TRUE(test.WasMainUpdateDropped()); - EXPECT_FALSE(test.WasCompositorUpdateDropped()); + EXPECT_TRUE(test.WasSmoothMainUpdateDropped()); + EXPECT_FALSE(test.WasSmoothCompositorUpdateDropped()); // If the compositor-thread is accompanied by new main-thread update (even if // from earlier frames), then the main-thread is update is considered not @@ -45,8 +49,8 @@ compositor.final_state = FrameFinalState::kPresentedPartialNewMain; test = main; test.MergeWith(compositor); - EXPECT_FALSE(test.WasMainUpdateDropped()); - EXPECT_FALSE(test.WasCompositorUpdateDropped()); + EXPECT_FALSE(test.WasSmoothMainUpdateDropped()); + EXPECT_FALSE(test.WasSmoothCompositorUpdateDropped()); } } // namespace
diff --git a/cc/metrics/frame_sequence_metrics.cc b/cc/metrics/frame_sequence_metrics.cc index 023a365d..ddc5b62 100644 --- a/cc/metrics/frame_sequence_metrics.cc +++ b/cc/metrics/frame_sequence_metrics.cc
@@ -668,13 +668,13 @@ const FrameInfo& frame_info) { switch (GetEffectiveThread()) { case SmoothEffectDrivingThread::kCompositor: - if (frame_info.WasCompositorUpdateDropped()) { + if (frame_info.WasSmoothCompositorUpdateDropped()) { ++v2_.frames_dropped; } ++v2_.frames_expected; break; case SmoothEffectDrivingThread::kMain: - if (frame_info.WasMainUpdateDropped()) { + if (frame_info.WasSmoothMainUpdateDropped()) { ++v2_.frames_dropped; } ++v2_.frames_expected;
diff --git a/cc/trees/property_tree_builder.cc b/cc/trees/property_tree_builder.cc index 6e1bd7b..7b6e1a79 100644 --- a/cc/trees/property_tree_builder.cc +++ b/cc/trees/property_tree_builder.cc
@@ -96,6 +96,12 @@ raw_ptr<Layer> root_layer_; MutatorHost& mutator_host_; PropertyTrees& property_trees_; + + // Ordinarily, it would not be OK to store references to these instances, + // because doing so evades the protections of ProtectedSequenceSynchronizer. + // It's permitted in this case because PropertyTreeBuilderContext is only ever + // allocated on the stack, and it cannot initiate a protected sequence (by + // calling into LayerTreeHost::WillCommit). TransformTree& transform_tree_; ClipTree& clip_tree_; EffectTree& effect_tree_; @@ -262,8 +268,7 @@ // For animation subsystem purposes, if this layer has a compositor element // id, we build a map from that id to this transform node. if (layer->element_id()) { - property_trees_.transform_tree_mutable().SetElementIdForNodeId( - node->id, layer->element_id()); + transform_tree_.SetElementIdForNodeId(node->id, layer->element_id()); node->element_id = layer->element_id(); } @@ -550,8 +555,7 @@ // For animation subsystem purposes, if this layer has a compositor element // id, we build a map from that id to this effect node. if (layer->element_id()) { - property_trees_.effect_tree_mutable().SetElementIdForNodeId( - node_id, layer->element_id()); + effect_tree_.SetElementIdForNodeId(node_id, layer->element_id()); } std::vector<std::unique_ptr<viz::CopyOutputRequest>> layer_copy_requests; @@ -647,8 +651,7 @@ // For animation subsystem purposes, if this layer has a compositor element // id, we build a map from that id to this scroll node. if (layer->element_id()) { - property_trees_.scroll_tree_mutable().SetElementIdForNodeId( - node_id, layer->element_id()); + scroll_tree_.SetElementIdForNodeId(node_id, layer->element_id()); } if (node.scrollable) {
diff --git a/chrome/VERSION b/chrome/VERSION index 2d2d03a..8c39f40 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=100 MINOR=0 -BUILD=4870 +BUILD=4871 PATCH=0
diff --git a/chrome/android/java/res/layout/managed_by_menu_item.xml b/chrome/android/java/res/layout/managed_by_menu_item.xml index 34c1b4d..8b6844e 100644 --- a/chrome/android/java/res/layout/managed_by_menu_item.xml +++ b/chrome/android/java/res/layout/managed_by_menu_item.xml
@@ -31,5 +31,4 @@ app:drawableWidth="20dp" app:drawableHeight="20dp"/> - </LinearLayout> \ No newline at end of file
diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml index 1e4969f..637a2bd 100644 --- a/chrome/android/java/res/menu/main_menu.xml +++ b/chrome/android/java/res/menu/main_menu.xml
@@ -151,6 +151,11 @@ <item android:id="@+id/enter_vr_id" android:title="@string/enter_vr" android:icon="@drawable/gm_filled_cardboard_24" /> + <item android:id="@+id/managed_by_divider_line_id" + android:title="@null" /> + <item android:id="@+id/managed_by_standard_menu_id" + android:title="@string/managed_browser" + android:icon="@drawable/ic_business" /> <item android:id="@+id/managed_by_menu_id" android:title="@string/managed" /> </group>
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java index 9fde92b2..9be394e 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java
@@ -24,6 +24,7 @@ import org.chromium.base.BundleUtils; import org.chromium.base.ContextUtils; +import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.ObservableSupplierImpl; import org.chromium.chrome.R; @@ -31,6 +32,7 @@ import org.chromium.chrome.browser.flags.CachedFeatureFlags; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.language.GlobalAppLocaleController; +import org.chromium.chrome.browser.metrics.UmaSessionStats; import org.chromium.chrome.browser.night_mode.GlobalNightModeStateProviderHolder; import org.chromium.chrome.browser.night_mode.NightModeStateProvider; import org.chromium.chrome.browser.night_mode.NightModeUtils; @@ -215,6 +217,14 @@ if (supportsDynamicColors()) { DynamicColors.applyIfAvailable(this); } + DeferredStartupHandler.getInstance().addDeferredTask(() -> { + // #registerSyntheticFieldTrial requires native. + boolean isDynamicColorAvailable = DynamicColors.isDynamicColorAvailable(); + RecordHistogram.recordBooleanHistogram( + "Android.DynamicColors.IsAvailable", isDynamicColorAvailable); + UmaSessionStats.registerSyntheticFieldTrial( + "IsDynamicColorAvailable", isDynamicColorAvailable ? "Enabled" : "Disabled"); + }); // Try to enable browser overscroll when content overscroll is enabled for consistency. This // needs to be in a cached feature because activity startup happens before native is
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java index c6f2351..94051c74 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -2692,7 +2692,7 @@ return true; } - if (id == R.id.managed_by_menu_id) { + if (id == R.id.managed_by_standard_menu_id) { assert ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_MANAGEMENT_PAGE); openChromeManagementPage();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java index 344b0f93..77e1138d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
@@ -1202,11 +1202,18 @@ protected void updateManagedByMenuItem(Menu menu, @Nullable Tab currentTab) { MenuItem managedByMenuItem = menu.findItem(R.id.managed_by_menu_id); + MenuItem managedByDividerLine = menu.findItem(R.id.managed_by_divider_line_id); + MenuItem managedByStandardMenuItem = menu.findItem(R.id.managed_by_standard_menu_id); + boolean managedByMenuItemVisible = currentTab != null && shouldShowManagedByMenuItem(currentTab); - managedByMenuItem.setVisible(managedByMenuItemVisible); - managedByMenuItem.setEnabled(managedByMenuItemVisible - && ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_MANAGEMENT_PAGE)); + boolean chromeManagementPageEnabled = + ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_MANAGEMENT_PAGE); + + managedByMenuItem.setVisible(managedByMenuItemVisible && !chromeManagementPageEnabled); + managedByDividerLine.setVisible(managedByMenuItemVisible && chromeManagementPageEnabled); + managedByStandardMenuItem.setVisible( + managedByMenuItemVisible && chromeManagementPageEnabled); } @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/DividerLineMenuItemViewBinder.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/DividerLineMenuItemViewBinder.java index 3eedce5..a5b5e32d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/DividerLineMenuItemViewBinder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/DividerLineMenuItemViewBinder.java
@@ -27,8 +27,9 @@ @Override public int getItemViewType(int id) { - return (id == R.id.divider_line_id) ? DIVIDER_LINE_ITEM_VIEW_TYPE - : CustomViewBinder.NOT_HANDLED; + return (id == R.id.divider_line_id || id == R.id.managed_by_divider_line_id) + ? DIVIDER_LINE_ITEM_VIEW_TYPE + : CustomViewBinder.NOT_HANDLED; } @Override @@ -46,7 +47,7 @@ if (key == AppMenuItemProperties.MENU_ITEM_ID) { int id = model.get(AppMenuItemProperties.MENU_ITEM_ID); - assert id == R.id.divider_line_id; + assert id == R.id.divider_line_id || id == R.id.managed_by_divider_line_id; view.setId(id); view.setEnabled(false); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/ManagedByMenuItemViewBinder.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/ManagedByMenuItemViewBinder.java index cf050ff..6993e95 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/ManagedByMenuItemViewBinder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/ManagedByMenuItemViewBinder.java
@@ -46,13 +46,6 @@ assert id == R.id.managed_by_menu_id; view.setId(id); - } else if (key == AppMenuItemProperties.ENABLED) { - boolean enabled = model.get(AppMenuItemProperties.ENABLED); - view.setEnabled(enabled); - view.setFocusable(enabled); - } else if (key == AppMenuItemProperties.CLICK_HANDLER) { - view.setOnClickListener( - v -> model.get(AppMenuItemProperties.CLICK_HANDLER).onItemClick(model)); } }
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateUnitTest.java index 2384c83..a3691f1 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateUnitTest.java
@@ -49,6 +49,8 @@ import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior; import org.chromium.chrome.browser.device.DeviceConditions; import org.chromium.chrome.browser.device.ShadowDeviceConditions; +import org.chromium.chrome.browser.enterprise.util.ManagedBrowserUtils; +import org.chromium.chrome.browser.enterprise.util.ManagedBrowserUtilsJni; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.multiwindow.MultiWindowModeStateDispatcher; import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper; @@ -144,6 +146,8 @@ private IdentityServicesProvider mIdentityServicesProviderMock; @Mock private SyncService mSyncServiceMock; + @Mock + private ManagedBrowserUtils.Natives mManagedBrowserUtilsJniMock; private OneshotSupplierImpl<OverviewModeBehavior> mOverviewModeSupplier = new OneshotSupplierImpl<>(); @@ -183,6 +187,10 @@ FeatureList.setTestCanUseDefaultsForTesting(); PowerBookmarkUtils.setPriceTrackingEligibleForTesting(false); + mJniMocker.mock(ManagedBrowserUtilsJni.TEST_HOOKS, mManagedBrowserUtilsJniMock); + Mockito.when(mManagedBrowserUtilsJniMock.isBrowserManaged(mProfile)).thenReturn(false); + Mockito.when(mManagedBrowserUtilsJniMock.getAccountManagerName(mProfile)).thenReturn(""); + mBookmarkBridgeSupplier.set(mBookmarkBridge); PowerBookmarkUtils.setPriceTrackingEligibleForTesting(false); PowerBookmarkUtils.setPowerBookmarkMetaForTesting(PowerBookmarkMeta.newBuilder().build()); @@ -227,6 +235,11 @@ mTestValues.addFeatureFlagOverride(ChromeFeatureList.SHOPPING_LIST, enabled); } + private void setChromeManagementPageEnabled(boolean enabled) { + mTestValues.addFeatureFlagOverride(ChromeFeatureList.CHROME_MANAGEMENT_PAGE, enabled); + FeatureList.setTestValues(mTestValues); + } + @After public void tearDown() { ThreadUtils.setThreadAssertsDisabledForTesting(false); @@ -318,10 +331,10 @@ @Config(qualifiers = "sw320dp") public void testPageMenuItems_Phone_RegularPage() { setUpMocksForPageMenu(); - setMenuOptions(false /*isNativePage*/, true /*showTranslate*/, false /*showUpdate*/, - false /*showMoveToOtherWindow*/, false /*showReaderModePrefs*/, - true /*showAddToHomeScreen*/, false /*showPaintPreview*/, - true /*isAutoDarkEnabled*/); + setMenuOptions(new MenuOptions() + .withShowTranslate() + .withShowAddToHomeScreen() + .withAutoDarkEnabled()); Assert.assertEquals(MenuGroup.PAGE_MENU, mAppMenuPropertiesDelegate.getMenuGroup()); Menu menu = createTestMenu(); @@ -350,10 +363,10 @@ @Config(qualifiers = "sw320dp") public void testPageMenuItems_Phone_RegularPage_WithPwa() { setUpMocksForPageMenu(); - setMenuOptions(false /*isNativePage*/, true /*showTranslate*/, false /*showUpdate*/, - false /*showMoveToOtherWindow*/, false /*showReaderModePrefs*/, - true /*showAddToHomeScreen*/, false /*showPaintPreview*/, - true /*isAutoDarkEnabled*/); + setMenuOptions(new MenuOptions() + .withShowTranslate() + .withShowAddToHomeScreen() + .withAutoDarkEnabled()); doReturn(new AppBannerManager.InstallStringPair(R.string.menu_add_to_homescreen_install, R.string.menu_add_to_homescreen_install)) .when(mAppMenuPropertiesDelegate) @@ -386,10 +399,10 @@ @Config(qualifiers = "sw320dp") public void testPageMenuItems_Phone_RegularPage_enterprise_user() { setUpMocksForPageMenu(); - setMenuOptions(false /*isNativePage*/, true /*showTranslate*/, false /*showUpdate*/, - false /*showMoveToOtherWindow*/, false /*showReaderModePrefs*/, - true /*showAddToHomeScreen*/, false /*showPaintPreview*/, - true /*isAutoDarkEnabled*/); + setMenuOptions(new MenuOptions() + .withShowTranslate() + .withShowAddToHomeScreen() + .withAutoDarkEnabled()); doReturn(true).when(mAppMenuPropertiesDelegate).shouldShowManagedByMenuItem(any(Tab.class)); Assert.assertEquals(MenuGroup.PAGE_MENU, mAppMenuPropertiesDelegate.getMenuGroup()); @@ -402,7 +415,7 @@ R.id.divider_line_id, R.id.share_row_menu_id, R.id.find_in_page_id, R.id.translate_id, R.id.add_to_homescreen_id, R.id.request_desktop_site_row_menu_id, R.id.auto_dark_web_contents_row_menu_id, R.id.divider_line_id, R.id.preferences_id, - R.id.help_id, R.id.managed_by_menu_id}; + R.id.help_id, R.id.managed_by_divider_line_id, R.id.managed_by_standard_menu_id}; assertMenuItemsAreEqual(menu, expectedItems); } @@ -410,10 +423,7 @@ @Config(qualifiers = "sw320dp") public void testPageMenuItemsIcons_Phone_RegularPage_iconsAfterMenuItems() { setUpMocksForPageMenu(); - setMenuOptions(false /*isNativePage*/, true /*showTranslate*/, true /*showUpdate*/, - true /*showMoveToOtherWindow*/, true /*showReaderModePrefs*/, - true /*showAddToHomeScreen*/, true /*showPaintPreview*/, - true /*isAutoDarkEnabled*/); + setMenuOptions(new MenuOptions().withAllSet().setNativePage(false)); Assert.assertEquals(MenuGroup.PAGE_MENU, mAppMenuPropertiesDelegate.getMenuGroup()); Menu menu = createTestMenu(); @@ -427,10 +437,11 @@ @Config(qualifiers = "sw320dp") public void testPageMenuItemsIcons_Phone_RegularPage_iconsBeforeMenuItems() { setUpMocksForPageMenu(); - setMenuOptions(false /*isNativePage*/, true /*showTranslate*/, true /*showUpdate*/, - false /*showMoveToOtherWindow*/, true /*showReaderModePrefs*/, - true /*showAddToHomeScreen*/, false /*showPaintPreview*/, - true /*isAutoDarkEnabled*/); + setMenuOptions(new MenuOptions() + .withAllSet() + .setNativePage(false) + .setShowMoveToOtherWindow(false) + .setShowPaintPreview(false)); doReturn(true).when(mAppMenuPropertiesDelegate).shouldShowIconBeforeItem(); Assert.assertEquals(MenuGroup.PAGE_MENU, mAppMenuPropertiesDelegate.getMenuGroup()); @@ -811,12 +822,10 @@ } @Test - public void managedByMenuItem_Enabled() { + public void managedByMenuItem_ChromeManagementPageDisabled() { + setChromeManagementPageEnabled(false); setUpMocksForPageMenu(); - setMenuOptions(false /*isNativePage*/, false /*showTranslate*/, false /*showUpdate*/, - false /*showMoveToOtherWindow*/, false /*showReaderModePrefs*/, - true /*showAddToHomeScreen*/, false /*showPaintPreview*/, - false /*isAutoDarkEnabled*/); + setMenuOptions(new MenuOptions().withShowAddToHomeScreen()); doReturn(true).when(mAppMenuPropertiesDelegate).shouldShowManagedByMenuItem(any(Tab.class)); Assert.assertEquals(MenuGroup.PAGE_MENU, mAppMenuPropertiesDelegate.getMenuGroup()); @@ -824,9 +833,34 @@ mAppMenuPropertiesDelegate.prepareMenu(menu, null); MenuItem managedByMenuItem = menu.findItem(R.id.managed_by_menu_id); + MenuItem managedByStandardMenuItem = menu.findItem(R.id.managed_by_standard_menu_id); + Assert.assertNotNull(managedByMenuItem); Assert.assertTrue(managedByMenuItem.isVisible()); - Assert.assertTrue(managedByMenuItem.isEnabled()); + + Assert.assertNotNull(managedByStandardMenuItem); + Assert.assertTrue(!managedByStandardMenuItem.isVisible()); + } + + @Test + public void managedByMenuItem_ChromeManagementPageEnabled() { + setChromeManagementPageEnabled(true); + setUpMocksForPageMenu(); + setMenuOptions(new MenuOptions().withShowAddToHomeScreen()); + doReturn(true).when(mAppMenuPropertiesDelegate).shouldShowManagedByMenuItem(any(Tab.class)); + + Assert.assertEquals(MenuGroup.PAGE_MENU, mAppMenuPropertiesDelegate.getMenuGroup()); + Menu menu = createTestMenu(); + mAppMenuPropertiesDelegate.prepareMenu(menu, null); + + MenuItem managedByMenuItem = menu.findItem(R.id.managed_by_menu_id); + MenuItem managedByStandardMenuItem = menu.findItem(R.id.managed_by_standard_menu_id); + + Assert.assertNotNull(managedByMenuItem); + Assert.assertTrue(!managedByMenuItem.isVisible()); + + Assert.assertNotNull(managedByStandardMenuItem); + Assert.assertTrue(managedByStandardMenuItem.isVisible()); } private void setUpMocksForPageMenu() { @@ -920,33 +954,157 @@ return items.toString(); } - private void setMenuOptions(boolean isNativePage, boolean showTranslate, boolean showUpdate, - boolean showMoveToOtherWindow, boolean showReaderModePrefs, boolean showAddToHomeScreen, - boolean showPaintPreview, boolean isAutoDarkEnabled) { + /** Options for tests that control how Menu is being rendered. */ + private static class MenuOptions { + private boolean mIsNativePage; + private boolean mShowTranslate; + private boolean mShowUpdate; + private boolean mShowMoveToOtherWindow; + private boolean mShowReaderModePrefs; + private boolean mShowAddToHomeScreen; + private boolean mShowPaintPreview; + private boolean mIsAutoDarkEnabled; + + protected boolean isNativePage() { + return mIsNativePage; + } + + protected boolean showTranslate() { + return mShowTranslate; + } + + protected boolean showUpdate() { + return mShowUpdate; + } + + protected boolean showMoveToOtherWindow() { + return mShowMoveToOtherWindow; + } + + protected boolean showReaderModePrefs() { + return mShowReaderModePrefs; + } + + protected boolean showAddToHomeScreen() { + return mShowAddToHomeScreen; + } + + protected boolean showPaintPreview() { + return mShowPaintPreview; + } + + protected boolean isAutoDarkEnabled() { + return mIsAutoDarkEnabled; + } + + protected MenuOptions setNativePage(boolean state) { + mIsNativePage = state; + return this; + } + + protected MenuOptions setShowTranslate(boolean state) { + mShowTranslate = state; + return this; + } + + protected MenuOptions setShowUpdate(boolean state) { + mShowUpdate = state; + return this; + } + + protected MenuOptions setShowMoveToOtherWindow(boolean state) { + mShowMoveToOtherWindow = state; + return this; + } + + protected MenuOptions setShowReaderModePrefs(boolean state) { + mShowReaderModePrefs = state; + return this; + } + + protected MenuOptions setShowAddToHomeScreen(boolean state) { + mShowAddToHomeScreen = state; + return this; + } + + protected MenuOptions setShowPaintPreview(boolean state) { + mShowPaintPreview = state; + return this; + } + + protected MenuOptions setAutoDarkEnabled(boolean state) { + mIsAutoDarkEnabled = state; + return this; + } + + protected MenuOptions withNativePage() { + return setNativePage(true); + } + + protected MenuOptions withShowTranslate() { + return setShowTranslate(true); + } + + protected MenuOptions withShowUpdate() { + return setShowUpdate(true); + } + + protected MenuOptions withShowMoveToOtherWindow() { + return setShowMoveToOtherWindow(true); + } + + protected MenuOptions withShowReaderModePrefs() { + return setShowReaderModePrefs(true); + } + + protected MenuOptions withShowAddToHomeScreen() { + return setShowAddToHomeScreen(true); + } + + protected MenuOptions withShowPaintPreview() { + return setShowPaintPreview(true); + } + + protected MenuOptions withAutoDarkEnabled() { + return setAutoDarkEnabled(true); + } + + protected MenuOptions withAllSet() { + return this.withNativePage() + .withShowTranslate() + .withShowUpdate() + .withShowReaderModePrefs() + .withShowAddToHomeScreen() + .withShowPaintPreview() + .withAutoDarkEnabled(); + } + }; + + private void setMenuOptions(MenuOptions options) { when(mTab.getUrl()).thenReturn(JUnitTestGURLs.getGURL(JUnitTestGURLs.SEARCH_URL)); - when(mTab.isNativePage()).thenReturn(isNativePage); - doReturn(showTranslate) + when(mTab.isNativePage()).thenReturn(options.isNativePage()); + doReturn(options.showTranslate()) .when(mAppMenuPropertiesDelegate) .shouldShowTranslateMenuItem(any(Tab.class)); - doReturn(showUpdate).when(mAppMenuPropertiesDelegate).shouldShowUpdateMenuItem(); - doReturn(showMoveToOtherWindow) + doReturn(options.showUpdate()).when(mAppMenuPropertiesDelegate).shouldShowUpdateMenuItem(); + doReturn(options.showMoveToOtherWindow()) .when(mAppMenuPropertiesDelegate) .shouldShowMoveToOtherWindow(); - doReturn(showReaderModePrefs) + doReturn(options.showReaderModePrefs()) .when(mAppMenuPropertiesDelegate) .shouldShowReaderModePrefs(any(Tab.class)); - if (showAddToHomeScreen) { + if (options.showAddToHomeScreen()) { doReturn(new AppBannerManager.InstallStringPair( R.string.menu_add_to_homescreen, R.string.add)) .when(mAppMenuPropertiesDelegate) .getAddToHomeScreenTitle(mTab); } - doReturn(showPaintPreview) + doReturn(options.showPaintPreview()) .when(mAppMenuPropertiesDelegate) .shouldShowPaintPreview(anyBoolean(), any(Tab.class), anyBoolean()); when(mWebsitePreferenceBridgeJniMock.getContentSetting(any(), anyInt(), any(), any())) - .thenReturn(isAutoDarkEnabled ? ContentSettingValues.DEFAULT - : ContentSettingValues.BLOCK); + .thenReturn(options.isAutoDarkEnabled() ? ContentSettingValues.DEFAULT + : ContentSettingValues.BLOCK); } private void verifyManagedByMenuItem(boolean chromeManagementPageEnabled) {}
diff --git a/chrome/android/junit/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegateUnitTest.java b/chrome/android/junit/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegateUnitTest.java index df06661..2b7db31 100644 --- a/chrome/android/junit/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegateUnitTest.java +++ b/chrome/android/junit/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegateUnitTest.java
@@ -229,7 +229,8 @@ R.id.divider_line_id, R.id.translate_id, R.id.share_row_menu_id, R.id.find_in_page_id, R.id.add_to_homescreen_id, R.id.request_desktop_site_row_menu_id, R.id.auto_dark_web_contents_row_menu_id, - R.id.divider_line_id, R.id.preferences_id, R.id.help_id, R.id.managed_by_menu_id}; + R.id.divider_line_id, R.id.preferences_id, R.id.help_id, + R.id.managed_by_divider_line_id, R.id.managed_by_standard_menu_id}; assertMenuItemsAreEqual(menu, expectedItems); }
diff --git a/chrome/app/app_management_strings.grdp b/chrome/app/app_management_strings.grdp index 150ada5..18c1bd74 100644 --- a/chrome/app/app_management_strings.grdp +++ b/chrome/app/app_management_strings.grdp
@@ -49,6 +49,9 @@ <message name="IDS_APP_MANAGEMENT_STORAGE" desc="Label for the Android storage permission toggle."> Storage </message> + <message name="IDS_APP_MANAGEMENT_RUN_ON_OS_LOGIN" desc="Label for toggling running on OS Login mode."> + Start app when you sign in + </message> <message name="IDS_APP_MANAGEMENT_POLICY_APP_POLICY_STRING" desc="Tooltip label explaining that an app cannot be uninstalled as it has been installed by an adminstrator."> This app has been installed by your administrator. </message>
diff --git a/chrome/app/app_management_strings_grdp/IDS_APP_MANAGEMENT_RUN_ON_OS_LOGIN.png.sha1 b/chrome/app/app_management_strings_grdp/IDS_APP_MANAGEMENT_RUN_ON_OS_LOGIN.png.sha1 new file mode 100644 index 0000000..74c5de9 --- /dev/null +++ b/chrome/app/app_management_strings_grdp/IDS_APP_MANAGEMENT_RUN_ON_OS_LOGIN.png.sha1
@@ -0,0 +1 @@ +fc87066a1552f057f82890d368430eb037a9070c \ No newline at end of file
diff --git a/chrome/app/extensions_strings.grdp b/chrome/app/extensions_strings.grdp index 08d2eb8..b08840b 100644 --- a/chrome/app/extensions_strings.grdp +++ b/chrome/app/extensions_strings.grdp
@@ -115,26 +115,29 @@ <message name="IDS_EXTENSIONS_ITEM_HOST_PERMISSIONS_HEADING" desc="The heading above the details of which websites an extension is allowed to run on."> Allow this extension to read and change all your data on websites you visit: </message> - <message name="IDS_EXTENSIONS_NEW_ITEM_HOST_PERMISSIONS_HEADING" desc="The heading above the details of which websites an extension is allowed to run on, for the new site access settings."> + <message name="IDS_EXTENSIONS_NEW_HOST_PERMISSIONS_HEADING" desc="The heading above the details of which websites an extension is allowed to run on, for the new site access settings."> Choose when this extension can read and change your site data </message> + <message name="IDS_EXTENSIONS_HOST_PERMISSIONS_SUB_HEADING" desc="The heading above the details of which websites an extension is allowed to run on, for the new site access settings."> + You can always click the extension to use it on any site + </message> <message name="IDS_EXTENSIONS_HOST_ACCESS_ON_CLICK" desc="The text for the option to only allow an extension to read and change data when the user clicks on the extension."> On click </message> - <message name="IDS_EXTENSIONS_NEW_HOST_ACCESS_ON_CLICK" desc="The text for the option to only allow an extension to read and change data when the user clicks on the extension, for the new site access settings."> + <message name="IDS_EXTENSIONS_HOST_ACCESS_WHEN_CLICKED" desc="The text for the option to only allow an extension to read and change data when the user clicks on the extension, for the new site access settings."> When I click the extension </message> <message name="IDS_EXTENSIONS_HOST_ACCESS_ON_SPECIFIC_SITES" desc="The text for the option to allow an extension to read and change data on a select set of sites."> On specific sites </message> - <message name="IDS_EXTENSIONS_HOST_CUSTOMIZE_FOR_EACH_SITE" desc="The text for the option to customize which sites an extension is allowed to read and change data, for the new site access settings."> - Customize for each site + <message name="IDS_EXTENSIONS_HOST_ACCESS_ALLOW_ON_SPECIFIC_SITES" desc="The text for the option to customize which sites an extension is allowed to read and change data, for the new site access settings."> + Allow on specific sites </message> <message name="IDS_EXTENSIONS_HOST_ACCESS_ON_ALL_SITES" desc="The text for the option to allow an extension to read and change data on all websites."> On all sites </message> - <message name="IDS_EXTENSIONS_NEW_HOST_ACCESS_ON_ALL_SITES" desc="The text for the option to allow an extension to read and change data on all websites, for the new site access settings."> - Always on all sites + <message name="IDS_EXTENSIONS_HOST_ACCESS_ALLOW_ON_ALL_SITES" desc="The text for the option to allow an extension to read and change data on all websites, for the new site access settings."> + Allow on all sites </message> <message name="IDS_EXTENSIONS_ITEM_ALLOWED_HOSTS" desc="The heading above the section listing any sites the extension is allowed to run on."> Allowed sites
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_HOST_ACCESS_ALLOW_ON_ALL_SITES.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_HOST_ACCESS_ALLOW_ON_ALL_SITES.png.sha1 new file mode 100644 index 0000000..b13c8efbe --- /dev/null +++ b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_HOST_ACCESS_ALLOW_ON_ALL_SITES.png.sha1
@@ -0,0 +1 @@ +70109a603bf4867afb8d1747c52dab8c4a09dfde \ No newline at end of file
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_HOST_ACCESS_ALLOW_ON_SPECIFIC_SITES.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_HOST_ACCESS_ALLOW_ON_SPECIFIC_SITES.png.sha1 new file mode 100644 index 0000000..b13c8efbe --- /dev/null +++ b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_HOST_ACCESS_ALLOW_ON_SPECIFIC_SITES.png.sha1
@@ -0,0 +1 @@ +70109a603bf4867afb8d1747c52dab8c4a09dfde \ No newline at end of file
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_HOST_ACCESS_WHEN_CLICKED.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_HOST_ACCESS_WHEN_CLICKED.png.sha1 new file mode 100644 index 0000000..b13c8efbe --- /dev/null +++ b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_HOST_ACCESS_WHEN_CLICKED.png.sha1
@@ -0,0 +1 @@ +70109a603bf4867afb8d1747c52dab8c4a09dfde \ No newline at end of file
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_HOST_CUSTOMIZE_FOR_EACH_SITE.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_HOST_CUSTOMIZE_FOR_EACH_SITE.png.sha1 deleted file mode 100644 index 7f74b6e..0000000 --- a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_HOST_CUSTOMIZE_FOR_EACH_SITE.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -cbe27a2be9f05cbf20386b2b02db92e575afdd82 \ No newline at end of file
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_HOST_PERMISSIONS_SUB_HEADING.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_HOST_PERMISSIONS_SUB_HEADING.png.sha1 new file mode 100644 index 0000000..b13c8efbe --- /dev/null +++ b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_HOST_PERMISSIONS_SUB_HEADING.png.sha1
@@ -0,0 +1 @@ +70109a603bf4867afb8d1747c52dab8c4a09dfde \ No newline at end of file
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_NEW_HOST_ACCESS_ON_ALL_SITES.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_NEW_HOST_ACCESS_ON_ALL_SITES.png.sha1 deleted file mode 100644 index 7f74b6e..0000000 --- a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_NEW_HOST_ACCESS_ON_ALL_SITES.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -cbe27a2be9f05cbf20386b2b02db92e575afdd82 \ No newline at end of file
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_NEW_HOST_ACCESS_ON_CLICK.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_NEW_HOST_ACCESS_ON_CLICK.png.sha1 deleted file mode 100644 index 7f74b6e..0000000 --- a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_NEW_HOST_ACCESS_ON_CLICK.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -cbe27a2be9f05cbf20386b2b02db92e575afdd82 \ No newline at end of file
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_NEW_HOST_PERMISSIONS_HEADING.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_NEW_HOST_PERMISSIONS_HEADING.png.sha1 new file mode 100644 index 0000000..b13c8efbe --- /dev/null +++ b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_NEW_HOST_PERMISSIONS_HEADING.png.sha1
@@ -0,0 +1 @@ +70109a603bf4867afb8d1747c52dab8c4a09dfde \ No newline at end of file
diff --git a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_NEW_ITEM_HOST_PERMISSIONS_HEADING.png.sha1 b/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_NEW_ITEM_HOST_PERMISSIONS_HEADING.png.sha1 deleted file mode 100644 index 7f74b6e..0000000 --- a/chrome/app/extensions_strings_grdp/IDS_EXTENSIONS_NEW_ITEM_HOST_PERMISSIONS_HEADING.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -cbe27a2be9f05cbf20386b2b02db92e575afdd82 \ No newline at end of file
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 3f39b50..14c8d10 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd
@@ -10627,7 +10627,7 @@ Pinned by administrator </message> <message name="IDS_APP_LIST_CONTEXT_MENU_REORDER_TITLE" desc="Text for an option shown in a context menu for app items in the Chrome OS app list that allows users to reorder items in the app list. Clicking the option opens a submenu in which the user can choose how the items in the app list should be ordered (e.g. by name or the icon color)."> - Reorder by + Sort by </message> <message name="IDS_APP_LIST_CONTEXT_MENU_REORDER_BY_NAME" desc="Text for an option shown in a context menu for app items in the Chrome OS app list that allows users to reorder items by their names in the app list. This option is under the 'Reorder by' submenu"> Name
diff --git a/chrome/app/generated_resources_grd/IDS_APP_LIST_CONTEXT_MENU_REORDER_TITLE.png.sha1 b/chrome/app/generated_resources_grd/IDS_APP_LIST_CONTEXT_MENU_REORDER_TITLE.png.sha1 index 6743ad0..c1b9191 100644 --- a/chrome/app/generated_resources_grd/IDS_APP_LIST_CONTEXT_MENU_REORDER_TITLE.png.sha1 +++ b/chrome/app/generated_resources_grd/IDS_APP_LIST_CONTEXT_MENU_REORDER_TITLE.png.sha1
@@ -1 +1 @@ -2af9c1815e8974ca2ff5d39eca496937363d0a5d \ No newline at end of file +086e8cd789e8bec50e7189e3c07662e22c00ff17 \ No newline at end of file
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index 9125301..39dfb67 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -341,8 +341,6 @@ "component_updater/subresource_filter_component_installer.h", "component_updater/trust_token_key_commitments_component_installer.cc", "component_updater/trust_token_key_commitments_component_installer.h", - "component_updater/updater_state.cc", - "component_updater/updater_state.h", "consent_auditor/consent_auditor_factory.cc", "consent_auditor/consent_auditor_factory.h", "content_index/content_index_metrics.cc", @@ -5355,7 +5353,6 @@ "component_updater/recovery_improved_component_installer_win.cc", "component_updater/sw_reporter_installer_win.cc", "component_updater/sw_reporter_installer_win.h", - "component_updater/updater_state_win.cc", "download/download_status_updater_win.cc", "download/trusted_sources_manager_win.cc", "enterprise/signals/device_info_fetcher_win.cc", @@ -5626,7 +5623,6 @@ "chrome_browser_application_mac.mm", "chrome_browser_main_mac.h", "chrome_browser_main_mac.mm", - "component_updater/updater_state_mac.mm", "download/download_status_updater_mac.mm", "download/drag_download_item_mac.mm", "enterprise/signals/device_info_fetcher_mac.h", @@ -5756,6 +5752,21 @@ deps += [ "//chrome/browser/privacy:traffic_annotation_proto" ] } + if (is_mac || is_win) { + # Support for the recovery improved component. + sources += [ + "component_updater/updater_state.cc", + "component_updater/updater_state.h", + ] + deps += [ "//chrome/updater:browser_sources" ] + if (is_mac) { + sources += [ "component_updater/updater_state_mac.mm" ] + } + if (is_win) { + sources += [ "component_updater/updater_state_win.cc" ] + } + } + if (is_linux || is_win || is_mac || is_chromeos_ash) { sources += [ "enterprise/connectors/device_trust/device_trust_connector_service.cc", @@ -5971,7 +5982,10 @@ "recovery/recovery_install_global_error_factory.h", ] - deps += [ "//chrome/common/notifications" ] + deps += [ + "//chrome/common/notifications", + "//chrome/updater:browser_sources", + ] if (enable_chromium_updater) { deps += [ "//chrome/browser/updater:browser_updater_client" ]
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 02dbbf6..9f970127 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -7952,6 +7952,11 @@ FEATURE_VALUE_TYPE( password_manager::features::kLeakDetectionUnauthenticated)}, + {"origin-agent-cluster-default", + flag_descriptions::kOriginAgentClusterDefaultName, + flag_descriptions::kOriginAgentClusterDefaultDescription, kOsAll, + FEATURE_VALUE_TYPE(blink::features::kOriginAgentClusterDefaultEnabled)}, + // NOTE: Adding a new flag requires adding a corresponding entry to enum // "LoginCustomFlags" in tools/metrics/histograms/enums.xml. See "Flag // Histograms" in tools/metrics/histograms/README.md (run the
diff --git a/chrome/browser/android/messages_resource_mapper_initializer.cc b/chrome/browser/android/messages_resource_mapper_initializer.cc index 582c77c7..1a1faf4 100644 --- a/chrome/browser/android/messages_resource_mapper_initializer.cc +++ b/chrome/browser/android/messages_resource_mapper_initializer.cc
@@ -6,10 +6,9 @@ #include "chrome/browser/android/resource_mapper.h" #include "components/messages/android/message_dispatcher_bridge.h" -// Sets up a callback for MessageDispatcherBridge ResourceIdMapper. This is done -// in chrome/browser/android because ResourceMapper is not available in -// components. +// Sets up a callback for MessageDispatcherBridge additional initialization. For +// example, the ResourceMapper from chrome can be bound for use in components. void JNI_MessagesResourceMapperInitializer_Init(JNIEnv* env) { - messages::MessageDispatcherBridge::Get()->SetResourceIdMapper( + messages::MessageDispatcherBridge::Get()->Initialize( base::BindRepeating(&ResourceMapper::MapToJavaDrawableId)); }
diff --git a/chrome/browser/apps/app_service/app_service_proxy_desktop.cc b/chrome/browser/apps/app_service/app_service_proxy_desktop.cc index 18487c78..63f68da 100644 --- a/chrome/browser/apps/app_service/app_service_proxy_desktop.cc +++ b/chrome/browser/apps/app_service/app_service_proxy_desktop.cc
@@ -45,6 +45,15 @@ receivers_.FlushForTesting(); } +void AppServiceProxy::SetRunOnOsLoginMode( + const std::string& app_id, + apps::mojom::RunOnOsLoginMode run_on_os_login_mode) { + if (app_service_.is_connected()) { + app_service_->SetRunOnOsLoginMode(app_registry_cache_.GetAppType(app_id), + app_id, run_on_os_login_mode); + } +} + bool AppServiceProxy::MaybeShowLaunchPreventionDialog( const apps::AppUpdate& update) { return false;
diff --git a/chrome/browser/apps/app_service/app_service_proxy_desktop.h b/chrome/browser/apps/app_service/app_service_proxy_desktop.h index 9926db03..152f716 100644 --- a/chrome/browser/apps/app_service/app_service_proxy_desktop.h +++ b/chrome/browser/apps/app_service/app_service_proxy_desktop.h
@@ -41,6 +41,10 @@ gfx::NativeWindow parent_window) override; void FlushMojoCallsForTesting() override; + // Used for setting Run on OS Login modes. + void SetRunOnOsLoginMode(const std::string& app_id, + apps::mojom::RunOnOsLoginMode run_on_os_login_mode); + private: // For access to Initialize. friend class AppServiceProxyFactory;
diff --git a/chrome/browser/apps/guest_view/web_view_browsertest.cc b/chrome/browser/apps/guest_view/web_view_browsertest.cc index 0e9764e4..ae838f41 100644 --- a/chrome/browser/apps/guest_view/web_view_browsertest.cc +++ b/chrome/browser/apps/guest_view/web_view_browsertest.cc
@@ -5307,3 +5307,70 @@ EXPECT_EQ(first_instance->GetProcess()->GetStoragePartition(), second_instance->GetProcess()->GetStoragePartition()); } + +// Test that both webview-initiated and embedder-initiated navigations to +// about:blank behave sanely. +IN_PROC_BROWSER_TEST_F(SitePerProcessWebViewTest, NavigateToAboutBlank) { + ASSERT_TRUE(StartEmbeddedTestServer()); + + // Load an app with a <webview> guest that starts at a data: URL. + LoadAppWithGuest("web_view/simple"); + content::WebContents* guest = GetGuestWebContents(); + ASSERT_TRUE(guest); + scoped_refptr<content::SiteInstance> first_instance = + guest->GetMainFrame()->GetSiteInstance(); + EXPECT_TRUE(first_instance->IsGuest()); + EXPECT_TRUE(first_instance->GetProcess()->IsForGuestsOnly()); + + // Ask <webview> to navigate itself to about:blank. This should stay in the + // same SiteInstance. + const GURL blank_url(url::kAboutBlankURL); + EXPECT_TRUE(content::NavigateToURLFromRenderer(guest, blank_url)); + scoped_refptr<content::SiteInstance> second_instance = + guest->GetMainFrame()->GetSiteInstance(); + EXPECT_EQ(first_instance, second_instance); + + // Navigate <webview> away to another page. This should swap + // BrowsingInstances as it's a cross-site browser-initiated navigation. + const GURL second_url = + embedded_test_server()->GetURL("b.test", "/title1.html"); + EXPECT_TRUE(NavigateToURL(guest, second_url)); + scoped_refptr<content::SiteInstance> third_instance = + guest->GetMainFrame()->GetSiteInstance(); + EXPECT_TRUE(third_instance->IsGuest()); + EXPECT_TRUE(third_instance->GetProcess()->IsForGuestsOnly()); + EXPECT_NE(first_instance, third_instance); + EXPECT_FALSE(first_instance->IsRelatedSiteInstance(third_instance.get())); + EXPECT_EQ(first_instance->GetStoragePartitionConfig(), + third_instance->GetStoragePartitionConfig()); + EXPECT_EQ(first_instance->GetProcess()->GetStoragePartition(), + third_instance->GetProcess()->GetStoragePartition()); + + // Ask embedder to navigate the webview back to about:blank. This should + // stay in the same SiteInstance. + content::WebContents* embedder = GetEmbedderWebContents(); + { + content::TestNavigationObserver load_observer(guest); + EXPECT_TRUE(ExecuteScript( + embedder, + "document.querySelector('webview').src = '" + blank_url.spec() + "';")); + load_observer.Wait(); + } + scoped_refptr<content::SiteInstance> fourth_instance = + guest->GetMainFrame()->GetSiteInstance(); + EXPECT_EQ(fourth_instance, third_instance); +} + +// Test that site-isolated <webview> doesn't crash when its initial navigation +// is to an about:blank URL. +IN_PROC_BROWSER_TEST_F(SitePerProcessWebViewTest, Shim_BlankWebview) { + TestHelper("testBlankWebview", "web_view/shim", NO_TEST_SERVER); + + content::WebContents* guest = + GetGuestViewManager()->WaitForSingleGuestCreated(); + ASSERT_TRUE(guest); + scoped_refptr<content::SiteInstance> site_instance = + guest->GetMainFrame()->GetSiteInstance(); + EXPECT_TRUE(site_instance->IsGuest()); + EXPECT_TRUE(site_instance->GetProcess()->IsForGuestsOnly()); +}
diff --git a/chrome/browser/ash/enhanced_network_tts/enhanced_network_tts_impl.h b/chrome/browser/ash/enhanced_network_tts/enhanced_network_tts_impl.h index 273e9935..da3c248 100644 --- a/chrome/browser/ash/enhanced_network_tts/enhanced_network_tts_impl.h +++ b/chrome/browser/ash/enhanced_network_tts/enhanced_network_tts_impl.h
@@ -13,6 +13,7 @@ #include "base/feature_list.h" #include "base/memory/scoped_refptr.h" #include "base/memory/weak_ptr.h" +#include "base/metrics/field_trial_params.h" #include "base/values.h" #include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/remote.h"
diff --git a/chrome/browser/ash/policy/reporting/metrics_reporting/cros_healthd_metric_sampler.cc b/chrome/browser/ash/policy/reporting/metrics_reporting/cros_healthd_metric_sampler.cc index c095e27..0a83a42 100644 --- a/chrome/browser/ash/policy/reporting/metrics_reporting/cros_healthd_metric_sampler.cc +++ b/chrome/browser/ash/policy/reporting/metrics_reporting/cros_healthd_metric_sampler.cc
@@ -80,8 +80,8 @@ case cros_healthd::BusResult::Tag::BUS_DEVICES: { for (const auto& bus_device : bus_result->get_bus_devices()) { const auto& bus_info = bus_device->bus_info; - if (bus_info->is_thunderbolt_bus_info()) { - if (metric_type == CrosHealthdMetricSampler::MetricType::kInfo) { + if (metric_type == CrosHealthdMetricSampler::MetricType::kInfo) { + if (bus_info->is_thunderbolt_bus_info()) { auto* const thunderbolt_info_out = metric_data.mutable_info_data() ->mutable_bus_device_info() @@ -91,6 +91,23 @@ TranslateThunderboltSecurityLevel( bus_info->get_thunderbolt_bus_info()->security_level)); } + } else if (metric_type == + CrosHealthdMetricSampler::MetricType::kTelemetry) { + if (bus_info->is_usb_bus_info()) { + auto* const usb_telemetry_out = + metric_data.mutable_telemetry_data()->mutable_usb_telemetry(); + anything_reported = true; + usb_telemetry_out->set_vid( + bus_info->get_usb_bus_info()->vendor_id); + usb_telemetry_out->set_pid( + bus_info->get_usb_bus_info()->product_id); + usb_telemetry_out->set_class_id( + bus_info->get_usb_bus_info()->class_id); + usb_telemetry_out->set_subclass_id( + bus_info->get_usb_bus_info()->subclass_id); + usb_telemetry_out->set_vendor(bus_device->vendor_name); + usb_telemetry_out->set_name(bus_device->product_name); + } } } break;
diff --git a/chrome/browser/ash/policy/reporting/metrics_reporting/cros_healthd_metric_sampler_unittest.cc b/chrome/browser/ash/policy/reporting/metrics_reporting/cros_healthd_metric_sampler_unittest.cc index cd9ec30..1d07301 100644 --- a/chrome/browser/ash/policy/reporting/metrics_reporting/cros_healthd_metric_sampler_unittest.cc +++ b/chrome/browser/ash/policy/reporting/metrics_reporting/cros_healthd_metric_sampler_unittest.cc
@@ -66,7 +66,33 @@ return telemetry_info; } -cros_healthd::TelemetryInfoPtr CreateBusResult( +cros_healthd::TelemetryInfoPtr CreateUsbBusResult(uint8_t class_id, + uint8_t subclass_id, + uint16_t vendor_id, + uint16_t product_id, + const char* vendor_name, + const char* product_name) { + auto telemetry_info = cros_healthd::TelemetryInfo::New(); + + std::vector<cros_healthd::BusDevicePtr> bus_devices; + + auto usb_device = cros_healthd::BusDevice::New(); + usb_device->vendor_name = vendor_name; + usb_device->product_name = product_name; + usb_device->bus_info = + cros_healthd::BusInfo::NewUsbBusInfo(cros_healthd::UsbBusInfo::New( + class_id, subclass_id, /*protocol_id=*/0, vendor_id, product_id, + /*interfaces = */ + std::vector<cros_healthd::UsbBusInterfaceInfoPtr>())); + + bus_devices.push_back(std::move(usb_device)); + + telemetry_info->bus_result = + cros_healthd::BusResult::NewBusDevices(std::move(bus_devices)); + return telemetry_info; +} + +cros_healthd::TelemetryInfoPtr CreateThunderboltBusResult( cros_healthd::ThunderboltSecurityLevel security_level) { auto telemetry_info = cros_healthd::TelemetryInfo::New(); std::vector<cros_healthd::BusDevicePtr> bus_devices; @@ -194,6 +220,32 @@ : public CrosHealthdMetricSamplerTest, public testing::WithParamInterface<MemoryEncryptionTestCase> {}; +TEST_F(CrosHealthdMetricSamplerTest, TestUsbTelemetry) { + // Max value for 8-bit unsigned integer + constexpr uint8_t kClassId = 255; + constexpr uint8_t kSubclassId = 1; + // Max value for 16-bit unsigned integer + constexpr uint16_t kVendorId = 65535; + constexpr uint16_t kProductId = 1; + constexpr char kVendorName[] = "VendorName"; + constexpr char kProductName[] = "ProductName"; + + MetricData result = CollectData( + CreateUsbBusResult(kClassId, kSubclassId, kVendorId, kProductId, + kVendorName, kProductName), + cros_healthd::ProbeCategoryEnum::kBus, + CrosHealthdMetricSampler::MetricType::kTelemetry, MetricData{}); + + ASSERT_TRUE(result.has_telemetry_data()); + ASSERT_TRUE(result.telemetry_data().has_usb_telemetry()); + EXPECT_EQ(result.telemetry_data().usb_telemetry().class_id(), kClassId); + EXPECT_EQ(result.telemetry_data().usb_telemetry().subclass_id(), kSubclassId); + EXPECT_EQ(result.telemetry_data().usb_telemetry().vid(), kVendorId); + EXPECT_EQ(result.telemetry_data().usb_telemetry().pid(), kProductId); + EXPECT_EQ(result.telemetry_data().usb_telemetry().name(), kProductName); + EXPECT_EQ(result.telemetry_data().usb_telemetry().vendor(), kVendorName); +} + TEST_P(CrosHealthdMetricSamplerMemoryEncryptionTest, TestMemoryEncryptionReporting) { const MemoryEncryptionTestCase& test_case = GetParam(); @@ -219,7 +271,7 @@ TEST_P(CrosHealthdMetricSamplerTbtTest, TestTbtSecurityLevels) { const TbtTestCase& test_case = GetParam(); MetricData result = - CollectData(CreateBusResult(test_case.healthd_security_level), + CollectData(CreateThunderboltBusResult(test_case.healthd_security_level), cros_healthd::ProbeCategoryEnum::kBus, CrosHealthdMetricSampler::MetricType::kInfo, MetricData{}); ASSERT_TRUE(result.has_info_data());
diff --git a/chrome/browser/ash/web_applications/camera_app/camera_system_web_app_info.cc b/chrome/browser/ash/web_applications/camera_app/camera_system_web_app_info.cc index a2cceec..83198bd3 100644 --- a/chrome/browser/ash/web_applications/camera_app/camera_system_web_app_info.cc +++ b/chrome/browser/ash/web_applications/camera_app/camera_system_web_app_info.cc
@@ -5,9 +5,9 @@ #include "chrome/browser/ash/web_applications/camera_app/camera_system_web_app_info.h" #include "ash/constants/ash_pref_names.h" -#include "ash/grit/ash_camera_app_resources.h" #include "ash/webui/camera_app_ui/resources/strings/grit/ash_camera_app_strings.h" #include "ash/webui/camera_app_ui/url_constants.h" +#include "ash/webui/grit/ash_camera_app_resources.h" #include "chrome/browser/ash/web_applications/camera_app/chrome_camera_app_ui_constants.h" #include "chrome/browser/ash/web_applications/system_web_app_install_utils.h" #include "chrome/browser/web_applications/web_app_constants.h"
diff --git a/chrome/browser/ash/web_applications/connectivity_diagnostics_system_web_app_info.cc b/chrome/browser/ash/web_applications/connectivity_diagnostics_system_web_app_info.cc index b731a41..b8ecf67 100644 --- a/chrome/browser/ash/web_applications/connectivity_diagnostics_system_web_app_info.cc +++ b/chrome/browser/ash/web_applications/connectivity_diagnostics_system_web_app_info.cc
@@ -6,8 +6,8 @@ #include <memory> -#include "ash/grit/connectivity_diagnostics_resources.h" #include "ash/webui/connectivity_diagnostics/url_constants.h" +#include "ash/webui/grit/connectivity_diagnostics_resources.h" #include "chrome/browser/ash/web_applications/system_web_app_install_utils.h" #include "chrome/browser/web_applications/web_app_install_info.h" #include "chromeos/strings/grit/chromeos_strings.h"
diff --git a/chrome/browser/ash/web_applications/demo_mode_web_app_info.cc b/chrome/browser/ash/web_applications/demo_mode_web_app_info.cc index a38608ea..941ae050 100644 --- a/chrome/browser/ash/web_applications/demo_mode_web_app_info.cc +++ b/chrome/browser/ash/web_applications/demo_mode_web_app_info.cc
@@ -5,8 +5,8 @@ #include "chrome/browser/ash/web_applications/demo_mode_web_app_info.h" #include "ash/constants/ash_features.h" -#include "ash/grit/ash_demo_mode_app_resources.h" #include "ash/webui/demo_mode_app_ui/url_constants.h" +#include "ash/webui/grit/ash_demo_mode_app_resources.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/ash/web_applications/system_web_app_install_utils.h" #include "chrome/browser/web_applications/web_app_install_info.h"
diff --git a/chrome/browser/ash/web_applications/diagnostics_system_web_app_info.cc b/chrome/browser/ash/web_applications/diagnostics_system_web_app_info.cc index c59d19d2..8da3c87 100644 --- a/chrome/browser/ash/web_applications/diagnostics_system_web_app_info.cc +++ b/chrome/browser/ash/web_applications/diagnostics_system_web_app_info.cc
@@ -7,8 +7,8 @@ #include <memory> #include "ash/constants/ash_features.h" -#include "ash/grit/ash_diagnostics_app_resources.h" #include "ash/webui/diagnostics_ui/url_constants.h" +#include "ash/webui/grit/ash_diagnostics_app_resources.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/ash/web_applications/system_web_app_install_utils.h" #include "chrome/browser/web_applications/web_app_install_info.h"
diff --git a/chrome/browser/ash/web_applications/eche_app_info.cc b/chrome/browser/ash/web_applications/eche_app_info.cc index ed6e70b..802506c 100644 --- a/chrome/browser/ash/web_applications/eche_app_info.cc +++ b/chrome/browser/ash/web_applications/eche_app_info.cc
@@ -7,8 +7,8 @@ #include <memory> #include "ash/constants/ash_features.h" -#include "ash/grit/ash_eche_bundle_resources.h" #include "ash/webui/eche_app_ui/url_constants.h" +#include "ash/webui/grit/ash_eche_bundle_resources.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/ash/web_applications/system_web_app_install_utils.h" #include "chrome/browser/web_applications/web_app_constants.h"
diff --git a/chrome/browser/ash/web_applications/firmware_update_system_web_app_info.cc b/chrome/browser/ash/web_applications/firmware_update_system_web_app_info.cc index 74dfc36..15c9e5f5 100644 --- a/chrome/browser/ash/web_applications/firmware_update_system_web_app_info.cc +++ b/chrome/browser/ash/web_applications/firmware_update_system_web_app_info.cc
@@ -7,9 +7,9 @@ #include <memory> #include "ash/constants/ash_features.h" -#include "ash/grit/ash_firmware_update_app_resources.h" #include "ash/strings/grit/ash_strings.h" #include "ash/webui/firmware_update_ui/url_constants.h" +#include "ash/webui/grit/ash_firmware_update_app_resources.h" #include "chrome/browser/ash/web_applications/system_web_app_install_utils.h" #include "chrome/browser/web_applications/system_web_apps/system_web_app_types.h" #include "chrome/browser/web_applications/web_app_install_info.h"
diff --git a/chrome/browser/ash/web_applications/help_app/help_app_web_app_info.cc b/chrome/browser/ash/web_applications/help_app/help_app_web_app_info.cc index bdcacc0..8e4290b 100644 --- a/chrome/browser/ash/web_applications/help_app/help_app_web_app_info.cc +++ b/chrome/browser/ash/web_applications/help_app/help_app_web_app_info.cc
@@ -7,8 +7,8 @@ #include <memory> #include "ash/constants/ash_features.h" -#include "ash/grit/ash_help_app_resources.h" #include "ash/style/ash_color_provider.h" +#include "ash/webui/grit/ash_help_app_resources.h" #include "ash/webui/help_app_ui/url_constants.h" #include "chrome/browser/ash/web_applications/system_web_app_install_utils.h" #include "chrome/browser/web_applications/web_app_constants.h"
diff --git a/chrome/browser/ash/web_applications/media_app/media_web_app_info.cc b/chrome/browser/ash/web_applications/media_app/media_web_app_info.cc index 274e735..66090da 100644 --- a/chrome/browser/ash/web_applications/media_app/media_web_app_info.cc +++ b/chrome/browser/ash/web_applications/media_app/media_web_app_info.cc
@@ -9,8 +9,8 @@ #include <string> #include "ash/constants/ash_features.h" -#include "ash/grit/ash_media_app_resources.h" #include "ash/style/ash_color_provider.h" +#include "ash/webui/grit/ash_media_app_resources.h" #include "ash/webui/media_app_ui/url_constants.h" #include "base/files/file_path.h" #include "base/strings/string_split.h"
diff --git a/chrome/browser/ash/web_applications/os_feedback_system_web_app_info.cc b/chrome/browser/ash/web_applications/os_feedback_system_web_app_info.cc index 9dcd295d..22badf3 100644 --- a/chrome/browser/ash/web_applications/os_feedback_system_web_app_info.cc +++ b/chrome/browser/ash/web_applications/os_feedback_system_web_app_info.cc
@@ -7,7 +7,7 @@ #include <memory> #include "ash/constants/ash_features.h" -#include "ash/grit/ash_os_feedback_resources.h" +#include "ash/webui/grit/ash_os_feedback_resources.h" #include "ash/webui/os_feedback_ui/url_constants.h" #include "chrome/browser/ash/web_applications/system_web_app_install_utils.h" #include "chrome/browser/web_applications/web_app_install_info.h"
diff --git a/chrome/browser/ash/web_applications/personalization_app/personalization_app_info.cc b/chrome/browser/ash/web_applications/personalization_app/personalization_app_info.cc index 9035431..ecf5d285 100644 --- a/chrome/browser/ash/web_applications/personalization_app/personalization_app_info.cc +++ b/chrome/browser/ash/web_applications/personalization_app/personalization_app_info.cc
@@ -7,7 +7,7 @@ #include <memory> #include "ash/constants/ash_features.h" -#include "ash/grit/ash_personalization_app_resources.h" +#include "ash/webui/grit/ash_personalization_app_resources.h" #include "ash/webui/personalization_app/personalization_app_url_constants.h" #include "chrome/browser/ash/web_applications/system_web_app_install_utils.h" #include "chrome/browser/web_applications/web_app_install_info.h"
diff --git a/chrome/browser/ash/web_applications/print_management_web_app_info.cc b/chrome/browser/ash/web_applications/print_management_web_app_info.cc index 654ab0a0..1d20e54 100644 --- a/chrome/browser/ash/web_applications/print_management_web_app_info.cc +++ b/chrome/browser/ash/web_applications/print_management_web_app_info.cc
@@ -6,7 +6,7 @@ #include <memory> -#include "ash/grit/ash_print_management_resources.h" +#include "ash/webui/grit/ash_print_management_resources.h" #include "ash/webui/print_management/url_constants.h" #include "chrome/browser/ash/web_applications/system_web_app_install_utils.h" #include "chrome/browser/web_applications/web_app_install_info.h"
diff --git a/chrome/browser/ash/web_applications/projector_system_web_app_info.cc b/chrome/browser/ash/web_applications/projector_system_web_app_info.cc index d09385f..c9a543f 100644 --- a/chrome/browser/ash/web_applications/projector_system_web_app_info.cc +++ b/chrome/browser/ash/web_applications/projector_system_web_app_info.cc
@@ -6,7 +6,7 @@ #include "ash/constants/ash_features.h" #include "ash/constants/ash_pref_names.h" -#include "ash/grit/ash_projector_app_trusted_resources.h" +#include "ash/webui/grit/ash_projector_app_trusted_resources.h" #include "ash/webui/projector_app/public/cpp/projector_app_constants.h" #include "chrome/browser/ash/web_applications/system_web_app_install_utils.h" #include "chrome/browser/policy/profile_policy_connector.h"
diff --git a/chrome/browser/ash/web_applications/sample_system_web_app_info.cc b/chrome/browser/ash/web_applications/sample_system_web_app_info.cc index ec5c507..2431ead 100644 --- a/chrome/browser/ash/web_applications/sample_system_web_app_info.cc +++ b/chrome/browser/ash/web_applications/sample_system_web_app_info.cc
@@ -6,7 +6,7 @@ #include <memory> -#include "ash/grit/ash_sample_system_web_app_resources.h" +#include "ash/webui/grit/ash_sample_system_web_app_resources.h" #include "ash/webui/sample_system_web_app_ui/url_constants.h" #include "base/strings/utf_string_conversions.h" #include "chrome/browser/ash/web_applications/system_web_app_install_utils.h"
diff --git a/chrome/browser/ash/web_applications/scanning_system_web_app_info.cc b/chrome/browser/ash/web_applications/scanning_system_web_app_info.cc index e9fef26..d872b28 100644 --- a/chrome/browser/ash/web_applications/scanning_system_web_app_info.cc +++ b/chrome/browser/ash/web_applications/scanning_system_web_app_info.cc
@@ -6,7 +6,7 @@ #include <memory> -#include "ash/grit/ash_scanning_app_resources.h" +#include "ash/webui/grit/ash_scanning_app_resources.h" #include "ash/webui/scanning/url_constants.h" #include "chrome/browser/ash/web_applications/system_web_app_install_utils.h" #include "chrome/browser/web_applications/web_app_install_info.h"
diff --git a/chrome/browser/ash/web_applications/shimless_rma_system_web_app_info.cc b/chrome/browser/ash/web_applications/shimless_rma_system_web_app_info.cc index f673b82..9045f7f 100644 --- a/chrome/browser/ash/web_applications/shimless_rma_system_web_app_info.cc +++ b/chrome/browser/ash/web_applications/shimless_rma_system_web_app_info.cc
@@ -7,8 +7,8 @@ #include <memory> #include "ash/constants/ash_features.h" -#include "ash/grit/ash_shimless_rma_resources.h" #include "ash/strings/grit/ash_strings.h" +#include "ash/webui/grit/ash_shimless_rma_resources.h" #include "ash/webui/shimless_rma/url_constants.h" #include "chrome/browser/ash/web_applications/system_web_app_install_utils.h" #include "chrome/browser/web_applications/web_app_install_info.h"
diff --git a/chrome/browser/ash/web_applications/shortcut_customization_system_web_app_info.cc b/chrome/browser/ash/web_applications/shortcut_customization_system_web_app_info.cc index c778fec..3b23eb5 100644 --- a/chrome/browser/ash/web_applications/shortcut_customization_system_web_app_info.cc +++ b/chrome/browser/ash/web_applications/shortcut_customization_system_web_app_info.cc
@@ -6,8 +6,8 @@ #include <memory> -#include "ash/grit/ash_shortcut_customization_app_resources.h" #include "ash/strings/grit/ash_strings.h" +#include "ash/webui/grit/ash_shortcut_customization_app_resources.h" #include "ash/webui/shortcut_customization_ui/url_constants.h" #include "chrome/browser/ash/web_applications/system_web_app_install_utils.h" #include "chrome/browser/web_applications/web_app_install_info.h"
diff --git a/chrome/browser/browser_features.h b/chrome/browser/browser_features.h index 94b24bf..2a97f20d 100644 --- a/chrome/browser/browser_features.h +++ b/chrome/browser/browser_features.h
@@ -9,6 +9,7 @@ #define CHROME_BROWSER_BROWSER_FEATURES_H_ #include "base/feature_list.h" +#include "base/metrics/field_trial_params.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h"
diff --git a/chrome/browser/cart/cart_features.h b/chrome/browser/cart/cart_features.h index b8bc5c0c..e54d57ba 100644 --- a/chrome/browser/cart/cart_features.h +++ b/chrome/browser/cart/cart_features.h
@@ -6,6 +6,7 @@ #define CHROME_BROWSER_CART_CART_FEATURES_H_ #include "base/feature_list.h" +#include "base/metrics/field_trial_params.h" #include "components/search/ntp_features.h" #include "url/gurl.h"
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index 526c036..4c8cfee2 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn
@@ -5065,6 +5065,7 @@ "//base/test:test_support", "//chrome/browser", "//chrome/browser/chromeos", + "//components/exo/wayland:weston_test", ] } @@ -5080,6 +5081,7 @@ "//chromeos/dbus:dbus", "//chromeos/tpm", "//components:components_tests_pak", + "//components/exo/wayland:weston_test", "//components/policy/core/browser:internal", "//third_party/libprotobuf-mutator", "//ui/resources:ui_test_pak", @@ -5115,6 +5117,7 @@ "//base", "//chrome/browser", "//chrome/browser/chromeos", + "//components/exo/wayland:weston_test", ] } @@ -5125,6 +5128,7 @@ "//base", "//chrome/browser", "//chrome/browser/chromeos", + "//components/exo/wayland:weston_test", ] } }
diff --git a/chrome/browser/component_updater/DEPS b/chrome/browser/component_updater/DEPS index 19656373..41acb46 100644 --- a/chrome/browser/component_updater/DEPS +++ b/chrome/browser/component_updater/DEPS
@@ -1,6 +1,7 @@ include_rules = [ "+chrome/elevation_service", "+chrome/browser/share", + "+chrome/updater", "+components/cdm/common", "+components/live_caption", "+components/soda",
diff --git a/chrome/browser/component_updater/chrome_component_updater_configurator.cc b/chrome/browser/component_updater/chrome_component_updater_configurator.cc index c14609c..fd22361 100644 --- a/chrome/browser/component_updater/chrome_component_updater_configurator.cc +++ b/chrome/browser/component_updater/chrome_component_updater_configurator.cc
@@ -248,7 +248,11 @@ update_client::UpdaterStateProvider ChromeConfigurator::GetUpdaterStateProvider() const { +#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) return base::BindRepeating(&UpdaterState::GetState); +#else + return configurator_impl_.GetUpdaterStateProvider(); +#endif } } // namespace
diff --git a/chrome/browser/component_updater/updater_state.cc b/chrome/browser/component_updater/updater_state.cc index 07e62a67..c7d5241 100644 --- a/chrome/browser/component_updater/updater_state.cc +++ b/chrome/browser/component_updater/updater_state.cc
@@ -8,16 +8,32 @@ #include <map> #include <memory> #include <string> +#include <utility> #include "base/check.h" #include "base/enterprise_util.h" +#include "base/files/file_util.h" +#include "base/json/json_reader.h" +#include "base/json/values_util.h" #include "base/strings/string_number_conversions.h" +#include "base/strings/string_piece_forward.h" #include "base/strings/utf_string_conversions.h" +#include "base/values.h" #include "build/branding_buildflags.h" #include "build/build_config.h" +#include "chrome/updater/updater_scope.h" +#include "chrome/updater/util.h" #include "third_party/abseil-cpp/absl/types/optional.h" namespace component_updater { +namespace { + +// These literals must not be changed since they affect the forward and +// backward compatibility with //chrome/updater. +constexpr char kUpdaterPrefsActiveVersion[] = "active_version"; +constexpr char kUpdaterPrefsLastChecked[] = "update_time"; +constexpr char kUpdaterPrefsLastStarted[] = "last_started"; +} // namespace UpdaterState::State::State() = default; UpdaterState::State::State(const UpdaterState::State&) = default; @@ -25,8 +41,39 @@ const UpdaterState::State&) = default; UpdaterState::State::~State() = default; -std::unique_ptr<UpdaterState::StateReader> UpdaterState::StateReader::Create() { +std::unique_ptr<UpdaterState::StateReader> UpdaterState::StateReader::Create( + bool is_machine) { #if BUILDFLAG(GOOGLE_CHROME_BRANDING) + +#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) + if (std::unique_ptr<StateReader> state_reader_chromium_updater = + [is_machine]() -> std::unique_ptr<StateReader> { + // Create a `StateReaderChromiumUpdater` instance only if a prefs.json + // file for the updater can be found and parsed successfully. + const absl::optional<base::FilePath> global_prefs_dir = + updater::GetBaseDirectory(is_machine + ? updater::UpdaterScope::kSystem + : updater::UpdaterScope::kUser); + if (!global_prefs_dir) + return nullptr; + std::string contents; + constexpr char kUpdaterPrefsFilename[] = "prefs.json"; + constexpr int kMaxPrefsFileSize = 0x20000; // 128KiB. + if (!base::ReadFileToStringWithMaxSize( + global_prefs_dir->AppendASCII(kUpdaterPrefsFilename), &contents, + kMaxPrefsFileSize)) { + return nullptr; + } + absl::optional<base::Value> parsed_json = + base::JSONReader::Read(contents); + return parsed_json ? std::make_unique<StateReaderChromiumUpdater>( + std::move(*parsed_json)) + : nullptr; + }()) { + return state_reader_chromium_updater; + } +#endif // BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) + #if BUILDFLAG(IS_MAC) return std::make_unique<UpdaterState::StateReaderKeystone>(); #elif BUILDFLAG(IS_WIN) @@ -34,11 +81,51 @@ #else return nullptr; #endif // IS_MAC + #else return nullptr; #endif // GOOGLE_CHROME_BRANDING } +UpdaterState::StateReaderChromiumUpdater::StateReaderChromiumUpdater( + base::Value parsed_json) + : parsed_json_(std::move(parsed_json)) {} + +base::Time UpdaterState::StateReaderChromiumUpdater::FindTimeKey( + base::StringPiece key) const { + return base::ValueToTime(parsed_json_.FindKey(key)).value_or(base::Time()); +} + +std::string UpdaterState::StateReaderChromiumUpdater::GetUpdaterName() const { + return "ChromiumUpdater"; +} + +base::Version UpdaterState::StateReaderChromiumUpdater::GetUpdaterVersion( + bool /*is_machine*/) const { + const std::string* val = + parsed_json_.FindStringKey(kUpdaterPrefsActiveVersion); + return val ? base::Version(*val) : base::Version(); +} + +bool UpdaterState::StateReaderChromiumUpdater::IsAutoupdateCheckEnabled() + const { + return UpdaterState::IsAutoupdateCheckEnabled(); +} + +base::Time UpdaterState::StateReaderChromiumUpdater::GetUpdaterLastStartedAU( + bool /*is_machine*/) const { + return FindTimeKey(kUpdaterPrefsLastStarted); +} + +base::Time UpdaterState::StateReaderChromiumUpdater::GetUpdaterLastChecked( + bool /*is_machine*/) const { + return FindTimeKey(kUpdaterPrefsLastChecked); +} + +int UpdaterState::StateReaderChromiumUpdater::GetUpdatePolicy() const { + return UpdaterState::GetUpdatePolicy(); +} + UpdaterState::State UpdaterState::StateReader::Read(bool is_machine) const { State state; state.updater_name = GetUpdaterName(); @@ -69,7 +156,7 @@ absl::optional<UpdaterState::State> UpdaterState::ReadState(bool is_machine) { std::unique_ptr<UpdaterState::StateReader> state_reader = - UpdaterState::StateReader::Create(); + UpdaterState::StateReader::Create(is_machine); if (!state_reader) return absl::nullopt; return state_reader->Read(is_machine);
diff --git a/chrome/browser/component_updater/updater_state.h b/chrome/browser/component_updater/updater_state.h index a7cd31d..72dc7f5 100644 --- a/chrome/browser/component_updater/updater_state.h +++ b/chrome/browser/component_updater/updater_state.h
@@ -10,7 +10,9 @@ #include "base/containers/flat_map.h" #include "base/gtest_prod_util.h" +#include "base/strings/string_piece_forward.h" #include "base/time/time.h" +#include "base/values.h" #include "base/version.h" #include "build/build_config.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -49,7 +51,7 @@ class StateReader { public: - static std::unique_ptr<StateReader> Create(); + static std::unique_ptr<StateReader> Create(bool is_machine); // Returns the state of the Chrome updater. State Read(bool is_machine) const; @@ -68,6 +70,7 @@ #if BUILDFLAG(IS_MAC) class StateReaderKeystone final : public StateReader { private: + // Overrides for StateReader. std::string GetUpdaterName() const override; base::Version GetUpdaterVersion(bool is_machine) const override; bool IsAutoupdateCheckEnabled() const override; @@ -78,6 +81,7 @@ #elif BUILDFLAG(IS_WIN) class StateReaderOmaha final : public StateReader { private: + // Overrides for StateReader. std::string GetUpdaterName() const override; base::Version GetUpdaterVersion(bool is_machine) const override; bool IsAutoupdateCheckEnabled() const override; @@ -86,6 +90,22 @@ int GetUpdatePolicy() const override; }; #endif + class StateReaderChromiumUpdater final : public StateReader { + public: + explicit StateReaderChromiumUpdater(base::Value parsed_json); + + private: + // Overrides for StateReader. + std::string GetUpdaterName() const override; + base::Version GetUpdaterVersion(bool is_machine) const override; + bool IsAutoupdateCheckEnabled() const override; + base::Time GetUpdaterLastStartedAU(bool is_machine) const override; + base::Time GetUpdaterLastChecked(bool is_machine) const override; + int GetUpdatePolicy() const override; + + base::Time FindTimeKey(base::StringPiece key) const; + const base::Value parsed_json_; + }; explicit UpdaterState(bool is_machine);
diff --git a/chrome/browser/component_updater/updater_state_mac.mm b/chrome/browser/component_updater/updater_state_mac.mm index 741e81a..f392809 100644 --- a/chrome/browser/component_updater/updater_state_mac.mm +++ b/chrome/browser/component_updater/updater_state_mac.mm
@@ -104,6 +104,14 @@ } bool UpdaterState::StateReaderKeystone::IsAutoupdateCheckEnabled() const { + return UpdaterState::IsAutoupdateCheckEnabled(); +} + +int UpdaterState::StateReaderKeystone::GetUpdatePolicy() const { + return UpdaterState::GetUpdatePolicy(); +} + +bool UpdaterState::IsAutoupdateCheckEnabled() { // Auto-update check period override (in seconds). // Applies only to older versions of Keystone. base::scoped_nsobject<NSNumber> timeInterval = @@ -116,7 +124,7 @@ return 0 < value && value < (24 * 60 * 60); } -int UpdaterState::StateReaderKeystone::GetUpdatePolicy() const { +int UpdaterState::GetUpdatePolicy() { return -1; // Keystone does not support update policies. }
diff --git a/chrome/browser/extensions/chrome_content_verifier_delegate.cc b/chrome/browser/extensions/chrome_content_verifier_delegate.cc index f8cae7b..d698ad1 100644 --- a/chrome/browser/extensions/chrome_content_verifier_delegate.cc +++ b/chrome/browser/extensions/chrome_content_verifier_delegate.cc
@@ -208,8 +208,6 @@ } ExtensionService* service = system->extension_service(); - PendingExtensionManager* pending_manager = - service->pending_extension_manager(); CorruptedExtensionReinstaller* corrupted_extension_reinstaller = service->corrupted_extension_reinstaller(); @@ -234,8 +232,8 @@ // TODO(https://crbug.com/1044572): Schedule the extension for reinstall. if (!info.is_from_webstore) { if (!base::Contains(would_be_reinstalled_ids_, extension_id)) { - pending_manager->RecordPolicyReinstallReason( - PendingExtensionManager::PolicyReinstallReason:: + corrupted_extension_reinstaller->RecordPolicyReinstallReason( + CorruptedExtensionReinstaller::PolicyReinstallReason:: NO_UNSIGNED_HASHES_FOR_NON_WEBSTORE_SKIP); would_be_reinstalled_ids_.insert(extension_id); } @@ -257,14 +255,16 @@ } if (info.should_repair) { - if (pending_manager->IsReinstallForCorruptionExpected(extension_id)) + if (corrupted_extension_reinstaller->IsReinstallForCorruptionExpected( + extension_id)) return; - pending_manager->ExpectReinstallForCorruption( + corrupted_extension_reinstaller->ExpectReinstallForCorruption( extension_id, - info.is_from_webstore ? PendingExtensionManager::PolicyReinstallReason:: - CORRUPTION_DETECTED_WEBSTORE - : PendingExtensionManager::PolicyReinstallReason:: - CORRUPTION_DETECTED_NON_WEBSTORE, + info.is_from_webstore + ? CorruptedExtensionReinstaller::PolicyReinstallReason:: + CORRUPTION_DETECTED_WEBSTORE + : CorruptedExtensionReinstaller::PolicyReinstallReason:: + CORRUPTION_DETECTED_NON_WEBSTORE, extension->location()); service->DisableExtension(extension_id, disable_reason::DISABLE_CORRUPTED); // Attempt to reinstall.
diff --git a/chrome/browser/extensions/content_verifier_browsertest.cc b/chrome/browser/extensions/content_verifier_browsertest.cc index 46d3d5f..cbca839 100644 --- a/chrome/browser/extensions/content_verifier_browsertest.cc +++ b/chrome/browser/extensions/content_verifier_browsertest.cc
@@ -465,10 +465,8 @@ test_data_dir_.AppendASCII(kStoragePermissionExtensionCrx)); } - PendingExtensionManager* pending_extension_manager() { - return ExtensionSystem::Get(profile()) - ->extension_service() - ->pending_extension_manager(); + CorruptedExtensionReinstaller* corrupted_extension_reinstaller() { + return extension_service()->corrupted_extension_reinstaller(); } }; @@ -515,8 +513,9 @@ EXPECT_TRUE(registry_observer.WaitForExtensionUnloaded()); // The extension should be disabled and not be in expected to be repaired yet. - EXPECT_FALSE(pending_extension_manager()->IsReinstallForCorruptionExpected( - kStoragePermissionExtensionId)); + EXPECT_FALSE( + corrupted_extension_reinstaller()->IsReinstallForCorruptionExpected( + kStoragePermissionExtensionId)); EXPECT_EQ(disable_reason::DISABLE_CORRUPTED, ExtensionPrefs::Get(profile())->GetDisableReasons( kStoragePermissionExtensionId)); @@ -536,15 +535,17 @@ // such as the build waterfall / trybots). If the reinstall didn't already // happen, wait for it. if (disable_reasons & disable_reason::DISABLE_CORRUPTED) { - EXPECT_TRUE(pending_extension_manager()->IsReinstallForCorruptionExpected( - kStoragePermissionExtensionId)); + EXPECT_TRUE( + corrupted_extension_reinstaller()->IsReinstallForCorruptionExpected( + kStoragePermissionExtensionId)); TestExtensionRegistryObserver registry_observer( registry, kStoragePermissionExtensionId); ASSERT_TRUE(registry_observer.WaitForExtensionInstalled()); disable_reasons = prefs->GetDisableReasons(kStoragePermissionExtensionId); } - EXPECT_FALSE(pending_extension_manager()->IsReinstallForCorruptionExpected( - kStoragePermissionExtensionId)); + EXPECT_FALSE( + corrupted_extension_reinstaller()->IsReinstallForCorruptionExpected( + kStoragePermissionExtensionId)); EXPECT_EQ(disable_reason::DISABLE_NONE, disable_reasons); const Extension* extension = ExtensionRegistry::Get(profile())->enabled_extensions().GetByID(
diff --git a/chrome/browser/extensions/corrupted_extension_reinstaller.cc b/chrome/browser/extensions/corrupted_extension_reinstaller.cc index 05c4ed2..1f9b7e3 100644 --- a/chrome/browser/extensions/corrupted_extension_reinstaller.cc +++ b/chrome/browser/extensions/corrupted_extension_reinstaller.cc
@@ -5,6 +5,7 @@ #include "chrome/browser/extensions/corrupted_extension_reinstaller.h" #include "base/bind.h" +#include "base/metrics/histogram_functions.h" #include "base/threading/thread_task_runner_handle.h" #include "chrome/browser/extensions/extension_service.h" #include "content/public/browser/browser_context.h" @@ -55,6 +56,49 @@ g_reinstall_action_for_test = action; } +void CorruptedExtensionReinstaller::RecordPolicyReinstallReason( + PolicyReinstallReason reason_for_uma) { + base::UmaHistogramEnumeration("Extensions.CorruptPolicyExtensionDetected3", + reason_for_uma); +} + +void CorruptedExtensionReinstaller::ExpectReinstallForCorruption( + const ExtensionId& id, + absl::optional<PolicyReinstallReason> reason_for_uma, + mojom::ManifestLocation manifest_location_for_uma) { + if (base::Contains(expected_reinstalls_, id)) + return; + expected_reinstalls_[id] = base::TimeTicks::Now(); + if (reason_for_uma) + RecordPolicyReinstallReason(*reason_for_uma); +} + +void CorruptedExtensionReinstaller::MarkResolved(const ExtensionId& id) { + if (!base::Contains(expected_reinstalls_, id)) + return; + + base::TimeDelta latency = base::TimeTicks::Now() - expected_reinstalls_[id]; + base::UmaHistogramLongTimes("Extensions.CorruptPolicyExtensionResolved", + latency); + LOG(ERROR) << "Corrupted extension " << id << " reinstalled with latency " + << latency; + expected_reinstalls_.erase(id); +} + +bool CorruptedExtensionReinstaller::IsReinstallForCorruptionExpected( + const ExtensionId& id) const { + return base::Contains(expected_reinstalls_, id); +} + +bool CorruptedExtensionReinstaller::HasAnyReinstallForCorruption() const { + return !expected_reinstalls_.empty(); +} + +const std::map<ExtensionId, base::TimeTicks>& +CorruptedExtensionReinstaller::GetExpectedReinstalls() const { + return expected_reinstalls_; +} + void CorruptedExtensionReinstaller::NotifyExtensionDisabledDueToCorruption() { ScheduleNextReinstallAttempt(); } @@ -69,10 +113,8 @@ scheduled_fire_pending_ = false; ExtensionSystem* system = ExtensionSystem::Get(context_); ExtensionService* service = system->extension_service(); - PendingExtensionManager* pending_manager = - service->pending_extension_manager(); // If there's nothing to repair, then bail out. - if (!pending_manager->HasAnyReinstallForCorruption()) + if (!HasAnyReinstallForCorruption()) return; service->CheckForExternalUpdates();
diff --git a/chrome/browser/extensions/corrupted_extension_reinstaller.h b/chrome/browser/extensions/corrupted_extension_reinstaller.h index 3cc24e8..2e90007a 100644 --- a/chrome/browser/extensions/corrupted_extension_reinstaller.h +++ b/chrome/browser/extensions/corrupted_extension_reinstaller.h
@@ -5,12 +5,16 @@ #ifndef CHROME_BROWSER_EXTENSIONS_CORRUPTED_EXTENSION_REINSTALLER_H_ #define CHROME_BROWSER_EXTENSIONS_CORRUPTED_EXTENSION_REINSTALLER_H_ +#include <map> + #include "base/callback.h" #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" #include "base/time/time.h" #include "extensions/common/extension_id.h" +#include "extensions/common/manifest.h" #include "net/base/backoff_entry.h" +#include "third_party/abseil-cpp/absl/types/optional.h" namespace content { class BrowserContext; @@ -23,6 +27,45 @@ // it will retry reinstallation with backoff. class CorruptedExtensionReinstaller { public: + // The reason why we want to reinstall the extension. + // Note: enum used for UMA. Do NOT reorder or remove entries. Don't forget to + // update enums.xml (name: ExtensionPolicyReinstallReason) when adding new + // entries. + enum class PolicyReinstallReason { + // Tried to load extension which was previously disabled because of + // corruption (but is a force-installed extension and therefore should be + // repaired). + // That happens when extension corruption was detected, but for some reason + // reinstall could not happen in the same session (no internet or session + // was closed right after detection), so at start of the next session we add + // extension to reinstall list again. + CORRUPTION_DETECTED_IN_PRIOR_SESSION = 0, + + // Corruption detected in an extension from Chrome Web Store. + CORRUPTION_DETECTED_WEBSTORE = 1, + + // Corruption detected in an extension outside Chrome Web Store. + CORRUPTION_DETECTED_NON_WEBSTORE = 2, + + // Planned future option: + // Extension doesn't have hashes for corruption checks. This should not + // happen for extension from Chrome Web Store (since we can fetch hashes + // from server), but for extensions outside Chrome Web Store that means that + // we need to reinstall the extension (and compute hashes during + // installation). + // Not used currently, see https://crbug.com/958794#c22 for details. + // NO_UNSIGNED_HASHES_FOR_NON_WEBSTORE = 3, + + // Extension doesn't have hashes for corruption checks. Ideally this + // extension should be reinstalled in this case, but currently we just skip + // them. See https://crbug.com/958794#c22 for details. + NO_UNSIGNED_HASHES_FOR_NON_WEBSTORE_SKIP = 4, + + // Magic constant used by the histogram macros. + // Always update it to the max value. + kMaxValue = NO_UNSIGNED_HASHES_FOR_NON_WEBSTORE_SKIP + }; + using ReinstallCallback = base::RepeatingCallback<void(base::OnceClosure callback, base::TimeDelta delay)>; @@ -35,6 +78,37 @@ ~CorruptedExtensionReinstaller(); + // Records UMA metrics about policy reinstall to UMA. Temporarily exposed + // publicly because we now skip reinstall for non-webstore policy + // force-installed extensions without hashes, but are interested in number + // of such cases. + // See https://crbug.com/958794#c22 for details. + void RecordPolicyReinstallReason(PolicyReinstallReason reason_for_uma); + + // Notifies the manager that we are reinstalling the policy force-installed + // extension with |id| because we detected corruption in the current copy. + // |reason_for_uma| indicates origin and details of the requires, and is used + // for statistics purposes (sent to UMA). |manifest_location_for_uma| is the + // manifest location, and is used for statistics purposes (sent to UMA) + void ExpectReinstallForCorruption( + const ExtensionId& id, + absl::optional<PolicyReinstallReason> reason_for_uma, + mojom::ManifestLocation manifest_location_for_uma); + + // Call this method when extension in reinstalled to remove it from the set + // and update the metrics. + void MarkResolved(const ExtensionId& id); + + // Returns true if we are expecting a reinstall of the extension with |id| due + // to corruption? + bool IsReinstallForCorruptionExpected(const ExtensionId& id) const; + + // Whether or not there are any corrupted extensions. + bool HasAnyReinstallForCorruption() const; + + // Gets the view on extensions scheduled for reinstall. + const std::map<ExtensionId, base::TimeTicks>& GetExpectedReinstalls() const; + // Notifies this reinstaller about an extension corruption. void NotifyExtensionDisabledDueToCorruption(); @@ -51,6 +125,11 @@ void ScheduleNextReinstallAttempt(); const raw_ptr<content::BrowserContext> context_ = nullptr; + + // A set of extension ids that are being reinstalled due to corruption, mapped + // to the time we detected the corruption. + std::map<ExtensionId, base::TimeTicks> expected_reinstalls_; + net::BackoffEntry backoff_entry_; // Whether or not there is a pending PostTask to Fire(). bool scheduled_fire_pending_ = false;
diff --git a/chrome/browser/extensions/corrupted_extension_reinstaller_unittest.cc b/chrome/browser/extensions/corrupted_extension_reinstaller_unittest.cc index 455dd19..da691855 100644 --- a/chrome/browser/extensions/corrupted_extension_reinstaller_unittest.cc +++ b/chrome/browser/extensions/corrupted_extension_reinstaller_unittest.cc
@@ -60,14 +60,16 @@ // Tests that a single extension corruption will keep retrying reinstallation. TEST_F(CorruptedExtensionReinstallerUnittest, Retry) { + // Reinstaller depends on the extension service. InitializeEmptyExtensionService(); - service()->pending_extension_manager()->ExpectReinstallForCorruption( + + CorruptedExtensionReinstaller reinstaller(profile()); + reinstaller.ExpectReinstallForCorruption( kDummyExtensionId, - PendingExtensionManager::PolicyReinstallReason:: + CorruptedExtensionReinstaller::PolicyReinstallReason:: CORRUPTION_DETECTED_WEBSTORE, mojom::ManifestLocation::kInternal); - CorruptedExtensionReinstaller reinstaller(profile_.get()); TestReinstallerTracker tracker; reinstaller.NotifyExtensionDisabledDueToCorruption(); @@ -82,14 +84,16 @@ // CheckForExternalUpdates() when one is already in-flight through PostTask. TEST_F(CorruptedExtensionReinstallerUnittest, DoNotScheduleWhenAlreadyInflight) { + // Reinstaller depends on the extension service. InitializeEmptyExtensionService(); - service()->pending_extension_manager()->ExpectReinstallForCorruption( + + CorruptedExtensionReinstaller reinstaller(profile_.get()); + reinstaller.ExpectReinstallForCorruption( kDummyExtensionId, - PendingExtensionManager::PolicyReinstallReason:: + CorruptedExtensionReinstaller::PolicyReinstallReason:: CORRUPTION_DETECTED_WEBSTORE, mojom::ManifestLocation::kInternal); - CorruptedExtensionReinstaller reinstaller(profile_.get()); TestReinstallerTracker tracker; reinstaller.NotifyExtensionDisabledDueToCorruption();
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc index 7176608..c88bbcc 100644 --- a/chrome/browser/extensions/extension_service.cc +++ b/chrome/browser/extensions/extension_service.cc
@@ -230,7 +230,7 @@ // priority than |info.download_location|, and we aren't doing a // reinstall of a corrupt policy force-installed extension. ManifestLocation current = extension->location(); - if (!pending_extension_manager_.IsReinstallForCorruptionExpected( + if (!corrupted_extension_reinstaller()->IsReinstallForCorruptionExpected( info.extension_id) && current == Manifest::GetHigherPriorityLocation( current, info.download_location)) { @@ -283,7 +283,7 @@ // set of extensions. If the extension is corrupted, it should be // reinstalled, thus it should be added to the pending extensions for // installation. - if (!pending_extension_manager_.IsReinstallForCorruptionExpected( + if (!corrupted_extension_reinstaller()->IsReinstallForCorruptionExpected( info.extension_id)) { return false; } @@ -524,7 +524,7 @@ // Check for updates especially for corrupted user installed extension from // the webstore. This will do nothing if an extension update check was // triggered before and is still running. - if (pending_extension_manager_.HasAnyReinstallForCorruption()) + if (corrupted_extension_reinstaller()->HasAnyReinstallForCorruption()) CheckForUpdatesSoon(); } @@ -1614,6 +1614,13 @@ std::string install_parameter; const PendingExtensionInfo* pending_extension_info = pending_extension_manager()->GetById(id); + bool is_reinstall_for_corruption = + corrupted_extension_reinstaller()->IsReinstallForCorruptionExpected( + extension->id()); + + if (is_reinstall_for_corruption) + corrupted_extension_reinstaller()->MarkResolved(id); + if (pending_extension_info) { if (!pending_extension_info->ShouldAllowInstall(extension, profile())) { // Hack for crbug.com/558299, see comment on DeleteThemeDoNotUse. @@ -1642,10 +1649,7 @@ install_parameter = pending_extension_info->install_parameter(); pending_extension_manager()->Remove(id); - } else if (pending_extension_manager()->IsReinstallForCorruptionExpected( - extension->id())) { - pending_extension_manager()->Remove(id); - } else { + } else if (!is_reinstall_for_corruption) { // We explicitly want to re-enable an uninstalled external // extension; if we're here, that means the user is manually // installing the extension.
diff --git a/chrome/browser/extensions/installed_loader.cc b/chrome/browser/extensions/installed_loader.cc index a970907..afdbb22 100644 --- a/chrome/browser/extensions/installed_loader.cc +++ b/chrome/browser/extensions/installed_loader.cc
@@ -17,6 +17,7 @@ #include "base/trace_event/trace_event.h" #include "base/values.h" #include "chrome/browser/browser_process.h" +#include "chrome/browser/extensions/corrupted_extension_reinstaller.h" #include "chrome/browser/extensions/extension_management.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_util.h" @@ -317,27 +318,26 @@ } if ((disable_reasons & disable_reason::DISABLE_CORRUPTED)) { - PendingExtensionManager* pending_manager = - extension_service_->pending_extension_manager(); + CorruptedExtensionReinstaller* corrupted_extension_reinstaller = + extension_service_->corrupted_extension_reinstaller(); if (policy->MustRemainEnabled(extension.get(), nullptr)) { // This extension must have been disabled due to corruption on a // previous run of chrome, and for some reason we weren't successful in - // auto-reinstalling it. So we want to notify the - // PendingExtensionManager that we'd still like to keep attempt to - // re-download and reinstall it whenever the ExtensionService checks for - // external updates. + // auto-reinstalling it. So we want to notify the reinstaller that we'd + // still like to keep attempt to re-download and reinstall it whenever + // the ExtensionService checks for external updates. LOG(ERROR) << "Expecting reinstall for extension id: " << extension->id() << " due to corruption detected in prior session."; - pending_manager->ExpectReinstallForCorruption( + corrupted_extension_reinstaller->ExpectReinstallForCorruption( extension->id(), - PendingExtensionManager::PolicyReinstallReason:: + CorruptedExtensionReinstaller::PolicyReinstallReason:: CORRUPTION_DETECTED_IN_PRIOR_SESSION, extension->location()); } else if (extension->from_webstore()) { // Non-policy extensions are repaired on startup. Add any corrupted - // user-installed extensions to the PendingExtensionManager as well. - pending_manager->ExpectReinstallForCorruption( + // user-installed extensions to the reinstaller as well. + corrupted_extension_reinstaller->ExpectReinstallForCorruption( extension->id(), absl::nullopt, extension->location()); } }
diff --git a/chrome/browser/extensions/pending_extension_manager.cc b/chrome/browser/extensions/pending_extension_manager.cc index 0fd390e..68dc1f0 100644 --- a/chrome/browser/extensions/pending_extension_manager.cc +++ b/chrome/browser/extensions/pending_extension_manager.cc
@@ -8,7 +8,6 @@ #include "base/containers/contains.h" #include "base/logging.h" -#include "base/metrics/histogram_functions.h" #include "base/version.h" #include "chrome/common/extensions/extension_constants.h" #include "content/public/browser/browser_thread.h" @@ -57,14 +56,6 @@ } bool PendingExtensionManager::Remove(const std::string& id) { - if (base::Contains(expected_reinstalls_, id)) { - base::TimeDelta latency = base::TimeTicks::Now() - expected_reinstalls_[id]; - base::UmaHistogramLongTimes("Extensions.CorruptPolicyExtensionResolved", - latency); - LOG(ERROR) << "Corrupted extension " << id << " reinstalled with latency " - << latency; - expected_reinstalls_.erase(id); - } PendingExtensionList::iterator iter; for (iter = pending_extension_list_.begin(); iter != pending_extension_list_.end(); @@ -109,32 +100,6 @@ }) != pending_extension_list_.end(); } -void PendingExtensionManager::RecordPolicyReinstallReason( - PolicyReinstallReason reason_for_uma) { - base::UmaHistogramEnumeration("Extensions.CorruptPolicyExtensionDetected3", - reason_for_uma); -} - -void PendingExtensionManager::ExpectReinstallForCorruption( - const ExtensionId& id, - absl::optional<PolicyReinstallReason> reason_for_uma, - mojom::ManifestLocation manifest_location_for_uma) { - if (base::Contains(expected_reinstalls_, id)) - return; - expected_reinstalls_[id] = base::TimeTicks::Now(); - if (reason_for_uma) - RecordPolicyReinstallReason(*reason_for_uma); -} - -bool PendingExtensionManager::IsReinstallForCorruptionExpected( - const ExtensionId& id) const { - return base::Contains(expected_reinstalls_, id); -} - -bool PendingExtensionManager::HasAnyReinstallForCorruption() const { - return !expected_reinstalls_.empty(); -} - bool PendingExtensionManager::AddFromSync( const std::string& id, const GURL& update_url, @@ -274,11 +239,6 @@ const { std::list<std::string> result; - // Add the extensions that need repairing but are not necessarily from an - // external loader. - for (const auto& iter : expected_reinstalls_) - result.push_back(iter.first); - for (PendingExtensionList::const_iterator iter = pending_extension_list_.begin(); iter != pending_extension_list_.end(); ++iter) { @@ -293,8 +253,7 @@ continue; } - if (!base::Contains(expected_reinstalls_, iter->id())) - result.push_back(iter->id()); + result.push_back(iter->id()); } return result;
diff --git a/chrome/browser/extensions/pending_extension_manager.h b/chrome/browser/extensions/pending_extension_manager.h index 53efd7e..d20ca3d 100644 --- a/chrome/browser/extensions/pending_extension_manager.h +++ b/chrome/browser/extensions/pending_extension_manager.h
@@ -48,45 +48,6 @@ // lifetime. This class should only be used from the UI thread. class PendingExtensionManager { public: - // The reason why we want to reinstall the extension. - // Note: enum used for UMA. Do NOT reorder or remove entries. Don't forget to - // update enums.xml (name: ExtensionPolicyReinstallReason) when adding new - // entries. - enum class PolicyReinstallReason { - // Tried to load extension which was previously disabled because of - // corruption (but is a force-installed extension and therefore should be - // repaired). - // That happens when extension corruption was detected, but for some reason - // reinstall could not happen in the same session (no internet or session - // was closed right after detection), so at start of the next session we add - // extension to reinstall list again. - CORRUPTION_DETECTED_IN_PRIOR_SESSION = 0, - - // Corruption detected in an extension from Chrome Web Store. - CORRUPTION_DETECTED_WEBSTORE = 1, - - // Corruption detected in an extension outside Chrome Web Store. - CORRUPTION_DETECTED_NON_WEBSTORE = 2, - - // Planned future option: - // Extension doesn't have hashes for corruption checks. This should not - // happen for extension from Chrome Web Store (since we can fetch hashes - // from server), but for extensions outside Chrome Web Store that means that - // we need to reinstall the extension (and compute hashes during - // installation). - // Not used currently, see https://crbug.com/958794#c22 for details. - // NO_UNSIGNED_HASHES_FOR_NON_WEBSTORE = 3, - - // Extension doesn't have hashes for corruption checks. Ideally this - // extension should be reinstalled in this case, but currently we just skip - // them. See https://crbug.com/958794#c22 for details. - NO_UNSIGNED_HASHES_FOR_NON_WEBSTORE_SKIP = 4, - - // Magic constant used by the histogram macros. - // Always update it to the max value. - kMaxValue = NO_UNSIGNED_HASHES_FOR_NON_WEBSTORE_SKIP - }; - explicit PendingExtensionManager(content::BrowserContext* context); PendingExtensionManager(const PendingExtensionManager&) = delete; @@ -118,29 +79,6 @@ // or an external component extension). bool HasHighPriorityPendingExtension() const; - // Records UMA metrics about policy reinstall to UMA. Temporarily exposed - // publicly because we now skip reinstall for non-webstore policy - // force-installed extensions without hashes, but are interested in number - // of such cases. - // See https://crbug.com/958794#c22 for details. - void RecordPolicyReinstallReason(PolicyReinstallReason reason_for_uma); - - // Notifies the manager that we are reinstalling the policy force-installed - // extension with |id| because we detected corruption in the current copy. - // |reason_for_uma| indicates origin and details of the requires, and is used - // for statistics purposes (sent to UMA). |manifest_location_for_uma| the - // manifest location, and is used for statistics purposes (sent to UMA) - void ExpectReinstallForCorruption( - const ExtensionId& id, - absl::optional<PolicyReinstallReason> reason_for_uma, - mojom::ManifestLocation manifest_location_for_uma); - - // Are we expecting a reinstall of the extension with |id| due to corruption? - bool IsReinstallForCorruptionExpected(const ExtensionId& id) const; - - // Whether or not there are any corrupted extensions. - bool HasAnyReinstallForCorruption() const; - // Adds an extension in a pending state; the extension with the // given info will be installed on the next auto-update cycle. // Return true if the extension was added. Will return false @@ -182,8 +120,7 @@ // Get the list of pending IDs that should be installed from an update URL. // Pending extensions that will be installed from local files will not be - // included in the set. This includes corrupted user installed that should be - // repaired. + // included in the set. std::list<std::string> GetPendingIdsForUpdateCheck() const; private: @@ -213,10 +150,6 @@ PendingExtensionList pending_extension_list_; - // A set of extension ids that are being reinstalled due to corruption, mapped - // to the time we detected the corruption. - std::map<ExtensionId, base::TimeTicks> expected_reinstalls_; - FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, UpdatePendingExtensionAlreadyInstalled); friend class ExtensionUpdaterTest;
diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/browser/extensions/updater/extension_updater.cc index dae971e..bc9dd34 100644 --- a/chrome/browser/extensions/updater/extension_updater.cc +++ b/chrome/browser/extensions/updater/extension_updater.cc
@@ -298,7 +298,7 @@ void ExtensionUpdater::AddToDownloader( const ExtensionSet* extensions, - const std::list<ExtensionId>& pending_ids, + const std::set<ExtensionId>& pending_ids, int request_id, ManifestFetchData::FetchPriority fetch_priority, ExtensionUpdateCheckParams* update_check_params) { @@ -401,20 +401,35 @@ // and external install sources. const PendingExtensionManager* pending_extension_manager = service_->pending_extension_manager(); + const CorruptedExtensionReinstaller* corrupted_extension_reinstaller = + service_->corrupted_extension_reinstaller(); ExtensionUpdateCheckParams update_check_params; if (params.ids.empty()) { - std::list<ExtensionId> pending_ids = - pending_extension_manager->GetPendingIdsForUpdateCheck(); - // If no extension ids are specified, check for updates for all extensions. + // If no extension ids are specified, then: + // * install all pending extensions from the pending extension manager, + // * reinstall corrupted extension to repair them, + // * check for updates for all installed extensions. + + // Use a set so extension IDs will be deduplicated automatically. + std::set<ExtensionId> pending_ids; + for (const ExtensionId& id : + pending_extension_manager->GetPendingIdsForUpdateCheck()) { + pending_ids.insert(id); + } + // Include corrupted extensions that should be repaired. + for (const auto& it : + corrupted_extension_reinstaller->GetExpectedReinstalls()) { + pending_ids.insert(it.first); + } for (const ExtensionId& pending_id : pending_ids) { const PendingExtensionInfo* info = pending_extension_manager->GetById(pending_id); const bool is_corrupt_reinstall = - pending_extension_manager->IsReinstallForCorruptionExpected( + corrupted_extension_reinstaller->IsReinstallForCorruptionExpected( pending_id); // Extensions from the webstore that are corrupted do not have
diff --git a/chrome/browser/extensions/updater/extension_updater.h b/chrome/browser/extensions/updater/extension_updater.h index 5f2fe3c9..5a6c630 100644 --- a/chrome/browser/extensions/updater/extension_updater.h +++ b/chrome/browser/extensions/updater/extension_updater.h
@@ -211,7 +211,7 @@ // Add fetch records for extensions that are installed to the downloader, // ignoring |pending_ids| so the extension isn't fetched again. void AddToDownloader(const ExtensionSet* extensions, - const std::list<ExtensionId>& pending_ids, + const std::set<ExtensionId>& pending_ids, int request_id, ManifestFetchData::FetchPriority fetch_priority, ExtensionUpdateCheckParams* update_check_params);
diff --git a/chrome/browser/extensions/updater/extension_updater_unittest.cc b/chrome/browser/extensions/updater/extension_updater_unittest.cc index b5e9fed7..cdd49417 100644 --- a/chrome/browser/extensions/updater/extension_updater_unittest.cc +++ b/chrome/browser/extensions/updater/extension_updater_unittest.cc
@@ -295,6 +295,7 @@ scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory) : prefs_(prefs), pending_extension_manager_(prefs->profile()), + corrupted_extension_reinstaller_(prefs->profile()), downloader_delegate_override_(nullptr), test_shared_url_loader_factory_(url_loader_factory) {} @@ -319,6 +320,10 @@ return identity_test_env_.get(); } + CorruptedExtensionReinstaller* corrupted_extension_reinstaller() override { + return &corrupted_extension_reinstaller_; + } + const CoreAccountId& account_id() { return account_info_.account_id; } // Creates test extensions and inserts them into list. The name and @@ -365,6 +370,7 @@ protected: const raw_ptr<TestExtensionPrefs> prefs_; PendingExtensionManager pending_extension_manager_; + CorruptedExtensionReinstaller corrupted_extension_reinstaller_; private: std::unique_ptr<ExtensionDownloader> CreateExtensionDownloader( @@ -511,6 +517,10 @@ return &pending_extension_manager_; } + CorruptedExtensionReinstaller* corrupted_extension_reinstaller() override { + return &corrupted_extension_reinstaller_; + } + const std::string& extension_id() const { return extension_id_; } const base::FilePath& install_path() const { return install_path_; }
diff --git a/chrome/browser/feature_guide/notifications/feature_notification_guide_service_factory.cc b/chrome/browser/feature_guide/notifications/feature_notification_guide_service_factory.cc index b3929cc..5baebf1 100644 --- a/chrome/browser/feature_guide/notifications/feature_notification_guide_service_factory.cc +++ b/chrome/browser/feature_guide/notifications/feature_notification_guide_service_factory.cc
@@ -6,6 +6,7 @@ #include "base/feature_list.h" #include "base/memory/singleton.h" +#include "base/metrics/field_trial_params.h" #include "base/time/default_clock.h" #include "build/build_config.h" #include "chrome/browser/feature_engagement/tracker_factory.h"
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index 521381e..f66bc9a2 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -4505,6 +4505,11 @@ "expiry_milestone": 100 }, { + "name": "origin-agent-cluster-default", + "owners": [ "vogelheim", "chrome-security-owp-team@google.com" ], + "expiry_milestone": 109 + }, + { "name": "os-settings-app-notifications-page", "owners": ["hsuregan"], "expiry_milestone": 99
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 3cdd9f5b..eb153d4 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -1898,6 +1898,15 @@ "bugs, visual artifacts, and performance cost. This implementation may be " "removed at any time."; +const char kOriginAgentClusterDefaultName[] = + "Origin-keyed Agent Clusters by default"; +const char kOriginAgentClusterDefaultDescription[] = + "Select the default behaviour for the Origin-Agent-Cluster http header. " + "If enabled, an absent header will cause pages to be assigned to an " + "origin-keyed agent cluster, and to a site-keyed agent cluster when " + "disabled. Documents whose agent clusters are origin-keyed cannot set " + "document.domain to relax the same-origin policy."; + const char kOsSettingsAppNotificationsPageName[] = "CrOS Settings App Notifications Page"; const char kOsSettingsAppNotificationsPageDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index 3f83148..8b303ba 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -968,6 +968,9 @@ extern const char kNotificationsSystemFlagName[]; extern const char kNotificationsSystemFlagDescription[]; +extern const char kOriginAgentClusterDefaultName[]; +extern const char kOriginAgentClusterDefaultDescription[]; + extern const char kOmniboxActiveSearchEnginesName[]; extern const char kOmniboxActiveSearchEnginesDescription[];
diff --git a/chrome/browser/history_clusters/history_clusters_metrics_browsertest.cc b/chrome/browser/history_clusters/history_clusters_metrics_browsertest.cc index 40e3553..cfb2929 100644 --- a/chrome/browser/history_clusters/history_clusters_metrics_browsertest.cc +++ b/chrome/browser/history_clusters/history_clusters_metrics_browsertest.cc
@@ -203,12 +203,8 @@ ->template GetAs<HistoryUI>() ->GetHistoryClustersHandlerForTesting(); - auto query_params = history_clusters::mojom::QueryParams::New(); - query_params->query = "cat"; - page_handler->QueryClusters(std::move(query_params)); - query_params = history_clusters::mojom::QueryParams::New(); - query_params->query = "dog"; - page_handler->QueryClusters(std::move(query_params)); + page_handler->StartQueryClusters("cat"); + page_handler->StartQueryClusters("dog"); EXPECT_TRUE(ui_test_utils::NavigateToURL(browser(), GURL("https://foo.com"))); auto entries =
diff --git a/chrome/browser/media/router/discovery/access_code/access_code_cast_feature.cc b/chrome/browser/media/router/discovery/access_code/access_code_cast_feature.cc index 588ffc43..84f33017 100644 --- a/chrome/browser/media/router/discovery/access_code/access_code_cast_feature.cc +++ b/chrome/browser/media/router/discovery/access_code/access_code_cast_feature.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/media/router/discovery/access_code/access_code_cast_feature.h" +#include "base/time/time.h" #include "build/build_config.h" #include "components/pref_registry/pref_registry_syncable.h" #include "components/prefs/pref_service.h"
diff --git a/chrome/browser/media/router/discovery/access_code/access_code_cast_feature.h b/chrome/browser/media/router/discovery/access_code/access_code_cast_feature.h index 41690612..1d4688c 100644 --- a/chrome/browser/media/router/discovery/access_code/access_code_cast_feature.h +++ b/chrome/browser/media/router/discovery/access_code/access_code_cast_feature.h
@@ -11,6 +11,10 @@ class PrefRegistrySimple; class PrefService; +namespace base { +class TimeDelta; +} + namespace media_router { #if !BUILDFLAG(IS_ANDROID)
diff --git a/chrome/browser/net/profile_network_context_service.cc b/chrome/browser/net/profile_network_context_service.cc index 01af4c7..deb452a1 100644 --- a/chrome/browser/net/profile_network_context_service.cc +++ b/chrome/browser/net/profile_network_context_service.cc
@@ -29,6 +29,8 @@ #include "chrome/browser/domain_reliability/service_factory.h" #include "chrome/browser/net/system_network_context_manager.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ssl/sct_reporting_service.h" +#include "chrome/browser/ssl/sct_reporting_service_factory.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_content_client.h" #include "chrome/common/chrome_features.h" @@ -784,11 +786,14 @@ network_context_params->enable_certificate_reporting = true; network_context_params->enable_expect_ct_reporting = true; - // Initialize the network context to do SCT auditing only if the current - // profile is opted in to Safe Browsing Extended Reporting. - if (!profile_->IsOffTheRecord() && - safe_browsing::IsExtendedReportingEnabled(*profile_->GetPrefs())) { - network_context_params->enable_sct_auditing = true; + SCTReportingService* sct_reporting_service = + SCTReportingServiceFactory::GetForBrowserContext(profile_); + if (sct_reporting_service) { + network_context_params->sct_auditing_mode = + sct_reporting_service->GetReportingMode(); + } else { + network_context_params->sct_auditing_mode = + network::mojom::SCTAuditingMode::kDisabled; } network_context_params->ct_policy = GetCTPolicy();
diff --git a/chrome/browser/new_tab_page/modules/photos/photos_service.cc b/chrome/browser/new_tab_page/modules/photos/photos_service.cc index 66c452d..91c3661 100644 --- a/chrome/browser/new_tab_page/modules/photos/photos_service.cc +++ b/chrome/browser/new_tab_page/modules/photos/photos_service.cc
@@ -8,6 +8,7 @@ #include <utility> #include "base/hash/hash.h" +#include "base/metrics/field_trial_params.h" #include "base/metrics/histogram_functions.h" #include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h"
diff --git a/chrome/browser/notifications/notification_platform_bridge_linux.cc b/chrome/browser/notifications/notification_platform_bridge_linux.cc index 919eaaf..26ade51d 100644 --- a/chrome/browser/notifications/notification_platform_bridge_linux.cc +++ b/chrome/browser/notifications/notification_platform_bridge_linux.cc
@@ -22,6 +22,7 @@ #include "base/files/file_path_watcher.h" #include "base/files/file_util.h" #include "base/i18n/number_formatting.h" +#include "base/logging.h" #include "base/memory/ptr_util.h" #include "base/metrics/histogram_macros.h" #include "base/strings/string_number_conversions.h"
diff --git a/chrome/browser/pdf/pdf_extension_test.cc b/chrome/browser/pdf/pdf_extension_test.cc index a7af992a..67b0807 100644 --- a/chrome/browser/pdf/pdf_extension_test.cc +++ b/chrome/browser/pdf/pdf_extension_test.cc
@@ -1598,6 +1598,12 @@ GetActiveWebContents()->Resize({0, 0, 1024, 768}); } + void SetUpCommandLine(base::CommandLine* command_line) override { + // Smooth scrolling confuses the test cases that reads the scroll bar + // position. + command_line->AppendSwitch(switches::kDisableSmoothScrolling); + } + protected: class ScrollEventWaiter { public:
diff --git a/chrome/browser/plugins/plugin_finder_unittest.cc b/chrome/browser/plugins/plugin_finder_unittest.cc index bf516a72..e63f0a65 100644 --- a/chrome/browser/plugins/plugin_finder_unittest.cc +++ b/chrome/browser/plugins/plugin_finder_unittest.cc
@@ -41,14 +41,14 @@ const base::ListValue* mime_types = NULL; if (plugin->GetList("mime_types", &mime_types)) { for (const auto& mime_type : mime_types->GetListDeprecated()) { - EXPECT_TRUE(mime_type.GetAsString(&dummy_str)); + EXPECT_TRUE(mime_type.is_string()); } } const base::ListValue* matching_mime_types = NULL; if (plugin->GetList("matching_mime_types", &matching_mime_types)) { for (const auto& mime_type : matching_mime_types->GetListDeprecated()) { - EXPECT_TRUE(mime_type.GetAsString(&dummy_str)); + EXPECT_TRUE(mime_type.is_string()); } }
diff --git a/chrome/browser/policy/extension_policy_browsertest.cc b/chrome/browser/policy/extension_policy_browsertest.cc index 5b8b892..e99e9364 100644 --- a/chrome/browser/policy/extension_policy_browsertest.cc +++ b/chrome/browser/policy/extension_policy_browsertest.cc
@@ -1529,9 +1529,8 @@ // Step 4: Check that we are going to reinstall the extension and wait for // extension reinstall. - EXPECT_TRUE( - service->pending_extension_manager()->IsReinstallForCorruptionExpected( - kGoodCrxId)); + EXPECT_TRUE(service->corrupted_extension_reinstaller() + ->IsReinstallForCorruptionExpected(kGoodCrxId)); registry_observer.WaitForExtensionWillBeInstalled(); // Extension was reloaded, old extension object is invalid. @@ -1613,9 +1612,8 @@ // Step 4: Check that we are going to reinstall the extension and wait for // extension reinstall. - EXPECT_TRUE( - service->pending_extension_manager()->IsReinstallForCorruptionExpected( - kGoodCrxId)); + EXPECT_TRUE(service->corrupted_extension_reinstaller() + ->IsReinstallForCorruptionExpected(kGoodCrxId)); observer.WaitForExtensionWillBeInstalled(); // Extension was reloaded, old extension object is invalid. @@ -1689,12 +1687,11 @@ // Step 4: Check that we are not going to reinstall the extension, but we have // detected a corruption. - EXPECT_FALSE( - service->pending_extension_manager()->IsReinstallForCorruptionExpected( - kGoodCrxId)); + EXPECT_FALSE(service->corrupted_extension_reinstaller() + ->IsReinstallForCorruptionExpected(kGoodCrxId)); histogram_tester.ExpectUniqueSample( "Extensions.CorruptPolicyExtensionDetected3", - extensions::PendingExtensionManager::PolicyReinstallReason:: + extensions::CorruptedExtensionReinstaller::PolicyReinstallReason:: NO_UNSIGNED_HASHES_FOR_NON_WEBSTORE_SKIP, 1); }
diff --git a/chrome/browser/predictors/loading_data_collector.h b/chrome/browser/predictors/loading_data_collector.h index 82fa209b..8058a52 100644 --- a/chrome/browser/predictors/loading_data_collector.h +++ b/chrome/browser/predictors/loading_data_collector.h
@@ -13,6 +13,7 @@ #include "base/gtest_prod_util.h" #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" +#include "base/time/time.h" #include "base/types/id_type.h" #include "chrome/browser/predictors/loading_predictor_config.h" #include "services/metrics/public/cpp/ukm_source_id.h"
diff --git a/chrome/browser/profiles/profile_shortcut_manager_win.cc b/chrome/browser/profiles/profile_shortcut_manager_win.cc index 524b3d76..5c66ebc 100644 --- a/chrome/browser/profiles/profile_shortcut_manager_win.cc +++ b/chrome/browser/profiles/profile_shortcut_manager_win.cc
@@ -18,6 +18,7 @@ #include "base/containers/contains.h" #include "base/files/file_enumerator.h" #include "base/files/file_util.h" +#include "base/logging.h" #include "base/path_service.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h"
diff --git a/chrome/browser/resources/app_settings/app.html b/chrome/browser/resources/app_settings/app.html index cb8c0c1f..df20ba0 100644 --- a/chrome/browser/resources/app_settings/app.html +++ b/chrome/browser/resources/app_settings/app.html
@@ -30,6 +30,11 @@ <h1 class="cr-title-text">[[app_.title]]</h1> </div> <div class="permission-list"> + <app-management-run-on-os-login-item + class="permission-card-row separated-row" + login-mode-label="$i18n{appManagementRunOnOsLoginModeLabel}" + app="[[app_]]"> + </app-management-run-on-os-login-item> <app-management-window-mode class="permission-card-row separated-row" window-mode-label="$i18n{appManagementWindowModeLabel}"
diff --git a/chrome/browser/resources/app_settings/app.ts b/chrome/browser/resources/app_settings/app.ts index e8986c51..2404894 100644 --- a/chrome/browser/resources/app_settings/app.ts +++ b/chrome/browser/resources/app_settings/app.ts
@@ -5,6 +5,7 @@ import './strings.m.js'; import 'chrome://resources/cr_elements/cr_toolbar/cr_toolbar.js'; import 'chrome://resources/cr_components/app_management/more_permissions_item.js'; +import 'chrome://resources/cr_components/app_management/run_on_os_login_item.js'; import 'chrome://resources/cr_components/app_management/permission_item.js'; import 'chrome://resources/cr_components/app_management/window_mode_item.js'; import 'chrome://resources/cr_components/app_management/icons.js'; @@ -14,7 +15,7 @@ import {getAppIcon} from 'chrome://resources/cr_components/app_management/util.js'; import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; - +// TODO(crbug.com/1294060): Investigate end-to-end WebAppSettings tests export class WebAppSettingsAppElement extends PolymerElement { static get is() { return 'web-app-settings-app';
diff --git a/chrome/browser/resources/extensions/detail_view.html b/chrome/browser/resources/extensions/detail_view.html index 73c5ad7..64b00a3 100644 --- a/chrome/browser/resources/extensions/detail_view.html +++ b/chrome/browser/resources/extensions/detail_view.html
@@ -321,7 +321,8 @@ <template is="dom-if" if="[[showSiteAccessSection_(data.*, enableEnhancedSiteControls)]]"> <div class="section hr"> - <div class="section-title" role="heading" aria-level="2"> + <div class="section-title" role="heading" aria-level="2" + hidden$="[[enableEnhancedSiteControls]]"> $i18n{itemSiteAccess} </div> <div class="section-content">
diff --git a/chrome/browser/resources/extensions/extensions.gni b/chrome/browser/resources/extensions/extensions.gni index 094a514..f93d8da 100644 --- a/chrome/browser/resources/extensions/extensions.gni +++ b/chrome/browser/resources/extensions/extensions.gni
@@ -14,6 +14,7 @@ "navigation_helper.ts", "service.ts", "shortcut_util.ts", + "url_util.ts", ] if (is_chromeos_ash) {
diff --git a/chrome/browser/resources/extensions/extensions.ts b/chrome/browser/resources/extensions/extensions.ts index 9cea987..fb378ab 100644 --- a/chrome/browser/resources/extensions/extensions.ts +++ b/chrome/browser/resources/extensions/extensions.ts
@@ -41,3 +41,4 @@ export {ExtensionsSitePermissionsElement} from './site_permissions.js'; export {ExtensionsToggleRowElement} from './toggle_row.js'; export {ExtensionsToolbarElement} from './toolbar.js'; +export {getFaviconUrl} from './url_util.js';
diff --git a/chrome/browser/resources/extensions/runtime_host_permissions.html b/chrome/browser/resources/extensions/runtime_host_permissions.html index acb1a7525..c737501a 100644 --- a/chrome/browser/resources/extensions/runtime_host_permissions.html +++ b/chrome/browser/resources/extensions/runtime_host_permissions.html
@@ -1,9 +1,13 @@ -<style include="cr-shared-style action-link md-select shared-style"> +<style include="cr-shared-style action-link md-select shared-style cr-icons"> iron-icon { --iron-icon-height: var(--cr-icon-size); --iron-icon-width: var(--cr-icon-size); } + .link-icon-button { + margin-inline-start: 6px; + } + #section-heading { --md-select-width: 160px; align-items: center; @@ -32,14 +36,13 @@ #hosts li { align-items: center; - border-bottom: var(--cr-separator-line); + border-top: var(--cr-separator-line); display: flex; height: var(--cr-section-min-height); - justify-content: space-between; } - #hosts li:last-child { - border-bottom: none; + #hosts li:first-child { + border-top: none; } #add-host { @@ -52,32 +55,64 @@ margin-top: 12px; } - cr-radio-button.multi-row { - align-items: normal; + #new-permissions-mode { + color: var(--cr-primary-text-color); + margin-top: 12px; + padding-inline-start: calc( + var(--cr-section-indent-padding) - var(--cr-section-padding)); } - cr-icon-button { - margin: 0; + #new-section-heading { + align-items: flex-start; + display: flex; + flex-direction: column; + } + + #new-section-heading-title { + display: flex; + } + + #new-section-heading-subtext { + color: var(--cr-secondary-text-color); + margin-top: 3px; + } + + #host-access-row { + display: flex; + justify-content: space-between; + margin-top: 18px; + width: 100%; + } + + .site { + flex-grow: 1; + overflow: hidden; + text-overflow: ellipsis; + } + + .site-favicon { + margin-inline-end: calc( + var(--cr-section-padding) + var(--cr-icon-ripple-margin)); } </style> -<div id="permissions-mode"> - <div id="section-heading"> - <div id="section-heading-heading"> - <span id="section-heading-text"> - [[getHostPermissionsHeading_(enableEnhancedSiteControls)]] - </span> - <a class="link-icon-button" aria-label="$i18n{learnMore}" - href="$i18n{hostPermissionsLearnMoreLink}" target="_blank" - on-click="onLearnMoreClick_"> - <iron-icon icon="cr:help-outline"></iron-icon> - </a> - </div> - - <div> - <select id="hostAccess" class="md-select" on-change="onHostAccessChange_" - value="[[permissions.hostAccess]]" - aria-labelledby="section-heading-text"> - <template is="dom-if" if="[[!enableEnhancedSiteControls]]"> +<template is="dom-if" if="[[!enableEnhancedSiteControls]]"> + <div id="permissions-mode"> + <div id="section-heading"> + <div id="section-heading-heading"> + <span id="section-heading-text"> + $i18n{hostPermissionsHeading} + </span> + <a class="link-icon-button" aria-label="$i18n{learnMore}" + href="$i18n{hostPermissionsLearnMoreLink}" target="_blank" + on-click="onLearnMoreClick_"> + <iron-icon icon="cr:help-outline"></iron-icon> + </a> + </div> + <div> + <select id="hostAccess" class="md-select" + on-change="onHostAccessChange_" + value="[[permissions.hostAccess]]" + aria-labelledby="section-heading-text"> <option value="[[HostAccess_.ON_CLICK]]"> $i18n{hostAccessOnClick} </option> @@ -87,35 +122,75 @@ <option value="[[HostAccess_.ON_ALL_SITES]]"> $i18n{hostAccessOnAllSites} </option> - </template> - <template is="dom-if" if="[[enableEnhancedSiteControls]]"> - <option value="[[HostAccess_.ON_CLICK]]"> - $i18n{newHostAccessOnClick} - </option> - <option value="[[HostAccess_.ON_SPECIFIC_SITES]]"> - $i18n{hostAccessCustomizeForEachSite} - </option> - <option value="[[HostAccess_.ON_ALL_SITES]]"> - $i18n{newHostAccessOnAllSites} - </option> - </template> - </select> + </select> + </div> </div> </div> -</div> +</template> + +<template is="dom-if" if="[[enableEnhancedSiteControls]]"> + <div id="new-permissions-mode"> + <div id="new-section-heading"> + <div id="new-section-heading-title"> + <span id="new-section-heading-text"> + $i18n{newHostPermissionsHeading} + </span> + <a class="link-icon-button" aria-label="$i18n{learnMore}" + href="$i18n{hostPermissionsLearnMoreLink}" target="_blank" + on-click="onLearnMoreClick_"> + <iron-icon icon="cr:help-outline"></iron-icon> + </a> + </div> + <span id="new-section-heading-subtext"> + $i18n{hostPermissionsSubHeading} + </span> + <div id="host-access-row"> + <select id="newHostAccess" class="md-select" + on-change="onHostAccessChange_" + value="[[permissions.hostAccess]]" + aria-labelledby="new-section-heading-text"> + <option value="[[HostAccess_.ON_CLICK]]"> + $i18n{hostAccessWhenClicked} + </option> + <option value="[[HostAccess_.ON_SPECIFIC_SITES]]"> + $i18n{hostAccessAllowOnSpecificSites} + </option> + <option value="[[HostAccess_.ON_ALL_SITES]]"> + $i18n{hostAccessAllowOnAllSites} + </option> + </select> + <cr-button id="add-site-button" + hidden="[[!showSpecificSites_(permissions.*)]]" + on-click="onAddHostClick_"> + $i18n{add} + </cr-button> + </div> + </div> + </div> +</template> <template is="dom-if" if="[[showSpecificSites_(permissions.*)]]"> <ul id="hosts"> <template is="dom-repeat" items="[[getRuntimeHosts_(permissions.hosts)]]"> <li> - <div>[[item]]</div> - <cr-icon-button class="icon-more-vert edit-host" + <div class="site-favicon" + style$="background-image:[[getFaviconUrl_(item)]]" + hidden$="[[!enableEnhancedSiteControls]]"></div> + <div class="site">[[item]]</div> + <cr-icon-button class="icon-edit edit-host" on-click="onEditHostClick_" - title="$i18n{hostPermissionsEdit}"></cr-icon-button> + hidden$="[[!enableEnhancedSiteControls]]"></cr-icon-button> + <cr-icon-button class="icon-delete-gray remove-host" + on-click="onDeleteHostClick_" + hidden$="[[!enableEnhancedSiteControls]]"></cr-icon-button> + <cr-icon-button class="icon-more-vert open-edit-host" + on-click="onOpenEditHostClick_" + title="$i18n{hostPermissionsEdit}" + hidden$="[[enableEnhancedSiteControls]]"></cr-icon-button> </li> </template> - <li> + <li hidden$="[[enableEnhancedSiteControls]]"> <a id="add-host" is="action-link" on-click="onAddHostClick_"> $i18n{itemSiteAccessAddHost} </a> @@ -123,9 +198,7 @@ </ul> </template> -<cr-action-menu id="hostActionMenu" - role-description="$i18n{menu}" - on-close="onActionMenuClose_"> +<cr-action-menu id="hostActionMenu" role-description="$i18n{menu}"> <button class="dropdown-item" id="action-menu-edit" on-click="onActionMenuEditClick_"> $i18n{hostPermissionsEdit}
diff --git a/chrome/browser/resources/extensions/runtime_host_permissions.ts b/chrome/browser/resources/extensions/runtime_host_permissions.ts index 35243812..eecbab69 100644 --- a/chrome/browser/resources/extensions/runtime_host_permissions.ts +++ b/chrome/browser/resources/extensions/runtime_host_permissions.ts
@@ -20,15 +20,14 @@ import {CrActionMenuElement} from 'chrome://resources/cr_elements/cr_action_menu/cr_action_menu.js'; import {assert} from 'chrome://resources/js/assert.m.js'; import {focusWithoutInk} from 'chrome://resources/js/cr/ui/focus_without_ink.m.js'; -import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {DomRepeatEvent, html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {ItemDelegate} from './item.js'; +import {getFaviconUrl} from './url_util.js'; export interface ExtensionsRuntimeHostPermissionsElement { $: { hostActionMenu: CrActionMenuElement, - hostAccess: HTMLSelectElement, }; } @@ -135,8 +134,14 @@ private oldHostAccess_: string|null; private revertingHostAccess_: boolean; + getSelectMenu(): HTMLSelectElement { + const selectMenuId = + this.enableEnhancedSiteControls ? '#newHostAccess' : '#hostAccess'; + return this.shadowRoot!.querySelector<HTMLSelectElement>(selectMenuId)!; + } + private onHostAccessChange_() { - const selectMenu = this.$.hostAccess; + const selectMenu = this.getSelectMenu(); const access = selectMenu.value as chrome.developerPrivate.HostAccess; // Log a user action when the host access selection is changed by the user, @@ -176,17 +181,8 @@ } } - private getHostPermissionsHeading_(): string { - return loadTimeData.getString( - this.enableEnhancedSiteControls ? 'newHostPermissionsHeading' : - 'hostPermissionsHeading'); - } - private showSpecificSites_(): boolean { - // TODO(crbug.com/1253673): Show a different "customize for each site" menu - // for the new site access menu. - return !this.enableEnhancedSiteControls && - this.permissions.hostAccess === + return this.permissions.hostAccess === chrome.developerPrivate.HostAccess.ON_SPECIFIC_SITES; } @@ -240,7 +236,7 @@ if (this.oldHostAccess_) { assert(this.permissions.hostAccess === this.oldHostAccess_); this.revertingHostAccess_ = true; - this.$.hostAccess.value = this.oldHostAccess_; + this.getSelectMenu().value = this.oldHostAccess_; this.revertingHostAccess_ = false; this.oldHostAccess_ = null; } @@ -250,7 +246,7 @@ return !!this.oldHostAccess_; } - private onEditHostClick_(e: DomRepeatEvent<string>) { + private onOpenEditHostClick_(e: DomRepeatEvent<string>) { chrome.metricsPrivate.recordUserAction( 'Extensions.Settings.Hosts.ActionMenuOpened'); this.actionMenuModel_ = e.model.item; @@ -292,6 +288,18 @@ chrome.metricsPrivate.recordUserAction( 'Extensions.Settings.Hosts.LearnMoreActivated'); } + + private onEditHostClick_(e: DomRepeatEvent<string>) { + this.doShowHostDialog_(e.target as HTMLElement, e.model.item); + } + + private onDeleteHostClick_(e: DomRepeatEvent<string>) { + this.delegate.removeRuntimeHostPermission(this.itemId, e.model.item); + } + + private getFaviconUrl_(url: string): string { + return getFaviconUrl(url); + } } declare global {
diff --git a/chrome/browser/resources/extensions/shared_style.html b/chrome/browser/resources/extensions/shared_style.html index 56ad915..21937675 100644 --- a/chrome/browser/resources/extensions/shared_style.html +++ b/chrome/browser/resources/extensions/shared_style.html
@@ -77,5 +77,11 @@ * once .separator styling is extracted from settings. */ margin-inline-start: 0; } + + .site-favicon { + background-size: 100% 100%; + height: var(--cr-icon-size); + min-width: var(--cr-icon-size); + } </style> </template>
diff --git a/chrome/browser/resources/extensions/site_permissions_list.html b/chrome/browser/resources/extensions/site_permissions_list.html index 3db4002..81e9576 100644 --- a/chrome/browser/resources/extensions/site_permissions_list.html +++ b/chrome/browser/resources/extensions/site_permissions_list.html
@@ -10,12 +10,6 @@ margin: 24px; } - .site-favicon { - background-size: 100% 100%; - height: var(--cr-icon-size); - min-width: var(--cr-icon-size); - } - .site-row { align-items: center; display: flex; @@ -52,7 +46,7 @@ <template is="dom-repeat" items="[[sites]]"> <div class="site-row"> <div class="site-favicon" - style$="background-image:[[getFaviconURL_(item)]]"></div> + style$="background-image:[[getFaviconUrl_(item)]]"></div> <span class="site">[[item]]</span> <cr-icon-button class="subpage-arrow"></cr-icon-button> <div class="separator"></div>
diff --git a/chrome/browser/resources/extensions/site_permissions_list.ts b/chrome/browser/resources/extensions/site_permissions_list.ts index 99673b3..d50be412 100644 --- a/chrome/browser/resources/extensions/site_permissions_list.ts +++ b/chrome/browser/resources/extensions/site_permissions_list.ts
@@ -10,9 +10,10 @@ import './shared_style.js'; import './shared_vars.js'; -import {getFaviconForPageURL} from 'chrome://resources/js/icon.js'; import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {getFaviconUrl} from './url_util.js'; + class ExtensionsSitePermissionsListElement extends PolymerElement { static get is() { return 'site-permissions-list'; @@ -36,10 +37,8 @@ return !!this.sites.length; } - private getFaviconURL_(url: string): string { - return getFaviconForPageURL( - url, /*isSyncedUrlForHistoryUi=*/ false, /*remoteIconUrlForUma=*/ '', - /*size=*/ 20); + private getFaviconUrl_(url: string): string { + return getFaviconUrl(url); } }
diff --git a/chrome/browser/resources/extensions/url_util.ts b/chrome/browser/resources/extensions/url_util.ts new file mode 100644 index 0000000..a58ae25 --- /dev/null +++ b/chrome/browser/resources/extensions/url_util.ts
@@ -0,0 +1,23 @@ +// Copyright 2022 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import {getFaviconForPageURL} from 'chrome://resources/js/icon.js'; + +/** + * Returns a favicon url for a given site. + */ +export function getFaviconUrl(site: string, size: number = 20): string { + // Use 'http' as the scheme if `site` has a wildcard scheme. + let faviconUrl = + site.startsWith('*://') ? site.replace('*://', 'http://') : site; + + // if `site` ends in a wildcard path, trim it. + if (faviconUrl.endsWith('/*')) { + faviconUrl = faviconUrl.substring(0, faviconUrl.length - 2); + } + + return getFaviconForPageURL( + faviconUrl, /*isSyncedUrlForHistoryUi=*/ false, + /*remoteIconUrlForUma=*/ '', size); +}
diff --git a/chrome/browser/resources/history/history_clusters/clusters.html b/chrome/browser/resources/history/history_clusters/clusters.html index 174a940..8cc0dee 100644 --- a/chrome/browser/resources/history/history_clusters/clusters.html +++ b/chrome/browser/resources/history/history_clusters/clusters.html
@@ -46,7 +46,7 @@ </template> </iron-list> <div id="footer" hidden="[[getLoadMoreButtonHidden_( - result_, result_.clusters.*, result_.continuationEndTime)]]"> + result_, result_.clusters.*, result_.canLoadMore)]]"> <cr-button id="loadMoreButton" on-click="onLoadMoreButtonClick_"> $i18n{loadMoreButtonLabel} </cr-button>
diff --git a/chrome/browser/resources/history/history_clusters/clusters.ts b/chrome/browser/resources/history/history_clusters/clusters.ts index f2c53a6..bc9b22c 100644 --- a/chrome/browser/resources/history/history_clusters/clusters.ts +++ b/chrome/browser/resources/history/history_clusters/clusters.ts
@@ -23,7 +23,7 @@ import {BrowserProxyImpl} from './browser_proxy.js'; import {getTemplate} from './clusters.html.js'; -import {Cluster, PageCallbackRouter, PageHandlerRemote, QueryParams, QueryResult, URLVisit} from './history_clusters.mojom-webui.js'; +import {Cluster, PageCallbackRouter, PageHandlerRemote, QueryResult, URLVisit} from './history_clusters.mojom-webui.js'; import {ClusterAction, MetricsProxyImpl} from './metrics_proxy.js'; /** @@ -91,8 +91,6 @@ /** * The browser response to a request for the freshest clusters related to * a given query until an optional given end time (or the present time). - * Contains the clusters, the optional continuation end time to be used in - * the follow-up request to load older clusters, and the original query. */ result_: Object, @@ -172,11 +170,10 @@ } private onLoadMoreButtonClick_() { - if (this.result_ && this.result_.continuationEndTime) { - this.queryClusters_({ - query: this.result_.query, - endTime: this.result_.continuationEndTime, - }); + if (this.result_ && this.result_.canLoadMore) { + // Prevent sending further load-more requests until this one finishes. + this.set('result_.canLoadMore', false); + this.pageHandler_.loadMoreClusters(this.result_.query); } } @@ -277,9 +274,9 @@ */ private getLoadMoreButtonHidden_( _result: QueryResult, _result_clusters: Array<Cluster>, - _result_continuation_time: Time): boolean { + _result_can_load_more: Time): boolean { return !this.result_ || this.result_.clusters.length === 0 || - !this.result_.continuationEndTime; + !this.result_.canLoadMore; } /** @@ -298,7 +295,7 @@ // Do not replace the existing result when `result` contains a partial // set of clusters that should be appended to the existing ones. this.push('result_.clusters', ...result.clusters); - this.set('result_.continuationEndTime', result.continuationEndTime); + this.set('result_.canLoadMore', result.canLoadMore); } else { // Scroll to the top when `result` contains a new set of clusters. this.scrollTop = 0; @@ -326,12 +323,17 @@ }); } + /** + * Called when the user entered search query changes. Also used to fetch the + * initial set of clusters when the page loads. + */ private onQueryChanged_() { this.onBrowserIdle_().then(() => { - this.queryClusters_({ - query: this.query.trim(), - endTime: undefined, - }); + if (this.result_ && this.result_.canLoadMore) { + // Prevent sending further load-more requests until this one finishes. + this.set('result_.canLoadMore', false); + } + this.pageHandler_.startQueryClusters(this.query.trim()); }); } @@ -346,16 +348,6 @@ } this.visitsToBeRemoved_ = []; } - - private queryClusters_(queryParams: QueryParams) { - // Invalidate the existing `continuationEndTime`, if any, in order to - // prevent sending additional requests while a request is in-flight. A new - // `continuationEndTime` will be supplied with the new set of results. - if (this.result_) { - this.result_.continuationEndTime = undefined; - } - this.pageHandler_.queryClusters(queryParams); - } } customElements.define(HistoryClustersElement.is, HistoryClustersElement);
diff --git a/chrome/browser/resources/new_tab_page/app.ts b/chrome/browser/resources/new_tab_page/app.ts index 1ece5a1..a3dbd37 100644 --- a/chrome/browser/resources/new_tab_page/app.ts +++ b/chrome/browser/resources/new_tab_page/app.ts
@@ -9,7 +9,6 @@ import 'chrome://resources/cr_elements/cr_button/cr_button.m.js'; import 'chrome://resources/cr_elements/shared_style_css.m.js'; -import {assert} from 'chrome://resources/js/assert.m.js'; import {ClickInfo, Command} from 'chrome://resources/js/browser_command/browser_command.mojom-webui.js'; import {BrowserCommandProxy} from 'chrome://resources/js/browser_command/browser_command_proxy.js'; import {hexColorToSkColor, skColorToRgba} from 'chrome://resources/js/color_utils.js'; @@ -24,7 +23,7 @@ import {IframeElement} from './iframe.js'; import {recordLoadDuration} from './metrics_utils.js'; import {ModuleRegistry} from './modules/module_registry.js'; -import {BackgroundImage, PageCallbackRouter, PageHandlerRemote, Theme} from './new_tab_page.mojom-webui.js'; +import {PageCallbackRouter, PageHandlerRemote, Theme} from './new_tab_page.mojom-webui.js'; import {NewTabPageProxy} from './new_tab_page_proxy.js'; import {$$} from './utils.js'; import {Action as VoiceAction, recordVoiceAction} from './voice_search_overlay.js';
diff --git a/chrome/browser/resources/new_tab_page/customize_dialog.ts b/chrome/browser/resources/new_tab_page/customize_dialog.ts index d761748..5cd4177a 100644 --- a/chrome/browser/resources/new_tab_page/customize_dialog.ts +++ b/chrome/browser/resources/new_tab_page/customize_dialog.ts
@@ -16,7 +16,6 @@ import {CustomizeThemesElement} from 'chrome://resources/cr_components/customize_themes/customize_themes.js'; import {CrDialogElement} from 'chrome://resources/cr_elements/cr_dialog/cr_dialog.m.js'; import {CrToggleElement} from 'chrome://resources/cr_elements/cr_toggle/cr_toggle.m.js'; -import {assert} from 'chrome://resources/js/assert.m.js'; import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {CustomizeBackgroundsElement} from './customize_backgrounds.js';
diff --git a/chrome/browser/resources/new_tab_page/customize_shortcuts.ts b/chrome/browser/resources/new_tab_page/customize_shortcuts.ts index 790a207..9727a897 100644 --- a/chrome/browser/resources/new_tab_page/customize_shortcuts.ts +++ b/chrome/browser/resources/new_tab_page/customize_shortcuts.ts
@@ -7,9 +7,8 @@ import 'chrome://resources/cr_elements/cr_toggle/cr_toggle.m.js'; import 'chrome://resources/cr_elements/cr_button/cr_button.m.js'; -import {assert} from 'chrome://resources/js/assert.m.js'; import {FocusOutlineManager} from 'chrome://resources/js/cr/ui/focus_outline_manager.m.js'; -import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {I18nMixin} from './i18n_setup.js'; import {CustomizeDialogAction, PageHandlerRemote} from './new_tab_page.mojom-webui.js';
diff --git a/chrome/browser/resources/new_tab_page/i18n_setup.ts b/chrome/browser/resources/new_tab_page/i18n_setup.ts index 6eb330b..c9e2574f 100644 --- a/chrome/browser/resources/new_tab_page/i18n_setup.ts +++ b/chrome/browser/resources/new_tab_page/i18n_setup.ts
@@ -4,6 +4,5 @@ import './strings.m.js'; -export {I18nBehavior} from 'chrome://resources/js/i18n_behavior.m.js'; export {I18nMixin} from 'chrome://resources/js/i18n_mixin.js'; export {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
diff --git a/chrome/browser/resources/new_tab_page/middle_slot_promo.ts b/chrome/browser/resources/new_tab_page/middle_slot_promo.ts index 85b82616..7f57bf45 100644 --- a/chrome/browser/resources/new_tab_page/middle_slot_promo.ts +++ b/chrome/browser/resources/new_tab_page/middle_slot_promo.ts
@@ -5,7 +5,7 @@ import 'chrome://resources/cr_elements/shared_vars_css.m.js'; import {CrAutoImgElement} from 'chrome://resources/cr_elements/cr_auto_img/cr_auto_img.js'; -import {ClickInfo, Command} from 'chrome://resources/js/browser_command/browser_command.mojom-webui.js'; +import {Command} from 'chrome://resources/js/browser_command/browser_command.mojom-webui.js'; import {BrowserCommandProxy} from 'chrome://resources/js/browser_command/browser_command_proxy.js'; import {Url} from 'chrome://resources/mojo/url/mojom/url.mojom-webui.js'; import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
diff --git a/chrome/browser/resources/new_tab_page/modules/cart/module.ts b/chrome/browser/resources/new_tab_page/modules/cart/module.ts index 7ce1119..6df408d3 100644 --- a/chrome/browser/resources/new_tab_page/modules/cart/module.ts +++ b/chrome/browser/resources/new_tab_page/modules/cart/module.ts
@@ -17,7 +17,6 @@ import {MerchantCart} from '../../chrome_cart.mojom-webui.js'; import {I18nMixin, loadTimeData} from '../../i18n_setup.js'; import {recordOccurence} from '../../metrics_utils.js'; -import {$$} from '../../utils.js'; import {ModuleDescriptor} from '../module_descriptor.js'; import {ChromeCartProxy} from './chrome_cart_proxy.js';
diff --git a/chrome/browser/resources/new_tab_page/modules/modules.ts b/chrome/browser/resources/new_tab_page/modules/modules.ts index efcd6d2..a2cbae21 100644 --- a/chrome/browser/resources/new_tab_page/modules/modules.ts +++ b/chrome/browser/resources/new_tab_page/modules/modules.ts
@@ -13,9 +13,8 @@ import {I18nMixin, loadTimeData} from '../i18n_setup.js'; import {NewTabPageProxy} from '../new_tab_page_proxy.js'; -import {$$} from '../utils.js'; -import {Module, ModuleHeight} from './module_descriptor.js'; +import {ModuleHeight} from './module_descriptor.js'; import {ModuleRegistry} from './module_registry.js'; import {ModuleWrapperElement} from './module_wrapper.js';
diff --git a/chrome/browser/resources/new_tab_page/modules/photos/module.ts b/chrome/browser/resources/new_tab_page/modules/photos/module.ts index 092e67c..9939ab3 100644 --- a/chrome/browser/resources/new_tab_page/modules/photos/module.ts +++ b/chrome/browser/resources/new_tab_page/modules/photos/module.ts
@@ -10,7 +10,6 @@ import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {I18nMixin, loadTimeData} from '../../i18n_setup.js'; -import {recordOccurence} from '../../metrics_utils.js'; import {Memory} from '../../photos.mojom-webui.js'; import {InfoDialogElement} from '../info_dialog.js'; import {ModuleDescriptor} from '../module_descriptor.js';
diff --git a/chrome/browser/resources/new_tab_page/voice_search_overlay.ts b/chrome/browser/resources/new_tab_page/voice_search_overlay.ts index ac2655d..57cc6bd 100644 --- a/chrome/browser/resources/new_tab_page/voice_search_overlay.ts +++ b/chrome/browser/resources/new_tab_page/voice_search_overlay.ts
@@ -7,7 +7,7 @@ import 'chrome://resources/cr_elements/cr_button/cr_button.m.js'; import 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.m.js'; -import {html, mixinBehaviors, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {I18nMixin, loadTimeData} from './i18n_setup.js'; import {PageHandlerRemote} from './new_tab_page.mojom-webui.js';
diff --git a/chrome/browser/resources/pdf/BUILD.gn b/chrome/browser/resources/pdf/BUILD.gn index ed28e65..e1d3f49 100644 --- a/chrome/browser/resources/pdf/BUILD.gn +++ b/chrome/browser/resources/pdf/BUILD.gn
@@ -50,9 +50,7 @@ # Build the grdp for Print Preview. generate_grd("build_print_preview_grdp") { # Get all the shared files out of the tsc folder. - input_files = - shared_non_webcomponents_files + shared_webcomponents_files + - print_preview_non_webcomponents_files + print_preview_webcomponents_files + input_files = print_preview_grdp_input_files input_files_base_dir = rebase_path("$target_gen_dir/$tsc_folder", root_build_dir)
diff --git a/chrome/browser/resources/pdf/elements/viewer-zoom-button.js b/chrome/browser/resources/pdf/elements/viewer-zoom-button.ts similarity index 82% rename from chrome/browser/resources/pdf/elements/viewer-zoom-button.js rename to chrome/browser/resources/pdf/elements/viewer-zoom-button.ts index c92425d..8d7db65 100644 --- a/chrome/browser/resources/pdf/elements/viewer-zoom-button.js +++ b/chrome/browser/resources/pdf/elements/viewer-zoom-button.ts
@@ -51,7 +51,6 @@ * Array version of the list of icons. Polymer does not allow array * properties to be set from HTML, so we must use a string property and * perform the conversion manually. - * @private {!Array<string>} */ icons_: { type: Array, @@ -59,7 +58,6 @@ computed: 'computeIconsArray_(icons)', }, - /** @private {!Array<string>} */ tooltips_: { type: Array, computed: 'computeTooltipsArray_(tooltips)', @@ -67,14 +65,12 @@ /** * Icon currently being displayed on the FAB. - * @private */ visibleIcon_: { type: String, computed: 'computeVisibleIcon_(icons_, activeIndex)', }, - /** @private */ visibleTooltip_: { type: String, computed: 'computeVisibleTooltip_(tooltips_, activeIndex)', @@ -82,40 +78,39 @@ }; } - /** - * @return {!Array<string>} Array of icon name strings - * @private - */ - computeIconsArray_() { + activeIndex: number; + disabled: boolean; + icons: string; + keyboardNavigationActive: boolean; + tooltips: string; + private icons_: string[]; + private tooltips_: string[]; + private visibleIcon_: string; + private visibleTooltip_: string; + + private computeIconsArray_(): string[] { return this.icons.split(' '); } - /** - * @return {!Array<string>} Array of tooltip strings - * @private - */ - computeTooltipsArray_() { + private computeTooltipsArray_(): string[] { return this.tooltips.split(','); } /** - * @return {string} Icon name for the currently visible icon. - * @private + * @return Icon name for the currently visible icon. */ - computeVisibleIcon_() { + private computeVisibleIcon_(): string { return this.icons_[this.activeIndex]; } /** - * @return {string} Tooltip for the currently visible icon. - * @private + * @return Tooltip for the currently visible icon. */ - computeVisibleTooltip_() { + private computeVisibleTooltip_(): string { return this.tooltips_ === undefined ? '' : this.tooltips_[this.activeIndex]; } - /** @private */ - fireClick_() { + private fireClick_() { // We cannot attach an on-click to the entire viewer-zoom-button, as this // will include clicks on the margins. Instead, proxy clicks on the FAB // through.
diff --git a/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar.html b/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar.html index 5d0b33415..97e1002 100644 --- a/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar.html +++ b/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar.html
@@ -49,7 +49,7 @@ } </style> <div id="zoom-buttons"> - <viewer-zoom-button id="fit-button" on-fabclick="fitToggle" + <viewer-zoom-button id="fitButton" on-fabclick="fitToggle" tooltips="$i18n{tooltipFitToPage},$i18n{tooltipFitToWidth}" keyboard-navigation-active="[[keyboardNavigationActive_]]" icons="pdf:fullscreen-exit cr:fullscreen">
diff --git a/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar.js b/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar.ts similarity index 81% rename from chrome/browser/resources/pdf/elements/viewer-zoom-toolbar.js rename to chrome/browser/resources/pdf/elements/viewer-zoom-toolbar.ts index 932b640..a408d0c7 100644 --- a/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar.js +++ b/chrome/browser/resources/pdf/elements/viewer-zoom-toolbar.ts
@@ -13,12 +13,20 @@ import {FittingType} from '../constants.js'; +import {ViewerZoomButtonElement} from './viewer-zoom-button.js'; + const FIT_TO_PAGE_BUTTON_STATE = 0; const FIT_TO_WIDTH_BUTTON_STATE = 1; const TWO_UP_VIEW_DISABLED_STATE = 0; const TWO_UP_VIEW_ENABLED_STATE = 1; +export interface ViewerZoomToolbarElement { + $: { + fitButton: ViewerZoomButtonElement, + }; +} + export class ViewerZoomToolbarElement extends PolymerElement { static get is() { return 'viewer-zoom-toolbar'; @@ -30,13 +38,11 @@ static get properties() { return { - /** @private */ keyboardNavigationActive_: { type: Boolean, value: false, }, - /** @private */ visible_: { type: Boolean, reflectToAttribute: true, @@ -44,11 +50,9 @@ }; } - constructor() { - super(); - } + private keyboardNavigationActive_: boolean; + private visible_: boolean; - /** @override */ ready() { super.ready(); this.addEventListener('focus', this.onFocus_); @@ -56,23 +60,16 @@ this.addEventListener('pointerdown', this.onPointerDown_); } - /** - * @param {string} eventName - * @param {*=} detail - * @private - */ - fire_(eventName, detail) { + private fire_(eventName: string, detail?: any): void { this.dispatchEvent( new CustomEvent(eventName, {bubbles: true, composed: true, detail})); } - /** @return {boolean} */ - isVisible() { + isVisible(): boolean { return this.visible_; } - /** @private */ - onFocus_() { + private onFocus_(): void { if (this.visible_) { return; } @@ -83,14 +80,12 @@ this.show(); } - /** @private */ - onKeyUp_() { + private onKeyUp_(): void { this.fire_('keyboard-navigation-active', true); this.keyboardNavigationActive_ = true; } - /** @private */ - onPointerDown_() { + private onPointerDown_(): void { this.fire_('keyboard-navigation-active', false); this.keyboardNavigationActive_ = false; } @@ -98,7 +93,7 @@ /** Handle clicks of the fit-button. */ fitToggle() { this.fireFitToChangedEvent_( - this.$['fit-button'].activeIndex === FIT_TO_WIDTH_BUTTON_STATE ? + this.$.fitButton.activeIndex === FIT_TO_WIDTH_BUTTON_STATE ? FittingType.FIT_TO_WIDTH : FittingType.FIT_TO_PAGE); } @@ -108,7 +103,7 @@ this.fitToggle(); // Toggle the button state since there was no mouse click. - const button = this.$['fit-button']; + const button = this.$.fitButton; button.activeIndex = (button.activeIndex === FIT_TO_WIDTH_BUTTON_STATE ? FIT_TO_PAGE_BUTTON_STATE : @@ -117,22 +112,21 @@ /** * Handle forcing zoom via scripting to a fitting type. - * @param {!FittingType} fittingType Page fitting type to force. + * @param fittingType Page fitting type to force. */ - forceFit(fittingType) { + forceFit(fittingType: FittingType) { // Set the button state since there was no mouse click. const nextButtonState = (fittingType === FittingType.FIT_TO_WIDTH ? FIT_TO_PAGE_BUTTON_STATE : FIT_TO_WIDTH_BUTTON_STATE); - this.$['fit-button'].activeIndex = nextButtonState; + this.$.fitButton.activeIndex = nextButtonState; } /** * Fire a 'fit-to-changed' {CustomEvent} with the given FittingType as detail. - * @param {!FittingType} fittingType to include as payload. - * @private + * @param fittingType to include as payload. */ - fireFitToChangedEvent_(fittingType) { + private fireFitToChangedEvent_(fittingType: FittingType) { this.fire_('fit-to-changed', fittingType); } @@ -156,10 +150,10 @@ /** * Offsets the toolbar position so that it doesn't move if scrollbars appear. - * @param {!{horizontal: boolean, vertical: boolean}} hasScrollbars - * @param {number} scrollbarWidth */ - shiftForScrollbars(hasScrollbars, scrollbarWidth) { + shiftForScrollbars( + hasScrollbars: {horizontal: boolean, vertical: boolean}, + scrollbarWidth: number) { const verticalScrollbarWidth = hasScrollbars.vertical ? scrollbarWidth : 0; const horizontalScrollbarWidth = hasScrollbars.horizontal ? scrollbarWidth : 0; @@ -182,4 +176,10 @@ } } +declare global { + interface HTMLElementTagNameMap { + 'viewer-zoom-toolbar': ViewerZoomToolbarElement; + } +} + customElements.define(ViewerZoomToolbarElement.is, ViewerZoomToolbarElement);
diff --git a/chrome/browser/resources/pdf/pdf.gni b/chrome/browser/resources/pdf/pdf.gni index 329b90d..713df366 100644 --- a/chrome/browser/resources/pdf/pdf.gni +++ b/chrome/browser/resources/pdf/pdf.gni
@@ -57,8 +57,8 @@ # Preview. print_preview_webcomponents_files = [ "elements/viewer-page-indicator.js", - "elements/viewer-zoom-button.js", - "elements/viewer-zoom-toolbar.js", + "elements/viewer-zoom-button.ts", + "elements/viewer-zoom-toolbar.ts", "pdf_viewer_pp.js", ] @@ -89,3 +89,13 @@ "elements/viewer-error-dialog.js", "pdf_viewer_shared_style.js", ] + +# Print Preview's GRDP needs all the shared + Print Preview specific files. +print_preview_grdp_ts_files = + shared_non_webcomponents_files + shared_webcomponents_files + + print_preview_non_webcomponents_files + print_preview_webcomponents_files + +print_preview_grdp_input_files = [] +foreach(f, print_preview_grdp_ts_files) { + print_preview_grdp_input_files += [ string_replace(f, ".ts", ".js") ] +}
diff --git a/chrome/browser/resources/pdf/pdf_internal_plugin_wrapper.js b/chrome/browser/resources/pdf/pdf_internal_plugin_wrapper.js index 08392c1..1f467f7 100644 --- a/chrome/browser/resources/pdf/pdf_internal_plugin_wrapper.js +++ b/chrome/browser/resources/pdf/pdf_internal_plugin_wrapper.js
@@ -88,7 +88,11 @@ break; case 'syncScrollToRemote': - window.scrollTo(e.data.x, e.data.y); + window.scrollTo({ + left: e.data.x, + top: e.data.y, + behavior: e.data.isSmooth ? 'smooth' : 'auto', + }); channel.port1.postMessage({ type: 'ackScrollToRemote', x: window.scrollX,
diff --git a/chrome/browser/resources/pdf/pdf_scripting_api.d.ts b/chrome/browser/resources/pdf/pdf_scripting_api.d.ts deleted file mode 100644 index df22841..0000000 --- a/chrome/browser/resources/pdf/pdf_scripting_api.d.ts +++ /dev/null
@@ -1,26 +0,0 @@ -// Copyright 2021 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. - -// Minimal TypeScript definitions for Print Preview. -// TODO(rbpotter): Remove this file once pdf_scripting_api.js is migrated to -// TypeScript. - -export interface PDFPlugin extends HTMLIFrameElement { - darkModeChanged(darkMode: boolean): void; - hideToolbar(): void; - loadPreviewPage(url: string, index: number): void; - resetPrintPreviewMode( - url: string, color: boolean, pages: number[], modifiable: boolean): void; - scrollPosition(x: number, y: number): void; - sendKeyEvent(e: KeyboardEvent): void; - setKeyEventCallback(callback: (e: KeyboardEvent) => void): void; - setLoadCompleteCallback(callback: (success: boolean) => void): void; - setViewportChangedCallback( - callback: - (pageX: number, pageY: number, pageWidth: number, - viewportWidth: number, viewportHeight: number) => void): void; -} - -export function PDFCreateOutOfProcessPlugin( - src: string, baseUrl: string): PDFPlugin;
diff --git a/chrome/browser/resources/pdf/pdf_scripting_api.js b/chrome/browser/resources/pdf/pdf_scripting_api.js index 7887f42..dea96f9d 100644 --- a/chrome/browser/resources/pdf/pdf_scripting_api.js +++ b/chrome/browser/resources/pdf/pdf_scripting_api.js
@@ -2,6 +2,53 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +/** @interface */ +export class PDFPlugin extends HTMLIFrameElement { + /** @param {boolean} darkMode */ + darkModeChanged(darkMode) {} + + hideToolbar() {} + /** + * @param {string} url + * @param {number} index + */ + loadPreviewPage(url, index) {} + + /** + * @param {string} url + * @param {boolean} color + * @param {Array<number>} pages + * @param {boolean} modifiable + */ + resetPrintPreviewMode(url, color, pages, modifiable) {} + + /** + * @param {number} x + * @param {number} y + */ + scrollPosition(x, y) {} + + /** + * @param {!KeyboardEvent} e + */ + sendKeyEvent(e) {} + + /** + * @param {function(KeyboardEvent): void} callback + */ + setKeyEventCallback(callback) {} + + /** + * @param {function(success): void} callback + */ + setLoadCompleteCallback(callback) {} + + /** + * @param {function(number, number, number, number, number): void} callback + */ + setViewportChangedCallback(callback) {} +} + /** * Turn a dictionary received from postMessage into a key event. * @param {Object} dict A dictionary representing the key event. @@ -318,7 +365,7 @@ * by print preview and accessibility. * @param {string} src the source URL of the PDF to load initially. * @param {string} baseUrl the base URL of the PDF viewer - * @return {!HTMLIFrameElement} the iframe element containing the PDF viewer. + * @return {!PDFPlugin} the iframe element containing the PDF viewer. */ export function PDFCreateOutOfProcessPlugin(src, baseUrl) { const client = new PDFScriptingAPI(window, null); @@ -341,5 +388,5 @@ iframe.setLoadCompleteCallback = client.setLoadCompleteCallback.bind(client); iframe.setViewportChangedCallback = client.setViewportChangedCallback.bind(client); - return iframe; + return /** @type {!PDFPlugin} */ (iframe); }
diff --git a/chrome/browser/resources/pdf/pdf_viewer.js b/chrome/browser/resources/pdf/pdf_viewer.js index 4d45dfa..41d829ae 100644 --- a/chrome/browser/resources/pdf/pdf_viewer.js +++ b/chrome/browser/resources/pdf/pdf_viewer.js
@@ -812,6 +812,10 @@ this.viewportScroller.setEnableScrolling( /** @type {{ isSelecting: boolean }} */ (data).isSelecting); return; + case 'setSmoothScrolling': + this.viewport.setSmoothScrolling( + /** @type {{ smoothScrolling: boolean }} */ (data).smoothScrolling); + return; case 'formFocusChange': this.isFormFieldFocused_ = /** @type {{ focused: boolean }} */ (data).focused;
diff --git a/chrome/browser/resources/pdf/viewport.js b/chrome/browser/resources/pdf/viewport.js index d3e8d34..283524c 100644 --- a/chrome/browser/resources/pdf/viewport.js +++ b/chrome/browser/resources/pdf/viewport.js
@@ -129,6 +129,9 @@ /** @private {number} */ this.prevScale_ = 1; + /** @private {boolean} */ + this.smoothScrolling_ = false; + /** @private {!PinchPhase} */ this.pinchPhase_ = PinchPhase.NONE; @@ -500,9 +503,10 @@ /** * Scroll the viewport to the specified position. * @param {!Point} position The position to scroll to. + * @param {boolean} isSmooth Whether to scroll smoothly. */ - setPosition(position) { - this.scrollContent_.scrollTo(position.x, position.y); + setPosition(position, isSmooth = false) { + this.scrollContent_.scrollTo(position.x, position.y, isSmooth); } /** @return {!Size} The size of the viewport. */ @@ -1122,10 +1126,12 @@ const MIN_FRACTION_TO_STEP_WHEN_PAGING = 0.875; const scrollOffset = (isDown ? 1 : -1) * this.size.height * MIN_FRACTION_TO_STEP_WHEN_PAGING; - this.setPosition({ - x: this.position.x, - y: this.position.y + scrollOffset, - }); + this.setPosition( + { + x: this.position.x, + y: this.position.y + scrollOffset, + }, + this.smoothScrolling_); } this.window_.dispatchEvent(new CustomEvent('scroll-proceeded-for-testing')); @@ -1149,10 +1155,12 @@ e.preventDefault(); } else if (isCrossFrameKeyEvent(e)) { const scrollOffset = (isRight ? 1 : -1) * SCROLL_INCREMENT; - this.setPosition({ - x: this.position.x + scrollOffset, - y: this.position.y, - }); + this.setPosition( + { + x: this.position.x + scrollOffset, + y: this.position.y, + }, + this.smoothScrolling_); } } @@ -1408,6 +1416,13 @@ } /** + * @param {boolean} isSmooth + */ + setSmoothScrolling(isSmooth) { + this.smoothScrolling_ = isSmooth; + } + + /** * @param {!PartialPoint} point The position to which to scroll the viewport. */ scrollTo(point) { @@ -1870,8 +1885,9 @@ * Scrolls to the given coordinates. * @param {number} x * @param {number} y + * @param {boolean} isSmooth Whether to scroll smoothly. */ - scrollTo(x, y) { + scrollTo(x, y, isSmooth = false) { if (this.unseasonedPlugin_) { // TODO(crbug.com/1277228): Can get NaN if zoom calculations divide by 0. x = Number.isNaN(x) ? 0 : x; @@ -1907,6 +1923,7 @@ type: 'syncScrollToRemote', x: this.scrollLeft_, y: this.scrollTop_, + isSmooth: isSmooth, }); } else { this.container_.scrollTo(x, y);
diff --git a/chrome/browser/resources/print_preview/BUILD.gn b/chrome/browser/resources/print_preview/BUILD.gn index 15208628..f2765d7 100644 --- a/chrome/browser/resources/print_preview/BUILD.gn +++ b/chrome/browser/resources/print_preview/BUILD.gn
@@ -100,11 +100,6 @@ output_dir = "$root_gen_dir/chrome" } -copy("copy_pdf_definitions") { - sources = [ "../pdf/pdf_scripting_api.d.ts" ] - outputs = [ "$target_gen_dir/$preprocess_folder/pdf/{{source_file_part}}" ] -} - ts_library("build_ts") { root_dir = "$target_gen_dir/$preprocess_folder" out_dir = "$target_gen_dir/tsc" @@ -113,17 +108,18 @@ in_files = web_component_files + non_web_component_files deps = [ + "//chrome/browser/resources/pdf:build_ts", "//third_party/polymer/v3_0:library", "//ui/webui/resources:library", ] - definitions = [ - "//tools/typescript/definitions/chrome_send.d.ts", - "$target_gen_dir/$preprocess_folder/pdf/pdf_scripting_api.d.ts", - ] + definitions = [ "//tools/typescript/definitions/chrome_send.d.ts" ] + + path_mappings = [ "chrome://print/pdf/*|" + rebase_path( + "$root_gen_dir/chrome/browser/resources/pdf/tsc/*", + target_gen_dir) ] extra_deps = [ - ":copy_pdf_definitions", ":preprocess", ":preprocess_generated", ]
diff --git a/chrome/browser/resources/print_preview/print_preview.ts b/chrome/browser/resources/print_preview/print_preview.ts index cd32eec0..ddf3136 100644 --- a/chrome/browser/resources/print_preview/print_preview.ts +++ b/chrome/browser/resources/print_preview/print_preview.ts
@@ -4,6 +4,7 @@ export {CrButtonElement} from 'chrome://resources/cr_elements/cr_button/cr_button.m.js'; export {CrCheckboxElement} from 'chrome://resources/cr_elements/cr_checkbox/cr_checkbox.m.js'; +export {CrIconButtonElement} from 'chrome://resources/cr_elements/cr_icon_button/cr_icon_button.m.js'; export {PluralStringProxyImpl as PrintPreviewPluralStringProxyImpl} from 'chrome://resources/js/plural_string_proxy.js'; export {IronMeta} from 'chrome://resources/polymer/v3_0/iron-meta/iron-meta.js'; export {CloudPrintInterface, CloudPrintInterfaceEventType} from './cloud_print_interface.js'; @@ -35,7 +36,6 @@ export {PinModeRestriction} from './native_layer.js'; export {NativeLayerCros, NativeLayerCrosImpl, PrinterSetupResponse, PrintServersConfig} from './native_layer_cros.js'; // </if> -export {PDFPlugin} from './pdf/pdf_scripting_api.js'; export {getSelectDropdownBackground, Range} from './print_preview_utils.js'; export {PrintPreviewAdvancedSettingsDialogElement} from './ui/advanced_settings_dialog.js'; export {PrintPreviewAdvancedSettingsItemElement} from './ui/advanced_settings_item.js';
diff --git a/chrome/browser/resources/print_preview/ui/destination_dropdown_cros.html b/chrome/browser/resources/print_preview/ui/destination_dropdown_cros.html index 0473ed0..a7ebdfc 100644 --- a/chrome/browser/resources/print_preview/ui/destination_dropdown_cros.html +++ b/chrome/browser/resources/print_preview/ui/destination_dropdown_cros.html
@@ -6,7 +6,7 @@ #destinationDropdown:focus { border-radius: 4px; - box-shadow: 0 0 0 2px rgba(var(--google-blue-600-rgb), .4); + box-shadow: 0 0 0 2px rgba(var(--cros-focus-ring-color-rgb), .4); } #destinationDropdown, @@ -15,13 +15,13 @@ } iron-dropdown { - border: 0.5px solid rgba(0, 0, 0, 0.5); + border: none; max-height: 270px; } iron-dropdown [slot='dropdown-content'] { - background-color: white; - box-shadow: 0 2px 6px var(--google-grey-600); + background-color: var(--cros-bg-color-elevation-2); + box-shadow: var(--cros-elevation-2-shadow); padding: 8px 0; } @@ -66,8 +66,17 @@ outline: none; } + /* Highlight colors align with highlight in other dropdowns. */ .list-item.highlighted { - background-color: var(--google-blue-100); + background-color: rgb(203, 228, 250); + } + + @media (prefers-color-scheme: dark) { + .list-item.highlighted { + --iron-icon-fill-color: currentColor; + background-color: rgb(153, 200, 254); + color: var(--cros-color-primary-inverted); + } } #destination-icon-box, @@ -77,7 +86,7 @@ #destination-display-container { align-items: center; - background-color: var(--google-grey-100); + background-color: var(--cros-textfield-background-color); border-radius: 4px; cursor: pointer; display: flex;
diff --git a/chrome/browser/resources/print_preview/ui/destination_select_cros.html b/chrome/browser/resources/print_preview/ui/destination_select_cros.html index b0c137c..c46ecc97b 100644 --- a/chrome/browser/resources/print_preview/ui/destination_select_cros.html +++ b/chrome/browser/resources/print_preview/ui/destination_select_cros.html
@@ -1,6 +1,6 @@ <style include="print-preview-shared throbber destination-select cr-hidden-style"> :host([is-current-destination-cros-local_]) #statusText { - color: var(--google-red-600); + color: var(--cros-text-color-alert); font-size: calc(10 / 13 * 1em); overflow: hidden; padding: 0;
diff --git a/chrome/browser/resources/print_preview/ui/plugin_proxy.ts b/chrome/browser/resources/print_preview/ui/plugin_proxy.ts index bd9f147..3aaac8d8 100644 --- a/chrome/browser/resources/print_preview/ui/plugin_proxy.ts +++ b/chrome/browser/resources/print_preview/ui/plugin_proxy.ts
@@ -2,10 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import {PDFCreateOutOfProcessPlugin, PDFPlugin} from 'chrome://print/pdf/pdf_scripting_api.js'; import {assert} from 'chrome://resources/js/assert_ts.js'; -import {PDFCreateOutOfProcessPlugin, PDFPlugin} from '../pdf/pdf_scripting_api.js'; - export type ViewportChangedCallback = (pageX: number, pageY: number, pageWidth: number, viewportWidth: number, viewportHeight: number) => void;
diff --git a/chrome/browser/resources/settings/chromeos/os_apps_page/app_management_page/fake_page_handler.js b/chrome/browser/resources/settings/chromeos/os_apps_page/app_management_page/fake_page_handler.js index cd66a622..c1f29e0 100644 --- a/chrome/browser/resources/settings/chromeos/os_apps_page/app_management_page/fake_page_handler.js +++ b/chrome/browser/resources/settings/chromeos/os_apps_page/app_management_page/fake_page_handler.js
@@ -307,6 +307,14 @@ /** * @param {string} appId + * @param {apps.mojom.RunOnOsLoginMode} runOnOsLoginMode + */ + setRunOnOsLoginMode(appId, runOnOsLoginMode) { + assertNotReached(); + } + + /** + * @param {string} appId * @return {!Promise<{ appIds: !Array<!string> }>} */ async getOverlappingPreferredApps(appId) {
diff --git a/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.html b/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.html index b42c785..c2281ad8 100644 --- a/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.html +++ b/chrome/browser/resources/settings/chromeos/os_people_page/os_people_page.html
@@ -108,7 +108,7 @@ --> <template is="dom-if" if="[[syncSettingsCategorizationEnabled_]]"> <template is="dom-if" route-path="/osSync"> - <settings-subpage page-title="$i18n{syncAndNonPersonalizedServices}" + <settings-subpage page-title="$i18n{syncAdvancedPageTitle}" learn-more-url="$i18n{syncAndGoogleServicesLearnMoreURL}"> <os-sync-controls sync-status="[[syncStatus]]" profile-icon-url="[[profileIconUrl_]]"
diff --git a/chrome/browser/segmentation_platform/segmentation_platform_config.cc b/chrome/browser/segmentation_platform/segmentation_platform_config.cc index cf2fd97..c073d3c 100644 --- a/chrome/browser/segmentation_platform/segmentation_platform_config.cc +++ b/chrome/browser/segmentation_platform/segmentation_platform_config.cc
@@ -14,6 +14,7 @@ #include "components/segmentation_platform/public/features.h" #if BUILDFLAG(IS_ANDROID) +#include "base/metrics/field_trial_params.h" #include "chrome/browser/feature_guide/notifications/feature_notification_guide_service.h" #include "chrome/browser/flags/android/cached_feature_flags.h" #include "chrome/browser/flags/android/chrome_feature_list.h"
diff --git a/chrome/browser/ssl/sct_reporting_service.cc b/chrome/browser/ssl/sct_reporting_service.cc index dbaaa2b..515403a 100644 --- a/chrome/browser/ssl/sct_reporting_service.cc +++ b/chrome/browser/ssl/sct_reporting_service.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/ssl/sct_reporting_service.h" +#include "base/feature_list.h" #include "base/no_destructor.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/net/system_network_context_manager.h" @@ -96,26 +97,36 @@ namespace { void SetSCTAuditingEnabledForStoragePartition( - bool enabled, + network::mojom::SCTAuditingMode mode, content::StoragePartition* storage_partition) { - storage_partition->GetNetworkContext()->SetSCTAuditingEnabled(enabled); + storage_partition->GetNetworkContext()->SetSCTAuditingMode(mode); } } // namespace -void SCTReportingService::SetReportingEnabled(bool enabled) { - // Iterate over StoragePartitions for this Profile, and for each get the - // NetworkContext and enable or disable SCT auditing. - profile_->ForEachStoragePartition( - base::BindRepeating(&SetSCTAuditingEnabledForStoragePartition, enabled)); - - if (!enabled) - content::GetNetworkService()->ClearSCTAuditingCache(); +network::mojom::SCTAuditingMode SCTReportingService::GetReportingMode() { + if (profile_->IsOffTheRecord() || + !base::FeatureList::IsEnabled(features::kSCTAuditing)) { + return network::mojom::SCTAuditingMode::kDisabled; + } + if (safe_browsing::IsSafeBrowsingEnabled(pref_service_)) { + if (safe_browsing::IsExtendedReportingEnabled(pref_service_)) { + return network::mojom::SCTAuditingMode::kEnhancedSafeBrowsingReporting; + } + if (base::FeatureList::IsEnabled(features::kSCTAuditingHashdance)) { + return network::mojom::SCTAuditingMode::kHashdance; + } + } + return network::mojom::SCTAuditingMode::kDisabled; } void SCTReportingService::OnPreferenceChanged() { - const bool enabled = base::FeatureList::IsEnabled(features::kSCTAuditing) && - safe_browsing_service_ && - safe_browsing_service_->enabled_by_prefs() && - safe_browsing::IsExtendedReportingEnabled(pref_service_); - SetReportingEnabled(enabled); + network::mojom::SCTAuditingMode mode = GetReportingMode(); + + // Iterate over StoragePartitions for this Profile, and for each get the + // NetworkContext and set the SCT auditing mode. + profile_->ForEachStoragePartition( + base::BindRepeating(&SetSCTAuditingEnabledForStoragePartition, mode)); + + if (mode == network::mojom::SCTAuditingMode::kDisabled) + content::GetNetworkService()->ClearSCTAuditingCache(); }
diff --git a/chrome/browser/ssl/sct_reporting_service.h b/chrome/browser/ssl/sct_reporting_service.h index 047aafa..08bc589 100644 --- a/chrome/browser/ssl/sct_reporting_service.h +++ b/chrome/browser/ssl/sct_reporting_service.h
@@ -19,6 +19,10 @@ class SafeBrowsingService; } +namespace network::mojom { +enum class SCTAuditingMode; +} // namespace network::mojom + // This class observes SafeBrowsing preference changes to enable/disable // reporting. It does this by subscribing to changes in SafeBrowsing and // extended reporting preferences. It also handles configuring SCT auditing in @@ -35,8 +39,8 @@ SCTReportingService(const SCTReportingService&) = delete; const SCTReportingService& operator=(const SCTReportingService&) = delete; - // Enables or disables reporting. - void SetReportingEnabled(bool enabled); + // Returns the reporting mode for the current profile settings. + network::mojom::SCTAuditingMode GetReportingMode(); private: void OnPreferenceChanged();
diff --git a/chrome/browser/themes/browser_theme_pack.cc b/chrome/browser/themes/browser_theme_pack.cc index 6c775c61..ecc6ab0 100644 --- a/chrome/browser/themes/browser_theme_pack.cc +++ b/chrome/browser/themes/browser_theme_pack.cc
@@ -617,12 +617,17 @@ } // namespace internal BrowserThemePack::~BrowserThemePack() { - if (data_pack_) { - auto task_runner = base::ThreadPool::CreateSequencedTaskRunner( - {base::MayBlock(), base::TaskPriority::BEST_EFFORT}); - DCHECK(task_runner); - task_runner->DeleteSoon(FROM_HERE, data_pack_.release()); + DCHECK(!data_pack_ || using_data_pack_); + + if (using_data_pack_) { + if (data_pack_) { + auto task_runner = base::ThreadPool::CreateSequencedTaskRunner( + {base::MayBlock(), base::TaskPriority::BEST_EFFORT}); + DCHECK(task_runner); + task_runner->DeleteSoon(FROM_HERE, std::move(data_pack_)); + } } else { + // When not using a data_pack, the memory is allocated and must be freed. delete header_; delete [] tints_; delete [] colors_; @@ -750,17 +755,24 @@ scoped_refptr<BrowserThemePack> pack( new BrowserThemePack(ThemeType::EXTENSION)); pack->set_extension_id(expected_id); + + // The data pack is loaded in a local variable to be released synchronously + // in case of failures (see https://crbug.com/1292632). // Scale factor parameter is moot as data pack has image resources for all // supported scale factors. - pack->data_pack_ = std::make_unique<ui::DataPack>(ui::kScaleFactorNone); + std::unique_ptr<ui::DataPack> data_pack = + std::make_unique<ui::DataPack>(ui::kScaleFactorNone); - if (!pack->data_pack_->LoadFromPath(path)) { + // The browser theme pack is using a data pack. + pack->using_data_pack_ = true; + + if (!data_pack->LoadFromPath(path)) { LOG(ERROR) << "Failed to load theme data pack."; return nullptr; } base::StringPiece pointer; - if (!pack->data_pack_->GetStringPiece(kHeaderID, &pointer)) + if (!data_pack->GetStringPiece(kHeaderID, &pointer)) return nullptr; pack->header_ = reinterpret_cast<BrowserThemePackHeader*>(const_cast<char*>( pointer.data())); @@ -778,27 +790,27 @@ return nullptr; } - if (!pack->data_pack_->GetStringPiece(kTintsID, &pointer)) + if (!data_pack->GetStringPiece(kTintsID, &pointer)) return nullptr; pack->tints_ = reinterpret_cast<TintEntry*>(const_cast<char*>( pointer.data())); - if (!pack->data_pack_->GetStringPiece(kColorsID, &pointer)) + if (!data_pack->GetStringPiece(kColorsID, &pointer)) return nullptr; pack->colors_ = reinterpret_cast<ColorPair*>(const_cast<char*>(pointer.data())); - if (!pack->data_pack_->GetStringPiece(kDisplayPropertiesID, &pointer)) + if (!data_pack->GetStringPiece(kDisplayPropertiesID, &pointer)) return nullptr; pack->display_properties_ = reinterpret_cast<DisplayPropertyPair*>( const_cast<char*>(pointer.data())); - if (!pack->data_pack_->GetStringPiece(kSourceImagesID, &pointer)) + if (!data_pack->GetStringPiece(kSourceImagesID, &pointer)) return nullptr; pack->source_images_ = reinterpret_cast<int*>( const_cast<char*>(pointer.data())); - if (!pack->data_pack_->GetStringPiece(kScaleFactorsID, &pointer)) + if (!data_pack->GetStringPiece(kScaleFactorsID, &pointer)) return nullptr; if (!InputScalesValid(pointer, pack->scale_factors_)) { @@ -806,7 +818,11 @@ << "from those supported by platform."; return nullptr; } + + // The loaded pack is valid and can be used as a theme pack. + pack->data_pack_ = std::move(data_pack); pack->is_valid_ = true; + return pack; }
diff --git a/chrome/browser/themes/browser_theme_pack.h b/chrome/browser/themes/browser_theme_pack.h index 53e45fc..d89a698 100644 --- a/chrome/browser/themes/browser_theme_pack.h +++ b/chrome/browser/themes/browser_theme_pack.h
@@ -286,6 +286,7 @@ // Data pack, if we have one. std::unique_ptr<ui::DataPack> data_pack_; + bool using_data_pack_ = false; // All structs written to disk need to be packed; no alignment tricks here, // please.
diff --git a/chrome/browser/themes/theme_service.cc b/chrome/browser/themes/theme_service.cc index ba2d2b6..ee7e20f0 100644 --- a/chrome/browser/themes/theme_service.cc +++ b/chrome/browser/themes/theme_service.cc
@@ -16,6 +16,7 @@ #include "base/location.h" #include "base/memory/raw_ptr.h" #include "base/memory/ref_counted_memory.h" +#include "base/metrics/histogram_functions.h" #include "base/metrics/user_metrics.h" #include "base/one_shot_event.h" #include "base/strings/string_number_conversions.h" @@ -27,6 +28,7 @@ #include "base/task/single_thread_task_runner.h" #include "base/task/thread_pool.h" #include "base/threading/thread_task_runner_handle.h" +#include "base/trace_event/trace_event.h" #include "build/build_config.h" #include "chrome/browser/browser_features.h" #include "chrome/browser/extensions/extension_service.h" @@ -78,7 +80,7 @@ // Removing unused themes is done after a delay because there is no // reason to do it at startup. // ExtensionService::GarbageCollectExtensions() does something similar. -const int kRemoveUnusedThemesStartupDelay = 30; +constexpr base::TimeDelta kRemoveUnusedThemesStartupDelay = base::Seconds(30); bool g_dont_write_theme_pack_for_testing = false; @@ -136,7 +138,10 @@ const base::FilePath& directory) { if (g_dont_write_theme_pack_for_testing) return; - pack->WriteToDisk(directory.Append(chrome::kThemePackFilename)); + + const bool success = + pack->WriteToDisk(directory.Append(chrome::kThemePackFilename)); + base::UmaHistogramBoolean("Browser.ThemeService.WritePackToDisk", success); } } // namespace @@ -521,7 +526,7 @@ } } // TODO: Garbage collect all unused themes. This method misses themes which - // are installed but not loaded because they are blacklisted by a management + // are installed but not loaded because they are blocked by a management // policy provider. for (size_t i = 0; i < remove_list.size(); ++i) { @@ -692,21 +697,16 @@ return; } - bool loaded_pack = false; - PrefService* prefs = profile_->GetPrefs(); base::FilePath path = prefs->GetFilePath(prefs::kCurrentThemePackFilename); // If we don't have a file pack, we're updating from an old version. if (!path.empty()) { path = path.Append(chrome::kThemePackFilename); SwapThemeSupplier(BrowserThemePack::BuildFromDataPack(path, current_id)); - if (theme_supplier_) - loaded_pack = true; - } - - if (loaded_pack) { - base::RecordAction(base::UserMetricsAction("Themes.Loaded")); - set_ready(); + if (theme_supplier_) { + base::RecordAction(base::UserMetricsAction("Themes.Loaded")); + set_ready(); + } } // Else: wait for the extension service to be ready so that the theme pack // can be recreated from the extension. @@ -745,10 +745,12 @@ FROM_HERE, base::BindOnce(&ThemeService::RemoveUnusedThemes, weak_ptr_factory_.GetWeakPtr()), - base::Seconds(kRemoveUnusedThemesStartupDelay)); + kRemoveUnusedThemesStartupDelay); } void ThemeService::MigrateTheme() { + TRACE_EVENT0("browser", "ThemeService::MigrateTheme"); + extensions::ExtensionRegistry* registry = extensions::ExtensionRegistry::Get(profile_); const extensions::Extension* extension = @@ -756,10 +758,12 @@ GetThemeID(), extensions::ExtensionRegistry::ENABLED) : nullptr; if (extension) { - DLOG(ERROR) << "Migrating theme"; // Theme migration is done on the UI thread. Blocking the UI from appearing // until it's ready is deemed better than showing a blip of the default // theme. + TRACE_EVENT0("browser", "ThemeService::MigrateTheme - BuildFromExtension"); + DLOG(ERROR) << "Migrating theme"; + scoped_refptr<BrowserThemePack> pack( new BrowserThemePack(CustomThemeSupplier::ThemeType::EXTENSION)); BrowserThemePack::BuildFromExtension(extension, pack.get()); @@ -826,7 +830,7 @@ if (!extension) return; - // Write the packed file to disk. + // Schedule the writing of the packed file to disk. extensions::GetExtensionFileTaskRunner()->PostTask( FROM_HERE, base::BindOnce(&WritePackToDiskCallback, base::RetainedRef(pack), extension->path()));
diff --git a/chrome/browser/ui/android/start_surface/start_surface_android.cc b/chrome/browser/ui/android/start_surface/start_surface_android.cc index 5f594b5..7ac73de 100644 --- a/chrome/browser/ui/android/start_surface/start_surface_android.cc +++ b/chrome/browser/ui/android/start_surface/start_surface_android.cc
@@ -6,6 +6,7 @@ #include "base/android/jni_android.h" #include "base/bind.h" +#include "base/metrics/field_trial_params.h" #include "base/task/post_task.h" #include "base/time/time.h" #include "chrome/android/features/start_surface/jni_headers/StartSurfaceConfiguration_jni.h"
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd index e95bed23..2441997b 100644 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
@@ -5405,8 +5405,11 @@ <message name="IDS_ACCOUNT_SELECTION_SHEET_IDP_SUBHEADER" desc="Sub-heading for Account Selection sheet where user can pick an account to sign up with." translateable="false"> with <ph name="IDENTITY_PROVIDER_URL">%1$s<ex>idp.com</ex></ph> </message> + <message name="IDS_ACCOUNT_SELECTION_DATA_SHARING_CONSENT_NO_LINKS" desc="The consent text shown to the user before sign up." translateable="false"> + To continue, <ph name="PROVIDER_NAME">%1$s<ex>provider.example</ex></ph> will share your name, email, address, and profile picture with this site. + </message> <message name="IDS_ACCOUNT_SELECTION_DATA_SHARING_CONSENT" desc="The consent text shown to the user before sign up." translateable="false"> - To continue, <ph name="PROVIDER_NAME">%1$s<ex>provider.example</ex></ph> will share your name, email, address, and profile picture with this site. See this site's <ph name="BEGIN_LINK1"><link1></ph>privacy policy<ph name="END_LINK1"></link1></ph> and <ph name="BEGIN_LINK2"><link2></ph>terms of service<ph name="END_LINK2"></link2></ph>. + To continue, <ph name="PROVIDER_NAME">%1$s<ex>provider.example</ex></ph> will share your name, email, address, and profile picture with this site. See this site's <ph name="BEGIN_LINK1"><link_privacy_policy></ph>privacy policy<ph name="END_LINK1"></link_privacy_policy></ph> and <ph name="BEGIN_LINK2"><link_terms_of_service></ph>terms of service<ph name="END_LINK2"></link_terms_of_service></ph>. </message> <message name="IDS_ACCOUNT_SELECTION_CONTINUE" desc="Title of the button that continues filling with the only available set of credentials." translateable="false"> @@ -5498,6 +5501,9 @@ </message> <!-- Profile Management strings --> + <message name="IDS_MANAGED_BROWSER" desc="The text label of the chrome://management page in the app menu"> + Managed browser + </message> <message name="IDS_MANAGEMENT" desc="Title of the chrome://management page, which shows whether the account is managed."> Management </message>
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_MANAGED_BROWSER.png.sha1 b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_MANAGED_BROWSER.png.sha1 new file mode 100644 index 0000000..055fbc3 --- /dev/null +++ b/chrome/browser/ui/android/strings/android_chrome_strings_grd/IDS_MANAGED_BROWSER.png.sha1
@@ -0,0 +1 @@ +538d893d710fcb0eb81faf588d841eef2c55e3b2 \ No newline at end of file
diff --git a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionViewBinder.java b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionViewBinder.java index 10d1b96..03a113b 100644 --- a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionViewBinder.java +++ b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionViewBinder.java
@@ -16,6 +16,7 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.text.SpannableString; +import android.text.TextUtils; import android.text.method.LinkMovementMethod; import android.view.View; import android.widget.Button; @@ -27,6 +28,7 @@ import com.google.android.material.color.MaterialColors; +import org.chromium.base.Callback; import org.chromium.chrome.browser.tab.TabLaunchType; import org.chromium.chrome.browser.tabmodel.TabCreator; import org.chromium.chrome.browser.tabmodel.document.TabDelegate; @@ -47,6 +49,9 @@ import org.chromium.ui.util.ColorUtils; import org.chromium.ui.widget.ButtonCompat; +import java.util.ArrayList; +import java.util.List; + /** * Provides functions that map {@link AccountSelectionProperties} changes in a {@link PropertyModel} * to the suitable method in {@link AccountSelectionView}. @@ -172,8 +177,16 @@ tabCreator.launchUrl(url, TabLaunchType.FROM_CHROME_UI); } - static NoUnderlineClickableSpan createLink(Resources r, String url) { - return new NoUnderlineClickableSpan(r, v -> { openTab(url); }); + static SpanApplier.SpanInfo createLink(Resources r, String url, String tag) { + if (TextUtils.isEmpty(url)) return null; + + String startTag = "<" + tag + ">"; + String endTag = "</" + tag + ">"; + Callback<View> onClickCallback = v -> { + openTab(url); + }; + return new SpanApplier.SpanInfo( + startTag, endTag, new NoUnderlineClickableSpan(r, onClickCallback)); } /** @@ -188,17 +201,34 @@ model.get(DataSharingConsentProperties.PROPERTIES); Resources resources = view.getResources(); - NoUnderlineClickableSpan privacyPolicyLink = - createLink(resources, properties.mPrivacyPolicyUrl); - NoUnderlineClickableSpan termsOfServiceLink = - createLink(resources, properties.mTermsOfServiceUrl); + SpanApplier.SpanInfo privacyPolicySpan = + createLink(resources, properties.mPrivacyPolicyUrl, "link_privacy_policy"); + SpanApplier.SpanInfo termsOfServiceSpan = + createLink(resources, properties.mTermsOfServiceUrl, "link_terms_of_service"); + // TODO(crbug.com/1293913): Validate string choices. + int consentTextId = (privacyPolicySpan == null && termsOfServiceSpan == null) + ? R.string.account_selection_data_sharing_consent_no_links + : R.string.account_selection_data_sharing_consent; String consentText = String.format( - view.getContext().getString(R.string.account_selection_data_sharing_consent), - properties.mFormattedIdpUrl); - SpannableString span = SpanApplier.applySpans(consentText, - new SpanApplier.SpanInfo("<link1>", "</link1>", privacyPolicyLink), - new SpanApplier.SpanInfo("<link2>", "</link2>", termsOfServiceLink)); + view.getContext().getString(consentTextId), properties.mFormattedIdpUrl); + + // If the consent text includes the link for the privacy policy or the terms of service, + // and there is no corresponding URL, remove the link tag. + List<SpanApplier.SpanInfo> spans = new ArrayList<>(); + if (privacyPolicySpan == null) { + consentText = consentText.replaceAll("</?link_privacy_policy>", ""); + } else { + spans.add(privacyPolicySpan); + } + if (termsOfServiceSpan == null) { + consentText = consentText.replaceAll("</?link_terms_of_service>", ""); + } else { + spans.add(termsOfServiceSpan); + } + + SpannableString span = + SpanApplier.applySpans(consentText, spans.toArray(new SpanApplier.SpanInfo[0])); TextView textView = view.findViewById(R.id.user_data_sharing_consent); textView.setText(span); textView.setMovementMethod(LinkMovementMethod.getInstance());
diff --git a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionViewTest.java b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionViewTest.java index 674736e..aaba3fe9 100644 --- a/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionViewTest.java +++ b/chrome/browser/ui/android/webid/internal/java/src/org/chromium/chrome/browser/ui/android/webid/AccountSelectionViewTest.java
@@ -329,8 +329,8 @@ DataSharingConsentProperties.Properties properties = new DataSharingConsentProperties.Properties(); properties.mFormattedIdpUrl = idpUrl; - properties.mTermsOfServiceUrl = ""; - properties.mPrivacyPolicyUrl = ""; + properties.mTermsOfServiceUrl = "https://idp.com/tos"; + properties.mPrivacyPolicyUrl = "https://idp.com/privacy"; return new MVCListAdapter.ListItem(AccountSelectionProperties.ItemType.DATA_SHARING_CONSENT, new PropertyModel.Builder(DataSharingConsentProperties.ALL_KEYS)
diff --git a/chrome/browser/ui/app_list/OWNERS b/chrome/browser/ui/app_list/OWNERS index a49fbcde..8a1db8b 100644 --- a/chrome/browser/ui/app_list/OWNERS +++ b/chrome/browser/ui/app_list/OWNERS
@@ -3,6 +3,7 @@ jennyz@chromium.org khmel@chromium.org nancylingwang@chromium.org +tbarzic@chromium.org xiyuan@chromium.org # Mainly for launcher personalization purposes.
diff --git a/chrome/browser/ui/app_list/app_list_sort_browsertest.cc b/chrome/browser/ui/app_list/app_list_sort_browsertest.cc index 778b7604..ccb8b4d 100644 --- a/chrome/browser/ui/app_list/app_list_sort_browsertest.cc +++ b/chrome/browser/ui/app_list/app_list_sort_browsertest.cc
@@ -149,7 +149,7 @@ // Get the last menu item index where the reorder submenu is. views::MenuItemView* reorder_item_view = root_menu->GetSubmenu()->GetLastItem(); - DCHECK_EQ(reorder_item_view->title(), u"Reorder by"); + DCHECK_EQ(reorder_item_view->title(), u"Sort by"); return reorder_item_view; }
diff --git a/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_crostini_tracker.cc b/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_crostini_tracker.cc index 2f7da92..d79443c 100644 --- a/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_crostini_tracker.cc +++ b/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_crostini_tracker.cc
@@ -223,12 +223,23 @@ // Currently Crostini can only be used from the primary profile. In the // future, this may be replaced by some way of matching the container that // runs this app with the user that owns it. - const Profile* primary_account_profile = + Profile* primary_account_profile = ash::ProfileHelper::Get()->GetProfileByAccountId( user_manager::UserManager::Get()->GetPrimaryUser()->GetAccountId()); std::string shelf_app_id = crostini::GetCrostiniShelfAppId( primary_account_profile, exo::GetShellApplicationId(window), exo::GetShellStartupId(window)); + + // When install a new Crostini app and run it directly, Crostini might not get + // the correct app id yet when `window` is created, but use an unregistered + // app id for a short term. Then the unregistered app id is saved in + // InstanceRegistry for `window`. So when the app id is set for `window` + // later, the app id inconsistent DCHECK is hit, which could affect the + // instance saved in InstanceRegistry. To prevent the updating for `window` in + // InstanceRegistry, call MaybeModifyInstance to check the saved app id and + // the expected shelf_app_id, and if they are not consistent, modify the app + // id to use `shelf_app_id`. + MaybeModifyInstance(primary_account_profile, window, shelf_app_id); return shelf_app_id; } @@ -244,3 +255,24 @@ std::make_unique<crostini::ShellSurfaceForceCloseDelegate>(surface, app_name)); } + +void AppServiceAppWindowCrostiniTracker::MaybeModifyInstance( + Profile* profile, + aura::Window* window, + const std::string& app_id) const { + auto* proxy = apps::AppServiceProxyFactory::GetForProfile(profile); + DCHECK(proxy); + auto& instance_registry = proxy->InstanceRegistry(); + std::string old_app_id = instance_registry.GetShelfId(window).app_id; + if (old_app_id.empty() || app_id == old_app_id) + return; + + auto* app_service_instance_helper = + app_service_controller_->app_service_instance_helper(); + DCHECK(app_service_instance_helper); + auto state = instance_registry.GetState(window); + app_service_instance_helper->OnInstances(old_app_id, window, std::string(), + apps::InstanceState::kDestroyed); + app_service_instance_helper->OnInstances(app_id, window, std::string(), + state); +}
diff --git a/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_crostini_tracker.h b/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_crostini_tracker.h index bf03e92..c97a2e77 100644 --- a/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_crostini_tracker.h +++ b/chrome/browser/ui/ash/shelf/app_service/app_service_app_window_crostini_tracker.h
@@ -19,6 +19,8 @@ class Permission; } +class Profile; + // AppServiceAppWindowCrostiniTracker is used to handle Crostini app window // special cases, e.g. CrostiniAppDisplay, Crostini shelf app id, etc. class AppServiceAppWindowCrostiniTracker { @@ -49,6 +51,15 @@ void RegisterCrostiniWindowForForceClose(aura::Window* window, const std::string& app_name); + // Checks the current app id saved in InstanceRegistry for `window`. If the + // save app id is not `app_id`, remove the instance and add it back with + // `app_id` to modify the app id saved in InstanceRegistry. The app id in + // InstanceRegistry can't be modified directly, so we have to remove it first, + // then add it back again. + void MaybeModifyInstance(Profile* profile, + aura::Window* window, + const std::string& app_id) const; + AppServiceAppWindowShelfController* const app_service_controller_; CrostiniAppDisplay crostini_app_display_;
diff --git a/chrome/browser/ui/color/chrome_color_mixers.cc b/chrome/browser/ui/color/chrome_color_mixers.cc index b4140c7b..744d705 100644 --- a/chrome/browser/ui/color/chrome_color_mixers.cc +++ b/chrome/browser/ui/color/chrome_color_mixers.cc
@@ -4,13 +4,53 @@ #include "chrome/browser/ui/color/chrome_color_mixers.h" +#include <memory> + +#include "base/bind.h" +#include "base/containers/fixed_flat_map.h" +#include "base/no_destructor.h" +#include "base/strings/string_piece.h" #include "chrome/browser/ui/color/autofill_color_mixer.h" +#include "chrome/browser/ui/color/chrome_color_id.h" #include "chrome/browser/ui/color/chrome_color_mixer.h" #include "chrome/browser/ui/color/native_chrome_color_mixer.h" #include "chrome/browser/ui/color/omnibox_color_mixer.h" +#include "ui/color/color_provider_utils.h" + +namespace { + +class ChromeColorProviderUtilsCallbacks + : public ui::ColorProviderUtilsCallbacks { + public: + bool ColorIdName(ui::ColorId color_id, + base::StringPiece* color_name) override; +}; + +#include "ui/color/color_id_map_macros.inc" + +bool ChromeColorProviderUtilsCallbacks::ColorIdName( + ui::ColorId color_id, + base::StringPiece* color_name) { + static constexpr const auto chrome_color_id_map = + base::MakeFixedFlatMap<ui::ColorId, const char*>({CHROME_COLOR_IDS}); + auto* i = chrome_color_id_map.find(color_id); + if (i != chrome_color_id_map.cend()) { + *color_name = i->second; + return true; + } + return false; +} + +#include "ui/color/color_id_map_macros.inc" + +} // namespace void AddChromeColorMixers(ui::ColorProvider* provider, const ui::ColorProviderManager::Key& key) { + static base::NoDestructor<ChromeColorProviderUtilsCallbacks> + chrome_color_provider_utils_callbacks; + ui::SetColorProviderUtilsCallbacks( + chrome_color_provider_utils_callbacks.get()); AddChromeColorMixer(provider, key); AddNativeChromeColorMixer(provider, key);
diff --git a/chrome/browser/ui/quick_answers/quick_answers_state_controller.cc b/chrome/browser/ui/quick_answers/quick_answers_state_controller.cc index 73198185..c6f7e6ef 100644 --- a/chrome/browser/ui/quick_answers/quick_answers_state_controller.cc +++ b/chrome/browser/ui/quick_answers/quick_answers_state_controller.cc
@@ -9,7 +9,16 @@ #include "components/prefs/pref_service.h" QuickAnswersStateController::QuickAnswersStateController() - : session_observer_(this) {} + : session_observer_(this) { + // Register pref changes if use session already started. + if (ash::Shell::Get()->session_controller() && + ash::Shell::Get()->session_controller()->IsActiveUserSessionStarted()) { + PrefService* prefs = + ash::Shell::Get()->session_controller()->GetPrimaryUserPrefService(); + DCHECK(prefs); + state_.RegisterPrefChanges(prefs); + } +} QuickAnswersStateController::~QuickAnswersStateController() = default;
diff --git a/chrome/browser/ui/quick_answers/ui/user_consent_view.cc b/chrome/browser/ui/quick_answers/ui/user_consent_view.cc index 3f710b8..d06200a3 100644 --- a/chrome/browser/ui/quick_answers/ui/user_consent_view.cc +++ b/chrome/browser/ui/quick_answers/ui/user_consent_view.cc
@@ -5,10 +5,12 @@ #include "chrome/browser/ui/quick_answers/ui/user_consent_view.h" #include "base/bind.h" +#include "base/command_line.h" #include "chrome/browser/ash/accessibility/accessibility_manager.h" #include "chrome/browser/ui/quick_answers/quick_answers_ui_controller.h" #include "chromeos/strings/grit/chromeos_strings.h" #include "components/vector_icons/vector_icons.h" +#include "content/public/common/content_switches.h" #include "ui/aura/window.h" #include "ui/base/l10n/l10n_util.h" #include "ui/display/screen.h" @@ -331,10 +333,15 @@ params.z_order = ui::ZOrderLevel::kFloatingUIElement; // Parent the widget to the owner of the menu. - auto* active_menu_controller = views::MenuController::GetActiveInstance(); - DCHECK(active_menu_controller && active_menu_controller->owner()); - params.parent = active_menu_controller->owner()->GetNativeView(); - params.child = true; + // Skip the logic for browser tests since the menu controller is not + // available. + if (!base::CommandLine::ForCurrentProcess()->HasSwitch( + switches::kBrowserTest)) { + auto* active_menu_controller = views::MenuController::GetActiveInstance(); + DCHECK(active_menu_controller && active_menu_controller->owner()); + params.parent = active_menu_controller->owner()->GetNativeView(); + params.child = true; + } views::Widget* widget = new views::Widget(); widget->Init(std::move(params));
diff --git a/chrome/browser/ui/search/ntp_user_data_logger.cc b/chrome/browser/ui/search/ntp_user_data_logger.cc index 0ff40bb..14115c0 100644 --- a/chrome/browser/ui/search/ntp_user_data_logger.cc +++ b/chrome/browser/ui/search/ntp_user_data_logger.cc
@@ -7,6 +7,7 @@ #include <algorithm> #include <string> +#include "base/logging.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" #include "base/metrics/user_metrics.h"
diff --git a/chrome/browser/ui/signin/profile_colors_util.cc b/chrome/browser/ui/signin/profile_colors_util.cc index ef3f7016..ac588842 100644 --- a/chrome/browser/ui/signin/profile_colors_util.cc +++ b/chrome/browser/ui/signin/profile_colors_util.cc
@@ -4,6 +4,7 @@ #include "chrome/browser/ui/signin/profile_colors_util.h" +#include "base/callback.h" #include "base/containers/contains.h" #include "base/rand_util.h" #include "build/build_config.h"
diff --git a/chrome/browser/ui/signin/profile_colors_util.h b/chrome/browser/ui/signin/profile_colors_util.h index 2524ee2..004da639 100644 --- a/chrome/browser/ui/signin/profile_colors_util.h +++ b/chrome/browser/ui/signin/profile_colors_util.h
@@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_UI_SIGNIN_PROFILE_COLORS_UTIL_H_ #define CHROME_BROWSER_UI_SIGNIN_PROFILE_COLORS_UTIL_H_ +#include "base/callback_forward.h" #include "chrome/browser/profiles/profile_attributes_entry.h" #include "third_party/skia/include/core/SkColor.h"
diff --git a/chrome/browser/ui/signin_intercept_first_run_experience_dialog.cc b/chrome/browser/ui/signin_intercept_first_run_experience_dialog.cc index a949a42c..2bbe1b61 100644 --- a/chrome/browser/ui/signin_intercept_first_run_experience_dialog.cc +++ b/chrome/browser/ui/signin_intercept_first_run_experience_dialog.cc
@@ -301,6 +301,7 @@ DCHECK(profile_customization_preloaded_contents_); dialog_delegate_->SetWebContents( profile_customization_preloaded_contents_.get()); + dialog_delegate_->ResizeNativeView(ProfileCustomizationUI::kPreferredHeight); } void SigninInterceptFirstRunExperienceDialog::
diff --git a/chrome/browser/ui/views/layout_provider_unittest.cc b/chrome/browser/ui/views/layout_provider_unittest.cc index bc2e918..396c95d 100644 --- a/chrome/browser/ui/views/layout_provider_unittest.cc +++ b/chrome/browser/ui/views/layout_provider_unittest.cc
@@ -3,6 +3,7 @@ // found in the LICENSE file. #include "base/cxx17_backports.h" +#include "base/logging.h" #include "base/strings/utf_string_conversions.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h"
diff --git a/chrome/browser/ui/views/page_action/pwa_install_view.cc b/chrome/browser/ui/views/page_action/pwa_install_view.cc index 6f3a369..b6ae559 100644 --- a/chrome/browser/ui/views/page_action/pwa_install_view.cc +++ b/chrome/browser/ui/views/page_action/pwa_install_view.cc
@@ -7,6 +7,7 @@ #include <string> #include "base/callback_helpers.h" +#include "base/metrics/field_trial_params.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/user_metrics.h" #include "base/strings/utf_string_conversions.h"
diff --git a/chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.cc b/chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.cc index 7faffed..02972615 100644 --- a/chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.cc +++ b/chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.cc
@@ -34,7 +34,10 @@ #include "ui/base/ui_base_types.h" #include "ui/views/bubble/bubble_frame_view.h" #include "ui/views/controls/webview/webview.h" +#include "ui/views/layout/animating_layout_manager.h" #include "ui/views/layout/fill_layout.h" +#include "ui/views/layout/flex_layout.h" +#include "ui/views/layout/layout_types.h" #include "ui/views/widget/widget.h" #include "url/gurl.h" @@ -65,6 +68,22 @@ } #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) +// This layout auto-resizes the host view widget to always adapt to changes in +// the size of the child views. +class WidgetAutoResizingLayout : public views::FillLayout { + public: + WidgetAutoResizingLayout() = default; + + private: + // views::FillLayout: + void OnLayoutChanged() override { + FillLayout::OnLayoutChanged(); + if (views::Widget* widget = host_view()->GetWidget(); widget) { + widget->SetSize(widget->non_client_view()->GetPreferredSize()); + } + } +}; + } // namespace // static @@ -102,7 +121,8 @@ Browser* browser) { std::unique_ptr<views::WebView> web_view = CreateDialogWebView( browser, GURL(chrome::kChromeUIProfileCustomizationURL), - kSyncConfirmationDialogHeight, kSyncConfirmationDialogWidth, + ProfileCustomizationUI::kPreferredHeight, + ProfileCustomizationUI::kPreferredWidth, InitializeSigninWebDialogUI(false)); ProfileCustomizationUI* web_ui = web_view->GetWebContents() @@ -151,6 +171,8 @@ void SigninViewControllerDelegateViews::CloseModalSignin() { NotifyModalDialogClosed(); + // Either `this` is owned by the view hierarchy through `modal_signin_widget_` + // or `modal_signin_widget_` is nullptr and then `this` is self-owned. if (modal_signin_widget_) { modal_signin_widget_->Close(); } else { @@ -238,8 +260,26 @@ << "A tab must be active to present the sign-in modal dialog."; DCHECK(content_view_); - SetLayoutManager(std::make_unique<views::FillLayout>()); - AddChildView(std::move(content_view)); + // Use the layout manager of `this` to automatically translate its preferred + // size to the owning Widget. + SetLayoutManager(std::make_unique<WidgetAutoResizingLayout>()); + // `AnimatingLayoutManager` resizes `animated_view` to match `content_view`'s + // preferred size with animation. + views::View* animated_view = AddChildView(std::make_unique<views::View>()); + views::AnimatingLayoutManager* animating_layout = + animated_view->SetLayoutManager( + std::make_unique<views::AnimatingLayoutManager>()); + animating_layout + ->SetBoundsAnimationMode( + views::AnimatingLayoutManager::BoundsAnimationMode::kAnimateMainAxis) + .SetOrientation(views::LayoutOrientation::kVertical); + // Using `FlexLayout` because `AnimatingLayoutManager` doesn't work properly + // with `FillLayout`. + auto* flex_layout = animating_layout->SetTargetLayoutManager( + std::make_unique<views::FlexLayout>()); + flex_layout->SetOrientation(views::LayoutOrientation::kVertical); + animated_view->AddChildView(std::move(content_view)); + SetButtons(ui::DIALOG_BUTTON_NONE); web_contents_->SetDelegate(this); @@ -298,9 +338,6 @@ if (!host_web_contents) return; - // Ownership of `this` is transferred to the view hierarchy, through - // `modal_signin_widget_`. - gfx::NativeWindow window = host_web_contents->GetTopLevelNativeWindow(); switch (GetModalType()) { case ui::MODAL_TYPE_WINDOW:
diff --git a/chrome/browser/ui/views/profiles/signin_view_controller_delegate_views_browsertest.cc b/chrome/browser/ui/views/profiles/signin_view_controller_delegate_views_browsertest.cc index 70ea6c65..05f4b39 100644 --- a/chrome/browser/ui/views/profiles/signin_view_controller_delegate_views_browsertest.cc +++ b/chrome/browser/ui/views/profiles/signin_view_controller_delegate_views_browsertest.cc
@@ -2,23 +2,31 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/auto_reset.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/signin_view_controller.h" +#include "chrome/browser/ui/test/test_browser_dialog.h" #include "chrome/browser/ui/views/profiles/signin_view_controller_delegate_views.h" -#include "chrome/test/base/in_process_browser_test.h" #include "content/public/test/browser_test.h" #include "content/public/test/test_utils.h" #include "testing/gtest/include/gtest/gtest.h" +#include "ui/gfx/animation/animation.h" +#include "ui/gfx/animation/animation_test_api.h" #include "ui/views/controls/webview/webview.h" #include "ui/views/widget/widget.h" -class SigninViewControllerDelegateViewsBrowserTest - : public InProcessBrowserTest { +class SigninViewControllerDelegateViewsBrowserTest : public DialogBrowserTest { public: SigninViewControllerDelegateViewsBrowserTest() = default; ~SigninViewControllerDelegateViewsBrowserTest() override = default; + // DialogBrowserTest: + void ShowUi(const std::string& name) override { + CreateDelegate(/*show_immediately=*/true); + } + // The delegate deletes itself when closed. + // If `show_immediately` is false, call ResizeNativeView() to show the dialog. SigninViewControllerDelegateViews* CreateDelegate(bool show_immediately) { return new SigninViewControllerDelegateViews( SigninViewControllerDelegateViews::CreateSyncConfirmationWebView( @@ -36,6 +44,11 @@ } }; +IN_PROC_BROWSER_TEST_F(SigninViewControllerDelegateViewsBrowserTest, + InvokeUi_SyncConfirmation) { + ShowAndVerifyUi(); +} + // Opens and closes the dialog immediately. This is a basic test at the // `SigninViewController` API level, but does not test all the edge cases. // Regression test for https://crbug.com/1233030. @@ -74,3 +87,34 @@ EXPECT_TRUE(delegate->GetWidget()); CloseDialog(delegate); } + +// Creates a dialog that is not shown until the size is set. Checks that the +// dialog is initially shown with correct size. +IN_PROC_BROWSER_TEST_F(SigninViewControllerDelegateViewsBrowserTest, + ResizeBeforeDisplay) { + const int kDialogHeight = 255; + SigninViewControllerDelegateViews* delegate = + CreateDelegate(/*show_immediately=*/false); + EXPECT_FALSE(delegate->GetWidget()); + delegate->ResizeNativeView(kDialogHeight); + EXPECT_TRUE(delegate->GetWidget()); + EXPECT_EQ(delegate->GetContentsBounds().height(), kDialogHeight); +} + +// Creates a dialog that is shown immediately with a default size. Checks that +// ResizeNativeView() changes the dialog size correctly. +IN_PROC_BROWSER_TEST_F(SigninViewControllerDelegateViewsBrowserTest, + ResizeAfterDisplay) { + const int kDialogHeight = 255; + SigninViewControllerDelegateViews* delegate = + CreateDelegate(/*show_immediately=*/true); + EXPECT_TRUE(delegate->GetWidget()); + + // Disable resize animation. + std::unique_ptr<base::AutoReset<gfx::Animation::RichAnimationRenderMode>> + animation_mode_reset = gfx::AnimationTestApi::SetRichAnimationRenderMode( + gfx::Animation::RichAnimationRenderMode::FORCE_DISABLED); + delegate->ResizeNativeView(kDialogHeight); + EXPECT_TRUE(delegate->GetWidget()); + EXPECT_EQ(delegate->GetContentsBounds().height(), kDialogHeight); +}
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc index c913b09..9b25d9b 100644 --- a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc +++ b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest.cc
@@ -24,21 +24,6 @@ helper_.NavigateBrowser("SiteA"); helper_.CheckLaunchIconShown(); } - -IN_PROC_BROWSER_TEST_F(WebAppIntegrationBrowserTest, VerifyWindowModeChanged) { - helper_.InstallCreateShortcutWindowed("SiteA"); - helper_.CheckAppWindowMode("SiteA", apps::mojom::WindowMode::kWindow); - // Change to tabbed mode - helper_.ChangeAppSettingsWindowMode("SiteA", - apps::mojom::WindowMode::kTabbedWindow); -#if BUILDFLAG(IS_CHROMEOS) - helper_.CheckAppWindowMode("SiteA", apps::mojom::WindowMode::kWindow); -#else - // Verify change is propagated in W/M/L cases - helper_.CheckAppWindowMode("SiteA", apps::mojom::WindowMode::kTabbedWindow); -#endif -} - // Automated tests: // TODO(crbug.com/1279704): Test is consistently failing on Mac and Win7.
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_mac_win_linux.cc b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_mac_win_linux.cc index 1cd2b41a..7a4e458 100644 --- a/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_mac_win_linux.cc +++ b/chrome/browser/ui/views/web_apps/web_app_integration_browsertest_mac_win_linux.cc
@@ -30,6 +30,51 @@ helper_.CheckPlatformShortcutNotExists("SiteA"); } +IN_PROC_BROWSER_TEST_F(WebAppIntegrationBrowserTestMacWinLinux, + CheckRunOnOsLoginModeOnPolicyAppWorks) { + helper_.InstallPolicyAppTabbedNoShortcut("SiteA"); + helper_.CheckPlatformShortcutNotExists("SiteA"); + helper_.EnableRunOnOSLoginMode("SiteA"); + helper_.CheckRunOnOSLoginModeEnabled("SiteA"); + helper_.DisableRunOnOSLoginMode("SiteA"); + helper_.CheckRunOnOSLoginModeDisabled("SiteA"); + // Clear out installed app + helper_.UninstallPolicyApp("SiteA"); +} + +IN_PROC_BROWSER_TEST_F(WebAppIntegrationBrowserTestMacWinLinux, + CheckRunOnOsLoginModeOnNormalAppWorks) { + helper_.InstallCreateShortcutWindowed("SiteA"); + helper_.CheckPlatformShortcutAndIcon("SiteA"); + helper_.EnableRunOnOSLoginMode("SiteA"); + helper_.CheckRunOnOSLoginModeEnabled("SiteA"); + helper_.DisableRunOnOSLoginMode("SiteA"); + helper_.CheckRunOnOSLoginModeDisabled("SiteA"); + // Clear out installed app + helper_.UninstallFromList("SiteA"); + helper_.CheckPlatformShortcutNotExists("SiteA"); +} + +IN_PROC_BROWSER_TEST_F(WebAppIntegrationBrowserTestMacWinLinux, + CheckRunOnOsLoginWorksOnPolicyAppAllowed) { + helper_.InstallPolicyAppOsLoginModeAllowed("SiteA"); + helper_.EnableRunOnOSLoginMode("SiteA"); + helper_.CheckRunOnOSLoginModeEnabled("SiteA"); + helper_.DisableRunOnOSLoginMode("SiteA"); + helper_.CheckRunOnOSLoginModeDisabled("SiteA"); + helper_.UninstallPolicyApp("SiteA"); + helper_.CheckPlatformShortcutNotExists("SiteA"); +} + +IN_PROC_BROWSER_TEST_F(WebAppIntegrationBrowserTestMacWinLinux, + CheckRunOnOsLoginWorksOnPolicyAppBlocked) { + helper_.InstallPolicyAppOsLoginModeBlocked("SiteA"); + helper_.EnableRunOnOSLoginMode("SiteA"); + helper_.CheckRunOnOSLoginModeDisabled("SiteA"); + helper_.UninstallPolicyApp("SiteA"); + helper_.CheckPlatformShortcutNotExists("SiteA"); +} + // Generated tests: IN_PROC_BROWSER_TEST_F(
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc b/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc index dcc95e33..062b9b8f 100644 --- a/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc +++ b/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc
@@ -319,6 +319,7 @@ const std::string app_name, const GURL app_scope, const apps::mojom::WindowMode& window_mode, + const apps::mojom::RunOnOsLoginMode& run_on_os_login_mode, const blink::mojom::DisplayMode& effective_display_mode, const blink::mojom::DisplayMode& user_display_mode, bool installed_locally, @@ -327,6 +328,7 @@ name(app_name), scope(app_scope), window_mode(window_mode), + run_on_os_login_mode(run_on_os_login_mode), effective_display_mode(effective_display_mode), user_display_mode(user_display_mode), is_installed_locally(installed_locally), @@ -336,6 +338,7 @@ bool AppState::operator==(const AppState& other) const { return id == other.id && name == other.name && scope == other.scope && window_mode == other.window_mode && + run_on_os_login_mode == other.run_on_os_login_mode && effective_display_mode == other.effective_display_mode && user_display_mode == other.user_display_mode && is_installed_locally == other.is_installed_locally && @@ -486,25 +489,6 @@ #endif } -void WebAppIntegrationTestDriver::ChangeAppSettingsWindowMode( - const std::string& site_mode, - apps::mojom::WindowMode window_mode) { -#if !BUILDFLAG(IS_CHROMEOS) - BeforeStateChangeAction(); - absl::optional<AppState> app_state = GetAppBySiteMode( - before_state_change_action_state_.get(), profile(), site_mode); - ASSERT_TRUE(app_state.has_value()) - << "No app installed for site: " << site_mode; - mojo::PendingReceiver<app_management::mojom::Page> page; - mojo::Remote<app_management::mojom::PageHandler> handler; - AppManagementPageHandler app_management_page_handler( - handler.BindNewPipeAndPassReceiver(), page.InitWithNewPipeAndPassRemote(), - profile()); - app_management_page_handler.SetWindowMode(app_state->id, window_mode); - AfterStateChangeAction(); -#endif -} - void WebAppIntegrationTestDriver::CloseCustomToolbar() { BeforeStateChangeAction(); ASSERT_TRUE(app_browser()); @@ -528,6 +512,20 @@ AfterStateChangeAction(); } +void WebAppIntegrationTestDriver::DisableRunOnOSLoginMode( + const std::string& site_mode) { + BeforeStateChangeAction(); + SetRunOnOsLoginMode(site_mode, apps::mojom::RunOnOsLoginMode::kNotRun); + AfterStateChangeAction(); +} + +void WebAppIntegrationTestDriver::EnableRunOnOSLoginMode( + const std::string& site_mode) { + BeforeStateChangeAction(); + SetRunOnOsLoginMode(site_mode, apps::mojom::RunOnOsLoginMode::kWindowed); + AfterStateChangeAction(); +} + void WebAppIntegrationTestDriver::InstallCreateShortcutTabbed( const std::string& site_mode) { BeforeStateChangeAction(); @@ -622,36 +620,58 @@ void WebAppIntegrationTestDriver::InstallPolicyAppTabbedNoShortcut( const std::string& site_mode) { BeforeStateChangeAction(); - InstallPolicyAppInternal(site_mode, - base::Value(kDefaultLaunchContainerTabValue), - /*create_shortcut=*/false); + InstallPolicyAppInternal( + site_mode, base::Value(kDefaultLaunchContainerTabValue), + /*create_shortcut=*/false, apps::mojom::RunOnOsLoginPtr()); AfterStateChangeAction(); } void WebAppIntegrationTestDriver::InstallPolicyAppTabbedShortcut( const std::string& site_mode) { BeforeStateChangeAction(); - InstallPolicyAppInternal(site_mode, - base::Value(kDefaultLaunchContainerTabValue), - /*create_shortcut=*/true); + InstallPolicyAppInternal( + site_mode, base::Value(kDefaultLaunchContainerTabValue), + /*create_shortcut=*/true, apps::mojom::RunOnOsLoginPtr()); AfterStateChangeAction(); } void WebAppIntegrationTestDriver::InstallPolicyAppWindowedNoShortcut( const std::string& site_mode) { BeforeStateChangeAction(); - InstallPolicyAppInternal(site_mode, - base::Value(kDefaultLaunchContainerWindowValue), - /*create_shortcut=*/false); + InstallPolicyAppInternal( + site_mode, base::Value(kDefaultLaunchContainerWindowValue), + /*create_shortcut=*/false, apps::mojom::RunOnOsLoginPtr()); AfterStateChangeAction(); } void WebAppIntegrationTestDriver::InstallPolicyAppWindowedShortcut( const std::string& site_mode) { BeforeStateChangeAction(); - InstallPolicyAppInternal(site_mode, - base::Value(kDefaultLaunchContainerWindowValue), - /*create_shortcut=*/true); + InstallPolicyAppInternal( + site_mode, base::Value(kDefaultLaunchContainerWindowValue), + /*create_shortcut=*/true, apps::mojom::RunOnOsLoginPtr()); + AfterStateChangeAction(); +} + +void WebAppIntegrationTestDriver::InstallPolicyAppOsLoginModeAllowed( + const std::string& site_mode) { + BeforeStateChangeAction(); + InstallPolicyAppInternal( + site_mode, base::Value(kDefaultLaunchContainerTabValue), + /*create_shortcut=*/true, + apps::mojom::RunOnOsLogin::New(apps::mojom::RunOnOsLoginMode::kNotRun, + /*is_managed=*/false)); + AfterStateChangeAction(); +} + +void WebAppIntegrationTestDriver::InstallPolicyAppOsLoginModeBlocked( + const std::string& site_mode) { + BeforeStateChangeAction(); + InstallPolicyAppInternal( + site_mode, base::Value(kDefaultLaunchContainerTabValue), + /*create_shortcut=*/true, + apps::mojom::RunOnOsLogin::New(apps::mojom::RunOnOsLoginMode::kNotRun, + /*is_managed=*/true)); AfterStateChangeAction(); } @@ -1164,6 +1184,28 @@ AfterStateCheckAction(); } +void WebAppIntegrationTestDriver::CheckRunOnOSLoginModeEnabled( + const std::string& site_mode) { + BeforeStateCheckAction(); + absl::optional<AppState> app_state = GetAppBySiteMode( + after_state_change_action_state_.get(), profile(), site_mode); + ASSERT_TRUE(app_state); + EXPECT_EQ(app_state->run_on_os_login_mode, + apps::mojom::RunOnOsLoginMode::kWindowed); + AfterStateCheckAction(); +} + +void WebAppIntegrationTestDriver::CheckRunOnOSLoginModeDisabled( + const std::string& site_mode) { + BeforeStateCheckAction(); + absl::optional<AppState> app_state = GetAppBySiteMode( + after_state_change_action_state_.get(), profile(), site_mode); + ASSERT_TRUE(app_state); + EXPECT_EQ(app_state->run_on_os_login_mode, + apps::mojom::RunOnOsLoginMode::kNotRun); + AfterStateCheckAction(); +} + void WebAppIntegrationTestDriver::CheckUserDisplayModeInternal( DisplayMode display_mode) { BeforeStateCheckAction(); @@ -1405,6 +1447,8 @@ registrar.GetAppScope(app_id), web_app_publisher_helper.ConvertDisplayModeToWindowMode( registrar.GetAppUserDisplayMode(app_id)), + web_app_publisher_helper.ConvertOsLoginModeToMojom( + registrar.GetAppRunOnOsLoginMode(app_id)), registrar.GetAppEffectiveDisplayMode(app_id), registrar.GetAppUserDisplayMode(app_id), registrar.IsLocallyInstalled(app_id), @@ -1456,7 +1500,8 @@ void WebAppIntegrationTestDriver::InstallPolicyAppInternal( const std::string& site_mode, base::Value default_launch_container, - const bool create_shortcut) { + const bool create_shortcut, + const apps::mojom::RunOnOsLoginPtr os_login_mode) { GURL url = GetAppStartURL(site_mode); WebAppTestInstallWithOsHooksObserver observer(profile()); observer.BeginListening(); @@ -1469,6 +1514,18 @@ ListPrefUpdate update(profile()->GetPrefs(), prefs::kWebAppInstallForceList); update->Append(item.Clone()); + + if (os_login_mode) { + base::Value dictItem(base::Value::Type::DICTIONARY); + if (os_login_mode->is_managed) + dictItem.SetKey(kRunOnOsLogin, base::Value(kBlocked)); + else + dictItem.SetKey(kRunOnOsLogin, base::Value(kAllowed)); + DictionaryPrefUpdate updateDict(profile()->GetPrefs(), + prefs::kWebAppSettings); + base::Value* dict = updateDict.Get(); + dict->SetKey(std::move(url.spec()), std::move(dictItem)); + } } active_app_id_ = observer.Wait(); } @@ -1638,6 +1695,23 @@ return shortcut_correct; } +void WebAppIntegrationTestDriver::SetRunOnOsLoginMode( + const std::string& site_mode, + apps::mojom::RunOnOsLoginMode login_mode) { +#if !BUILDFLAG(IS_CHROMEOS) + absl::optional<AppState> app_state = GetAppBySiteMode( + before_state_change_action_state_.get(), profile(), site_mode); + ASSERT_TRUE(app_state.has_value()) + << "No app installed for site: " << site_mode; + mojo::PendingReceiver<app_management::mojom::Page> page; + mojo::Remote<app_management::mojom::PageHandler> handler; + AppManagementPageHandler app_management_page_handler( + handler.BindNewPipeAndPassReceiver(), page.InitWithNewPipeAndPassRemote(), + profile()); + app_management_page_handler.SetRunOnOsLoginMode(app_state->id, login_mode); +#endif +} + Browser* WebAppIntegrationTestDriver::browser() { Browser* browser = active_browser_ ? active_browser_.get()
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.h b/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.h index 08cb556..de62fb8 100644 --- a/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.h +++ b/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.h
@@ -72,6 +72,7 @@ const std::string app_name, const GURL app_scope, const apps::mojom::WindowMode& window_mode, + const apps::mojom::RunOnOsLoginMode& run_on_os_login_mode, const blink::mojom::DisplayMode& effective_display_mode, const blink::mojom::DisplayMode& user_display_mode, bool is_installed_locally, @@ -84,6 +85,7 @@ std::string name; GURL scope; apps::mojom::WindowMode window_mode; + apps::mojom::RunOnOsLoginMode run_on_os_login_mode; blink::mojom::DisplayMode effective_display_mode; blink::mojom::DisplayMode user_display_mode; bool is_installed_locally; @@ -143,10 +145,10 @@ // https://docs.google.com/spreadsheets/d/1d3iAOAnojp4_WrPky9exz1-mjkeulOJVUav5QYG99MQ/edit#gid=2008870403 // State change actions: - void ChangeAppSettingsWindowMode(const std::string& site_mode, - apps::mojom::WindowMode window_mode); void CloseCustomToolbar(); void ClosePwa(); + void DisableRunOnOSLoginMode(const std::string& site_mode); + void EnableRunOnOSLoginMode(const std::string& site_mode); void InstallCreateShortcutTabbed(const std::string& site_mode); void InstallCreateShortcutWindowed(const std::string& site_mode); void InstallMenuOption(const std::string& site_mode); @@ -156,6 +158,9 @@ void InstallPolicyAppTabbedShortcut(const std::string& site_mode); void InstallPolicyAppWindowedNoShortcut(const std::string& site_mode); void InstallPolicyAppWindowedShortcut(const std::string& site_mode); + // These functions install apps which are tabbed and creates shortcuts. + void InstallPolicyAppOsLoginModeAllowed(const std::string& site_mode); + void InstallPolicyAppOsLoginModeBlocked(const std::string& site_mode); void LaunchFromChromeApps(const std::string& site_mode); void LaunchFromLaunchIcon(const std::string& site_mode); void NavigateBrowser(const std::string& site_mode); @@ -191,6 +196,8 @@ void CheckCustomToolbar(); void CheckPlatformShortcutAndIcon(const std::string& site_mode); void CheckPlatformShortcutNotExists(const std::string& site_mode); + void CheckRunOnOSLoginModeEnabled(const std::string& site_mode); + void CheckRunOnOSLoginModeDisabled(const std::string& site_mode); void CheckUserDisplayModeInternal(DisplayMode display_mode); void CheckWindowClosed(); void CheckWindowCreated(); @@ -227,9 +234,11 @@ GURL GetURLForSiteMode(const std::string& site_mode); void InstallCreateShortcut(bool open_in_window); - void InstallPolicyAppInternal(const std::string& site_mode, - base::Value default_launch_container, - const bool create_shortcut); + void InstallPolicyAppInternal( + const std::string& site_mode, + base::Value default_launch_container, + const bool create_shortcut, + const apps::mojom::RunOnOsLoginPtr os_login_mode); void UninstallPolicyAppById(const AppId& id); // This action only works if no navigations to the given app_url occur @@ -250,6 +259,9 @@ const std::string& name, const AppId& id); + void SetRunOnOsLoginMode(const std::string& site_mode, + apps::mojom::RunOnOsLoginMode login_mode); + Browser* browser(); const net::EmbeddedTestServer* embedded_test_server(); Profile* profile() {
diff --git a/chrome/browser/ui/webui/app_management/app_management_page_handler.cc b/chrome/browser/ui/webui/app_management/app_management_page_handler.cc index cf84dfcf..f2fe17e 100644 --- a/chrome/browser/ui/webui/app_management/app_management_page_handler.cc +++ b/chrome/browser/ui/webui/app_management/app_management_page_handler.cc
@@ -291,6 +291,17 @@ #endif } +void AppManagementPageHandler::SetRunOnOsLoginMode( + const std::string& app_id, + apps::mojom::RunOnOsLoginMode run_on_os_login_mode) { +#if BUILDFLAG(IS_CHROMEOS) + NOTREACHED(); +#else + apps::AppServiceProxyFactory::GetForProfile(profile_)->SetRunOnOsLoginMode( + app_id, run_on_os_login_mode); +#endif +} + app_management::mojom::AppPtr AppManagementPageHandler::CreateUIAppPtr( const apps::AppUpdate& update) { base::flat_map<apps::mojom::PermissionType, apps::mojom::PermissionPtr>
diff --git a/chrome/browser/ui/webui/app_management/app_management_page_handler.h b/chrome/browser/ui/webui/app_management/app_management_page_handler.h index dde1ec4..15d4ede 100644 --- a/chrome/browser/ui/webui/app_management/app_management_page_handler.h +++ b/chrome/browser/ui/webui/app_management/app_management_page_handler.h
@@ -56,6 +56,9 @@ GetOverlappingPreferredAppsCallback callback) override; void SetWindowMode(const std::string& app_id, apps::mojom::WindowMode window_mode) override; + void SetRunOnOsLoginMode( + const std::string& app_id, + apps::mojom::RunOnOsLoginMode run_on_os_login_mode) override; private: app_management::mojom::AppPtr CreateUIAppPtr(const apps::AppUpdate& update);
diff --git a/chrome/browser/ui/webui/app_settings/web_app_settings_ui.cc b/chrome/browser/ui/webui/app_settings/web_app_settings_ui.cc index 8ce959e..4a06f8f 100644 --- a/chrome/browser/ui/webui/app_settings/web_app_settings_ui.cc +++ b/chrome/browser/ui/webui/app_settings/web_app_settings_ui.cc
@@ -27,6 +27,8 @@ {"appManagementCameraPermissionLabel", IDS_APP_MANAGEMENT_CAMERA}, {"appManagementUninstallLabel", IDS_APP_MANAGEMENT_UNINSTALL_APP}, {"appManagementWindowModeLabel", IDS_APP_MANAGEMENT_WINDOW}, + {"appManagementRunOnOsLoginModeLabel", + IDS_APP_MANAGEMENT_RUN_ON_OS_LOGIN}, }; html_source->AddLocalizedStrings(kLocalizedStrings); }
diff --git a/chrome/browser/ui/webui/chromeos/edu_account_login_handler_unittest.cc b/chrome/browser/ui/webui/chromeos/edu_account_login_handler_unittest.cc index b833b4e..7289a4f 100644 --- a/chrome/browser/ui/webui/chromeos/edu_account_login_handler_unittest.cc +++ b/chrome/browser/ui/webui/chromeos/edu_account_login_handler_unittest.cc
@@ -212,9 +212,8 @@ bool success = true) { EXPECT_EQ("cr.webUIResponse", data.function_name()); - std::string callback_id; - ASSERT_TRUE(data.arg1()->GetAsString(&callback_id)); - EXPECT_EQ(event_name, callback_id); + ASSERT_TRUE(data.arg1()->is_string()); + EXPECT_EQ(event_name, data.arg1()->GetString()); ASSERT_TRUE(data.arg2()->is_bool()); EXPECT_EQ(success, data.arg2()->GetBool());
diff --git a/chrome/browser/ui/webui/chromeos/edu_coexistence/edu_coexistence_login_handler_browsertest.cc b/chrome/browser/ui/webui/chromeos/edu_coexistence/edu_coexistence_login_handler_browsertest.cc index ef1194b..6f25e17 100644 --- a/chrome/browser/ui/webui/chromeos/edu_coexistence/edu_coexistence_login_handler_browsertest.cc +++ b/chrome/browser/ui/webui/chromeos/edu_coexistence/edu_coexistence_login_handler_browsertest.cc
@@ -70,9 +70,8 @@ const std::string& call_type) { EXPECT_EQ(call_type, data.function_name()); - std::string callback_id; - ASSERT_TRUE(data.arg1()->GetAsString(&callback_id)); - EXPECT_EQ(event_name, callback_id); + ASSERT_TRUE(data.arg1()->is_string()); + EXPECT_EQ(event_name, data.arg1()->GetString()); } void SimulateAccessTokenFetched(EduCoexistenceLoginHandler* handler,
diff --git a/chrome/browser/ui/webui/extensions/extensions_ui.cc b/chrome/browser/ui/webui/extensions/extensions_ui.cc index 5eb8c87..3c142fc 100644 --- a/chrome/browser/ui/webui/extensions/extensions_ui.cc +++ b/chrome/browser/ui/webui/extensions/extensions_ui.cc
@@ -129,15 +129,16 @@ {"hostPermissionsDescription", IDS_EXTENSIONS_HOST_PERMISSIONS_DESCRIPTION}, {"hostPermissionsEdit", IDS_EXTENSIONS_HOST_PERMISSIONS_EDIT}, {"hostPermissionsHeading", IDS_EXTENSIONS_ITEM_HOST_PERMISSIONS_HEADING}, - {"newHostPermissionsHeading", - IDS_EXTENSIONS_NEW_ITEM_HOST_PERMISSIONS_HEADING}, + {"newHostPermissionsHeading", IDS_EXTENSIONS_NEW_HOST_PERMISSIONS_HEADING}, + {"hostPermissionsSubHeading", IDS_EXTENSIONS_HOST_PERMISSIONS_SUB_HEADING}, {"hostAccessOnClick", IDS_EXTENSIONS_HOST_ACCESS_ON_CLICK}, - {"newHostAccessOnClick", IDS_EXTENSIONS_NEW_HOST_ACCESS_ON_CLICK}, + {"hostAccessWhenClicked", IDS_EXTENSIONS_HOST_ACCESS_WHEN_CLICKED}, {"hostAccessOnSpecificSites", IDS_EXTENSIONS_HOST_ACCESS_ON_SPECIFIC_SITES}, - {"hostAccessCustomizeForEachSite", - IDS_EXTENSIONS_HOST_CUSTOMIZE_FOR_EACH_SITE}, + {"hostAccessAllowOnSpecificSites", + IDS_EXTENSIONS_HOST_ACCESS_ALLOW_ON_SPECIFIC_SITES}, {"hostAccessOnAllSites", IDS_EXTENSIONS_HOST_ACCESS_ON_ALL_SITES}, - {"newHostAccessOnAllSites", IDS_EXTENSIONS_NEW_HOST_ACCESS_ON_ALL_SITES}, + {"hostAccessAllowOnAllSites", + IDS_EXTENSIONS_HOST_ACCESS_ALLOW_ON_ALL_SITES}, {"hostAllowedHosts", IDS_EXTENSIONS_ITEM_ALLOWED_HOSTS}, {"itemId", IDS_EXTENSIONS_ITEM_ID}, {"itemInspectViews", IDS_EXTENSIONS_ITEM_INSPECT_VIEWS},
diff --git a/chrome/browser/ui/webui/history_clusters/history_clusters.mojom b/chrome/browser/ui/webui/history_clusters/history_clusters.mojom index 903c4e4..9ee5b21 100644 --- a/chrome/browser/ui/webui/history_clusters/history_clusters.mojom +++ b/chrome/browser/ui/webui/history_clusters/history_clusters.mojom
@@ -88,19 +88,6 @@ URLVisit visit; }; -// Parameters used to query the browser for Clusters in reverse chronological -// order. -struct QueryParams { - // The query string the Clusters are matched against. The default value of - // empty string means to return every Cluster that matches the other criteria. - string query; - - // The optional time threshold (exclusive) for how recent the Clusters can be. - // If specified, Clusters before `end_time` and if missing, Clusters until the - // present time that match the other criteria are returned. - mojo_base.mojom.Time? end_time; -}; - // Represents a set of Clusters returned by the browser in response to a request // for Clusters related to a given query or within a given timespan. struct QueryResult { @@ -112,15 +99,11 @@ // indicating that we have exhausted History. array<history_clusters.mojom.Cluster> clusters; - // True if this is in response to a continuation query. If so, `clusters` is a - // partial set which must be appended to the existing Clusters on the page and - // not replace them. - bool is_continuation; + // True if there is another page of clusters that the UI can request. + bool can_load_more; - // The optional time threshold (exclusive) to be supplied in the follow-up UI - // request to load older Clusters. Typically set to `last_visit_time` of the - // last cluster in `clusters` if the backend supports paging. - mojo_base.mojom.Time? continuation_end_time; + // True if this result is in response to a "load more" continuation request. + bool is_continuation; }; // Browser-side handler for requests from WebUI page. @@ -133,10 +116,12 @@ // its state once the request is fulfilled by the browser. ToggleVisibility(bool visible) => (bool visible); - // Requests the freshest Clusters created from the user visit history, in - // reverse chronological order, based on the parameters in `query_params`. - // Returns either a non-zero length list of clusters, or exhausts history. - QueryClusters(QueryParams query_params); + // Queries for clusters matching `query`. + StartQueryClusters(string query); + + // Asks the service for more clusters. Call this when the user has scrolled + // to the bottom of the page. `query` is passed through for sanity checking. + LoadMoreClusters(string query); // Requests to remove all visits to the specified URLs in the specified // timespan in `visits`. This includes the less recent visits to the same set
diff --git a/chrome/browser/ui/webui/history_clusters/history_clusters_handler.cc b/chrome/browser/ui/webui/history_clusters/history_clusters_handler.cc index 102413c1..75466fc 100644 --- a/chrome/browser/ui/webui/history_clusters/history_clusters_handler.cc +++ b/chrome/browser/ui/webui/history_clusters/history_clusters_handler.cc
@@ -23,6 +23,7 @@ #include "components/history/core/browser/history_types.h" #include "components/history_clusters/core/features.h" #include "components/history_clusters/core/history_clusters_prefs.h" +#include "components/history_clusters/core/query_clusters_state.h" #include "components/prefs/pref_service.h" #include "components/search_engines/template_url.h" #include "components/search_engines/template_url_service.h" @@ -123,12 +124,14 @@ // Creates a `mojom::QueryResultPtr` using the original `query`, if the query // was a continuation one, and the result of querying HistoryClustersService. -mojom::QueryResultPtr QueryClustersResultToMojom(Profile* profile, - const std::string& query, - bool is_continuation, - QueryClustersResult result) { +mojom::QueryResultPtr QueryClustersResultToMojom( + Profile* profile, + const std::string& query, + const std::vector<history::Cluster> clusters_batch, + bool can_load_more, + bool is_continuation) { std::vector<mojom::ClusterPtr> cluster_mojoms; - for (const auto& cluster : result.clusters) { + for (const auto& cluster : clusters_batch) { auto cluster_mojom = mojom::Cluster::New(); cluster_mojom->id = cluster.cluster_id; std::set<std::string> related_searches; // Keeps track of unique searches. @@ -181,9 +184,9 @@ auto result_mojom = mojom::QueryResult::New(); result_mojom->query = query; - result_mojom->is_continuation = is_continuation; - result_mojom->continuation_end_time = result.continuation_end_time; result_mojom->clusters = std::move(cluster_mojoms); + result_mojom->can_load_more = can_load_more; + result_mojom->is_continuation = is_continuation; return result_mojom; } @@ -217,18 +220,7 @@ std::move(callback).Run(visible); } -void HistoryClustersHandler::QueryClusters(mojom::QueryParamsPtr query_params) { - base::TimeTicks query_start_time = base::TimeTicks::Now(); - - const std::string& query = query_params->query; - base::Time end_time; - if (query_params->end_time.has_value()) { - // Continuation queries have a non-null value for `end_time`. - DCHECK(!query_params->end_time->is_null()) - << "Queried clusters with a null value for end_time."; - end_time = *(query_params->end_time); - } - +void HistoryClustersHandler::StartQueryClusters(const std::string& query) { if (!query.empty()) { // If the query string is not empty, we assume that this clusters query // is user generated. @@ -237,18 +229,23 @@ ->increment_query_count(); } - // Cancel pending tasks, if any. - query_task_tracker_.TryCancelAll(); + // Since the query has changed, initialize a new QueryClustersState and + // request the first batch of clusters. auto* history_clusters_service = HistoryClustersServiceFactory::GetForBrowserContext(profile_); - history_clusters_service->QueryClusters( - query, /*begin_time=*/base::Time(), end_time, - base::BindOnce(&QueryClustersResultToMojom, profile_, query, - query_params->end_time.has_value()) - .Then(base::BindOnce(&HistoryClustersHandler::OnClustersQueryResult, - weak_ptr_factory_.GetWeakPtr(), - query_start_time)), - &query_task_tracker_); + query_clusters_state_ = std::make_unique<QueryClustersState>( + history_clusters_service->GetWeakPtr(), query); + LoadMoreClusters(query); +} + +void HistoryClustersHandler::LoadMoreClusters(const std::string& query) { + if (query_clusters_state_) { + DCHECK_EQ(query, query_clusters_state_->query()); + query_clusters_state_->LoadNextBatchOfClusters( + base::BindOnce(&QueryClustersResultToMojom, profile_) + .Then(base::BindOnce(&HistoryClustersHandler::OnClustersQueryResult, + weak_ptr_factory_.GetWeakPtr()))); + } } void HistoryClustersHandler::RemoveVisits( @@ -322,38 +319,8 @@ } void HistoryClustersHandler::OnClustersQueryResult( - base::TimeTicks query_start_time, mojom::QueryResultPtr query_result) { - // In case no clusters came back, recursively ask for more here. We do this - // to fulfill the mojom contract where we always return at least one cluster, - // or we exhaust History. We don't do this in the service because of task - // tracker lifetime difficulty. In practice, this only happens when the user - // has a search query that doesn't match any of the clusters in the "page". - // https://crbug.com/1263728 - if (query_result->clusters.empty() && - query_result->continuation_end_time.has_value()) { - base::Time continuation_end_time = *query_result->continuation_end_time; - DCHECK(!continuation_end_time.is_null()); - - auto* history_clusters_service = - HistoryClustersServiceFactory::GetForBrowserContext(profile_); - history_clusters_service->QueryClusters( - query_result->query, /*begin_time=*/base::Time(), continuation_end_time, - base::BindOnce(&QueryClustersResultToMojom, profile_, - query_result->query, query_result->is_continuation) - .Then(base::BindOnce(&HistoryClustersHandler::OnClustersQueryResult, - weak_ptr_factory_.GetWeakPtr(), - query_start_time)), - &query_task_tracker_); - - return; - } - page_->OnClustersQueryResult(std::move(query_result)); - - // Log metrics after delivering the results to the page. - base::TimeDelta service_latency = base::TimeTicks::Now() - query_start_time; - base::UmaHistogramTimes("History.Clusters.ServiceLatency", service_latency); } void HistoryClustersHandler::OnVisitsRemoved(
diff --git a/chrome/browser/ui/webui/history_clusters/history_clusters_handler.h b/chrome/browser/ui/webui/history_clusters/history_clusters_handler.h index 0475686..6b986a68 100644 --- a/chrome/browser/ui/webui/history_clusters/history_clusters_handler.h +++ b/chrome/browser/ui/webui/history_clusters/history_clusters_handler.h
@@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_UI_WEBUI_HISTORY_CLUSTERS_HISTORY_CLUSTERS_HANDLER_H_ #define CHROME_BROWSER_UI_WEBUI_HISTORY_CLUSTERS_HISTORY_CLUSTERS_HANDLER_H_ +#include <memory> #include <string> #include "base/callback.h" @@ -15,6 +16,7 @@ #include "chrome/browser/ui/webui/history_clusters/history_clusters.mojom.h" #include "components/history/core/browser/history_types.h" #include "components/history_clusters/core/history_clusters_service.h" +#include "components/history_clusters/core/query_clusters_state.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/receiver.h" @@ -28,13 +30,17 @@ namespace history_clusters { +class QueryClustersState; + // Not in an anonymous namespace so that it can be tested. // TODO(manukh) Try to setup a complete `HistoryClusterHandler` for testing so // that we can test the public method `QueryClusters` directly instead. -mojom::QueryResultPtr QueryClustersResultToMojom(Profile* profile, - const std::string& query, - bool is_continuation, - QueryClustersResult result); +mojom::QueryResultPtr QueryClustersResultToMojom( + Profile* profile, + const std::string& query, + const std::vector<history::Cluster> clusters_batch, + bool can_load_more, + bool is_continuation); // Handles bidirectional communication between the history clusters page and the // browser. @@ -53,7 +59,8 @@ void SetPage(mojo::PendingRemote<mojom::Page> pending_page) override; void ToggleVisibility(bool visible, ToggleVisibilityCallback callback) override; - void QueryClusters(mojom::QueryParamsPtr query_params) override; + void StartQueryClusters(const std::string& query) override; + void LoadMoreClusters(const std::string& query) override; void RemoveVisits(std::vector<mojom::URLVisitPtr> visits, RemoveVisitsCallback callback) override; void OpenVisitUrlsInTabGroup(std::vector<mojom::URLVisitPtr> visits) override; @@ -63,18 +70,14 @@ private: // Called with the result of querying clusters. Subsequently, `query_result` - // is sent to the JS to update the UI. `query_start_time` is also passed to - // allow for performance logging. - void OnClustersQueryResult(base::TimeTicks query_start_time, - mojom::QueryResultPtr query_result); + // is sent to the JS to update the UI. + void OnClustersQueryResult(mojom::QueryResultPtr query_result); // Called with the set of removed visits. Subsequently, `visits` is sent to // the JS to update the UI. void OnVisitsRemoved(std::vector<mojom::URLVisitPtr> visits); raw_ptr<Profile> profile_; raw_ptr<content::WebContents> web_contents_; - // Tracker for query requests to the HistoryClustersService. - base::CancelableTaskTracker query_task_tracker_; // Tracker for remove requests to the HistoryClustersService. base::CancelableTaskTracker remove_task_tracker_; @@ -86,6 +89,9 @@ mojo::Remote<mojom::Page> page_; mojo::Receiver<mojom::PageHandler> page_handler_; + // Encapsulates the currently loaded clusters state on the page. + std::unique_ptr<QueryClustersState> query_clusters_state_; + base::WeakPtrFactory<HistoryClustersHandler> weak_ptr_factory_{this}; };
diff --git a/chrome/browser/ui/webui/history_clusters/history_clusters_handler_unittest.cc b/chrome/browser/ui/webui/history_clusters/history_clusters_handler_unittest.cc index 3de98e0..4506bf7 100644 --- a/chrome/browser/ui/webui/history_clusters/history_clusters_handler_unittest.cc +++ b/chrome/browser/ui/webui/history_clusters/history_clusters_handler_unittest.cc
@@ -52,7 +52,7 @@ }; TEST_F(HistoryClustersHandlerTest, QueryClustersResultToMojom_BelowTheFold) { - QueryClustersResult result; + std::vector<history::Cluster> clusters; // High scoring visits should always be above the fold. history::Cluster cluster1; @@ -81,17 +81,16 @@ cluster3.visits.push_back(CreateVisit("https://zero-score-2", 0)); cluster3.keywords.push_back(u"keyword"); - result.clusters.push_back(cluster1); - result.clusters.push_back(cluster2); - result.clusters.push_back(cluster3); - result.continuation_end_time = base::Time::FromDoubleT(10); + clusters.push_back(cluster1); + clusters.push_back(cluster2); + clusters.push_back(cluster3); mojom::QueryResultPtr mojom_result = - QueryClustersResultToMojom(&profile_, "query", false, result); + QueryClustersResultToMojom(&profile_, "query", clusters, true, false); EXPECT_EQ(mojom_result->query, "query"); + EXPECT_EQ(mojom_result->can_load_more, true); EXPECT_EQ(mojom_result->is_continuation, false); - EXPECT_EQ(mojom_result->continuation_end_time, base::Time::FromDoubleT(10)); ASSERT_EQ(mojom_result->clusters.size(), 3u); @@ -130,7 +129,7 @@ } TEST_F(HistoryClustersHandlerTest, QueryClustersResultToMojom_RelatedSearches) { - QueryClustersResult result; + std::vector<history::Cluster> clusters; history::Cluster cluster; cluster.cluster_id = 4; @@ -150,10 +149,10 @@ // searches has been met. cluster.visits.push_back(CreateVisit("https://high-score-5", 0, {"ten"})); - result.clusters.push_back(cluster); + clusters.push_back(cluster); mojom::QueryResultPtr mojom_result = - QueryClustersResultToMojom(&profile_, "query", false, result); + QueryClustersResultToMojom(&profile_, "query", clusters, false, false); ASSERT_EQ(mojom_result->clusters.size(), 1u); EXPECT_EQ(mojom_result->clusters[0]->id, 4);
diff --git a/chrome/browser/ui/webui/signin/profile_customization_ui.h b/chrome/browser/ui/webui/signin/profile_customization_ui.h index c073562..2d069bd4 100644 --- a/chrome/browser/ui/webui/signin/profile_customization_ui.h +++ b/chrome/browser/ui/webui/signin/profile_customization_ui.h
@@ -23,6 +23,9 @@ : public ui::MojoWebUIController, public customize_themes::mojom::CustomizeThemesHandlerFactory { public: + static constexpr int kPreferredHeight = 560; + static constexpr int kPreferredWidth = 512; + explicit ProfileCustomizationUI(content::WebUI* web_ui); ~ProfileCustomizationUI() override;
diff --git a/chrome/browser/web_applications/app_service/web_app_publisher_helper.cc b/chrome/browser/web_applications/app_service/web_app_publisher_helper.cc index 764d2c5..7daa3b8b 100644 --- a/chrome/browser/web_applications/app_service/web_app_publisher_helper.cc +++ b/chrome/browser/web_applications/app_service/web_app_publisher_helper.cc
@@ -672,13 +672,12 @@ #else app->has_badge = apps::mojom::OptionalBool::kFalse; #endif - bool is_managed_login = + bool is_managed = provider_->policy_manager().GetUrlRunOnOsLoginPolicy(web_app->app_id()) != web_app::RunOnOsLoginPolicy::kAllowed; apps::mojom::RunOnOsLoginMode login_mode = GetRunOnOsLoginMode(web_app->app_id()); - app->run_on_os_login = - apps::mojom::RunOnOsLogin::New(login_mode, is_managed_login); + app->run_on_os_login = apps::mojom::RunOnOsLogin::New(login_mode, is_managed); return app; } @@ -1126,6 +1125,36 @@ /*is_user_action=*/true); } +void WebAppPublisherHelper::SetRunOnOsLoginMode( + const std::string& app_id, + apps::mojom::RunOnOsLoginMode run_on_os_login_mode) { + bool is_managed = provider_->policy_manager().GetUrlRunOnOsLoginPolicy( + app_id) != web_app::RunOnOsLoginPolicy::kAllowed; + if (!is_managed) { + web_app::RunOnOsLoginMode login_mode = + ConvertOsLoginModeToWebAppConstants(run_on_os_login_mode); + provider_->sync_bridge().SetAppRunOnOsLoginMode(app_id, login_mode); + HandleRunOnOsLogin(app_id, login_mode); + } +} + +void WebAppPublisherHelper::HandleRunOnOsLogin( + const std::string& app_id, + web_app::RunOnOsLoginMode login_mode) { + if (login_mode == web_app::RunOnOsLoginMode::kNotRun) { + web_app::OsHooksOptions os_hooks; + os_hooks[web_app::OsHookType::kRunOnOsLogin] = true; + provider_->os_integration_manager().UninstallOsHooks(app_id, os_hooks, + base::DoNothing()); + } else { + web_app::InstallOsHooksOptions install_options; + install_options.os_hooks[web_app::OsHookType::kRunOnOsLogin] = true; + provider_->os_integration_manager().InstallOsHooks( + app_id, base::DoNothing(), /*web_application_info=*/nullptr, + std::move(install_options)); + } +} + apps::mojom::RunOnOsLoginMode WebAppPublisherHelper::GetRunOnOsLoginMode( const std::string& app_id) { return ConvertOsLoginModeToMojom(registrar().GetAppRunOnOsLoginMode(app_id)); @@ -1205,12 +1234,11 @@ apps::mojom::AppPtr app = apps::mojom::App::New(); app->app_type = app_type(); app->app_id = app_id; - bool is_managed_login = provider_->policy_manager().GetUrlRunOnOsLoginPolicy( - app_id) != web_app::RunOnOsLoginPolicy::kAllowed; + bool is_managed = provider_->policy_manager().GetUrlRunOnOsLoginPolicy( + app_id) != web_app::RunOnOsLoginPolicy::kAllowed; apps::mojom::RunOnOsLoginMode login_mode = ConvertOsLoginModeToMojom(run_on_os_login_mode); - app->run_on_os_login = - apps::mojom::RunOnOsLogin::New(login_mode, is_managed_login); + app->run_on_os_login = apps::mojom::RunOnOsLogin::New(login_mode, is_managed); delegate_->PublishWebApp(std::move(app)); }
diff --git a/chrome/browser/web_applications/app_service/web_app_publisher_helper.h b/chrome/browser/web_applications/app_service/web_app_publisher_helper.h index a1ee0c5..5fa78a27 100644 --- a/chrome/browser/web_applications/app_service/web_app_publisher_helper.h +++ b/chrome/browser/web_applications/app_service/web_app_publisher_helper.h
@@ -213,6 +213,12 @@ void SetWindowMode(const std::string& app_id, apps::mojom::WindowMode window_mode); + void SetRunOnOsLoginMode(const std::string& app_id, + apps::mojom::RunOnOsLoginMode run_on_os_login_mode); + + void HandleRunOnOsLogin(const std::string& app_id, + web_app::RunOnOsLoginMode login_mode); + // Converts |display_mode| to a |window_mode|. apps::mojom::WindowMode ConvertDisplayModeToWindowMode( blink::mojom::DisplayMode display_mode);
diff --git a/chrome/browser/web_applications/app_service/web_apps.cc b/chrome/browser/web_applications/app_service/web_apps.cc index 6c82830..ef8d07ec 100644 --- a/chrome/browser/web_applications/app_service/web_apps.cc +++ b/chrome/browser/web_applications/app_service/web_apps.cc
@@ -218,6 +218,17 @@ publisher_helper().OpenNativeSettings(app_id); } +void WebApps::SetWindowMode(const std::string& app_id, + apps::mojom::WindowMode window_mode) { + publisher_helper().SetWindowMode(app_id, window_mode); +} + +void WebApps::SetRunOnOsLoginMode( + const std::string& app_id, + apps::mojom::RunOnOsLoginMode run_on_os_login_mode) { + publisher_helper().SetRunOnOsLoginMode(app_id, run_on_os_login_mode); +} + void WebApps::PublishWebApps(std::vector<apps::mojom::AppPtr> mojom_apps) { #if BUILDFLAG(IS_CHROMEOS_ASH) const WebApp* web_app = GetWebApp(ash::kChromeUITrustedProjectorSwaAppId); @@ -328,11 +339,6 @@ subscribers_.Add(std::move(subscriber)); } -void WebApps::SetWindowMode(const std::string& app_id, - apps::mojom::WindowMode window_mode) { - publisher_helper().SetWindowMode(app_id, window_mode); -} - #if BUILDFLAG(IS_CHROMEOS_ASH) void WebApps::Uninstall(const std::string& app_id, apps::mojom::UninstallSource uninstall_source,
diff --git a/chrome/browser/web_applications/app_service/web_apps.h b/chrome/browser/web_applications/app_service/web_apps.h index 2f0698b5..53bf2270 100644 --- a/chrome/browser/web_applications/app_service/web_apps.h +++ b/chrome/browser/web_applications/app_service/web_apps.h
@@ -120,6 +120,11 @@ void SetPermission(const std::string& app_id, apps::mojom::PermissionPtr permission) override; void OpenNativeSettings(const std::string& app_id) override; + void SetWindowMode(const std::string& app_id, + apps::mojom::WindowMode window_mode) override; + void SetRunOnOsLoginMode( + const std::string& app_id, + apps::mojom::RunOnOsLoginMode run_on_os_login_mode) override; // WebAppPublisherHelper::Delegate overrides. void PublishWebApps(std::vector<apps::mojom::AppPtr> mojom_apps) override; @@ -134,8 +139,6 @@ void InitWebApps(); void StartPublishingWebApps( mojo::PendingRemote<apps::mojom::Subscriber> subscriber_remote); - void SetWindowMode(const std::string& app_id, - apps::mojom::WindowMode window_mode) override; #if BUILDFLAG(IS_CHROMEOS_ASH) // apps::mojom::Publisher overrides.
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index fb9fed2..64e80ce 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-main-1643975903-f3381abab43b7b984471f498f580ac81d23e9856.profdata +chrome-win32-main-1643986788-6b430427775a73f546733958341f3307e975a013.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index af160e6..12666faf 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-main-1643975903-01d3b13c7a5c875741135a95a2da7a5af98db88c.profdata +chrome-win64-main-1643986788-b83eccd07a34a10f65132b648c7ade187cd7d611.profdata
diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni index 64c9d76e..f6e69536 100644 --- a/chrome/chrome_paks.gni +++ b/chrome/chrome_paks.gni
@@ -161,7 +161,6 @@ "$root_gen_dir/chrome/whats_new_resources.pak", "$root_gen_dir/content/browser/devtools/devtools_resources.pak", "$root_gen_dir/content/browser/tracing/tracing_resources.pak", - "$root_gen_dir/headless/headless_lib_resources.pak", ] deps += [ "//chrome/browser/resources:component_extension_resources", @@ -189,7 +188,6 @@ "//chrome/browser/resources/whats_new:resources", "//content/browser/devtools:devtools_resources", "//content/browser/tracing:resources", - "//headless:resources", ] if (is_chrome_branded) { sources += [ @@ -204,27 +202,27 @@ } if (is_chromeos_ash) { sources += [ - "$root_gen_dir/ash/ash_camera_app_resources.pak", - "$root_gen_dir/ash/ash_color_internals_resources.pak", - "$root_gen_dir/ash/ash_diagnostics_app_resources.pak", - "$root_gen_dir/ash/ash_eche_app_resources.pak", - "$root_gen_dir/ash/ash_eche_bundle_resources.pak", - "$root_gen_dir/ash/ash_firmware_update_app_resources.pak", - "$root_gen_dir/ash/ash_help_app_resources.pak", - "$root_gen_dir/ash/ash_media_app_resources.pak", - "$root_gen_dir/ash/ash_multidevice_debug_resources.pak", - "$root_gen_dir/ash/ash_os_feedback_resources.pak", - "$root_gen_dir/ash/ash_os_feedback_untrusted_resources.pak", - "$root_gen_dir/ash/ash_personalization_app_resources.pak", - "$root_gen_dir/ash/ash_print_management_resources.pak", - "$root_gen_dir/ash/ash_projector_app_trusted_resources.pak", - "$root_gen_dir/ash/ash_projector_app_untrusted_resources.pak", - "$root_gen_dir/ash/ash_scanning_app_resources.pak", - "$root_gen_dir/ash/ash_shimless_rma_resources.pak", - "$root_gen_dir/ash/ash_shortcut_customization_app_resources.pak", - "$root_gen_dir/ash/ash_system_extensions_internals_resources.pak", - "$root_gen_dir/ash/connectivity_diagnostics_resources.pak", "$root_gen_dir/ash/public/cpp/resources/ash_public_unscaled_resources.pak", + "$root_gen_dir/ash/webui/ash_camera_app_resources.pak", + "$root_gen_dir/ash/webui/ash_color_internals_resources.pak", + "$root_gen_dir/ash/webui/ash_diagnostics_app_resources.pak", + "$root_gen_dir/ash/webui/ash_eche_app_resources.pak", + "$root_gen_dir/ash/webui/ash_eche_bundle_resources.pak", + "$root_gen_dir/ash/webui/ash_firmware_update_app_resources.pak", + "$root_gen_dir/ash/webui/ash_help_app_resources.pak", + "$root_gen_dir/ash/webui/ash_media_app_resources.pak", + "$root_gen_dir/ash/webui/ash_multidevice_debug_resources.pak", + "$root_gen_dir/ash/webui/ash_os_feedback_resources.pak", + "$root_gen_dir/ash/webui/ash_os_feedback_untrusted_resources.pak", + "$root_gen_dir/ash/webui/ash_personalization_app_resources.pak", + "$root_gen_dir/ash/webui/ash_print_management_resources.pak", + "$root_gen_dir/ash/webui/ash_projector_app_trusted_resources.pak", + "$root_gen_dir/ash/webui/ash_projector_app_untrusted_resources.pak", + "$root_gen_dir/ash/webui/ash_scanning_app_resources.pak", + "$root_gen_dir/ash/webui/ash_shimless_rma_resources.pak", + "$root_gen_dir/ash/webui/ash_shortcut_customization_app_resources.pak", + "$root_gen_dir/ash/webui/ash_system_extensions_internals_resources.pak", + "$root_gen_dir/ash/webui/connectivity_diagnostics_resources.pak", "$root_gen_dir/ash/webui/file_manager/resources/file_manager_swa_resources.pak", "$root_gen_dir/ash/webui/file_manager/untrusted_resources/file_manager_untrusted_resources.pak", "$root_gen_dir/chrome/audio_resources.pak", @@ -304,9 +302,9 @@ if (!is_official_build) { sources += [ - "$root_gen_dir/ash/ash_demo_mode_app_resources.pak", - "$root_gen_dir/ash/ash_sample_system_web_app_resources.pak", - "$root_gen_dir/ash/ash_sample_system_web_app_untrusted_resources.pak", + "$root_gen_dir/ash/webui/ash_demo_mode_app_resources.pak", + "$root_gen_dir/ash/webui/ash_sample_system_web_app_resources.pak", + "$root_gen_dir/ash/webui/ash_sample_system_web_app_untrusted_resources.pak", ] deps += [ "//ash/webui/resources:demo_mode_app_resources",
diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc index 47fa665..29ebfa3d 100644 --- a/chrome/common/chrome_features.cc +++ b/chrome/common/chrome_features.cc
@@ -923,6 +923,13 @@ constexpr base::FeatureParam<double> kSCTAuditingSamplingRate{ &kSCTAuditing, "sampling_rate", 0.0001}; +// SCT auditing hashdance allows Chrome clients who are not opted-in to Enhanced +// Safe Browsing Reporting to perform a k-anonymous query to see if Google knows +// about an SCT seen in the wild. If it hasn't been seen, then it is considered +// a security incident and uploaded to Google. +const base::Feature kSCTAuditingHashdance{"SCTAuditingHashdance", + base::FEATURE_DISABLED_BY_DEFAULT}; + const base::Feature kSearchHistoryLink{"SearchHistoryLink", base::FEATURE_ENABLED_BY_DEFAULT};
diff --git a/chrome/common/chrome_features.h b/chrome/common/chrome_features.h index dc14668..00e103b 100644 --- a/chrome/common/chrome_features.h +++ b/chrome/common/chrome_features.h
@@ -628,6 +628,8 @@ extern const base::Feature kSCTAuditing; COMPONENT_EXPORT(CHROME_FEATURES) extern const base::FeatureParam<double> kSCTAuditingSamplingRate; +COMPONENT_EXPORT(CHROME_FEATURES) +extern const base::Feature kSCTAuditingHashdance; COMPONENT_EXPORT(CHROME_FEATURES) extern const base::Feature kSearchHistoryLink;
diff --git a/chrome/installer/mac/sign_chrome.py b/chrome/installer/mac/sign_chrome.py index 03987674..806b499 100755 --- a/chrome/installer/mac/sign_chrome.py +++ b/chrome/installer/mac/sign_chrome.py
@@ -113,6 +113,14 @@ default=[], help='Causes any distribution whose brand code matches to be skipped. ' 'A value of * matches all brand codes.') + parser.add_argument( + '--channel', + dest='channels', + action='append', + default=[], + help='If provided, only the distributions matching the specified ' + 'channel(s) will be produced. The string "stable" matches the None ' + 'channel.') group = parser.add_mutually_exclusive_group(required=False) group.add_argument( @@ -146,7 +154,8 @@ config, disable_packaging=args.disable_packaging, do_notarization=args.notarize, - skip_brands=args.skip_brands) + skip_brands=args.skip_brands, + channels=args.channels) if __name__ == '__main__':
diff --git a/chrome/installer/mac/signing/pipeline.py b/chrome/installer/mac/signing/pipeline.py index 59b5bdb..e54b7f66 100644 --- a/chrome/installer/mac/signing/pipeline.py +++ b/chrome/installer/mac/signing/pipeline.py
@@ -564,9 +564,10 @@ return '-'.join(customizations) -def _filter_distributions(distributions, skip_brands): - """Filters |distributions| by whether the distribution has a brand code that - is indicated for skipping by |skip_brands|. Returns the filtered +def _filter_distributions(distributions, skip_brands, channels): + """Filters |distributions| by filtering out those whose brand code is + indicated for skipping by |skip_brands|, and filtering in those whose + channel is indicated for inclusion by |channels|. Returns the filtered distribution list. Args: @@ -574,50 +575,79 @@ skip_brands: A list of brand code strings. If a distribution has a brand code in this list, or if a distribution has a brand code and |skip_brands| contains *, that distribution will be skipped. + channels: A list of channel names. If the list is non-empty, then only + distributions that match a channel name in this list will be + produced. The string 'stable' matches the None channel. Returns: The filtered list of |model.Distribution| objects. Raises: - ValueError: If any value provided in |skip_brands| does not cause at - least one distribution to be filtered out. - ValueError: If |skip_brands| contains both the wildcard '*' value as - well as any other individual values. + ValueError: If any value provided in |skip_brands| does not match at + least one distribution. + ValueError: If any value provided in |channels| does not match at least + one distribution. + ValueError: If no distribution matching a value provided in |channels| + can be returned due to brand filtering. """ - # The requirement that all skips should filter at least one distribution is - # complicated with a wildcard, because both would match. Simplify things by - # allowing either explicitly listed skips, or a wildcard, but not both. - if '*' in skip_brands and len(skip_brands) > 1: - raise ValueError('It is invalid to both specify skipping all brands ' - 'with * and also specify individual brands to skip') + all_distribution_brands = {dist.branding_code for dist in distributions} + invalid_brands = set(skip_brands) - all_distribution_brands + invalid_brands.discard('*') + if invalid_brands: + raise ValueError('Brand codes do not match any distribution: {}'.format( + invalid_brands)) - for skip_brand in skip_brands: + all_distribution_channels = { + "stable" if dist.channel is None else dist.channel + for dist in distributions + } + invalid_channels = set(channels) - all_distribution_channels + if invalid_channels: + raise ValueError('Channels do not match any distribution: {}'.format( + invalid_channels)) - def filter_brand(dist): - if not dist.branding_code: - return True - if dist.branding_code == skip_brand: - return False - if '*' == skip_brand: - return False + def include_brand(dist): + if not dist.branding_code: + return True + if '*' in skip_brands: + return False + if dist.branding_code in skip_brands: + return False + return True + + def include_channel(dist): + if len(channels) == 0: return True - new_distributions = list(filter(filter_brand, distributions)) + channel = dist.channel + if channel is None: + channel = 'stable' + return channel in channels - if len(new_distributions) == len(distributions): - raise ValueError('Brand code does not specify a distribution', - skip_brand) + filtered_distributions = [ + dist for dist in distributions + if include_brand(dist) and include_channel(dist) + ] - distributions = new_distributions + filtered_distribution_channels = { + "stable" if dist.channel is None else dist.channel + for dist in filtered_distributions + } + filtered_channels = set(channels) - filtered_distribution_channels + if filtered_channels: + raise ValueError( + 'All distributions for channels were filtered out by brand: {}' + .format(filtered_channels)) - return distributions + return filtered_distributions def sign_all(orig_paths, config, disable_packaging=False, do_notarization=True, - skip_brands=[]): + skip_brands=[], + channels=[]): """For each distribution in |config|, performs customization, signing, and DMG packaging and places the resulting signed DMG in |orig_paths.output|. The |paths.input| must contain the products to customize and sign. @@ -637,6 +667,9 @@ skip_brands: A list of brand code strings. If a distribution has a brand code in this list, or if a distribution has a brand code and |skip_brands| contains *, that distribution will be skipped. + channels: A list of channel names. If the list is non-empty, then only + distributions that match a channel name in this list will be + produced. The string 'stable' matches the None channel. """ with commands.WorkDirectory(orig_paths) as notary_paths: # First, sign all the distributions and optionally submit the @@ -645,7 +678,8 @@ signed_frameworks = {} created_app_bundles = set() - distributions = _filter_distributions(config.distributions, skip_brands) + distributions = _filter_distributions(config.distributions, skip_brands, + channels) for dist in distributions: with commands.WorkDirectory(orig_paths) as paths:
diff --git a/chrome/installer/mac/signing/pipeline_test.py b/chrome/installer/mac/signing/pipeline_test.py index 5c0bab7..b07be5d5 100644 --- a/chrome/installer/mac/signing/pipeline_test.py +++ b/chrome/installer/mac/signing/pipeline_test.py
@@ -80,6 +80,24 @@ return l[index + 1] +def _filter_distributions(d, b, c): + _filter_distributions.brands = b + _filter_distributions.channels = c + return d + + +_filter_distributions.brands = None +_filter_distributions.channels = None + + +def _last_brand_filter(): + return _filter_distributions.brands + + +def _last_channel_filter(): + return _filter_distributions.channels + + @mock.patch.multiple( 'signing.commands', **{ m: mock.DEFAULT @@ -891,35 +909,89 @@ def test_filter_distributions(self, **kwargs): dist1 = model.Distribution() - dist2 = model.Distribution(branding_code='MOO') - dist3 = model.Distribution(branding_code='ARF') - dist4 = model.Distribution(branding_code='MOOF') + dist2 = model.Distribution(branding_code='MOO', channel='beta') + dist3 = model.Distribution(branding_code='ARF', channel='dev') + dist4 = model.Distribution(branding_code='MOOF', channel='canary') distributions = [dist1, dist2, dist3, dist4] - # No brand code filters should yield no change to the distribution list. + # --- Neither --- + + # No filters should yield no change to the distribution list. self.assertEqual(distributions, - pipeline._filter_distributions(distributions, [])) + pipeline._filter_distributions(distributions, [], [])) + + # --- Brands only --- # Filtering a brand code not being built should throw. - with self.assertRaises(ValueError): - pipeline._filter_distributions(distributions, ['MOOG']) - - # Filtering a specific brand code and all brand codes should throw. - with self.assertRaises(ValueError): - pipeline._filter_distributions(distributions, ['*', 'MOOF']) + with self.assertRaises(ValueError) as cm: + pipeline._filter_distributions(distributions, ['MOOG'], []) + self.assertEqual(cm.exception.args[0], + "Brand codes do not match any distribution: {'MOOG'}") # Filtering one or more brand codes explicitly should remove them. self.assertEqual([dist1, dist2, dist3], - pipeline._filter_distributions(distributions, - ['MOOF'])) + pipeline._filter_distributions(distributions, ['MOOF'], + [])) self.assertEqual([dist1, dist3], pipeline._filter_distributions(distributions, - ['MOO', 'MOOF'])) + ['MOO', 'MOOF'], [])) # Filtering a '*' should remove all brand coded distributions. self.assertEqual([dist1], - pipeline._filter_distributions(distributions, ['*'])) + pipeline._filter_distributions(distributions, ['*'], + [])) + + # Filtering a specific brand code and '*' should remove all brand coded + # distributions. + self.assertEqual([dist1], + pipeline._filter_distributions(distributions, + ['*', 'MOOF'], [])) + + # Filtering all brand codes when there aren't any should yield no change + # to the distribution list. + self.assertEqual([dist1], + pipeline._filter_distributions([dist1], ['*'], [])) + + # --- Channels --- + + # Filtering for a channel not being built should throw. + with self.assertRaises(ValueError) as cm: + pipeline._filter_distributions(distributions, [], ['hyper']) + self.assertEqual(cm.exception.args[0], + "Channels do not match any distribution: {'hyper'}") + + # Filtering for 'stable' should result in the distribution with None + # as a channel. + self.assertEqual([dist1], + pipeline._filter_distributions(distributions, [], + ['stable'])) + + # Filtering for any other string as channel name should work. + self.assertEqual([dist2], + pipeline._filter_distributions(distributions, [], + ['beta'])) + + # Filtering for 'stable' along with other strings should work. + self.assertEqual([dist1, dist3], + pipeline._filter_distributions(distributions, [], + ['stable', 'dev'])) + + # --- Both --- + + # Filtering on both in a way that allows a result should work. + self.assertEqual([dist2], + pipeline._filter_distributions(distributions, ['MOOF'], + ['beta'])) + + # Filtering for inclusion of a channel that is filtered out due to brand + # code should throw. + with self.assertRaises(ValueError) as cm: + pipeline._filter_distributions(distributions, ['MOO'], ['beta']) + self.assertEqual( + cm.exception.args[0], + "All distributions for channels were filtered out by brand: " + "{'beta'}") @mock.patch.multiple( @@ -1342,3 +1414,31 @@ # Finally the installer tools. mock.call._package_installer_tools(mock.ANY, mock.ANY), ]) + + @mock.patch('signing.pipeline._filter_distributions', _filter_distributions) + def test_sign_calls_filters(self, **kwargs): + manager = mock.Mock() + for attr in kwargs: + manager.attach_mock(kwargs[attr], attr) + + skip_brands = ['MOO'] + include_channels = ['beta'] + + class Config(test_config.TestConfig): + + @property + def distributions(self): + return [ + model.Distribution(), + ] + + config = Config() + pipeline.sign_all( + self.paths, + config, + do_notarization=False, + skip_brands=skip_brands, + channels=include_channels) + + self.assertEqual(_last_brand_filter(), skip_brands) + self.assertEqual(_last_channel_filter(), include_channels)
diff --git a/chrome/installer/setup/install_worker.cc b/chrome/installer/setup/install_worker.cc index a893066..ee8f84c 100644 --- a/chrome/installer/setup/install_worker.cc +++ b/chrome/installer/setup/install_worker.cc
@@ -312,6 +312,7 @@ install_static::GetElevationServiceName(), install_static::GetElevationServiceDisplayName(), SERVICE_DEMAND_START, base::CommandLine(elevation_service_path), + base::CommandLine(base::CommandLine::NO_PROGRAM), install_static::GetClientStateKeyPath(), {install_static::GetElevatorClsid()}, {install_static::GetElevatorIid()}); install_service_work_item->set_best_effort(true);
diff --git a/chrome/installer/util/install_service_work_item.cc b/chrome/installer/util/install_service_work_item.cc index 0fff03d1e..b2402a42 100644 --- a/chrome/installer/util/install_service_work_item.cc +++ b/chrome/installer/util/install_service_work_item.cc
@@ -14,16 +14,19 @@ const std::wstring& display_name, uint32_t start_type, const base::CommandLine& service_cmd_line, + const base::CommandLine& com_service_cmd_line_args, const std::wstring& registry_path, const std::vector<GUID>& clsids, const std::vector<GUID>& iids) - : impl_(std::make_unique<InstallServiceWorkItemImpl>(service_name, - display_name, - start_type, - service_cmd_line, - registry_path, - clsids, - iids)) {} + : impl_(std::make_unique<InstallServiceWorkItemImpl>( + service_name, + display_name, + start_type, + service_cmd_line, + com_service_cmd_line_args, + registry_path, + clsids, + iids)) {} InstallServiceWorkItem::~InstallServiceWorkItem() = default; @@ -40,10 +43,12 @@ const std::wstring& registry_path, const std::vector<GUID>& clsids, const std::vector<GUID>& iids) { - // The `display_name`, `start_type`, and `service_cmd_line` are ignored by - // `InstallServiceWorkItemImpl` for `DeleteServiceImpl`. + // The `display_name`, `start_type`, `service_cmd_line`, and + // `com_service_cmd_line_args` are ignored by `InstallServiceWorkItemImpl` for + // `DeleteServiceImpl`. return InstallServiceWorkItemImpl( service_name, std::wstring(), SERVICE_DISABLED, + base::CommandLine(base::CommandLine::NO_PROGRAM), base::CommandLine(base::CommandLine::NO_PROGRAM), registry_path, clsids, iids) .DeleteServiceImpl();
diff --git a/chrome/installer/util/install_service_work_item.h b/chrome/installer/util/install_service_work_item.h index 577c306..d3a8857 100644 --- a/chrome/installer/util/install_service_work_item.h +++ b/chrome/installer/util/install_service_work_item.h
@@ -43,6 +43,13 @@ // the SCM. For example, // "C:\Program Files (x86)\Google\Chrome\ElevationService.exe" /svc // + // |com_service_cmd_line_args| indicates switches that the SCM needs to pass + // to ServiceMain() during COM activation. This is used to distinguish a + // non-COM SCM activation (for example, an AUTO start, or when someone + // manually starts the service using the control panel) from a COM service + // activation. For example, "comsvc" could be a switch used to indicate a COM + // activation. + // // NOTE: |registry_path| is mapped to the 32-bit view of the registry for // legacy reasons. |registry_path| is the path in HKEY_LOCAL_MACHINE under // which the service persists information, for instance if the service has to @@ -56,6 +63,7 @@ const std::wstring& display_name, uint32_t start_type, const base::CommandLine& service_cmd_line, + const base::CommandLine& com_service_cmd_line_args, const std::wstring& registry_path, const std::vector<GUID>& clsids, const std::vector<GUID>& iids);
diff --git a/chrome/installer/util/install_service_work_item_impl.cc b/chrome/installer/util/install_service_work_item_impl.cc index 3cfeffa..7570b1a2 100644 --- a/chrome/installer/util/install_service_work_item_impl.cc +++ b/chrome/installer/util/install_service_work_item_impl.cc
@@ -156,6 +156,7 @@ const std::wstring& display_name, uint32_t start_type, const base::CommandLine& service_cmd_line, + const base::CommandLine& com_service_cmd_line_args, const std::wstring& registry_path, const std::vector<GUID>& clsids, const std::vector<GUID>& iids) @@ -164,6 +165,7 @@ display_name_(display_name), start_type_(start_type), service_cmd_line_(service_cmd_line), + com_service_cmd_line_args_(com_service_cmd_line_args), registry_path_(registry_path), clsids_(clsids), iids_(iids), @@ -257,6 +259,18 @@ com_registration_work_items_->AddSetRegValueWorkItem( HKEY_LOCAL_MACHINE, appid_reg_path, WorkItem::kWow64Default, L"LocalService", GetCurrentServiceName(), true); + + base::CommandLine::StringType com_service_args_string = + com_service_cmd_line_args_.GetArgumentsString(); + if (!com_service_args_string.empty()) { + com_registration_work_items_->AddSetRegValueWorkItem( + HKEY_LOCAL_MACHINE, appid_reg_path, WorkItem::kWow64Default, + L"ServiceParameters", com_service_args_string, true); + } else { + com_registration_work_items_->AddDeleteRegValueWorkItem( + HKEY_LOCAL_MACHINE, appid_reg_path, WorkItem::kWow64Default, + L"ServiceParameters"); + } } for (const auto& iid : iids_) {
diff --git a/chrome/installer/util/install_service_work_item_impl.h b/chrome/installer/util/install_service_work_item_impl.h index e1eda1b..f092eed 100644 --- a/chrome/installer/util/install_service_work_item_impl.h +++ b/chrome/installer/util/install_service_work_item_impl.h
@@ -58,6 +58,7 @@ const std::wstring& display_name, uint32_t start_type, const base::CommandLine& service_cmd_line, + const base::CommandLine& com_service_cmd_line_args, const std::wstring& registry_path, const std::vector<GUID>& clsids, const std::vector<GUID>& iids); @@ -189,6 +190,10 @@ // The desired service command line. const base::CommandLine service_cmd_line_; + // The SCM will pass any switches specified in `com_service_cmd_line_args_` to + // ServiceMain() during COM activation. + const base::CommandLine com_service_cmd_line_args_; + // The path under HKEY_LOCAL_MACHINE where the service persists information, // such as a versioned service name. For legacy reasons, this path is mapped // to the 32-bit view of the registry.
diff --git a/chrome/installer/util/install_service_work_item_unittest.cc b/chrome/installer/util/install_service_work_item_unittest.cc index 2c2c38a..99ec95aa 100644 --- a/chrome/installer/util/install_service_work_item_unittest.cc +++ b/chrome/installer/util/install_service_work_item_unittest.cc
@@ -28,6 +28,8 @@ constexpr uint32_t kServiceStartType = SERVICE_DEMAND_START; constexpr base::FilePath::CharType kServiceProgramPath[] = FILE_PATH_LITERAL("c:\\windows\\SysWow64\\cmd.exe"); +constexpr base::CommandLine::CharType kComServiceCmdLineArgs[] = + FILE_PATH_LITERAL("com-service"); constexpr wchar_t kProductRegPath[] = L"Software\\ChromiumTestInstallServiceWorkItem"; @@ -95,6 +97,70 @@ return !GetImpl(item)->ChangeServiceConfig(config); } + static void ExpectServiceCOMRegistrationCorrect( + const base::CommandLine& com_service_cmd_line_args, + const base::FilePath::CharType typelib_path[]) { + base::win::RegKey key; + std::wstring value; + + // Check CLSID registration. + EXPECT_EQ(ERROR_SUCCESS, + key.Open(HKEY_LOCAL_MACHINE, kClsidRegPath, KEY_READ)); + EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(L"AppID", &value)); + EXPECT_EQ(base::win::WStringFromGUID(kClsid), value); + + // Check AppId registration. + EXPECT_EQ(ERROR_SUCCESS, + key.Open(HKEY_LOCAL_MACHINE, kAppidRegPath, KEY_READ)); + EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(L"LocalService", &value)); + EXPECT_EQ(kServiceName, value); + + if (!com_service_cmd_line_args.GetArgumentsString().empty()) { + EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(L"ServiceParameters", &value)); + EXPECT_EQ(com_service_cmd_line_args.GetArgumentsString(), value); + } else { + EXPECT_FALSE(key.HasValue(L"ServiceParameters")); + } + + // Check IID registration. + EXPECT_EQ(ERROR_SUCCESS, + key.Open(HKEY_LOCAL_MACHINE, kIidPSRegPath, KEY_READ)); + EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(L"", &value)); + EXPECT_EQ(L"{00020424-0000-0000-C000-000000000046}", value); + + EXPECT_EQ(ERROR_SUCCESS, + key.Open(HKEY_LOCAL_MACHINE, kIidTLBRegPath, KEY_READ)); + EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(L"", &value)); + EXPECT_EQ(base::win::WStringFromGUID(kIid), value); + EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(L"Version", &value)); + EXPECT_EQ(L"1.0", value); + + // Check TypeLib registration. + EXPECT_EQ(ERROR_SUCCESS, + key.Open(HKEY_LOCAL_MACHINE, kTypeLibWin32RegPath, KEY_READ)); + EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(L"", &value)); + EXPECT_EQ(typelib_path, value); + + EXPECT_EQ(ERROR_SUCCESS, + key.Open(HKEY_LOCAL_MACHINE, kTypeLibWin64RegPath, KEY_READ)); + EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(L"", &value)); + EXPECT_EQ(typelib_path, value); + } + + static void ExpectServiceCOMRegistrationAbsent() { + base::win::RegKey key; + std::wstring value; + + EXPECT_EQ(ERROR_FILE_NOT_FOUND, + key.Open(HKEY_LOCAL_MACHINE, kClsidRegPath, KEY_READ)); + EXPECT_EQ(ERROR_FILE_NOT_FOUND, + key.Open(HKEY_LOCAL_MACHINE, kAppidRegPath, KEY_READ)); + EXPECT_EQ(ERROR_FILE_NOT_FOUND, + key.Open(HKEY_LOCAL_MACHINE, IID_REGISTRY_PATH, KEY_READ)); + EXPECT_EQ(ERROR_FILE_NOT_FOUND, + key.Open(HKEY_LOCAL_MACHINE, TYPELIB_REGISTRY_PATH, KEY_READ)); + } + void TearDown() override { base::win::RegKey(HKEY_LOCAL_MACHINE, L"", KEY_READ | KEY_WOW64_32KEY) .DeleteKey(kProductRegPath); @@ -133,70 +199,32 @@ } TEST_F(InstallServiceWorkItemTest, Do_FreshInstall) { + base::CommandLine com_service_cmd_line_args(base::CommandLine::NO_PROGRAM); + com_service_cmd_line_args.AppendArgNative(kComServiceCmdLineArgs); + auto item = std::make_unique<InstallServiceWorkItem>( kServiceName, kServiceDisplayName, kServiceStartType, - base::CommandLine(base::FilePath(kServiceProgramPath)), kProductRegPath, - kClsids, kIids); + base::CommandLine(base::FilePath(kServiceProgramPath)), + com_service_cmd_line_args, kProductRegPath, kClsids, kIids); ASSERT_TRUE(item->Do()); EXPECT_TRUE(GetImpl(item.get())->OpenService()); EXPECT_TRUE(IsServiceCorrectlyConfigured(item.get())); - base::win::RegKey key; - std::wstring value; - - // Check CLSID registration. - EXPECT_EQ(ERROR_SUCCESS, - key.Open(HKEY_LOCAL_MACHINE, kClsidRegPath, KEY_READ)); - EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(L"AppID", &value)); - EXPECT_EQ(base::win::WStringFromGUID(kClsid), value); - - // Check AppId registration. - EXPECT_EQ(ERROR_SUCCESS, - key.Open(HKEY_LOCAL_MACHINE, kAppidRegPath, KEY_READ)); - EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(L"LocalService", &value)); - EXPECT_EQ(kServiceName, value); - - // Check IID registration. - EXPECT_EQ(ERROR_SUCCESS, - key.Open(HKEY_LOCAL_MACHINE, kIidPSRegPath, KEY_READ)); - EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(L"", &value)); - EXPECT_EQ(L"{00020424-0000-0000-C000-000000000046}", value); - - EXPECT_EQ(ERROR_SUCCESS, - key.Open(HKEY_LOCAL_MACHINE, kIidTLBRegPath, KEY_READ)); - EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(L"", &value)); - EXPECT_EQ(base::win::WStringFromGUID(kIid), value); - EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(L"Version", &value)); - EXPECT_EQ(L"1.0", value); - - // Check TypeLib registration. - EXPECT_EQ(ERROR_SUCCESS, - key.Open(HKEY_LOCAL_MACHINE, kTypeLibWin32RegPath, KEY_READ)); - EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(L"", &value)); - EXPECT_EQ(kServiceProgramPath, value); - - EXPECT_EQ(ERROR_SUCCESS, - key.Open(HKEY_LOCAL_MACHINE, kTypeLibWin64RegPath, KEY_READ)); - EXPECT_EQ(ERROR_SUCCESS, key.ReadValue(L"", &value)); - EXPECT_EQ(kServiceProgramPath, value); + ExpectServiceCOMRegistrationCorrect(com_service_cmd_line_args, + kServiceProgramPath); item->Rollback(); + EXPECT_TRUE(IsServiceGone(item.get())); - EXPECT_EQ(ERROR_FILE_NOT_FOUND, - key.Open(HKEY_LOCAL_MACHINE, kClsidRegPath, KEY_READ)); - EXPECT_EQ(ERROR_FILE_NOT_FOUND, - key.Open(HKEY_LOCAL_MACHINE, kAppidRegPath, KEY_READ)); - EXPECT_EQ(ERROR_FILE_NOT_FOUND, - key.Open(HKEY_LOCAL_MACHINE, IID_REGISTRY_PATH, KEY_READ)); - EXPECT_EQ(ERROR_FILE_NOT_FOUND, - key.Open(HKEY_LOCAL_MACHINE, TYPELIB_REGISTRY_PATH, KEY_READ)); + ExpectServiceCOMRegistrationAbsent(); } TEST_F(InstallServiceWorkItemTest, Do_FreshInstallThenDeleteService) { auto item = std::make_unique<InstallServiceWorkItem>( kServiceName, kServiceDisplayName, kServiceStartType, - base::CommandLine(base::FilePath(kServiceProgramPath)), kProductRegPath, + base::CommandLine(base::FilePath(kServiceProgramPath)), + base::CommandLine(base::CommandLine::NO_PROGRAM), kProductRegPath, kClsids, kIids); ASSERT_TRUE(item->Do()); @@ -213,7 +241,8 @@ TEST_F(InstallServiceWorkItemTest, Do_UpgradeNoChanges) { auto item = std::make_unique<InstallServiceWorkItem>( kServiceName, kServiceDisplayName, kServiceStartType, - base::CommandLine(base::FilePath(kServiceProgramPath)), kProductRegPath, + base::CommandLine(base::FilePath(kServiceProgramPath)), + base::CommandLine(base::CommandLine::NO_PROGRAM), kProductRegPath, kClsids, kIids); ASSERT_TRUE(item->Do()); @@ -222,7 +251,8 @@ // Same command line: auto item_upgrade = std::make_unique<InstallServiceWorkItem>( kServiceName, kServiceDisplayName, kServiceStartType, - base::CommandLine(base::FilePath(kServiceProgramPath)), kProductRegPath, + base::CommandLine(base::FilePath(kServiceProgramPath)), + base::CommandLine(base::CommandLine::NO_PROGRAM), kProductRegPath, kClsids, kIids); EXPECT_TRUE(item_upgrade->Do()); @@ -247,19 +277,25 @@ EXPECT_TRUE(IsServiceGone(item_upgrade.get())); } -TEST_F(InstallServiceWorkItemTest, Do_UpgradeChangedCmdLineAndStartType) { +TEST_F(InstallServiceWorkItemTest, Do_UpgradeChangedCmdLineStartTypeCOMArgs) { + base::CommandLine com_service_cmd_line_args(base::CommandLine::NO_PROGRAM); + com_service_cmd_line_args.AppendArgNative(kComServiceCmdLineArgs); + auto item = std::make_unique<InstallServiceWorkItem>( kServiceName, kServiceDisplayName, kServiceStartType, - base::CommandLine(base::FilePath(kServiceProgramPath)), kProductRegPath, - kClsids, kIids); + base::CommandLine(base::FilePath(kServiceProgramPath)), + com_service_cmd_line_args, kProductRegPath, kClsids, kIids); ASSERT_TRUE(item->Do()); EXPECT_TRUE(IsServiceCorrectlyConfigured(item.get())); + ExpectServiceCOMRegistrationCorrect(com_service_cmd_line_args, + kServiceProgramPath); // New command line and start type. auto item_upgrade = std::make_unique<InstallServiceWorkItem>( kServiceName, kServiceDisplayName, SERVICE_AUTO_START, - base::CommandLine::FromString(L"NewCmd.exe arg1 arg2"), kProductRegPath, + base::CommandLine::FromString(L"NewCmd.exe arg1 arg2"), + base::CommandLine(base::CommandLine::NO_PROGRAM), kProductRegPath, kClsids, kIids); EXPECT_TRUE(item_upgrade->Do()); @@ -267,6 +303,8 @@ // service is correctly configured, while the old item shows that the service // is not correctly configured. EXPECT_TRUE(IsServiceCorrectlyConfigured(item_upgrade.get())); + ExpectServiceCOMRegistrationCorrect( + base::CommandLine(base::CommandLine::NO_PROGRAM), L"NewCmd.exe"); EXPECT_FALSE(IsServiceCorrectlyConfigured(item.get())); item_upgrade->Rollback(); @@ -276,6 +314,8 @@ // correctly configured, while the new item shows that the service is not // correctly configured. EXPECT_TRUE(IsServiceCorrectlyConfigured(item.get())); + ExpectServiceCOMRegistrationCorrect(com_service_cmd_line_args, + kServiceProgramPath); EXPECT_FALSE(IsServiceCorrectlyConfigured(item_upgrade.get())); EXPECT_TRUE(GetImpl(item_upgrade.get())->DeleteCurrentService()); @@ -288,6 +328,7 @@ TEST_F(InstallServiceWorkItemTest, Do_ServiceName) { auto item = std::make_unique<InstallServiceWorkItem>( kServiceName, kServiceDisplayName, kServiceStartType, + base::CommandLine(base::CommandLine::NO_PROGRAM), base::CommandLine(base::FilePath(kServiceProgramPath)), kProductRegPath, kClsids, kIids);
diff --git a/chrome/renderer/v8_unwinder_unittest.cc b/chrome/renderer/v8_unwinder_unittest.cc index 90110a4..f16a934 100644 --- a/chrome/renderer/v8_unwinder_unittest.cc +++ b/chrome/renderer/v8_unwinder_unittest.cc
@@ -25,22 +25,6 @@ namespace { -class TestModule : public base::ModuleCache::Module { - public: - TestModule(uintptr_t base_address, size_t size) - : base_address_(base_address), size_(size) {} - - uintptr_t GetBaseAddress() const override { return base_address_; } - std::string GetId() const override { return ""; } - base::FilePath GetDebugBasename() const override { return base::FilePath(); } - size_t GetSize() const override { return size_; } - bool IsNative() const override { return true; } - - private: - const uintptr_t base_address_; - const size_t size_; -}; - v8::Local<v8::String> ToV8String(const char* str) { return v8::String::NewFromUtf8(v8::Isolate::GetCurrent(), str) .ToLocalChecked(); @@ -524,7 +508,7 @@ unwinder.OnStackCapture(); unwinder.UpdateModules(); - auto other_module = std::make_unique<TestModule>(1, 10); + auto other_module = std::make_unique<base::TestModule>(1, 10); const base::ModuleCache::Module* other_module_ptr = other_module.get(); module_cache.AddCustomNativeModule(std::move(other_module));
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index b77418e67..a416c87 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -4554,7 +4554,6 @@ "../browser/component_updater/origin_trials_component_installer_unittest.cc", "../browser/component_updater/subresource_filter_component_installer_unittest.cc", "../browser/component_updater/trust_token_key_commitments_component_installer_unittest.cc", - "../browser/component_updater/updater_state_unittest.cc", "../browser/content_index/content_index_provider_unittest.cc", "../browser/content_settings/content_settings_default_provider_unittest.cc", "../browser/content_settings/content_settings_mock_observer.cc", @@ -8000,6 +7999,10 @@ "//build/config/fuchsia/test/network_capabilities.test-cmx", ] } + + if (is_mac || is_win) { + sources += [ "../browser/component_updater/updater_state_unittest.cc" ] + } } static_library("test_support_unit") {
diff --git a/chrome/test/data/extensions/platform_apps/web_view/shim/main.js b/chrome/test/data/extensions/platform_apps/web_view/shim/main.js index db060d2..cc8859ed 100644 --- a/chrome/test/data/extensions/platform_apps/web_view/shim/main.js +++ b/chrome/test/data/extensions/platform_apps/web_view/shim/main.js
@@ -3373,6 +3373,17 @@ document.body.appendChild(webview); } +function testBlankWebview() { + var webview = new WebView(); + webview.src = "about:blank"; + document.body.appendChild(webview); + webview.addEventListener('loadstop', function() { + // This lets the browser know that it can start sending down input events + // for the remainder of the test. + embedder.test.succeed(); + }); +} + embedder.test.testList = { 'testAllowTransparencyAttribute': testAllowTransparencyAttribute, 'testAutosizeHeight': testAutosizeHeight, @@ -3381,6 +3392,7 @@ 'testAutosizeRemoveAttributes': testAutosizeRemoveAttributes, 'testAutosizeWithPartialAttributes': testAutosizeWithPartialAttributes, 'testAPIMethodExistence': testAPIMethodExistence, + 'testBlankWebview': testBlankWebview, 'testCustomElementCallbacksInaccessible': testCustomElementCallbacksInaccessible, 'testChromeExtensionURL': testChromeExtensionURL,
diff --git a/chrome/test/data/perf/throughput_test_cases/mixed-jank.html b/chrome/test/data/perf/throughput_test_cases/mixed-jank.html new file mode 100644 index 0000000..3de5aa812 --- /dev/null +++ b/chrome/test/data/perf/throughput_test_cases/mixed-jank.html
@@ -0,0 +1,67 @@ +<!-- Ongoing compositor-animation that has no updates, running at the + same time as a janky main-thread animation. --> + + +<style> +@keyframes sideways { + 0% { transform: translateX(0px) } + 30% { transform: translateX(80px) } + 70% { transform: translateX(80px) } + 100% { transform: translateX(0px) } +} + +#div, #comp { + width: 100px; + height: 100px; + background-color: red; +} + +</style> + +<button id='button'>Start</button> + +<div id='div'></div> +<hr> +<div id='comp'></div> + +<script> + +let x = 0; +let startTime = undefined; + +function animationtick() { + div.style.transform = `translateX(${x}px)`; + ++x; + if (x > 200) { + x = 0; + } +} + +function stopAnimation() { + comp.style.animation = ''; +} + +function janktick() { + animationtick(); + + if ((new Date() - startTime) > 5000) { + stopAnimation(); + return; + } + + const b = new Date(); + while ((new Date() - b) < 100) {} + + requestAnimationFrame(janktick); +} + +function startAnimation() { + startTime = new Date(); + requestAnimationFrame(janktick); + comp.style.animation = 'sideways 1s infinite'; +} + +button.onclick = startAnimation; +window.onkeypress = startAnimation; + +</script>
diff --git a/chrome/test/data/webui/app_settings/test_app_management_browser_proxy.ts b/chrome/test/data/webui/app_settings/test_app_management_browser_proxy.ts index b4ac886..d2ac2573 100644 --- a/chrome/test/data/webui/app_settings/test_app_management_browser_proxy.ts +++ b/chrome/test/data/webui/app_settings/test_app_management_browser_proxy.ts
@@ -4,7 +4,7 @@ import {App, PageCallbackRouter, PageHandlerInterface, PageRemote} from 'chrome://resources/cr_components/app_management/app_management.mojom-webui.js'; import {BrowserProxy} from 'chrome://resources/cr_components/app_management/browser_proxy.js'; -import {OptionalBool, Permission, WindowMode} from 'chrome://resources/cr_components/app_management/types.mojom-webui.js'; +import {OptionalBool, Permission, RunOnOsLoginMode, WindowMode} from 'chrome://resources/cr_components/app_management/types.mojom-webui.js'; export class FakePageHandler implements PageHandlerInterface { private app: App|null = null; @@ -42,6 +42,8 @@ } setWindowMode(_appId: string, _windowMode: WindowMode) {} + + setRunOnOsLoginMode(_appId: string, _loginMode: RunOnOsLoginMode) {} } export class TestAppManagementBrowserProxy implements BrowserProxy {
diff --git a/chrome/test/data/webui/cr_components/chromeos/cellular_setup/activation_code_page_test.js b/chrome/test/data/webui/cr_components/chromeos/cellular_setup/activation_code_page_test.js index 0be4038..395a54c 100644 --- a/chrome/test/data/webui/cr_components/chromeos/cellular_setup/activation_code_page_test.js +++ b/chrome/test/data/webui/cr_components/chromeos/cellular_setup/activation_code_page_test.js
@@ -154,7 +154,8 @@ assertFalse(!!qrCodeDetectorContainer); }); - test('Switch camera button states', async function() { + // TODO(b/217936048) Disable flaky test. Renable when test is fixed. + test.skip('Switch camera button states', async function() { await flushAsync(); const video = activationCodePage.$$('#video'); const startScanningButton = activationCodePage.$$('#startScanningButton');
diff --git a/chrome/test/data/webui/extensions/BUILD.gn b/chrome/test/data/webui/extensions/BUILD.gn index 01224065..64cc884 100644 --- a/chrome/test/data/webui/extensions/BUILD.gn +++ b/chrome/test/data/webui/extensions/BUILD.gn
@@ -47,6 +47,7 @@ "test_service.ts", "test_util.ts", "toggle_row_test.ts", + "url_util_test.ts", ] if (is_chromeos_ash) {
diff --git a/chrome/test/data/webui/extensions/cr_extensions_browsertest.js b/chrome/test/data/webui/extensions/cr_extensions_browsertest.js index 27d0600..0bfe999 100644 --- a/chrome/test/data/webui/extensions/cr_extensions_browsertest.js +++ b/chrome/test/data/webui/extensions/cr_extensions_browsertest.js
@@ -878,3 +878,17 @@ TEST_F('CrExtensionsSitePermissionsTest', 'All', () => { mocha.run(); }); + +//////////////////////////////////////////////////////////////////////////////// +// UrlUtil tests + +var CrUrlUtilTest = class extends CrExtensionsBrowserTest { + /** @override */ + get browsePreload() { + return 'chrome://extensions/test_loader.html?module=extensions/url_util_test.js&host=webui-test'; + } +}; + +TEST_F('CrUrlUtilTest', 'All', () => { + mocha.run(); +});
diff --git a/chrome/test/data/webui/extensions/runtime_host_permissions_test.ts b/chrome/test/data/webui/extensions/runtime_host_permissions_test.ts index e13c33ef..cb54cde 100644 --- a/chrome/test/data/webui/extensions/runtime_host_permissions_test.ts +++ b/chrome/test/data/webui/extensions/runtime_host_permissions_test.ts
@@ -5,7 +5,6 @@ import 'chrome://extensions/extensions.js'; import {ExtensionsRuntimeHostPermissionsElement} from 'chrome://extensions/extensions.js'; -import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js'; import {eventToPromise, isChildVisible} from 'chrome://webui-test/test_util.js'; @@ -41,19 +40,19 @@ }); test('permissions display', function() { - const permissions = { + const permissions: chrome.developerPrivate.RuntimeHostPermissions = { hostAccess: HostAccess.ON_CLICK, hasAllHosts: true, hosts: [{granted: false, host: 'https://*/*'}], }; - element.set('permissions', permissions); + element.permissions = permissions; flush(); const testIsVisible = isChildVisible.bind(null, element); assertTrue(testIsVisible('#hostAccess')); - const selectHostAccess = element.$.hostAccess; + const selectHostAccess = element.getSelectMenu(); assertEquals(HostAccess.ON_CLICK, selectHostAccess.value); // For on-click mode, there should be no runtime hosts listed. assertFalse(testIsVisible('#hosts')); @@ -82,48 +81,56 @@ assertTrue(testIsVisible('#add-host')); }); - test('permissions display new site access menu', function() { - loadTimeData.overrideValues({extensionsMenuAccessControlEnabled: true}); - const permissions = { + test('permissions display with enableEnhancedSiteControls flag', function() { + element.enableEnhancedSiteControls = true; + const permissions: chrome.developerPrivate.RuntimeHostPermissions = { hostAccess: HostAccess.ON_CLICK, hasAllHosts: true, - hosts: [{granted: false, host: 'https://*/*'}], + hosts: [ + {host: 'https://example.com', granted: true}, + {host: 'https://chromium.org', granted: true} + ] }; - element.set('permissions', permissions); + element.permissions = permissions; flush(); const testIsVisible = isChildVisible.bind(null, element); - assertTrue(testIsVisible('#hostAccess')); + assertTrue(testIsVisible('#newHostAccess')); + assertTrue(testIsVisible('#new-section-heading')); - const selectHostAccess = element.$.hostAccess; + const selectHostAccess = element.getSelectMenu(); assertEquals(HostAccess.ON_CLICK, selectHostAccess.value); // For on-click mode, there should be no runtime hosts listed. assertFalse(testIsVisible('#hosts')); + assertFalse(testIsVisible('#add-site-button')); // Changing the data's access should change the UI appropriately. element.set('permissions.hostAccess', HostAccess.ON_ALL_SITES); flush(); assertEquals(HostAccess.ON_ALL_SITES, selectHostAccess.value); assertFalse(testIsVisible('#hosts')); + assertFalse(testIsVisible('#add-site-button')); element.set('permissions.hostAccess', HostAccess.ON_SPECIFIC_SITES); flush(); assertEquals(HostAccess.ON_SPECIFIC_SITES, selectHostAccess.value); - // TODO(crbug.com/1253673): Test the new "customize for each site" menu. + assertTrue(testIsVisible('#hosts')); + assertTrue(testIsVisible('#add-site-button')); + assertFalse(testIsVisible('#add-host')); }); test('permissions selection', async () => { - const permissions = { + const permissions: chrome.developerPrivate.RuntimeHostPermissions = { hostAccess: HostAccess.ON_CLICK, hasAllHosts: true, hosts: [{granted: false, host: 'https://*.com/*'}], }; - element.set('permissions', permissions); + element.permissions = permissions; flush(); - const selectHostAccess = element.$.hostAccess; + const selectHostAccess = element.getSelectMenu(); assertTrue(!!selectHostAccess); // Changes the value of the selectHostAccess menu and fires the change @@ -161,7 +168,7 @@ }); test('on select sites cancel', async () => { - const permissions = { + const permissions: chrome.developerPrivate.RuntimeHostPermissions = { hostAccess: HostAccess.ON_CLICK, hasAllHosts: true, hosts: [{granted: false, host: 'https://*/*'}], @@ -170,7 +177,7 @@ element.permissions = permissions; flush(); - const selectHostAccess = element.$.hostAccess; + const selectHostAccess = element.getSelectMenu(); assertTrue(!!selectHostAccess); selectHostAccess.value = HostAccess.ON_SPECIFIC_SITES; @@ -222,16 +229,16 @@ }); test('on select sites accept', function() { - const permissions = { + const permissions: chrome.developerPrivate.RuntimeHostPermissions = { hostAccess: HostAccess.ON_CLICK, hasAllHosts: true, hosts: [{granted: false, host: 'https://*/*'}], }; - element.set('permissions', permissions); + element.permissions = permissions; flush(); - const selectHostAccess = element.$.hostAccess; + const selectHostAccess = element.getSelectMenu(); assertTrue(!!selectHostAccess); selectHostAccess.value = HostAccess.ON_SPECIFIC_SITES; @@ -281,7 +288,7 @@ // Open the dialog by clicking to edit the host permission. const editHost = - element.shadowRoot!.querySelector<HTMLElement>('.edit-host'); + element.shadowRoot!.querySelector<HTMLElement>('.open-edit-host'); assertTrue(!!editHost); editHost.click(); assertEquals( @@ -312,7 +319,7 @@ }); test('clicking add host triggers dialog', function() { - const permissions = { + const permissions: chrome.developerPrivate.RuntimeHostPermissions = { hostAccess: HostAccess.ON_SPECIFIC_SITES, hasAllHosts: true, hosts: [ @@ -322,7 +329,7 @@ ], }; - element.set('permissions', permissions); + element.permissions = permissions; flush(); const addHostButton = @@ -345,7 +352,7 @@ }); test('removing runtime host permissions', function() { - const permissions = { + const permissions: chrome.developerPrivate.RuntimeHostPermissions = { hostAccess: HostAccess.ON_SPECIFIC_SITES, hasAllHosts: true, hosts: [ @@ -354,11 +361,11 @@ {host: '*://*.com/*', granted: false}, ], }; - element.set('permissions', permissions); + element.permissions = permissions; flush(); const editHost = - element.shadowRoot!.querySelector<HTMLElement>('.edit-host'); + element.shadowRoot!.querySelector<HTMLElement>('.open-edit-host'); assertTrue(!!editHost); editHost.click(); assertEquals( @@ -385,7 +392,7 @@ }); test('clicking edit host triggers dialog', function() { - const permissions = { + const permissions: chrome.developerPrivate.RuntimeHostPermissions = { hostAccess: HostAccess.ON_SPECIFIC_SITES, hasAllHosts: true, hosts: [ @@ -394,11 +401,11 @@ {host: '*://*.com/*', granted: false}, ], }; - element.set('permissions', permissions); + element.permissions = permissions; flush(); const editHost = - element.shadowRoot!.querySelector<HTMLElement>('.edit-host'); + element.shadowRoot!.querySelector<HTMLElement>('.open-edit-host'); assertTrue(!!editHost); editHost.click(); const actionMenu = element.shadowRoot!.querySelector('cr-action-menu'); @@ -417,4 +424,57 @@ assertFalse(dialog.updateHostAccess); assertEquals('https://chromium.org', dialog.currentSite); }); + + test('clicking edit host with enableEnhancedSiteControls flag', function() { + element.enableEnhancedSiteControls = true; + const permissions: chrome.developerPrivate.RuntimeHostPermissions = { + hostAccess: HostAccess.ON_SPECIFIC_SITES, + hasAllHosts: true, + hosts: [ + {host: 'https://chromium.org', granted: true}, + ], + }; + + element.permissions = permissions; + flush(); + + const editHost = + element.shadowRoot!.querySelector<HTMLElement>('.edit-host'); + assertTrue(!!editHost); + editHost.click(); + flush(); + + // clicking the `editHost` for the site should open the dialog. + const dialog = + element.shadowRoot!.querySelector('extensions-runtime-hosts-dialog'); + assertTrue(!!dialog); + assertTrue(dialog.$.dialog.open); + assertFalse(dialog.updateHostAccess); + assertEquals('https://chromium.org', dialog.currentSite); + }); + + test('clicking remove host with enableEnhancedSiteControls flag', function() { + element.enableEnhancedSiteControls = true; + const permissions: chrome.developerPrivate.RuntimeHostPermissions = { + hostAccess: HostAccess.ON_SPECIFIC_SITES, + hasAllHosts: true, + hosts: [ + {host: 'https://chromium.org', granted: true}, + ], + }; + + element.permissions = permissions; + flush(); + + const removeHost = + element.shadowRoot!.querySelector<HTMLElement>('.remove-host'); + assertTrue(!!removeHost); + removeHost.click(); + flush(); + + return delegate.whenCalled('removeRuntimeHostPermission').then((args) => { + assertEquals(ITEM_ID, args[0] /* id */); + assertEquals('https://chromium.org', args[1] /* site */); + }); + }); });
diff --git a/chrome/test/data/webui/extensions/tsconfig_base.json b/chrome/test/data/webui/extensions/tsconfig_base.json index eeddfb3..371e43b 100644 --- a/chrome/test/data/webui/extensions/tsconfig_base.json +++ b/chrome/test/data/webui/extensions/tsconfig_base.json
@@ -1,7 +1,6 @@ { "extends": "../../../../../tools/typescript/tsconfig_base.json", "compilerOptions": { - "allowJs": true, "typeRoots": [ "./../../../../../third_party/node/node_modules/@types" ]
diff --git a/chrome/test/data/webui/extensions/url_util_test.ts b/chrome/test/data/webui/extensions/url_util_test.ts new file mode 100644 index 0000000..c8ad789 --- /dev/null +++ b/chrome/test/data/webui/extensions/url_util_test.ts
@@ -0,0 +1,33 @@ +// Copyright 2022 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'chrome://extensions/extensions.js'; + +import {getFaviconUrl} from 'chrome://extensions/extensions.js'; +import {assertEquals} from 'chrome://webui-test/chai_assert.js'; + +suite('UrlUtilTest', function() { + function getExpectedImageSet(url: string): string { + return '-webkit-image-set(' + + 'url("chrome://favicon2/?size=20&scale_factor=1x&page_url=' + + encodeURIComponent(url) + '&allow_google_server_fallback=0") 1x, ' + + 'url("chrome://favicon2/?size=20&scale_factor=2x&page_url=' + + encodeURIComponent(url) + '&allow_google_server_fallback=0") 2x)'; + } + + test('favicon for normal URL', function() { + const expectedUrl = getExpectedImageSet('http://www.google.com'); + assertEquals(expectedUrl, getFaviconUrl('http://www.google.com')); + }); + + test('favicon for URLs with wildcards', function() { + const expectedUrl1 = getExpectedImageSet('http://*.google.com'); + const url1 = 'http://*.google.com/*'; + assertEquals(expectedUrl1, getFaviconUrl(url1)); + + const expectedUrl2 = getExpectedImageSet('http://google.com'); + const url2 = '*://google.com'; + assertEquals(expectedUrl2, getFaviconUrl(url2)); + }); +});
diff --git a/chrome/test/data/webui/print_preview/BUILD.gn b/chrome/test/data/webui/print_preview/BUILD.gn index 8009019..26ff260 100644 --- a/chrome/test/data/webui/print_preview/BUILD.gn +++ b/chrome/test/data/webui/print_preview/BUILD.gn
@@ -61,7 +61,7 @@ # using JS. # "pdf_toolbar_manager_test.js", # "pdf_viewer_test.js", - # "pdf_zoom_toolbar_test.js", + "pdf_zoom_toolbar_test.ts", "preview_area_test.ts", "scaling_settings_interactive_test.ts", "scaling_settings_test.ts", @@ -113,14 +113,6 @@ outputs = [ "$preprocessed_folder/{{source_target_relative}}" ] } -# Move pdf_scripting_api.d.ts to the expected location. The autogenerated .js -# file doesn't contain the types. -copy("copy_pdf_definitions") { - sources = [ "//chrome/browser/resources/pdf/pdf_scripting_api.d.ts" ] - outputs = [ "$root_gen_dir/chrome/browser/resources/print_preview/tsc/pdf/{{source_file_part}}" ] - deps = [ "//chrome/browser/resources/print_preview:build_ts" ] -} - ts_library("build_ts") { root_dir = preprocessed_folder out_dir = "$target_gen_dir/tsc" @@ -129,15 +121,20 @@ "chrome://print/*|" + rebase_path( "$root_gen_dir/chrome/browser/resources/print_preview/tsc/*", target_gen_dir), + "chrome://print/pdf/*|" + + rebase_path("$root_gen_dir/chrome/browser/resources/pdf/tsc/*", + target_gen_dir), "chrome://webui-test/*|" + rebase_path("$root_gen_dir/chrome/test/data/webui/tsc/*", target_gen_dir), ] in_files = preprocessed_tests + non_preprocessed_tests - deps = [ "//chrome/browser/resources/print_preview:build_ts" ] + deps = [ + "//chrome/browser/resources/pdf:build_ts", + "//chrome/browser/resources/print_preview:build_ts", + ] extra_deps = [ ":copy", - ":copy_pdf_definitions", ":preprocess", "..:generate_definitions", ]
diff --git a/chrome/test/data/webui/print_preview/pdf_toolbar_manager_test.js b/chrome/test/data/webui/print_preview/pdf_toolbar_manager_test.js index f2419e3..ccc84b9 100644 --- a/chrome/test/data/webui/print_preview/pdf_toolbar_manager_test.js +++ b/chrome/test/data/webui/print_preview/pdf_toolbar_manager_test.js
@@ -206,9 +206,8 @@ assertFalse(zoomToolbar.isVisible()); // Simulate focusing the fit to page button using the tab key. - zoomToolbar.shadowRoot.querySelector('#fit-button') - .dispatchEvent( - new CustomEvent('focus', {bubbles: true, composed: true})); + zoomToolbar.$.fitButton.dispatchEvent( + new CustomEvent('focus', {bubbles: true, composed: true})); assertTrue(zoomToolbar.isVisible()); // Call resetKeyboardNavigationAndHideToolbar(). This happens when focus @@ -220,9 +219,8 @@ // Simulate re-focusing the zoom toolbar with the tab key. See // https://crbug.com/982694. - zoomToolbar.shadowRoot.querySelector('#fit-button') - .dispatchEvent( - new CustomEvent('keyup', {bubbles: true, composed: true})); + zoomToolbar.$.fitButton.dispatchEvent( + new CustomEvent('keyup', {bubbles: true, composed: true})); mockWindow.runTimeout(); assertTrue(zoomToolbar.isVisible());
diff --git a/chrome/test/data/webui/print_preview/pdf_zoom_toolbar_test.js b/chrome/test/data/webui/print_preview/pdf_zoom_toolbar_test.ts similarity index 64% rename from chrome/test/data/webui/print_preview/pdf_zoom_toolbar_test.js rename to chrome/test/data/webui/print_preview/pdf_zoom_toolbar_test.ts index 88767a05..b022dc2 100644 --- a/chrome/test/data/webui/print_preview/pdf_zoom_toolbar_test.js +++ b/chrome/test/data/webui/print_preview/pdf_zoom_toolbar_test.ts
@@ -3,45 +3,43 @@ // found in the LICENSE file. import 'chrome://print/pdf/elements/viewer-zoom-toolbar.js'; + import {FittingType} from 'chrome://print/pdf/constants.js'; +import {ViewerZoomButtonElement} from 'chrome://print/pdf/elements/viewer-zoom-button.js'; +import {ViewerZoomToolbarElement} from 'chrome://print/pdf/elements/viewer-zoom-toolbar.js'; +import {CrIconButtonElement} from 'chrome://print/print_preview.js'; import {assert} from 'chrome://resources/js/assert.m.js'; +import {assertEquals, assertTrue} from 'chrome://webui-test/chai_assert.js'; +import {eventToPromise} from 'chrome://webui-test/test_util.js'; -import {assertEquals, assertFalse, assertTrue} from '../chai_assert.js'; -import {eventToPromise} from '../test_util.js'; - -window.pdf_zoom_toolbar_test = {}; -pdf_zoom_toolbar_test.suiteName = 'PdfToolbarManagerTest'; -/** @enum {string} */ -pdf_zoom_toolbar_test.TestNames = { - Toggle: 'toggle', - ForceFitToPage: 'force fit to page', +const pdf_zoom_toolbar_test = { + suiteName: 'PdfZoomToolbarTest', + TestNames: { + Toggle: 'toggle', + ForceFitToPage: 'force fit to page', + }, }; +Object.assign(window, {pdf_zoom_toolbar_test: pdf_zoom_toolbar_test}); + suite(pdf_zoom_toolbar_test.suiteName, function() { - /** @type {!ViewerZoomToolbarElement} */ - let zoomToolbar; + let zoomToolbar: ViewerZoomToolbarElement; - /** @type {!ViewerZoomButtonElement} */ - let fitButton; + let fitButton: ViewerZoomButtonElement; - /** @type {!CrIconButtonElement} */ - let button; + let button: CrIconButtonElement; - const fitWidthIcon = 'fullscreen'; - const fitPageIcon = 'fullscreen-exit'; + const fitWidthIcon: string = 'fullscreen'; + const fitPageIcon: string = 'fullscreen-exit'; setup(function() { document.body.innerHTML = ''; - zoomToolbar = /** @type {!ViewerZoomToolbarElement} */ ( - document.createElement('viewer-zoom-toolbar')); + zoomToolbar = document.createElement('viewer-zoom-toolbar'); document.body.appendChild(zoomToolbar); - fitButton = - /** @type {!ViewerZoomButtonElement} */ (zoomToolbar.$['fit-button']); - button = - /** @type {!CrIconButtonElement} */ ( - fitButton.shadowRoot.querySelector('cr-icon-button')); + fitButton = zoomToolbar.$.fitButton; + button = fitButton.shadowRoot!.querySelector('cr-icon-button')!; }); /** @@ -50,84 +48,84 @@ */ test(assert(pdf_zoom_toolbar_test.TestNames.Toggle), async () => { // Initial: Show fit-to-page. - assertTrue(button.ironIcon.endsWith(fitPageIcon)); + assertTrue(button.ironIcon!.endsWith(fitPageIcon)); // Tap 1: Fire fit-to-changed(FIT_TO_PAGE), show fit-to-width. let fitToChanged = eventToPromise('fit-to-changed', zoomToolbar); button.click(); let result = await fitToChanged; assertEquals(FittingType.FIT_TO_PAGE, result.detail); - assertTrue(button.ironIcon.endsWith(fitWidthIcon)); + assertTrue(button.ironIcon!.endsWith(fitWidthIcon)); // Tap 2: Fire fit-to-changed(FIT_TO_WIDTH), show fit-to-page. fitToChanged = eventToPromise('fit-to-changed', zoomToolbar); button.click(); result = await fitToChanged; assertEquals(FittingType.FIT_TO_WIDTH, result.detail); - assertTrue(button.ironIcon.endsWith(fitPageIcon)); + assertTrue(button.ironIcon!.endsWith(fitPageIcon)); // Tap 3: Fire fit-to-changed(FIT_TO_PAGE) again. fitToChanged = eventToPromise('fit-to-changed', zoomToolbar); button.click(); result = await fitToChanged; assertEquals(FittingType.FIT_TO_PAGE, result.detail); - assertTrue(button.ironIcon.endsWith(fitWidthIcon)); + assertTrue(button.ironIcon!.endsWith(fitWidthIcon)); // Do the same as above, but with fitToggleFromHotKey(). fitToChanged = eventToPromise('fit-to-changed', zoomToolbar); zoomToolbar.fitToggleFromHotKey(); result = await fitToChanged; assertEquals(FittingType.FIT_TO_WIDTH, result.detail); - assertTrue(button.ironIcon.endsWith(fitPageIcon)); + assertTrue(button.ironIcon!.endsWith(fitPageIcon)); fitToChanged = eventToPromise('fit-to-changed', zoomToolbar); zoomToolbar.fitToggleFromHotKey(); result = await fitToChanged; assertEquals(FittingType.FIT_TO_PAGE, result.detail); - assertTrue(button.ironIcon.endsWith(fitWidthIcon)); + assertTrue(button.ironIcon!.endsWith(fitWidthIcon)); fitToChanged = eventToPromise('fit-to-changed', zoomToolbar); zoomToolbar.fitToggleFromHotKey(); result = await fitToChanged; assertEquals(FittingType.FIT_TO_WIDTH, result.detail); - assertTrue(button.ironIcon.endsWith(fitPageIcon)); + assertTrue(button.ironIcon!.endsWith(fitPageIcon)); // Tap 4: Fire fit-to-changed(FIT_TO_PAGE) again. fitToChanged = eventToPromise('fit-to-changed', zoomToolbar); button.click(); result = await fitToChanged; assertEquals(FittingType.FIT_TO_PAGE, result.detail); - assertTrue(button.ironIcon.endsWith(fitWidthIcon)); + assertTrue(button.ironIcon!.endsWith(fitWidthIcon)); }); test(assert(pdf_zoom_toolbar_test.TestNames.ForceFitToPage), async () => { // Initial: Show fit-to-page. - assertTrue(button.ironIcon.endsWith(fitPageIcon)); + assertTrue(button.ironIcon!.endsWith(fitPageIcon)); // Test forceFit(FIT_TO_PAGE) from initial state. zoomToolbar.forceFit(FittingType.FIT_TO_PAGE); - assertTrue(button.ironIcon.endsWith(fitWidthIcon)); + assertTrue(button.ironIcon!.endsWith(fitWidthIcon)); // Tap 1: Fire fit-to-changed(FIT_TO_WIDTH). let fitToChanged = eventToPromise('fit-to-changed', zoomToolbar); button.click(); let result = await fitToChanged; assertEquals(FittingType.FIT_TO_WIDTH, result.detail); - assertTrue(button.ironIcon.endsWith(fitPageIcon)); + assertTrue(button.ironIcon!.endsWith(fitPageIcon)); // Test forceFit(FIT_TO_PAGE) from fit-to-width mode. zoomToolbar.forceFit(FittingType.FIT_TO_PAGE); - assertTrue(button.ironIcon.endsWith(fitWidthIcon)); + assertTrue(button.ironIcon!.endsWith(fitWidthIcon)); // Test forceFit(FIT_TO_PAGE) when already in fit-to-page mode. zoomToolbar.forceFit(FittingType.FIT_TO_PAGE); - assertTrue(button.ironIcon.endsWith(fitWidthIcon)); + assertTrue(button.ironIcon!.endsWith(fitWidthIcon)); // Tap 2: Fire fit-to-changed(FIT_TO_WIDTH). fitToChanged = eventToPromise('fit-to-changed', zoomToolbar); button.click(); result = await fitToChanged; assertEquals(FittingType.FIT_TO_WIDTH, result.detail); - assertTrue(button.ironIcon.endsWith(fitPageIcon)); + assertTrue(button.ironIcon!.endsWith(fitPageIcon)); }); });
diff --git a/chrome/test/data/webui/print_preview/print_preview_ui_browsertest.js b/chrome/test/data/webui/print_preview/print_preview_ui_browsertest.js index 72f7431..68d6a97 100644 --- a/chrome/test/data/webui/print_preview/print_preview_ui_browsertest.js +++ b/chrome/test/data/webui/print_preview/print_preview_ui_browsertest.js
@@ -185,7 +185,7 @@ var PrintPreviewPdfZoomToolbarTest = class extends PrintPreviewTest { /** @override */ get browsePreload() { - return 'chrome://print/test_loader.html?module=print_preview/pdf_zoom_toolbar_test.js'; + return 'chrome://print/test_loader.html?module=print_preview/pdf_zoom_toolbar_test.js&host=webui-test'; } /** @override */
diff --git a/chrome/test/data/webui/print_preview/test_plugin_proxy.ts b/chrome/test/data/webui/print_preview/test_plugin_proxy.ts index f9d9055e..9b94f52 100644 --- a/chrome/test/data/webui/print_preview/test_plugin_proxy.ts +++ b/chrome/test/data/webui/print_preview/test_plugin_proxy.ts
@@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import {PDFPlugin, PluginProxy, ViewportChangedCallback} from 'chrome://print/print_preview.js'; +import {PDFPlugin} from 'chrome://print/pdf/pdf_scripting_api.js'; +import {PluginProxy, ViewportChangedCallback} from 'chrome://print/print_preview.js'; import {assert} from 'chrome://resources/js/assert.m.js'; import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';
diff --git a/chrome/test/mini_installer/config/chrome_system_installed.prop b/chrome/test/mini_installer/config/chrome_system_installed.prop index 03bd7a5..9e2a2cc 100644 --- a/chrome/test/mini_installer/config/chrome_system_installed.prop +++ b/chrome/test/mini_installer/config/chrome_system_installed.prop
@@ -128,6 +128,9 @@ "LocalService": { "type": "SZ", "data": "$CHROME_ELEVATION_SERVICE_NAME" + }, + "ServiceParameters": { + "data": "ValueShouldNotExist" } } },
diff --git a/chrome/test/mini_installer/config/previous_chrome_system_installed.prop b/chrome/test/mini_installer/config/previous_chrome_system_installed.prop index 9a20579..d3319b0 100644 --- a/chrome/test/mini_installer/config/previous_chrome_system_installed.prop +++ b/chrome/test/mini_installer/config/previous_chrome_system_installed.prop
@@ -126,6 +126,9 @@ "LocalService": { "type": "SZ", "data": "$CHROME_ELEVATION_SERVICE_NAME" + }, + "ServiceParameters": { + "data": "ValueShouldNotExist" } } },
diff --git a/chrome/updater/BUILD.gn b/chrome/updater/BUILD.gn index c975f5f9..d15f80f 100644 --- a/chrome/updater/BUILD.gn +++ b/chrome/updater/BUILD.gn
@@ -461,6 +461,7 @@ if (is_win) { sources += [ + "//chrome/updater/util_win.cc", "//chrome/updater/lib_util_win.cc", "//chrome/updater/win/user_info.cc", "//chrome/updater/win/user_info.h", @@ -491,6 +492,7 @@ } visibility = [ + "//chrome/browser", "//chrome/browser/ui:ui", "//chrome/browser/updater:*", "//chrome/test:*",
diff --git a/chrome/updater/configurator.cc b/chrome/updater/configurator.cc index e56dac8..987b822 100644 --- a/chrome/updater/configurator.cc +++ b/chrome/updater/configurator.cc
@@ -210,7 +210,7 @@ update_client::UpdaterStateProvider Configurator::GetUpdaterStateProvider() const { return base::BindRepeating([](bool /*is_machine*/) { - return base::flat_map<std::string, std::string>(); + return update_client::UpdaterStateAttributes(); }); }
diff --git a/chrome/updater/mac/update_service_proxy.h b/chrome/updater/mac/update_service_proxy.h index 14d230d..b3a49d5 100644 --- a/chrome/updater/mac/update_service_proxy.h +++ b/chrome/updater/mac/update_service_proxy.h
@@ -38,7 +38,7 @@ // Overrides for UpdateService. void GetVersion( - base::OnceCallback<void(const base::Version&)> callback) const override; + base::OnceCallback<void(const base::Version&)> callback) override; void RegisterApp( const RegistrationRequest& request, base::OnceCallback<void(const RegistrationResponse&)> callback) override; @@ -57,8 +57,13 @@ private: ~UpdateServiceProxy() override; + // Reset invalidates the existing connection, causing error callbacks to fire, + // and reinitializes it for further use. + void Reset(); + SEQUENCE_CHECKER(sequence_checker_); + UpdaterScope scope_; base::scoped_nsobject<CRUUpdateServiceProxyImpl> client_; scoped_refptr<base::SequencedTaskRunner> callback_runner_; };
diff --git a/chrome/updater/mac/update_service_proxy.mm b/chrome/updater/mac/update_service_proxy.mm index 4a1f03e..1251259 100644 --- a/chrome/updater/mac/update_service_proxy.mm +++ b/chrome/updater/mac/update_service_proxy.mm
@@ -11,6 +11,7 @@ #include "base/bind.h" #include "base/callback.h" +#include "base/cancelable_callback.h" #include "base/files/file_path.h" #include "base/logging.h" #include "base/mac/foundation_util.h" @@ -179,17 +180,23 @@ return base::MakeRefCounted<UpdateServiceProxy>(updater_scope); } -UpdateServiceProxy::UpdateServiceProxy(UpdaterScope scope) { +UpdateServiceProxy::UpdateServiceProxy(UpdaterScope scope) : scope_(scope) { client_.reset([[CRUUpdateServiceProxyImpl alloc] initWithScope:scope]); callback_runner_ = base::SequencedTaskRunnerHandle::Get(); } void UpdateServiceProxy::GetVersion( - base::OnceCallback<void(const base::Version&)> callback) const { + base::OnceCallback<void(const base::Version&)> callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + auto timeout_callback = std::make_unique<base::CancelableOnceClosure>( + base::BindOnce(&UpdateServiceProxy::Reset, base::Unretained(this))); + base::SequencedTaskRunnerHandle::Get()->PostDelayedTask( + FROM_HERE, timeout_callback->callback(), base::Minutes(2)); + __block base::OnceCallback<void(const base::Version&)> block_callback = - std::move(callback); + std::move(callback).Then(base::BindOnce( + &base::CancelableOnceClosure::Cancel, std::move(timeout_callback))); auto reply = ^(NSString* version) { callback_runner_->PostTask( FROM_HERE, @@ -301,6 +308,12 @@ reply:reply]; } +void UpdateServiceProxy::Reset() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + VLOG(1) << __func__; + client_.reset([[CRUUpdateServiceProxyImpl alloc] initWithScope:scope_]); +} + void UpdateServiceProxy::Uninitialize() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); }
diff --git a/chrome/updater/update_service.h b/chrome/updater/update_service.h index e7cd003a..fbc0074 100644 --- a/chrome/updater/update_service.h +++ b/chrome/updater/update_service.h
@@ -198,11 +198,9 @@ using RegisterAppCallback = base::OnceCallback<void(const RegistrationResponse&)>; - // Returns the version of the active updater. In the current implementation, - // this value corresponds to kUpdaterVersion. The version object is invalid - // if an error occurs. - virtual void GetVersion( - base::OnceCallback<void(const base::Version&)>) const = 0; + // Returns the version of the active updater. The version object is invalid + // if an error (including timeout) occurs. + virtual void GetVersion(base::OnceCallback<void(const base::Version&)>) = 0; // Registers given request to the updater. virtual void RegisterApp(const RegistrationRequest& request,
diff --git a/chrome/updater/update_service_impl.cc b/chrome/updater/update_service_impl.cc index 6d45f218..fd721ccc 100644 --- a/chrome/updater/update_service_impl.cc +++ b/chrome/updater/update_service_impl.cc
@@ -206,7 +206,7 @@ update_client_(update_client::UpdateClientFactory(config)) {} void UpdateServiceImpl::GetVersion( - base::OnceCallback<void(const base::Version&)> callback) const { + base::OnceCallback<void(const base::Version&)> callback) { VLOG(1) << __func__; DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); main_task_runner_->PostTask(
diff --git a/chrome/updater/update_service_impl.h b/chrome/updater/update_service_impl.h index 020a5ba..72372e2 100644 --- a/chrome/updater/update_service_impl.h +++ b/chrome/updater/update_service_impl.h
@@ -37,7 +37,7 @@ // Overrides for updater::UpdateService. void GetVersion( - base::OnceCallback<void(const base::Version&)> callback) const override; + base::OnceCallback<void(const base::Version&)> callback) override; void RegisterApp( const RegistrationRequest& request, base::OnceCallback<void(const RegistrationResponse&)> callback) override;
diff --git a/chrome/updater/update_service_impl_inactive.cc b/chrome/updater/update_service_impl_inactive.cc index 6548f8c..7c7e81e 100644 --- a/chrome/updater/update_service_impl_inactive.cc +++ b/chrome/updater/update_service_impl_inactive.cc
@@ -25,7 +25,7 @@ // Overrides for updater::UpdateService. void GetVersion( - base::OnceCallback<void(const base::Version&)> callback) const override { + base::OnceCallback<void(const base::Version&)> callback) override { base::SequencedTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(std::move(callback), base::Version())); }
diff --git a/chrome/updater/win/setup/setup_util.cc b/chrome/updater/win/setup/setup_util.cc index 03ba7735..07c6321 100644 --- a/chrome/updater/win/setup/setup_util.cc +++ b/chrome/updater/win/setup/setup_util.cc
@@ -256,10 +256,14 @@ // TODO(crbug.com/1292806) : SERVICE_DEMAND_START will change to // SERVICE_AUTO_START once the Wake task is plumbed into the service startup. + // TODO(crbug.com/1292806) : the `com_service_cmd_line_args` will change from + // base::CommandLine(base::CommandLine::NO_PROGRAM) to switches that indicate + // a COM activation once the Wake task is plumbed into the service startup. list->AddWorkItem(new installer::InstallServiceWorkItem( GetServiceName(internal_service).c_str(), GetServiceDisplayName(internal_service).c_str(), SERVICE_DEMAND_START, - com_service_command, UPDATER_KEY, + com_service_command, base::CommandLine(base::CommandLine::NO_PROGRAM), + UPDATER_KEY, internal_service ? GetSideBySideServers(UpdaterScope::kSystem) : GetActiveServers(UpdaterScope::kSystem), {}));
diff --git a/chrome/updater/win/update_service_proxy.cc b/chrome/updater/win/update_service_proxy.cc index 83f8c34..613cad3 100644 --- a/chrome/updater/win/update_service_proxy.cc +++ b/chrome/updater/win/update_service_proxy.cc
@@ -354,7 +354,7 @@ UpdateServiceProxy::~UpdateServiceProxy() = default; void UpdateServiceProxy::GetVersion( - base::OnceCallback<void(const base::Version&)> callback) const { + base::OnceCallback<void(const base::Version&)> callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_main_); com_task_runner_->PostTask( FROM_HERE, base::BindOnce(&UpdateServiceProxy::GetVersionOnSTA, this,
diff --git a/chrome/updater/win/update_service_proxy.h b/chrome/updater/win/update_service_proxy.h index c9a5fd9..cc6afbd 100644 --- a/chrome/updater/win/update_service_proxy.h +++ b/chrome/updater/win/update_service_proxy.h
@@ -43,7 +43,7 @@ // Overrides for updater::UpdateService. void GetVersion( - base::OnceCallback<void(const base::Version&)> callback) const override; + base::OnceCallback<void(const base::Version&)> callback) override; void RegisterApp(const RegistrationRequest& request, RegisterAppCallback callback) override; void GetAppStates(
diff --git a/chromecast/browser/android/OWNERS b/chromecast/browser/android/OWNERS index 4d35842..51c89f0b 100644 --- a/chromecast/browser/android/OWNERS +++ b/chromecast/browser/android/OWNERS
@@ -1 +1,2 @@ sanfin@chromium.org +thoren@chromium.org
diff --git a/components/autofill/core/common/autofill_features.h b/components/autofill/core/common/autofill_features.h index c074660f..f82397c7 100644 --- a/components/autofill/core/common/autofill_features.h +++ b/components/autofill/core/common/autofill_features.h
@@ -7,6 +7,7 @@ #include "base/component_export.h" #include "base/feature_list.h" +#include "base/metrics/field_trial_params.h" #include "base/time/time.h" #include "build/build_config.h"
diff --git a/components/autofill/core/common/autofill_payments_features.h b/components/autofill/core/common/autofill_payments_features.h index 23acdac..9029449 100644 --- a/components/autofill/core/common/autofill_payments_features.h +++ b/components/autofill/core/common/autofill_payments_features.h
@@ -6,6 +6,7 @@ #define COMPONENTS_AUTOFILL_CORE_COMMON_AUTOFILL_PAYMENTS_FEATURES_H_ #include "base/feature_list.h" +#include "base/metrics/field_trial_params.h" #include "build/build_config.h" namespace base {
diff --git a/components/background_task_scheduler/internal/android/junit/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerPrefsTest.java b/components/background_task_scheduler/internal/android/junit/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerPrefsTest.java index 206f31b..61391a7 100644 --- a/components/background_task_scheduler/internal/android/junit/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerPrefsTest.java +++ b/components/background_task_scheduler/internal/android/junit/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerPrefsTest.java
@@ -16,6 +16,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.annotation.Config; +import org.robolectric.annotation.LooperMode; import org.robolectric.util.ReflectionHelpers; import org.chromium.base.ContextUtils; @@ -34,6 +35,7 @@ /** Unit tests for {@link BackgroundTaskSchedulerPrefs}. */ @RunWith(BaseRobolectricTestRunner.class) @Config(manifest = Config.NONE) +@LooperMode(LooperMode.Mode.LEGACY) public class BackgroundTaskSchedulerPrefsTest { private TaskInfo mTask1; private TaskInfo mTask2;
diff --git a/components/background_task_scheduler/internal/android/junit/src/org/chromium/components/background_task_scheduler/internal/BroadcastReceiverRobolectricTest.java b/components/background_task_scheduler/internal/android/junit/src/org/chromium/components/background_task_scheduler/internal/BroadcastReceiverRobolectricTest.java index 717661b..ca8b4e04 100644 --- a/components/background_task_scheduler/internal/android/junit/src/org/chromium/components/background_task_scheduler/internal/BroadcastReceiverRobolectricTest.java +++ b/components/background_task_scheduler/internal/android/junit/src/org/chromium/components/background_task_scheduler/internal/BroadcastReceiverRobolectricTest.java
@@ -18,6 +18,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.annotation.Config; +import org.robolectric.annotation.LooperMode; import org.robolectric.shadows.ShadowBatteryManager; import org.robolectric.shadows.ShadowConnectivityManager; @@ -39,6 +40,7 @@ @RunWith(BaseRobolectricTestRunner.class) @Config(manifest = Config.NONE, shadows = {ShadowBatteryManager.class, ShadowConnectivityManager.class}) +@LooperMode(LooperMode.Mode.LEGACY) public final class BroadcastReceiverRobolectricTest { private static final long WAIT_TIME_MS = 10; private CountDownLatch mScheduleLatch;
diff --git a/components/browser_ui/photo_picker/android/java/src/org/chromium/components/browser_ui/photo_picker/FileEnumWorkerTaskTest.java b/components/browser_ui/photo_picker/android/java/src/org/chromium/components/browser_ui/photo_picker/FileEnumWorkerTaskTest.java index 2e915a5a..d3219305 100644 --- a/components/browser_ui/photo_picker/android/java/src/org/chromium/components/browser_ui/photo_picker/FileEnumWorkerTaskTest.java +++ b/components/browser_ui/photo_picker/android/java/src/org/chromium/components/browser_ui/photo_picker/FileEnumWorkerTaskTest.java
@@ -24,6 +24,7 @@ import org.mockito.Mockito; import org.robolectric.android.util.concurrent.RoboExecutorService; import org.robolectric.annotation.Config; +import org.robolectric.annotation.LooperMode; import org.robolectric.fakes.BaseCursor; import org.chromium.base.ThreadUtils; @@ -44,6 +45,7 @@ */ @RunWith(BaseRobolectricTestRunner.class) @Config(manifest = Config.NONE) +@LooperMode(LooperMode.Mode.LEGACY) public class FileEnumWorkerTaskTest implements FileEnumWorkerTask.FilesEnumeratedCallback { // The Fields the test Cursor represents. @IntDef({Fields.ID, Fields.MIME_TYPE, Fields.DATE_ADDED})
diff --git a/components/browser_ui/util/android/java/src/org/chromium/components/browser_ui/util/ComposedBrowserControlsVisibilityDelegateTest.java b/components/browser_ui/util/android/java/src/org/chromium/components/browser_ui/util/ComposedBrowserControlsVisibilityDelegateTest.java index aee8686..c0bba81 100644 --- a/components/browser_ui/util/android/java/src/org/chromium/components/browser_ui/util/ComposedBrowserControlsVisibilityDelegateTest.java +++ b/components/browser_ui/util/android/java/src/org/chromium/components/browser_ui/util/ComposedBrowserControlsVisibilityDelegateTest.java
@@ -10,6 +10,7 @@ import org.junit.runner.RunWith; import org.mockito.Mockito; import org.robolectric.annotation.Config; +import org.robolectric.annotation.LooperMode; import org.robolectric.shadows.ShadowLooper; import org.chromium.base.Callback; @@ -19,6 +20,7 @@ /** Unit tests for {@link ComposedBrowserControlsVisibilityDelegate}. */ @RunWith(BaseRobolectricTestRunner.class) @Config(manifest = Config.NONE) +@LooperMode(LooperMode.Mode.LEGACY) public class ComposedBrowserControlsVisibilityDelegateTest { private ComposedBrowserControlsVisibilityDelegate mComposedDelegate; private TestVisibilityDelegate mDelegate1;
diff --git a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/ContextMenuDialogUnitTest.java b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/ContextMenuDialogUnitTest.java index bd00a81..de4393ea 100644 --- a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/ContextMenuDialogUnitTest.java +++ b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/ContextMenuDialogUnitTest.java
@@ -32,6 +32,7 @@ import org.robolectric.Robolectric; import org.robolectric.Shadows; import org.robolectric.annotation.Config; +import org.robolectric.annotation.LooperMode; import org.robolectric.shadows.ShadowPhoneWindow; import org.chromium.base.test.BaseRobolectricTestRunner; @@ -40,6 +41,7 @@ /** Unit test for {@link ContextMenuDialog}. */ @RunWith(BaseRobolectricTestRunner.class) @Config(manifest = Config.NONE, shadows = {ShadowPhoneWindow.class}) +@LooperMode(LooperMode.Mode.LEGACY) public class ContextMenuDialogUnitTest { @Rule public MockitoRule mockitoRule = MockitoJUnit.rule();
diff --git a/components/browser_watcher/extended_crash_reporting.cc b/components/browser_watcher/extended_crash_reporting.cc index 9dfb4bb5..444eb5b 100644 --- a/components/browser_watcher/extended_crash_reporting.cc +++ b/components/browser_watcher/extended_crash_reporting.cc
@@ -12,6 +12,7 @@ #include "base/memory/ptr_util.h" #include "base/metrics/persistent_memory_allocator.h" #include "base/strings/string_piece.h" +#include "base/time/time.h" #include "base/win/pe_image.h" #include "build/build_config.h" #include "components/browser_watcher/activity_data_names.h"
diff --git a/components/certificate_transparency/data/log_list.json b/components/certificate_transparency/data/log_list.json index 809c2458..4261a23 100644 --- a/components/certificate_transparency/data/log_list.json +++ b/components/certificate_transparency/data/log_list.json
@@ -1,6 +1,6 @@ { - "version": "5.9", - "log_list_timestamp": "2022-02-02T01:34:32Z", + "version": "5.13", + "log_list_timestamp": "2022-02-04T01:34:46Z", "operators": [ { "name": "Google",
diff --git a/components/content_creation/notes/core/note_features.h b/components/content_creation/notes/core/note_features.h index 6d8412a5..ad4df1a4 100644 --- a/components/content_creation/notes/core/note_features.h +++ b/components/content_creation/notes/core/note_features.h
@@ -6,6 +6,7 @@ #define COMPONENTS_CONTENT_CREATION_NOTES_CORE_NOTE_FEATURES_H_ #include "base/feature_list.h" +#include "base/metrics/field_trial_params.h" namespace content_creation {
diff --git a/components/content_settings/core/common/features.h b/components/content_settings/core/common/features.h index 27abef2..25cc6613 100644 --- a/components/content_settings/core/common/features.h +++ b/components/content_settings/core/common/features.h
@@ -7,6 +7,7 @@ #include "base/component_export.h" #include "base/feature_list.h" +#include "base/metrics/field_trial_params.h" #include "build/build_config.h" namespace content_settings {
diff --git a/components/database_utils/OWNERS b/components/database_utils/OWNERS new file mode 100644 index 0000000..7923121 --- /dev/null +++ b/components/database_utils/OWNERS
@@ -0,0 +1 @@ +file://components/history/OWNERS
diff --git a/components/dom_distiller/core/experiments.cc b/components/dom_distiller/core/experiments.cc index 98cbc86..657332b 100644 --- a/components/dom_distiller/core/experiments.cc +++ b/components/dom_distiller/core/experiments.cc
@@ -6,6 +6,7 @@ #include "base/command_line.h" #include "base/metrics/field_trial.h" +#include "base/notreached.h" #include "base/strings/string_util.h" #include "components/dom_distiller/core/dom_distiller_switches.h"
diff --git a/components/gcm_driver/features.cc b/components/gcm_driver/features.cc index 9f65076..a6ff070 100644 --- a/components/gcm_driver/features.cc +++ b/components/gcm_driver/features.cc
@@ -6,6 +6,7 @@ #include "base/metrics/field_trial_param_associator.h" #include "base/metrics/field_trial_params.h" #include "base/strings/string_number_conversions.h" +#include "base/time/time.h" #include <algorithm> #include <map>
diff --git a/components/gcm_driver/features.h b/components/gcm_driver/features.h index 9539efe..a6fe8bb 100644 --- a/components/gcm_driver/features.h +++ b/components/gcm_driver/features.h
@@ -7,6 +7,10 @@ #include "base/feature_list.h" +namespace base { +class TimeDelta; +} + namespace gcm { namespace features {
diff --git a/components/history_clusters/core/history_clusters_service.cc b/components/history_clusters/core/history_clusters_service.cc index eba2a6af..2bc1aa9 100644 --- a/components/history_clusters/core/history_clusters_service.cc +++ b/components/history_clusters/core/history_clusters_service.cc
@@ -282,6 +282,10 @@ HistoryClustersService::~HistoryClustersService() = default; +base::WeakPtr<HistoryClustersService> HistoryClustersService::GetWeakPtr() { + return weak_ptr_factory_.GetWeakPtr(); +} + void HistoryClustersService::Shutdown() {} void HistoryClustersService::AddObserver(Observer* obs) {
diff --git a/components/history_clusters/core/history_clusters_service.h b/components/history_clusters/core/history_clusters_service.h index 18a9fc1..6fb82c1 100644 --- a/components/history_clusters/core/history_clusters_service.h +++ b/components/history_clusters/core/history_clusters_service.h
@@ -95,6 +95,10 @@ HistoryClustersService& operator=(const HistoryClustersService&) = delete; ~HistoryClustersService() override; + // Gets a weak pointer to this service. Used when UIs want to create a query + // state object whose lifetime might exceed the service. + base::WeakPtr<HistoryClustersService> GetWeakPtr(); + // KeyedService: void Shutdown() override; @@ -139,6 +143,9 @@ // The returned clusters are sorted in reverse-chronological order based on // their highest scoring visit. The visits within each cluster are sorted by // score, from highest to lowest. + // + // TODO(tommycli): Investigate entirely hiding access to this low-level method + // behind QueryClustersState. void QueryClusters(const std::string& query, base::Time begin_time, base::Time end_time,
diff --git a/components/history_clusters/core/query_clusters_state.cc b/components/history_clusters/core/query_clusters_state.cc index c6b53b1..7acf9b6 100644 --- a/components/history_clusters/core/query_clusters_state.cc +++ b/components/history_clusters/core/query_clusters_state.cc
@@ -4,12 +4,63 @@ #include "components/history_clusters/core/query_clusters_state.h" +#include "base/metrics/histogram_functions.h" +#include "components/history_clusters/core/history_clusters_service.h" + namespace history_clusters { QueryClustersState::QueryClustersState( - base::WeakPtr<HistoryClustersService> service) - : service_(service) {} + base::WeakPtr<HistoryClustersService> service, + const std::string& query) + : service_(service), query_(query) { + DCHECK(service_); +} QueryClustersState::~QueryClustersState() = default; +void QueryClustersState::LoadNextBatchOfClusters(ResultCallback callback) { + if (!service_) + return; + + base::TimeTicks query_start_time = base::TimeTicks::Now(); + base::Time end_time = continuation_end_time_.value_or(base::Time()); + service_->QueryClusters(query_, /*begin_time=*/base::Time(), end_time, + base::BindOnce(&QueryClustersState::OnGotClusters, + weak_factory_.GetWeakPtr(), + query_start_time, std::move(callback)), + &task_tracker_); +} + +void QueryClustersState::OnGotClusters(base::TimeTicks query_start_time, + ResultCallback callback, + QueryClustersResult result) { + continuation_end_time_ = std::move(result.continuation_end_time); + + // In case no clusters came back, recursively ask for more here. We do this + // to fulfill the mojom contract where we always return at least one cluster, + // or we exhaust History. We don't do this in the service because of task + // tracker lifetime difficulty. In practice, this only happens when the user + // has a search query that doesn't match any of the clusters in the "page". + // https://crbug.com/1263728 + // + // This is distinct from the "tall monitor" case because the page may already + // be full of clusters. In that case, the WebUI would not know to make another + // request for clusters. + if (result.clusters.empty() && continuation_end_time_.has_value()) { + LoadNextBatchOfClusters(std::move(callback)); + return; + } + + bool can_load_more = continuation_end_time_.has_value(); + std::move(callback).Run(query_, std::move(result.clusters), can_load_more, + is_continuation_); + + // Further responses should be consider continuations. + is_continuation_ = true; + + // Log metrics after delivering the results to the page. + base::TimeDelta service_latency = base::TimeTicks::Now() - query_start_time; + base::UmaHistogramTimes("History.Clusters.ServiceLatency", service_latency); +} + } // namespace history_clusters
diff --git a/components/history_clusters/core/query_clusters_state.h b/components/history_clusters/core/query_clusters_state.h index cf113c84..e0d05590 100644 --- a/components/history_clusters/core/query_clusters_state.h +++ b/components/history_clusters/core/query_clusters_state.h
@@ -7,8 +7,12 @@ #include <vector> +#include "base/callback_forward.h" #include "base/memory/weak_ptr.h" +#include "base/task/cancelable_task_tracker.h" +#include "base/time/time.h" #include "components/history/core/browser/history_types.h" +#include "components/history_clusters/core/history_clusters_types.h" #include "third_party/abseil-cpp/absl/types/optional.h" namespace history_clusters { @@ -25,14 +29,40 @@ // It's the history_clusters equivalent to history::QueryHistoryState. class QueryClustersState { public: - explicit QueryClustersState(base::WeakPtr<HistoryClustersService> service); + // `is_continuation` is true for all 'next-page' responses, but false for the + // first page. + using ResultCallback = + base::OnceCallback<void(const std::string& query, + std::vector<history::Cluster> cluster_batch, + bool can_load_more, + bool is_continuation)>; + + QueryClustersState(base::WeakPtr<HistoryClustersService> service, + const std::string& query); ~QueryClustersState(); QueryClustersState(const QueryClustersState&) = delete; + // Returns the current query the state contains. + const std::string& query() const { return query_; } + + // Used to request another batch of clusters of the same query. + void LoadNextBatchOfClusters(ResultCallback callback); + private: + // TODO(tommycli): Delete QueryClustersResult struct. + void OnGotClusters(base::TimeTicks query_start_time, + ResultCallback callback, + QueryClustersResult result); + + // A weak pointer to the service in case we outlive the service. const base::WeakPtr<HistoryClustersService> service_; + // The string query the user entered into the searchbox. + const std::string query_; + + // TODO(tommycli): Actually use this piece of state to implement the + // cross-batch deduplication and search caching. std::vector<history::Cluster> clusters_; // A nullopt `continuation_end_time` means we have exhausted History. @@ -40,6 +70,14 @@ // value to indicate we've exhausted history. I've found that to be not // explicit enough in practice. This value will never be base::Time(). absl::optional<base::Time> continuation_end_time_; + + // True for all 'next-page' responses, but false for the first page. + bool is_continuation_ = false; + + // Used only to fast-cancel tasks in case we are destroyed. + base::CancelableTaskTracker task_tracker_; + + base::WeakPtrFactory<QueryClustersState> weak_factory_{this}; }; } // namespace history_clusters
diff --git a/components/lens/lens_features.h b/components/lens/lens_features.h index 095e9fd..5e9b072 100644 --- a/components/lens/lens_features.h +++ b/components/lens/lens_features.h
@@ -8,6 +8,7 @@ #include <string> #include "base/feature_list.h" +#include "base/metrics/field_trial_params.h" namespace lens { namespace features {
diff --git a/components/media_router/browser/android/junit/src/org/chromium/components/media_router/caf/CafBaseMediaRouteProviderTest.java b/components/media_router/browser/android/junit/src/org/chromium/components/media_router/caf/CafBaseMediaRouteProviderTest.java index 93a8a54..4bc342f 100644 --- a/components/media_router/browser/android/junit/src/org/chromium/components/media_router/caf/CafBaseMediaRouteProviderTest.java +++ b/components/media_router/browser/android/junit/src/org/chromium/components/media_router/caf/CafBaseMediaRouteProviderTest.java
@@ -41,6 +41,7 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; +import org.robolectric.annotation.LooperMode; import org.robolectric.shadows.ShadowLooper; import org.chromium.base.test.BaseRobolectricTestRunner; @@ -59,7 +60,10 @@ */ @RunWith(BaseRobolectricTestRunner.class) @Config(manifest = Config.NONE, - shadows = {ShadowMediaRouter.class, ShadowCastContext.class, ShadowLooper.class}) + shadows = {ShadowMediaRouter.class, ShadowCastContext.class, ShadowLooper.class}, + // Required to mock final. + instrumentedPackages = {"androidx.mediarouter.media.MediaRouteSelector"}) +@LooperMode(LooperMode.Mode.LEGACY) public class CafBaseMediaRouteProviderTest { private Context mContext; private TestMRP mProvider;
diff --git a/components/messages/android/message_dispatcher_bridge.cc b/components/messages/android/message_dispatcher_bridge.cc index 9d0a26c..6585e3ab 100644 --- a/components/messages/android/message_dispatcher_bridge.cc +++ b/components/messages/android/message_dispatcher_bridge.cc
@@ -85,9 +85,11 @@ return resource_id_mapper_.Run(resource_id); } -void MessageDispatcherBridge::SetResourceIdMapper( - ResourceIdMapper resource_id_mapper) { +void MessageDispatcherBridge::Initialize(ResourceIdMapper resource_id_mapper) { resource_id_mapper_ = std::move(resource_id_mapper); + // resource_id_mapper_ will only be initialized in an embedder that supports + // the Messages UI. + messages_enabled_for_embedder_ = true; } } // namespace messages
diff --git a/components/messages/android/message_dispatcher_bridge.h b/components/messages/android/message_dispatcher_bridge.h index 97fc73e..ba05dea4 100644 --- a/components/messages/android/message_dispatcher_bridge.h +++ b/components/messages/android/message_dispatcher_bridge.h
@@ -42,10 +42,13 @@ // code that doesn't have access to ResourceMapper, e.g. code in //components. virtual int MapToJavaDrawableId(int resource_id); - void SetResourceIdMapper(ResourceIdMapper resource_id_mapper); + void Initialize(ResourceIdMapper resource_id_mapper); + + bool IsMessagesEnabledForEmbedder() { return messages_enabled_for_embedder_; } protected: virtual ~MessageDispatcherBridge(); + bool messages_enabled_for_embedder_; private: ResourceIdMapper resource_id_mapper_;
diff --git a/components/messages/android/messages_feature.cc b/components/messages/android/messages_feature.cc index 8dc8858..081cee51 100644 --- a/components/messages/android/messages_feature.cc +++ b/components/messages/android/messages_feature.cc
@@ -9,7 +9,7 @@ namespace messages { const base::Feature kMessagesForAndroidAdsBlocked{ - "MessagesForAndroidAdsBlocked", base::FEATURE_DISABLED_BY_DEFAULT}; + "MessagesForAndroidAdsBlocked", base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kMessagesForAndroidChromeSurvey{ "MessagesForAndroidChromeSurvey", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/components/messages/android/mock_message_dispatcher_bridge.cc b/components/messages/android/mock_message_dispatcher_bridge.cc index 4980a69..41355611 100644 --- a/components/messages/android/mock_message_dispatcher_bridge.cc +++ b/components/messages/android/mock_message_dispatcher_bridge.cc
@@ -13,4 +13,9 @@ return -1; } +void MockMessageDispatcherBridge::SetMessagesEnabledForEmbedder( + bool messages_enabled_for_embedder) { + messages_enabled_for_embedder_ = messages_enabled_for_embedder; +} + } // namespace messages
diff --git a/components/messages/android/mock_message_dispatcher_bridge.h b/components/messages/android/mock_message_dispatcher_bridge.h index 8787ad5..a6acf18 100644 --- a/components/messages/android/mock_message_dispatcher_bridge.h +++ b/components/messages/android/mock_message_dispatcher_bridge.h
@@ -28,6 +28,7 @@ DismissReason dismiss_reason), (override)); int MapToJavaDrawableId(int resource_id) override; + void SetMessagesEnabledForEmbedder(bool messages_enabled_for_embedder); }; } // namespace messages
diff --git a/components/metrics/BUILD.gn b/components/metrics/BUILD.gn index 90c21ce4..f523a79e 100644 --- a/components/metrics/BUILD.gn +++ b/components/metrics/BUILD.gn
@@ -477,6 +477,7 @@ ":test_support", ":ui", "//base", + "//base:base_stack_sampling_profiler_test_util", "//base/test:test_support", "//build:chromeos_buildflags", "//components/component_updater:test_support",
diff --git a/components/metrics/call_stack_profile_builder_unittest.cc b/components/metrics/call_stack_profile_builder_unittest.cc index 11652ef..fe564b78 100644 --- a/components/metrics/call_stack_profile_builder_unittest.cc +++ b/components/metrics/call_stack_profile_builder_unittest.cc
@@ -8,6 +8,7 @@ #include "base/files/file_path.h" #include "base/profiler/module_cache.h" +#include "base/profiler/stack_sampling_profiler_test_util.h" #include "base/test/bind.h" #include "base/test/mock_callback.h" #include "base/time/time.h" @@ -20,29 +21,6 @@ namespace { -// Stub module for testing. -class TestModule : public base::ModuleCache::Module { - public: - TestModule(uintptr_t base_address = 0, - const std::string& id = "", - const base::FilePath& debug_basename = base::FilePath()) - : base_address_(base_address), id_(id), debug_basename_(debug_basename) {} - - TestModule(const TestModule&) = delete; - TestModule& operator=(const TestModule&) = delete; - - uintptr_t GetBaseAddress() const override { return base_address_; } - std::string GetId() const override { return id_; } - base::FilePath GetDebugBasename() const override { return debug_basename_; } - size_t GetSize() const override { return 0; } - bool IsNative() const override { return true; } - - private: - uintptr_t base_address_; - std::string id_; - base::FilePath debug_basename_; -}; - constexpr CallStackProfileParams kProfileParams = { CallStackProfileParams::Process::kBrowser, CallStackProfileParams::Thread::kMain, @@ -113,15 +91,21 @@ #endif const uintptr_t module_base_address1 = 0x1000; - TestModule module1(module_base_address1, "1", module_path); + base::TestModule module1(module_base_address1); + module1.set_id("1"); + module1.set_debug_basename(module_path); base::Frame frame1 = {module_base_address1 + 0x10, &module1}; const uintptr_t module_base_address2 = 0x1100; - TestModule module2(module_base_address2, "2", module_path); + base::TestModule module2(module_base_address2); + module2.set_id("2"); + module2.set_debug_basename(module_path); base::Frame frame2 = {module_base_address2 + 0x10, &module2}; const uintptr_t module_base_address3 = 0x1010; - TestModule module3(module_base_address3, "3", module_path); + base::TestModule module3(module_base_address3); + module3.set_id("3"); + module3.set_debug_basename(module_path); base::Frame frame3 = {module_base_address3 + 0x10, &module3}; std::vector<base::Frame> frames1 = {frame1, frame2}; @@ -190,7 +174,7 @@ auto profile_builder = std::make_unique<TestingCallStackProfileBuilder>(kProfileParams); - TestModule module1; + base::TestModule module1; base::Frame frame1 = {0x10, &module1}; std::vector<base::Frame> frames = {frame1}; @@ -219,10 +203,10 @@ std::make_unique<TestingCallStackProfileBuilder>(kProfileParams); base::MetadataRecorder metadata_recorder; - TestModule module1; + base::TestModule module1; base::Frame frame1 = {0x10, &module1}; - TestModule module2; + base::TestModule module2; base::Frame frame2 = {0x20, &module2}; std::vector<base::Frame> frames = {frame1, frame2}; @@ -260,10 +244,10 @@ std::make_unique<TestingCallStackProfileBuilder>(kProfileParams); base::MetadataRecorder metadata_recorder; - TestModule module1; + base::TestModule module1; base::Frame frame1 = {0x10, &module1}; - TestModule module2; + base::TestModule module2; base::Frame frame2 = {0x20, &module2}; std::vector<base::Frame> frames1 = {frame1}; @@ -312,7 +296,9 @@ uint64_t module_md5 = 0x554838A8451AC36CULL; base::FilePath module_path("/some/path/to/chrome"); #endif - TestModule module2(module_base_address2, "2", module_path); + base::TestModule module2(module_base_address2); + module2.set_id("2"); + module2.set_debug_basename(module_path); base::Frame frame2 = {module_base_address2 + 0x10, &module2}; std::vector<base::Frame> frames = {frame1, frame2}; @@ -363,7 +349,9 @@ base::FilePath module_path("/some/path/to/chrome"); #endif - TestModule module(module_base_address, "1", module_path); + base::TestModule module(module_base_address); + module.set_id("1"); + module.set_debug_basename(module_path); base::Frame frame1 = {module_base_address + 0x10, &module}; base::Frame frame2 = {module_base_address + 0x20, &module}; @@ -417,7 +405,7 @@ kProfileParams, &work_id_recorder); base::MetadataRecorder metadata_recorder; - TestModule module; + base::TestModule module; base::Frame frame = {0x10, &module}; // Id 0 means the message loop hasn't been started yet, so the sample should @@ -464,7 +452,7 @@ auto profile_builder = std::make_unique<TestingCallStackProfileBuilder>(kProfileParams); - TestModule module; + base::TestModule module; const base::Frame frame = {0x10, &module}; const base::TimeTicks first_sample_time = base::TimeTicks::UnixEpoch(); @@ -484,7 +472,7 @@ auto profile_builder = std::make_unique<TestingCallStackProfileBuilder>(kProfileParams, nullptr); - TestModule module; + base::TestModule module; base::Frame frame = {0x10, &module}; metadata_recorder.Set(100, absl::nullopt, 10); @@ -520,7 +508,7 @@ auto profile_builder = std::make_unique<TestingCallStackProfileBuilder>(kProfileParams, nullptr); - TestModule module; + base::TestModule module; base::Frame frame = {0x10, &module}; base::TimeTicks profile_start_time = base::TimeTicks::UnixEpoch(); base::TimeDelta sample_time_delta = base::Seconds(1); @@ -585,7 +573,7 @@ auto profile_builder = std::make_unique<TestingCallStackProfileBuilder>(kProfileParams, nullptr); - TestModule module; + base::TestModule module; base::Frame frame = {0x10, &module}; base::TimeTicks profile_start_time = base::TimeTicks::UnixEpoch(); base::TimeDelta sample_time_delta = base::Seconds(1);
diff --git a/components/metrics/metrics_data_validation.h b/components/metrics/metrics_data_validation.h index 5988a26..6ac4e2f 100644 --- a/components/metrics/metrics_data_validation.h +++ b/components/metrics/metrics_data_validation.h
@@ -7,6 +7,7 @@ #include "base/base_export.h" #include "base/feature_list.h" +#include "base/metrics/field_trial_params.h" #include "base/time/time.h" // Features and functions in this file are necessary to set up artificial A / B
diff --git a/components/network_time/historical_latencies_container.cc b/components/network_time/historical_latencies_container.cc index ead777a..dddc3af 100644 --- a/components/network_time/historical_latencies_container.cc +++ b/components/network_time/historical_latencies_container.cc
@@ -6,6 +6,7 @@ #include <cmath> +#include "base/metrics/field_trial_params.h" #include "base/numerics/checked_math.h" #include "base/numerics/safe_conversions.h" #include "base/time/time.h"
diff --git a/components/password_manager/core/common/password_manager_features.h b/components/password_manager/core/common/password_manager_features.h index 263ee9e6..09d3daf 100644 --- a/components/password_manager/core/common/password_manager_features.h +++ b/components/password_manager/core/common/password_manager_features.h
@@ -9,6 +9,7 @@ // module. #include "base/feature_list.h" +#include "base/metrics/field_trial_params.h" #include "build/build_config.h" namespace password_manager {
diff --git a/components/permissions/android/permissions_android_feature_list.cc b/components/permissions/android/permissions_android_feature_list.cc index 3712456..cab4a43 100644 --- a/components/permissions/android/permissions_android_feature_list.cc +++ b/components/permissions/android/permissions_android_feature_list.cc
@@ -4,6 +4,7 @@ #include "components/permissions/android/permissions_android_feature_list.h" #include "base/android/jni_string.h" +#include "base/notreached.h" #include "components/permissions/android/jni_headers/PermissionsAndroidFeatureList_jni.h" using base::android::ConvertJavaStringToUTF8;
diff --git a/components/policy/android/junit/src/org/chromium/components/policy/AbstractAppRestrictionsProviderTest.java b/components/policy/android/junit/src/org/chromium/components/policy/AbstractAppRestrictionsProviderTest.java index 8406384d..e5e3d8dd 100644 --- a/components/policy/android/junit/src/org/chromium/components/policy/AbstractAppRestrictionsProviderTest.java +++ b/components/policy/android/junit/src/org/chromium/components/policy/AbstractAppRestrictionsProviderTest.java
@@ -20,6 +20,7 @@ import org.robolectric.Robolectric; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; +import org.robolectric.annotation.LooperMode; import org.robolectric.shadows.ShadowApplication; import org.chromium.base.ContextUtils; @@ -30,6 +31,7 @@ */ @RunWith(BaseRobolectricTestRunner.class) @Config(manifest = Config.NONE) +@LooperMode(LooperMode.Mode.LEGACY) public class AbstractAppRestrictionsProviderTest { /** * Minimal concrete class implementing AbstractAppRestrictionsProvider.
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json index 46bceb8..4932c29 100644 --- a/components/policy/resources/policy_templates.json +++ b/components/policy/resources/policy_templates.json
@@ -30143,6 +30143,10 @@ 'desc': '''A label for the legacy single-line textbox for a policy also has a more user-friendly multi-line textbox. See http://crbug/829328''', 'text': '''<ph name="POLICY_NAME">$6<ex>Wallpaper Image</ex></ph> (The single-line field is deprecated and will be removed in the future. Please start using the multi-line textbox below.)''', }, + 'doc_policy_documentation': { + 'desc': '''Link title for the policy documentation''', + 'text': '''Documentation for policy''' + }, 'doc_policy_restriction': { 'desc': '''Caption text of the field 'restrictions' in the summary chart of a policy in the generated documentation''', 'text': '''Restrictions:'''
diff --git a/components/policy/tools/template_writers/writer_configuration.py b/components/policy/tools/template_writers/writer_configuration.py index a2c07c4c..dac43c1 100755 --- a/components/policy/tools/template_writers/writer_configuration.py +++ b/components/policy/tools/template_writers/writer_configuration.py
@@ -28,13 +28,13 @@ config = { 'build': 'chromium', 'app_name': 'Chromium', + 'doc_url': 'https://chromeenterprise.google/policies/', 'frame_name': 'Chromium Frame', 'os_name': 'Chromium OS', 'webview_name': 'Chromium WebView', 'win_config': { 'win': { - 'reg_mandatory_key_name': - 'Software\\Policies\\Chromium', + 'reg_mandatory_key_name': 'Software\\Policies\\Chromium', 'reg_recommended_key_name': 'Software\\Policies\\Chromium\\Recommended', 'mandatory_category_path': ['chromium'], @@ -43,12 +43,10 @@ 'chromium': 'Chromium', 'chromium_recommended': 'Chromium - {doc_recommended}', }, - 'namespace': - 'Chromium.Policies.Chromium', + 'namespace': 'Chromium.Policies.Chromium', }, 'chrome_os': { - 'reg_mandatory_key_name': - 'Software\\Policies\\ChromiumOS', + 'reg_mandatory_key_name': 'Software\\Policies\\ChromiumOS', 'reg_recommended_key_name': 'Software\\Policies\\ChromiumOS\\Recommended', 'mandatory_category_path': ['chromium_os'], @@ -58,8 +56,7 @@ 'chromium_os_recommended': 'Chromium OS - {doc_recommended}', }, - 'namespace': - 'Chromium.Policies.ChromiumOS' + 'namespace': 'Chromium.Policies.ChromiumOS' }, }, 'admx_prefix': 'chromium', @@ -70,6 +67,7 @@ config = { 'build': 'chrome', 'app_name': 'Google Chrome', + 'doc_url': 'https://chromeenterprise.google/policies/', 'frame_name': 'Google Chrome Frame', 'os_name': 'Google Chrome OS', 'webview_name': 'Android System WebView',
diff --git a/components/policy/tools/template_writers/writers/jamf_writer.py b/components/policy/tools/template_writers/writers/jamf_writer.py index 41fa458..f8379c0 100755 --- a/components/policy/tools/template_writers/writers/jamf_writer.py +++ b/components/policy/tools/template_writers/writers/jamf_writer.py
@@ -49,6 +49,7 @@ Returns: Generated output for the passed template definition. ''' + self.messages = template['messages'] # Keep track of all items that can be referred to by an id. # This is used for '$ref' fields in the policy templates. ref_ids_schemas = {} @@ -90,9 +91,16 @@ for policy in policies: output['properties'][policy['name']] = { - 'title': policy['name'], - 'description': policy['caption'], - 'type': self.TYPE_TO_INPUT[policy['type']] + 'title': + policy['name'], + 'description': + policy['caption'], + 'type': + self.TYPE_TO_INPUT[policy['type']], + 'links': [{ + 'rel': self.messages['doc_policy_documentation']['text'], + 'href': self.config['doc_url'] + '#' + policy['name'] + }] } policy_output = output['properties'][policy['name']]
diff --git a/components/policy/tools/template_writers/writers/jamf_writer_unittest.py b/components/policy/tools/template_writers/writers/jamf_writer_unittest.py index 35fc22b..1dc8fc5d 100755 --- a/components/policy/tools/template_writers/writers/jamf_writer_unittest.py +++ b/components/policy/tools/template_writers/writers/jamf_writer_unittest.py
@@ -22,6 +22,8 @@ class JamfWriterUnitTests(writer_unittest_common.WriterUnittestCommon): '''Unit tests for JamfWriter.''' + doc_url = 'https://chromeenterprise.google/policies/' + def _GetTestPolicyTemplate(self, policy_name, policy_type, schema_type, policy_caption): template = { @@ -55,7 +57,11 @@ }], 'policy_atomic_group_definitions': [], 'placeholders': [], - 'messages': {}, + 'messages': { + 'doc_policy_documentation': { + 'text': 'Documentation for policy' + } + }, } return _JsonFormat(template) @@ -68,9 +74,16 @@ }, 'properties': { policy_name: { - 'description': policy_caption, - 'title': policy_name, - 'type': policy_type + 'description': + policy_caption, + 'title': + policy_name, + 'type': + policy_type, + 'links': [{ + 'rel': 'Documentation for policy', + 'href': self.doc_url + '#' + policy_name + }] } }, 'title': 'com.google.chrome.ios', @@ -107,7 +120,8 @@ 'A string policy', 'string', '83') output = self.GetOutput(policy_json, { '_google_chrome': '1', - 'version': '83.0.4089.0' + 'version': '83.0.4089.0', + 'doc_url': self.doc_url }, 'jamf') self.assertEquals(output.strip(), expected.strip()) @@ -118,7 +132,8 @@ 'int', '83') output = self.GetOutput(policy_json, { '_google_chrome': '1', - 'version': '83.0.4089.0' + 'version': '83.0.4089.0', + 'doc_url': self.doc_url }, 'jamf') self.assertEquals(output.strip(), expected.strip()) @@ -139,7 +154,11 @@ }], 'policy_atomic_group_definitions': [], 'placeholders': [], - 'messages': {}, + 'messages': { + 'doc_policy_documentation': { + 'text': 'Documentation for policy' + } + } } policy_json = _JsonFormat(template) @@ -150,11 +169,20 @@ }, 'properties': { 'intPolicyWithMinAndMax': { - 'description': 'An int policy with min and max', - 'maximum': 10, - 'minimum': 0, - 'title': 'intPolicyWithMinAndMax', - 'type': 'integer' + 'description': + 'An int policy with min and max', + 'maximum': + 10, + 'minimum': + 0, + 'title': + 'intPolicyWithMinAndMax', + 'type': + 'integer', + 'links': [{ + 'rel': 'Documentation for policy', + 'href': self.doc_url + '#' + 'intPolicyWithMinAndMax' + }] } }, 'title': 'com.google.chrome.ios', @@ -164,7 +192,8 @@ output = self.GetOutput(policy_json, { '_google_chrome': '1', - 'version': '83.0.4089.0' + 'version': '83.0.4089.0', + 'doc_url': self.doc_url }, 'jamf') self.assertEquals(output.strip(), expected_json.strip()) @@ -175,7 +204,8 @@ 'An int-enum policy', 'int-enum', '83') output = self.GetOutput(policy_json, { '_google_chrome': '1', - 'version': '83.0.4089.0' + 'version': '83.0.4089.0', + 'doc_url': self.doc_url }, 'jamf') self.assertEquals(output.strip(), expected.strip()) @@ -187,7 +217,8 @@ '83') output = self.GetOutput(policy_json, { '_google_chrome': '1', - 'version': '83.0.4089.0' + 'version': '83.0.4089.0', + 'doc_url': self.doc_url }, 'jamf') self.assertEquals(output.strip(), expected.strip()) @@ -200,7 +231,8 @@ 'string-enum-list', '83') output = self.GetOutput(policy_json, { '_google_chrome': '1', - 'version': '83.0.4089.0' + 'version': '83.0.4089.0', + 'doc_url': self.doc_url }, 'jamf') self.assertEquals(output.strip(), expected.strip()) @@ -211,7 +243,8 @@ 'A boolean policy', 'main', '83') output = self.GetOutput(policy_json, { '_google_chrome': '1', - 'version': '83.0.4089.0' + 'version': '83.0.4089.0', + 'doc_url': self.doc_url }, 'jamf') self.assertEquals(output.strip(), expected.strip()) @@ -222,7 +255,8 @@ 'list', '83') output = self.GetOutput(policy_json, { '_google_chrome': '1', - 'version': '83.0.4089.0' + 'version': '83.0.4089.0', + 'doc_url': self.doc_url }, 'jamf') self.assertEquals(output.strip(), expected.strip()) @@ -233,7 +267,8 @@ 'dict', '83') output = self.GetOutput(policy_json, { '_google_chrome': '1', - 'version': '83.0.4089.0' + 'version': '83.0.4089.0', + 'doc_url': self.doc_url }, 'jamf') self.assertEquals(output.strip(), expected.strip()) @@ -244,7 +279,8 @@ 'dict', '83') output = self.GetOutput(policy_json, { '_google_chrome': '1', - 'version': '83.0.4089.0' + 'version': '83.0.4089.0', + 'doc_url': self.doc_url }, 'jamf') self.assertEquals(output.strip(), expected.strip()) @@ -277,7 +313,11 @@ }], 'policy_atomic_group_definitions': [], 'placeholders': [], - 'messages': {}, + 'messages': { + 'doc_policy_documentation': { + 'text': 'Documentation for policy' + } + } } policy_json = _JsonFormat(template) @@ -288,9 +328,12 @@ }, 'properties': { 'name': { - 'description': 'caption', - 'title': 'name', - 'type': 'array', + 'description': + 'caption', + 'title': + 'name', + 'type': + 'array', 'items': { 'title': 'title2', 'id': 'id', @@ -298,7 +341,11 @@ 'properties': { 'name': 'name' } - } + }, + 'links': [{ + 'rel': 'Documentation for policy', + 'href': self.doc_url + '#' + 'name' + }] } }, 'title': 'com.google.chrome.ios', @@ -314,7 +361,8 @@ output_expected = _JsonFormat(expected) output = self.GetOutput(policy_json, { '_google_chrome': '1', - 'version': '83.0.4089.0' + 'version': '83.0.4089.0', + 'doc_url': self.doc_url }, 'jamf') self.assertEquals(output.strip(), output_expected.strip()) @@ -325,7 +373,8 @@ 'A external policy', 'external', '83') output = self.GetOutput(policy_json, { '_google_chrome': '1', - 'version': '83.0.4089.0' + 'version': '83.0.4089.0', + 'doc_url': self.doc_url }, 'jamf') self.assertEquals(output.strip(), expected.strip())
diff --git a/components/power_scheduler/power_scheduler.cc b/components/power_scheduler/power_scheduler.cc index 0c2dcb0..8b5c8d9 100644 --- a/components/power_scheduler/power_scheduler.cc +++ b/components/power_scheduler/power_scheduler.cc
@@ -10,6 +10,7 @@ #include "base/cpu_affinity_posix.h" #include "base/feature_list.h" #include "base/lazy_instance.h" +#include "base/metrics/field_trial_params.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" #include "base/no_destructor.h"
diff --git a/components/remote_cocoa/app_shim/color_panel_bridge.mm b/components/remote_cocoa/app_shim/color_panel_bridge.mm index 1ad75ab..f7f0de0 100644 --- a/components/remote_cocoa/app_shim/color_panel_bridge.mm +++ b/components/remote_cocoa/app_shim/color_panel_bridge.mm
@@ -42,11 +42,15 @@ - (instancetype)init { if ((self = [super init])) { NSColorPanel* panel = [NSColorPanel sharedColorPanel]; - [[NSNotificationCenter defaultCenter] - addObserver:self + NSNotificationCenter* nc = [NSNotificationCenter defaultCenter]; + [nc addObserver:self selector:@selector(windowWillClose:) name:NSWindowWillCloseNotification object:panel]; + [nc addObserver:self + selector:@selector(windowDidResignKey:) + name:NSWindowDidResignKeyNotification + object:panel]; } return self; } @@ -63,6 +67,12 @@ _nonUserChange = NO; } +- (void)windowDidResignKey:(NSNotification*)notification { + // Close the color panel when the user clicks away. + [self windowWillClose:notification]; + [[NSColorPanel sharedColorPanel] close]; +} + - (void)didChooseColor:(NSColorPanel*)panel { if (_nonUserChange) { _nonUserChange = NO;
diff --git a/components/reporting/proto/synced/metric_data.proto b/components/reporting/proto/synced/metric_data.proto index 244eb0b..99d17b9 100644 --- a/components/reporting/proto/synced/metric_data.proto +++ b/components/reporting/proto/synced/metric_data.proto
@@ -320,6 +320,12 @@ // List of names of USB categories the device falls under // https://www.usb.org/defined-class-codes repeated string categories = 5; + // Class ID + // https://www.usb.org/defined-class-codes + optional int32 class_id = 6; + // Subclass ID + // https://www.usb.org/defined-class-codes + optional int32 subclass_id = 7; } // Indicates one of the following conditions occurred on the device, data
diff --git a/components/safe_browsing/core/browser/db/v4_store.h b/components/safe_browsing/core/browser/db/v4_store.h index 8e050617..9b2cdb2 100644 --- a/components/safe_browsing/core/browser/db/v4_store.h +++ b/components/safe_browsing/core/browser/db/v4_store.h
@@ -15,6 +15,7 @@ #include "base/gtest_prod_util.h" #include "base/memory/ref_counted.h" #include "base/task/sequenced_task_runner.h" +#include "base/time/time.h" #include "components/safe_browsing/core/browser/db/v4_protocol_manager_util.h" #include "components/safe_browsing/core/common/proto/webui.pb.h"
diff --git a/components/services/app_service/app_service_mojom_impl.cc b/components/services/app_service/app_service_mojom_impl.cc index dab153d..23623e84 100644 --- a/components/services/app_service/app_service_mojom_impl.cc +++ b/components/services/app_service/app_service_mojom_impl.cc
@@ -539,6 +539,17 @@ iter->second->SetWindowMode(app_id, window_mode); } +void AppServiceMojomImpl::SetRunOnOsLoginMode( + apps::mojom::AppType app_type, + const std::string& app_id, + apps::mojom::RunOnOsLoginMode run_on_os_login_mode) { + auto iter = publishers_.find(app_type); + if (iter == publishers_.end()) { + return; + } + iter->second->SetRunOnOsLoginMode(app_id, run_on_os_login_mode); +} + PreferredAppsList& AppServiceMojomImpl::GetPreferredAppsForTesting() { return preferred_apps_; }
diff --git a/components/services/app_service/app_service_mojom_impl.h b/components/services/app_service/app_service_mojom_impl.h index 32a402de..c58a2ea5 100644 --- a/components/services/app_service/app_service_mojom_impl.h +++ b/components/services/app_service/app_service_mojom_impl.h
@@ -121,6 +121,10 @@ void SetWindowMode(apps::mojom::AppType app_type, const std::string& app_id, apps::mojom::WindowMode window_mode) override; + void SetRunOnOsLoginMode( + apps::mojom::AppType app_type, + const std::string& app_id, + apps::mojom::RunOnOsLoginMode run_on_os_login_mode) override; // Retern the preferred_apps_ for testing. PreferredAppsList& GetPreferredAppsForTesting();
diff --git a/components/services/app_service/public/cpp/publisher_base.cc b/components/services/app_service/public/cpp/publisher_base.cc index 2fb5657..9f1d5aa 100644 --- a/components/services/app_service/public/cpp/publisher_base.cc +++ b/components/services/app_service/public/cpp/publisher_base.cc
@@ -181,4 +181,10 @@ NOTIMPLEMENTED(); } +void PublisherBase::SetRunOnOsLoginMode( + const std::string& app_id, + apps::mojom::RunOnOsLoginMode run_on_os_login_mode) { + NOTIMPLEMENTED(); +} + } // namespace apps
diff --git a/components/services/app_service/public/cpp/publisher_base.h b/components/services/app_service/public/cpp/publisher_base.h index 20f8955..d5e49519 100644 --- a/components/services/app_service/public/cpp/publisher_base.h +++ b/components/services/app_service/public/cpp/publisher_base.h
@@ -101,6 +101,9 @@ apps::mojom::OptionalBool locked) override; void SetWindowMode(const std::string& app_id, apps::mojom::WindowMode window_mode) override; + void SetRunOnOsLoginMode( + const std::string& app_id, + apps::mojom::RunOnOsLoginMode run_on_os_login_mode) override; mojo::Receiver<apps::mojom::Publisher> receiver_{this}; };
diff --git a/components/services/app_service/public/mojom/app_service.mojom b/components/services/app_service/public/mojom/app_service.mojom index 7fcc26c..0ef394bb 100644 --- a/components/services/app_service/public/mojom/app_service.mojom +++ b/components/services/app_service/public/mojom/app_service.mojom
@@ -166,6 +166,12 @@ AppType app_type, string app_id, WindowMode window_mode); + + // Set the mode for the app to be run on os login identified by |app_id|. + SetRunOnOsLoginMode( + AppType app_type, + string app_id, + RunOnOsLoginMode run_on_os_login_mode); }; interface Publisher { @@ -333,6 +339,12 @@ SetWindowMode( string app_id, WindowMode window_mode); + + // Set the mode to run on OS Login for the app identified by |app_id|. + // Implemented if the publisher supports setting this mode for OS Login, + // otherwise should do nothing. + SetRunOnOsLoginMode(string app_id, + RunOnOsLoginMode run_on_os_login_mode); }; // Subscriber works as a proxy, to receive a stream of apps from publishers,
diff --git a/components/sessions/core/tab_restore_service.h b/components/sessions/core/tab_restore_service.h index 89f1a706..fb49fa3 100644 --- a/components/sessions/core/tab_restore_service.h +++ b/components/sessions/core/tab_restore_service.h
@@ -10,6 +10,7 @@ #include <string> #include <vector> +#include "base/callback_forward.h" #include "base/memory/ref_counted.h" #include "base/time/time.h" #include "base/token.h"
diff --git a/components/signin/public/android/junit/src/org/chromium/components/signin/AccountManagerFacadeImplTest.java b/components/signin/public/android/junit/src/org/chromium/components/signin/AccountManagerFacadeImplTest.java index 88aad1c..054f3a7 100644 --- a/components/signin/public/android/junit/src/org/chromium/components/signin/AccountManagerFacadeImplTest.java +++ b/components/signin/public/android/junit/src/org/chromium/components/signin/AccountManagerFacadeImplTest.java
@@ -36,6 +36,7 @@ import org.robolectric.RuntimeEnvironment; import org.robolectric.android.util.concurrent.RoboExecutorService; import org.robolectric.annotation.Config; +import org.robolectric.annotation.LooperMode; import org.robolectric.shadows.ShadowAccountManager; import org.robolectric.shadows.ShadowUserManager; @@ -59,6 +60,7 @@ @RunWith(BaseRobolectricTestRunner.class) @Config(shadows = {CustomShadowAsyncTask.class, ShadowUserManager.class, ShadowAccountManager.class}) +@LooperMode(LooperMode.Mode.LEGACY) public class AccountManagerFacadeImplTest { private static final String TEST_TOKEN_SCOPE = "test-token-scope";
diff --git a/components/signin/public/android/junit/src/org/chromium/components/signin/AccountRenameCheckerTest.java b/components/signin/public/android/junit/src/org/chromium/components/signin/AccountRenameCheckerTest.java index af33653..00e1e5ab 100644 --- a/components/signin/public/android/junit/src/org/chromium/components/signin/AccountRenameCheckerTest.java +++ b/components/signin/public/android/junit/src/org/chromium/components/signin/AccountRenameCheckerTest.java
@@ -19,6 +19,7 @@ import org.robolectric.annotation.Config; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; +import org.robolectric.annotation.LooperMode; import org.chromium.base.task.test.CustomShadowAsyncTask; import org.chromium.base.test.BaseRobolectricTestRunner; @@ -36,6 +37,7 @@ @RunWith(BaseRobolectricTestRunner.class) @Config(shadows = {AccountRenameCheckerTest.ShadowGoogleAuthUtil.class, CustomShadowAsyncTask.class}) +@LooperMode(LooperMode.Mode.LEGACY) public class AccountRenameCheckerTest { @Implements(GoogleAuthUtil.class) static final class ShadowGoogleAuthUtil {
diff --git a/components/signin/public/android/junit/src/org/chromium/components/signin/identitymanager/AccountTrackerServiceTest.java b/components/signin/public/android/junit/src/org/chromium/components/signin/identitymanager/AccountTrackerServiceTest.java index 0b30930c..dd9648b 100644 --- a/components/signin/public/android/junit/src/org/chromium/components/signin/identitymanager/AccountTrackerServiceTest.java +++ b/components/signin/public/android/junit/src/org/chromium/components/signin/identitymanager/AccountTrackerServiceTest.java
@@ -32,6 +32,7 @@ import org.mockito.junit.MockitoRule; import org.mockito.quality.Strictness; import org.robolectric.annotation.Config; +import org.robolectric.annotation.LooperMode; import org.chromium.base.Promise; import org.chromium.base.task.test.CustomShadowAsyncTask; @@ -51,6 +52,7 @@ */ @RunWith(BaseRobolectricTestRunner.class) @Config(manifest = Config.NONE, shadows = {CustomShadowAsyncTask.class}) +@LooperMode(LooperMode.Mode.LEGACY) public class AccountTrackerServiceTest { private static final long ACCOUNT_TRACKER_SERVICE_NATIVE = 10001L; private static final String ACCOUNT_EMAIL = "test@gmail.com";
diff --git a/components/subresource_filter/content/browser/BUILD.gn b/components/subresource_filter/content/browser/BUILD.gn index 426f4ed..d36c1aa 100644 --- a/components/subresource_filter/content/browser/BUILD.gn +++ b/components/subresource_filter/content/browser/BUILD.gn
@@ -147,6 +147,9 @@ "//components/safe_browsing/core/browser/db:test_database_manager", "//components/safe_browsing/core/browser/db:util", ] + if (is_android) { + deps += [ "//components/messages/android:test_support" ] + } } source_set("unit_tests") {
diff --git a/components/subresource_filter/content/browser/ads_blocked_message_delegate.cc b/components/subresource_filter/content/browser/ads_blocked_message_delegate.cc index 52f6cef..bb298bf 100644 --- a/components/subresource_filter/content/browser/ads_blocked_message_delegate.cc +++ b/components/subresource_filter/content/browser/ads_blocked_message_delegate.cc
@@ -85,6 +85,11 @@ } } +void AdsBlockedMessageDelegate::DismissMessageForTesting( + messages::DismissReason dismiss_reason) { + HandleMessageDismissed(dismiss_reason); +} + AdsBlockedMessageDelegate::AdsBlockedMessageDelegate( content::WebContents* web_contents) : AdsBlockedMessageDelegate(web_contents,
diff --git a/components/subresource_filter/content/browser/ads_blocked_message_delegate.h b/components/subresource_filter/content/browser/ads_blocked_message_delegate.h index 3c51675..6bc8ce7 100644 --- a/components/subresource_filter/content/browser/ads_blocked_message_delegate.h +++ b/components/subresource_filter/content/browser/ads_blocked_message_delegate.h
@@ -47,6 +47,8 @@ void ShowMessage(); void DismissMessage(messages::DismissReason dismiss_reason); + void DismissMessageForTesting(messages::DismissReason dismiss_reason); + messages::MessageWrapper* message_for_testing() { return message_.get(); } bool reprompt_required_flag_for_testing() { return reprompt_required_; }
diff --git a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h index ca70109..3d7a1cb 100644 --- a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h +++ b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.h
@@ -166,6 +166,10 @@ PageLoadStatistics* page_load_statistics() const { return statistics_.get(); } + ProfileInteractionManager* profile_interaction_manager_for_testing() { + return profile_interaction_manager_.get(); + } + VerifiedRuleset::Handle* ruleset_handle_for_testing() { return ruleset_handle_.get(); }
diff --git a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager_unittest.cc b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager_unittest.cc index ceb8b12..5ea700d2 100644 --- a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager_unittest.cc +++ b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager_unittest.cc
@@ -29,6 +29,7 @@ #include "components/subresource_filter/content/browser/async_document_subresource_filter.h" #include "components/subresource_filter/content/browser/content_subresource_filter_web_contents_helper.h" #include "components/subresource_filter/content/browser/fake_safe_browsing_database_manager.h" +#include "components/subresource_filter/content/browser/profile_interaction_manager.h" #include "components/subresource_filter/content/browser/subframe_navigation_test_utils.h" #include "components/subresource_filter/content/browser/subresource_filter_observer_manager.h" #include "components/subresource_filter/content/browser/throttle_manager_test_support.h" @@ -54,6 +55,11 @@ #include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" #include "url/url_constants.h" +#if BUILDFLAG(IS_ANDROID) +#include "components/messages/android/mock_message_dispatcher_bridge.h" +#include "components/subresource_filter/content/browser/ads_blocked_message_delegate.h" +#endif + namespace subresource_filter { namespace proto = url_pattern_index::proto; @@ -242,6 +248,12 @@ Observe(web_contents); NavigateAndCommit(GURL("https://example.first")); + +#if BUILDFLAG(IS_ANDROID) + message_dispatcher_bridge_.SetMessagesEnabledForEmbedder(true); + messages::MessageDispatcherBridge::SetInstanceForTesting( + &message_dispatcher_bridge_); +#endif } void TearDown() override { @@ -249,6 +261,9 @@ dealer_handle_.reset(); base::RunLoop().RunUntilIdle(); content::RenderViewHostTestHarness::TearDown(); +#if BUILDFLAG(IS_ANDROID) + messages::MessageDispatcherBridge::SetInstanceForTesting(nullptr); +#endif } void ExpectActivationSignalForFrame( @@ -303,6 +318,15 @@ return throttle_manager()->ruleset_handle_for_testing(); } +#if BUILDFLAG(IS_ANDROID) + void SimulateMessageDismissal() { + throttle_manager() + ->profile_interaction_manager_for_testing() + ->ads_blocked_message_delegate_for_testing() + ->DismissMessageForTesting(messages::DismissReason::SCOPE_DESTROYED); + } +#endif + bool ads_blocked_in_content_settings() { auto* content_settings = content_settings::PageSpecificContentSettings::GetForFrame( @@ -311,22 +335,6 @@ return content_settings->IsContentBlocked(ContentSettingsType::ADS); } - bool presenting_ads_blocked_infobar() { - auto* infobar_manager = infobars::ContentInfoBarManager::FromWebContents( - content::RenderViewHostTestHarness::web_contents()); - if (infobar_manager->infobar_count() == 0) - return false; - - // No infobars other than the ads blocked infobar should be displayed in the - // context of these tests. - EXPECT_EQ(infobar_manager->infobar_count(), 1u); - auto* infobar = infobar_manager->infobar_at(0); - EXPECT_EQ(infobar->delegate()->GetIdentifier(), - infobars::InfoBarDelegate::ADS_BLOCKED_INFOBAR_DELEGATE_ANDROID); - - return true; - } - protected: // content::WebContentsObserver void RenderFrameCreated(content::RenderFrameHost* new_host) override { @@ -397,6 +405,10 @@ return dealer_handle_.get(); } +#if BUILDFLAG(IS_ANDROID) + messages::MockMessageDispatcherBridge message_dispatcher_bridge_; +#endif + private: ContentSubresourceFilterWebContentsHelper* web_contents_helper() { return ContentSubresourceFilterWebContentsHelper::FromWebContents( @@ -430,6 +442,9 @@ ExpectActivationSignalForFrame(main_rfh(), true /* expect_activation */); // A disallowed subframe navigation should be successfully filtered. +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/disallowed.html"), main_rfh()); EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, @@ -437,15 +452,16 @@ EXPECT_TRUE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_TRUE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } #if BUILDFLAG(IS_ANDROID) TEST_P(ContentSubresourceFilterThrottleManagerTest, - NoCrashWhenInfoBarManagerIsNotPresent) { + NoCrashWhenMessageDelegateIsNotPresent) { auto* web_contents = RenderViewHostTestHarness::web_contents(); - web_contents->RemoveUserData(infobars::ContentInfoBarManager::UserDataKey()); + web_contents->RemoveUserData( + subresource_filter::AdsBlockedMessageDelegate::UserDataKey()); // Commit a navigation that triggers page level activation. NavigateAndCommitMainFrame(GURL(kTestURLWithActivation)); @@ -473,13 +489,16 @@ EXPECT_FALSE(ManagerHasRulesetHandle()); // A disallowed subframe navigation should not be filtered. +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage).Times(0); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/disallowed.html"), main_rfh()); EXPECT_EQ(content::NavigationThrottle::PROCEED, SimulateCommitAndGetResult(navigation_simulator())); EXPECT_FALSE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_FALSE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } @@ -490,6 +509,9 @@ ExpectActivationSignalForFrame(main_rfh(), true /* expect_activation */); // A disallowed subframe navigation should not be filtered in dry-run mode. +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage).Times(0); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/disallowed.html"), main_rfh()); EXPECT_EQ(content::NavigationThrottle::PROCEED, @@ -504,7 +526,7 @@ EXPECT_FALSE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_FALSE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } @@ -516,6 +538,9 @@ // A disallowed subframe navigation via redirect should be successfully // filtered. +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/before-redirect.html"), main_rfh()); EXPECT_EQ(content::NavigationThrottle::PROCEED, @@ -526,7 +551,7 @@ GURL("https://www.example.com/disallowed.html"))); EXPECT_TRUE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_TRUE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } @@ -537,6 +562,9 @@ ExpectActivationSignalForFrame(main_rfh(), true /* expect_activation */); // An allowed subframe navigation should complete successfully. +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage).Times(0); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/allowed1.html"), main_rfh()); EXPECT_EQ(content::NavigationThrottle::PROCEED, @@ -553,7 +581,7 @@ EXPECT_FALSE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_FALSE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } @@ -566,15 +594,15 @@ ExpectActivationSignalForFrame(main_rfh(), true /* expect_activation */); // A disallowed subframe navigation should be successfully filtered. +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/1/disallowed.html"), main_rfh()); EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, SimulateStartAndGetResult(navigation_simulator())); EXPECT_TRUE(ads_blocked_in_content_settings()); -#if BUILDFLAG(IS_ANDROID) - EXPECT_TRUE(presenting_ads_blocked_infobar()); -#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/2/disallowed.html"), main_rfh()); @@ -583,7 +611,7 @@ EXPECT_TRUE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_TRUE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } @@ -594,6 +622,9 @@ ExpectActivationSignalForFrame(main_rfh(), true /* expect_activation */); // A disallowed subframe navigation should be successfully filtered. +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/1/disallowed.html"), main_rfh()); EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, @@ -601,18 +632,24 @@ EXPECT_TRUE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_TRUE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif // Commit another navigation that triggers page level activation. +#if BUILDFLAG(IS_ANDROID) + // Since the MessageDispatcherBridge is mocked, navigation events are not + // tracked by the messages system to automatically dismiss the message on + // navigation. The message dismissal is therefore simulated. + SimulateMessageDismissal(); +#endif NavigateAndCommitMainFrame(GURL(kTestURLWithActivation2)); ExpectActivationSignalForFrame(main_rfh(), true /* expect_activation */); EXPECT_FALSE(ads_blocked_in_content_settings()); -#if BUILDFLAG(IS_ANDROID) - EXPECT_FALSE(presenting_ads_blocked_infobar()); -#endif +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/2/disallowed.html"), main_rfh()); EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, @@ -620,53 +657,7 @@ EXPECT_TRUE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_TRUE(presenting_ads_blocked_infobar()); -#endif -} - -// Test that once presented, the ads blocked infobar will remain present after a -// same-document navigation. -TEST_P(ContentSubresourceFilterThrottleManagerTest, - InfoBarStaysPresentAfterSameDocumentNav) { - // Commit a navigation that triggers page level activation. - NavigateAndCommitMainFrame(GURL(kTestURLWithActivation)); - ExpectActivationSignalForFrame(main_rfh(), true /* expect_activation */); - - // A disallowed subframe navigation should be successfully filtered. - CreateSubframeWithTestNavigation( - GURL("https://www.example.com/1/disallowed.html"), main_rfh()); - EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, - SimulateStartAndGetResult(navigation_simulator())); - - EXPECT_TRUE(ads_blocked_in_content_settings()); -#if BUILDFLAG(IS_ANDROID) - EXPECT_TRUE(presenting_ads_blocked_infobar()); -#endif - - // Commit another navigation that triggers page level activation. - GURL url2 = GURL(base::StringPrintf("%s#ref", kTestURLWithActivation)); - CreateTestNavigation(url2, main_rfh()); - navigation_simulator()->CommitSameDocument(); - - // Same-document navigations do not pass through ReadyToCommitNavigation so no - // ActivateForNextCommittedLoad mojo call is expected. - ExpectActivationSignalForFrame(main_rfh(), false /* expect_activation */, - false /* expect_is_ad_subframe */, - false /* expect_activation_sent_to_agent */); - - EXPECT_TRUE(ads_blocked_in_content_settings()); -#if BUILDFLAG(IS_ANDROID) - EXPECT_TRUE(presenting_ads_blocked_infobar()); -#endif - - CreateSubframeWithTestNavigation( - GURL("https://www.example.com/2/disallowed.html"), main_rfh()); - EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, - SimulateStartAndGetResult(navigation_simulator())); - - EXPECT_TRUE(ads_blocked_in_content_settings()); -#if BUILDFLAG(IS_ANDROID) - EXPECT_TRUE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } @@ -680,6 +671,9 @@ ExpectActivationSignalForFrame(main_rfh(), false /* expect_activation */); // A subframe navigation should complete successfully. +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage).Times(0); +#endif CreateSubframeWithTestNavigation(GURL("https://www.example.com/allowed.html"), main_rfh()); EXPECT_EQ(content::NavigationThrottle::PROCEED, @@ -692,7 +686,7 @@ EXPECT_FALSE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_FALSE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } @@ -702,6 +696,9 @@ NavigateAndCommitMainFrame(GURL(kTestURLWithActivation)); ExpectActivationSignalForFrame(main_rfh(), true /* expect_activation */); +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/disallowed.html"), main_rfh()); EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, @@ -709,7 +706,7 @@ EXPECT_TRUE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_TRUE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif // Simulate a renderer crash which should delete the frame. @@ -717,15 +714,21 @@ process()->SimulateCrash(); EXPECT_FALSE(ManagerHasRulesetHandle()); +#if BUILDFLAG(IS_ANDROID) + // Since the MessageDispatcherBridge is mocked, navigation events are not + // tracked by the messages system to automatically dismiss the message on + // navigation. The message dismissal is therefore simulated. + SimulateMessageDismissal(); +#endif NavigateAndCommit(GURL("https://example.reset")); NavigateAndCommitMainFrame(GURL(kTestURLWithActivation)); ExpectActivationSignalForFrame(main_rfh(), true /* expect_activation */); EXPECT_FALSE(ads_blocked_in_content_settings()); -#if BUILDFLAG(IS_ANDROID) - EXPECT_FALSE(presenting_ads_blocked_infobar()); -#endif +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/disallowed.html"), main_rfh()); EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, @@ -733,7 +736,7 @@ EXPECT_TRUE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_TRUE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } @@ -761,6 +764,9 @@ EXPECT_FALSE(ManagerHasRulesetHandle()); // A subframe navigation should complete successfully. +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage).Times(0); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/disallowed.html"), main_rfh()); EXPECT_EQ(content::NavigationThrottle::PROCEED, @@ -773,7 +779,7 @@ EXPECT_FALSE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_FALSE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } @@ -797,6 +803,9 @@ false /* expect_activation_sent_to_agent */); // A subframe navigation fail. +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/disallowed.html"), main_rfh()); EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, @@ -804,7 +813,7 @@ EXPECT_TRUE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_TRUE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } @@ -821,6 +830,9 @@ SimulateFailedNavigation(navigation_simulator(), net::ERR_FAILED); ExpectActivationSignalForFrame(main_rfh(), false /* expect_activation */); +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage).Times(0); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/disallowed.html"), main_rfh()); EXPECT_EQ(content::NavigationThrottle::PROCEED, @@ -833,7 +845,7 @@ EXPECT_FALSE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_FALSE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } @@ -868,6 +880,9 @@ ExpectActivationSignalForFrame(subframe2, true /* expect_activation */); // A final, nested subframe navigation is filtered. +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage); +#endif CreateSubframeWithTestNavigation(GURL("https://www.c.com/disallowed.html"), subframe2); EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, @@ -875,7 +890,7 @@ EXPECT_TRUE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_TRUE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } @@ -902,6 +917,9 @@ ExpectActivationSignalForFrame(subframe1, true /* expect_activation */); // Navigate a sub-subframe that is not filtered due to the allowlist. +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage).Times(0); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/disallowed.html"), subframe1); EXPECT_EQ(content::NavigationThrottle::PROCEED, @@ -914,7 +932,7 @@ EXPECT_FALSE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_FALSE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif // An identical series of events that don't match allowlist rules cause @@ -929,6 +947,9 @@ ExpectActivationSignalForFrame(subframe3, true /* expect_activation */); // Navigate a sub-subframe that is not filtered due to the allowlist. +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/disallowed.html"), subframe3); EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, @@ -936,7 +957,7 @@ EXPECT_TRUE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_TRUE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } @@ -956,6 +977,9 @@ GURL(base::StringPrintf("%s/some_path/", kTestURLWithActivation))); ExpectActivationSignalForFrame(main_rfh(), false /* expect_activation */); +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage).Times(0); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/disallowed.html"), main_rfh()); EXPECT_EQ(content::NavigationThrottle::PROCEED, @@ -968,7 +992,7 @@ EXPECT_FALSE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_FALSE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } @@ -1085,6 +1109,9 @@ false /* is_ad_subframe */); // A disallowed subframe navigation should be successfully filtered. +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/disallowed.html"), main_rfh()); EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, @@ -1092,7 +1119,7 @@ EXPECT_TRUE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_TRUE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } @@ -1249,6 +1276,9 @@ EXPECT_TRUE(throttle_manager()->IsRenderFrameHostTaggedAsAd(grandchild)); // Verify that a 2nd level nested frame should also be tagged. +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage).Times(0); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/great_grandchild_allowed_by_ruleset.html"), child); @@ -1265,7 +1295,7 @@ EXPECT_FALSE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_FALSE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } @@ -1289,6 +1319,9 @@ // Create a subframe which is allowed as per ruleset and should not be tagged // as ad because its parent is not tagged as well. +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage).Times(0); +#endif CreateSubframeWithTestNavigation( GURL("https://www.example.com/also_allowed_by_ruleset.html"), child); EXPECT_EQ(content::NavigationThrottle::PROCEED, @@ -1304,7 +1337,7 @@ EXPECT_FALSE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_FALSE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } @@ -1320,6 +1353,9 @@ ASSERT_TRUE(remote.is_bound()); ASSERT_TRUE(remote.is_connected()); +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage).Times(0); +#endif NavigateAndCommitMainFrame(GURL(kTestURLWithNoActivation)); // Simulate the previous navigation sending an IPC that a load was @@ -1335,7 +1371,7 @@ EXPECT_FALSE(ads_blocked_in_content_settings()); #if BUILDFLAG(IS_ANDROID) - EXPECT_FALSE(presenting_ads_blocked_infobar()); + ::testing::Mock::VerifyAndClearExpectations(&message_dispatcher_bridge_); #endif } @@ -1543,6 +1579,221 @@ throttle_manager); } +class ContentSubresourceFilterThrottleManagerInfoBarUiTest + : public ContentSubresourceFilterThrottleManagerTest { + public: + void SetUp() override { + ContentSubresourceFilterThrottleManagerTest::SetUp(); +#if BUILDFLAG(IS_ANDROID) + message_dispatcher_bridge_.SetMessagesEnabledForEmbedder(false); + messages::MessageDispatcherBridge::SetInstanceForTesting( + &message_dispatcher_bridge_); +#endif + } + + bool presenting_ads_blocked_infobar() { + auto* infobar_manager = infobars::ContentInfoBarManager::FromWebContents( + content::RenderViewHostTestHarness::web_contents()); + if (infobar_manager->infobar_count() == 0) + return false; + + // No infobars other than the ads blocked infobar should be displayed in the + // context of these tests. + EXPECT_EQ(infobar_manager->infobar_count(), 1u); + auto* infobar = infobar_manager->infobar_at(0); + EXPECT_EQ(infobar->delegate()->GetIdentifier(), + infobars::InfoBarDelegate::ADS_BLOCKED_INFOBAR_DELEGATE_ANDROID); + + return true; + } + + protected: +#if BUILDFLAG(IS_ANDROID) + messages::MockMessageDispatcherBridge message_dispatcher_bridge_; +#endif +}; + +INSTANTIATE_TEST_SUITE_P(All, + ContentSubresourceFilterThrottleManagerInfoBarUiTest, + ::testing::Values(WILL_START_REQUEST, + WILL_PROCESS_RESPONSE)); + +#if BUILDFLAG(IS_ANDROID) +TEST_P(ContentSubresourceFilterThrottleManagerInfoBarUiTest, + NoCrashWhenInfoBarManagerIsNotPresent) { + auto* web_contents = RenderViewHostTestHarness::web_contents(); + web_contents->RemoveUserData(infobars::ContentInfoBarManager::UserDataKey()); + + // Commit a navigation that triggers page level activation. + NavigateAndCommitMainFrame(GURL(kTestURLWithActivation)); + ExpectActivationSignalForFrame(main_rfh(), true /* expect_activation */); + + // A disallowed subframe navigation should be successfully filtered, and the + // lack of infobar manager should not cause a crash. + CreateSubframeWithTestNavigation( + GURL("https://www.example.com/disallowed.html"), main_rfh()); + EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, + SimulateStartAndGetResult(navigation_simulator())); + + EXPECT_TRUE(ads_blocked_in_content_settings()); +} +#endif + +// Test that once presented, the ads blocked infobar will remain present after a +// same-document navigation. +TEST_P(ContentSubresourceFilterThrottleManagerInfoBarUiTest, + InfoBarStaysPresentAfterSameDocumentNav) { + // Commit a navigation that triggers page level activation. + NavigateAndCommitMainFrame(GURL(kTestURLWithActivation)); + ExpectActivationSignalForFrame(main_rfh(), true /* expect_activation */); + + // A disallowed subframe navigation should be successfully filtered. + CreateSubframeWithTestNavigation( + GURL("https://www.example.com/1/disallowed.html"), main_rfh()); + EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, + SimulateStartAndGetResult(navigation_simulator())); + + EXPECT_TRUE(ads_blocked_in_content_settings()); +#if BUILDFLAG(IS_ANDROID) + EXPECT_TRUE(presenting_ads_blocked_infobar()); +#endif + + // Commit another navigation that triggers page level activation. + GURL url2 = GURL(base::StringPrintf("%s#ref", kTestURLWithActivation)); + CreateTestNavigation(url2, main_rfh()); + navigation_simulator()->CommitSameDocument(); + + // Same-document navigations do not pass through ReadyToCommitNavigation so no + // ActivateForNextCommittedLoad mojo call is expected. + ExpectActivationSignalForFrame(main_rfh(), false /* expect_activation */, + false /* expect_is_ad_subframe */, + false /* expect_activation_sent_to_agent */); + + EXPECT_TRUE(ads_blocked_in_content_settings()); +#if BUILDFLAG(IS_ANDROID) + EXPECT_TRUE(presenting_ads_blocked_infobar()); +#endif + + CreateSubframeWithTestNavigation( + GURL("https://www.example.com/2/disallowed.html"), main_rfh()); + EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, + SimulateStartAndGetResult(navigation_simulator())); + + EXPECT_TRUE(ads_blocked_in_content_settings()); +#if BUILDFLAG(IS_ANDROID) + EXPECT_TRUE(presenting_ads_blocked_infobar()); +#endif +} + +// This should fail if the throttle manager notifies the delegate twice of a +// disallowed load for the same page load. +TEST_P(ContentSubresourceFilterThrottleManagerInfoBarUiTest, + ActivateMainFrameAndFilterTwoSubframeNavigations) { + // Commit a navigation that triggers page level activation. + NavigateAndCommitMainFrame(GURL(kTestURLWithActivation)); + ExpectActivationSignalForFrame(main_rfh(), true /* expect_activation */); + + // A disallowed subframe navigation should be successfully filtered. + CreateSubframeWithTestNavigation( + GURL("https://www.example.com/1/disallowed.html"), main_rfh()); + EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, + SimulateStartAndGetResult(navigation_simulator())); + + EXPECT_TRUE(ads_blocked_in_content_settings()); +#if BUILDFLAG(IS_ANDROID) + EXPECT_TRUE(presenting_ads_blocked_infobar()); +#endif + + CreateSubframeWithTestNavigation( + GURL("https://www.example.com/2/disallowed.html"), main_rfh()); + EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, + SimulateStartAndGetResult(navigation_simulator())); + + EXPECT_TRUE(ads_blocked_in_content_settings()); +#if BUILDFLAG(IS_ANDROID) + EXPECT_TRUE(presenting_ads_blocked_infobar()); +#endif +} + +TEST_P(ContentSubresourceFilterThrottleManagerInfoBarUiTest, + ActivateTwoMainFramesAndFilterTwoSubframeNavigations) { + // Commit a navigation that triggers page level activation. + NavigateAndCommitMainFrame(GURL(kTestURLWithActivation)); + ExpectActivationSignalForFrame(main_rfh(), true /* expect_activation */); + + // A disallowed subframe navigation should be successfully filtered. + CreateSubframeWithTestNavigation( + GURL("https://www.example.com/1/disallowed.html"), main_rfh()); + EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, + SimulateStartAndGetResult(navigation_simulator())); + + EXPECT_TRUE(ads_blocked_in_content_settings()); +#if BUILDFLAG(IS_ANDROID) + EXPECT_TRUE(presenting_ads_blocked_infobar()); +#endif + + // Commit another navigation that triggers page level activation. + NavigateAndCommitMainFrame(GURL(kTestURLWithActivation2)); + ExpectActivationSignalForFrame(main_rfh(), true /* expect_activation */); + + EXPECT_FALSE(ads_blocked_in_content_settings()); +#if BUILDFLAG(IS_ANDROID) + EXPECT_FALSE(presenting_ads_blocked_infobar()); +#endif + + CreateSubframeWithTestNavigation( + GURL("https://www.example.com/2/disallowed.html"), main_rfh()); + EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, + SimulateStartAndGetResult(navigation_simulator())); + + EXPECT_TRUE(ads_blocked_in_content_settings()); +#if BUILDFLAG(IS_ANDROID) + EXPECT_TRUE(presenting_ads_blocked_infobar()); +#endif +} + +// Once there are no activated frames, the manager drops its ruleset handle. If +// another frame is activated, make sure the handle is regenerated. +TEST_P(ContentSubresourceFilterThrottleManagerInfoBarUiTest, + RulesetHandleRegeneration) { + NavigateAndCommitMainFrame(GURL(kTestURLWithActivation)); + ExpectActivationSignalForFrame(main_rfh(), true /* expect_activation */); + + CreateSubframeWithTestNavigation( + GURL("https://www.example.com/disallowed.html"), main_rfh()); + EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, + SimulateStartAndGetResult(navigation_simulator())); + + EXPECT_TRUE(ads_blocked_in_content_settings()); +#if BUILDFLAG(IS_ANDROID) + EXPECT_TRUE(presenting_ads_blocked_infobar()); +#endif + + // Simulate a renderer crash which should delete the frame. + EXPECT_TRUE(ManagerHasRulesetHandle()); + process()->SimulateCrash(); + EXPECT_FALSE(ManagerHasRulesetHandle()); + + NavigateAndCommit(GURL("https://example.reset")); + NavigateAndCommitMainFrame(GURL(kTestURLWithActivation)); + ExpectActivationSignalForFrame(main_rfh(), true /* expect_activation */); + + EXPECT_FALSE(ads_blocked_in_content_settings()); +#if BUILDFLAG(IS_ANDROID) + EXPECT_FALSE(presenting_ads_blocked_infobar()); +#endif + + CreateSubframeWithTestNavigation( + GURL("https://www.example.com/disallowed.html"), main_rfh()); + EXPECT_EQ(content::NavigationThrottle::BLOCK_REQUEST_AND_COLLAPSE, + SimulateStartAndGetResult(navigation_simulator())); + + EXPECT_TRUE(ads_blocked_in_content_settings()); +#if BUILDFLAG(IS_ANDROID) + EXPECT_TRUE(presenting_ads_blocked_infobar()); +#endif +} + // TODO(csharrison): Make sure the following conditions are exercised in tests: // // - Synchronous navigations to about:blank. These hit issues with the
diff --git a/components/subresource_filter/content/browser/profile_interaction_manager.cc b/components/subresource_filter/content/browser/profile_interaction_manager.cc index 964020c5..d01a689 100644 --- a/components/subresource_filter/content/browser/profile_interaction_manager.cc +++ b/components/subresource_filter/content/browser/profile_interaction_manager.cc
@@ -20,9 +20,9 @@ #if BUILDFLAG(IS_ANDROID) #include "components/infobars/content/content_infobar_manager.h" // nogncheck +#include "components/messages/android/message_dispatcher_bridge.h" #include "components/messages/android/messages_feature.h" #include "components/subresource_filter/content/browser/ads_blocked_infobar_delegate.h" -#include "components/subresource_filter/content/browser/ads_blocked_message_delegate.h" #endif namespace subresource_filter { @@ -139,12 +139,15 @@ if (profile_context_->settings_manager()->ShouldShowUIForSite( top_level_url)) { #if BUILDFLAG(IS_ANDROID) - if (messages::IsAdsBlockedMessagesUiEnabled()) { + if (messages::IsAdsBlockedMessagesUiEnabled() && + messages::MessageDispatcherBridge::Get() + ->IsMessagesEnabledForEmbedder()) { subresource_filter::AdsBlockedMessageDelegate::CreateForWebContents( GetWebContents()); - subresource_filter::AdsBlockedMessageDelegate::FromWebContents( - GetWebContents()) - ->ShowMessage(); + ads_blocked_message_delegate_ = + subresource_filter::AdsBlockedMessageDelegate::FromWebContents( + GetWebContents()); + ads_blocked_message_delegate_->ShowMessage(); } else { // NOTE: It is acceptable for the embedder to not have installed an // infobar manager.
diff --git a/components/subresource_filter/content/browser/profile_interaction_manager.h b/components/subresource_filter/content/browser/profile_interaction_manager.h index 9778b96..e48e9cd 100644 --- a/components/subresource_filter/content/browser/profile_interaction_manager.h +++ b/components/subresource_filter/content/browser/profile_interaction_manager.h
@@ -11,6 +11,10 @@ #include "components/subresource_filter/core/common/activation_decision.h" #include "components/subresource_filter/core/mojom/subresource_filter.mojom.h" +#if BUILDFLAG(IS_ANDROID) +#include "components/subresource_filter/content/browser/ads_blocked_message_delegate.h" +#endif + namespace content { class Page; class RenderFrameHost; @@ -58,6 +62,12 @@ mojom::ActivationLevel initial_activation_level, ActivationDecision* decision) override; +#if BUILDFLAG(IS_ANDROID) + AdsBlockedMessageDelegate* ads_blocked_message_delegate_for_testing() { + return ads_blocked_message_delegate_; + } +#endif + private: content::WebContents* GetWebContents(); @@ -71,6 +81,10 @@ raw_ptr<SubresourceFilterProfileContext> profile_context_ = nullptr; bool ads_violation_triggered_for_last_committed_navigation_ = false; + +#if BUILDFLAG(IS_ANDROID) + raw_ptr<AdsBlockedMessageDelegate> ads_blocked_message_delegate_; +#endif }; } // namespace subresource_filter
diff --git a/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc b/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc index bc0aa7a6..89646cfb 100644 --- a/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc +++ b/components/subresource_filter/content/browser/subresource_filter_safe_browsing_activation_throttle_unittest.cc
@@ -50,6 +50,10 @@ #include "services/metrics/public/cpp/ukm_builders.h" #include "testing/gtest/include/gtest/gtest.h" +#if BUILDFLAG(IS_ANDROID) +#include "components/messages/android/mock_message_dispatcher_bridge.h" +#endif + namespace subresource_filter { namespace { @@ -180,6 +184,12 @@ Observe(contents); observer_ = std::make_unique<TestSubresourceFilterObserver>(contents); + +#if BUILDFLAG(IS_ANDROID) + message_dispatcher_bridge_.SetMessagesEnabledForEmbedder(true); + messages::MessageDispatcherBridge::SetInstanceForTesting( + &message_dispatcher_bridge_); +#endif } virtual void Configure() { @@ -202,6 +212,10 @@ RunUntilIdle(); content::RenderViewHostTestHarness::TearDown(); + +#if BUILDFLAG(IS_ANDROID) + messages::MessageDispatcherBridge::SetInstanceForTesting(nullptr); +#endif } TestSubresourceFilterObserver* observer() { return observer_.get(); } @@ -345,21 +359,10 @@ return &scoped_configuration_; } - bool presenting_ads_blocked_infobar() { - auto* infobar_manager = infobars::ContentInfoBarManager::FromWebContents( - content::RenderViewHostTestHarness::web_contents()); - if (infobar_manager->infobar_count() == 0) - return false; - - // No infobars other than the ads blocked infobar should be displayed in the - // context of these tests. - EXPECT_EQ(infobar_manager->infobar_count(), 1u); - auto* infobar = infobar_manager->infobar_at(0); - EXPECT_EQ(infobar->delegate()->GetIdentifier(), - infobars::InfoBarDelegate::ADS_BLOCKED_INFOBAR_DELEGATE_ANDROID); - - return true; - } + protected: +#if BUILDFLAG(IS_ANDROID) + messages::MockMessageDispatcherBridge message_dispatcher_bridge_; +#endif private: testing::ScopedSubresourceFilterConfigurator scoped_configuration_; @@ -378,6 +381,40 @@ base::HistogramTester tester_; }; +class SubresourceFilterSafeBrowsingActivationThrottleInfoBarUiTest + : public SubresourceFilterSafeBrowsingActivationThrottleTest { + public: + void SetUp() override { + SubresourceFilterSafeBrowsingActivationThrottleTest::SetUp(); +#if BUILDFLAG(IS_ANDROID) + message_dispatcher_bridge_.SetMessagesEnabledForEmbedder(false); + messages::MessageDispatcherBridge::SetInstanceForTesting( + &message_dispatcher_bridge_); +#endif + } + + bool presenting_ads_blocked_infobar() { + auto* infobar_manager = infobars::ContentInfoBarManager::FromWebContents( + content::RenderViewHostTestHarness::web_contents()); + if (infobar_manager->infobar_count() == 0) + return false; + + // No infobars other than the ads blocked infobar should be displayed in the + // context of these tests. + EXPECT_EQ(infobar_manager->infobar_count(), 1u); + auto* infobar = infobar_manager->infobar_at(0); + EXPECT_EQ(infobar->delegate()->GetIdentifier(), + infobars::InfoBarDelegate::ADS_BLOCKED_INFOBAR_DELEGATE_ANDROID); + + return true; + } + + protected: +#if BUILDFLAG(IS_ANDROID) + messages::MockMessageDispatcherBridge message_dispatcher_bridge_; +#endif +}; + class SubresourceFilterSafeBrowsingActivationThrottleParamTest : public SubresourceFilterSafeBrowsingActivationThrottleTest, public ::testing::WithParamInterface<ActivationListTestData> { @@ -585,12 +622,12 @@ NotificationVisibility) { GURL url(kURL); ConfigureForMatch(url); +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage); +#endif content::RenderFrameHost* rfh = SimulateNavigateAndCommit({url}, main_rfh()); EXPECT_FALSE(CreateAndNavigateDisallowedSubframe(rfh)); -#if BUILDFLAG(IS_ANDROID) - EXPECT_TRUE(presenting_ads_blocked_infobar()); -#endif } TEST_F(SubresourceFilterSafeBrowsingActivationThrottleTest, ActivationList) { @@ -756,11 +793,11 @@ const GURL url("https://example.test/"); // Navigate initially, should be no activation. +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage).Times(0); +#endif SimulateNavigateAndCommit({url}, main_rfh()); EXPECT_TRUE(CreateAndNavigateDisallowedSubframe(main_rfh())); -#if BUILDFLAG(IS_ANDROID) - EXPECT_FALSE(presenting_ads_blocked_infobar()); -#endif // Simulate opening devtools and forcing activation. devtools_interaction_tracker->ToggleForceActivation(true); @@ -768,11 +805,11 @@ kSubresourceFilterActionsHistogram, subresource_filter::SubresourceFilterAction::kForcedActivationEnabled, 1); +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage); +#endif SimulateNavigateAndCommit({url}, main_rfh()); EXPECT_FALSE(CreateAndNavigateDisallowedSubframe(main_rfh())); -#if BUILDFLAG(IS_ANDROID) - EXPECT_TRUE(presenting_ads_blocked_infobar()); -#endif histogram_tester.ExpectBucketCount( "SubresourceFilter.PageLoad.ActivationDecision", @@ -798,14 +835,14 @@ base::HistogramTester histogram_tester; devtools_interaction_tracker->ToggleForceActivation(true); const GURL url("https://example.test/"); +#if BUILDFLAG(IS_ANDROID) + EXPECT_CALL(message_dispatcher_bridge_, EnqueueMessage); +#endif SimulateNavigateAndCommit({url}, main_rfh()); devtools_interaction_tracker->ToggleForceActivation(false); // Resource should be disallowed, since navigation commit had activation. EXPECT_FALSE(CreateAndNavigateDisallowedSubframe(main_rfh())); -#if BUILDFLAG(IS_ANDROID) - EXPECT_TRUE(presenting_ads_blocked_infobar()); -#endif } TEST_P(SubresourceFilterSafeBrowsingActivationThrottleScopeTest, @@ -1095,6 +1132,18 @@ } } +TEST_F(SubresourceFilterSafeBrowsingActivationThrottleInfoBarUiTest, + NotificationVisibility) { + GURL url(kURL); + ConfigureForMatch(url); + content::RenderFrameHost* rfh = SimulateNavigateAndCommit({url}, main_rfh()); + + EXPECT_FALSE(CreateAndNavigateDisallowedSubframe(rfh)); +#if BUILDFLAG(IS_ANDROID) + EXPECT_TRUE(presenting_ads_blocked_infobar()); +#endif +} + // Disabled due to flaky failures: https://crbug.com/753669. TEST_P(SubresourceFilterSafeBrowsingActivationThrottleParamTest, DISABLED_ListMatchedOnStartWithRedirect_NoActivation) {
diff --git a/components/subresource_filter/content/browser/subresource_filter_test_harness.cc b/components/subresource_filter/content/browser/subresource_filter_test_harness.cc index 6effe1d..77b7f2e 100644 --- a/components/subresource_filter/content/browser/subresource_filter_test_harness.cc +++ b/components/subresource_filter/content/browser/subresource_filter_test_harness.cc
@@ -103,12 +103,20 @@ NavigateAndCommit(GURL("https://example.first")); base::RunLoop().RunUntilIdle(); +#if BUILDFLAG(IS_ANDROID) + message_dispatcher_bridge_.SetMessagesEnabledForEmbedder(true); + messages::MessageDispatcherBridge::SetInstanceForTesting( + &message_dispatcher_bridge_); +#endif } void SubresourceFilterTestHarness::TearDown() { ruleset_service_.reset(); content::RenderViewHostTestHarness::TearDown(); +#if BUILDFLAG(IS_ANDROID) + messages::MessageDispatcherBridge::SetInstanceForTesting(nullptr); +#endif } // content::WebContentsObserver:
diff --git a/components/subresource_filter/content/browser/subresource_filter_test_harness.h b/components/subresource_filter/content/browser/subresource_filter_test_harness.h index 6cb77f7f..3fae669c 100644 --- a/components/subresource_filter/content/browser/subresource_filter_test_harness.h +++ b/components/subresource_filter/content/browser/subresource_filter_test_harness.h
@@ -16,6 +16,10 @@ #include "content/public/browser/web_contents_observer.h" #include "content/public/test/test_renderer_host.h" +#if BUILDFLAG(IS_ANDROID) +#include "components/messages/android/mock_message_dispatcher_bridge.h" +#endif + class GURL; namespace content { @@ -108,6 +112,9 @@ std::unique_ptr<ThrottleManagerTestSupport> throttle_manager_test_support_; std::unique_ptr<infobars::ContentInfoBarManager> infobar_manager_; std::unique_ptr<RulesetService> ruleset_service_; +#if BUILDFLAG(IS_ANDROID) + messages::MockMessageDispatcherBridge message_dispatcher_bridge_; +#endif }; } // namespace subresource_filter
diff --git a/components/sync/BUILD.gn b/components/sync/BUILD.gn index 7741d5a7..2acdb0c 100644 --- a/components/sync/BUILD.gn +++ b/components/sync/BUILD.gn
@@ -129,7 +129,6 @@ sources = [ "base/client_tag_hash_unittest.cc", "base/model_type_unittest.cc", - "base/node_ordinal_unittest.cc", "base/ordinal_unittest.cc", "base/protobuf_unittest.cc", "base/sync_prefs_unittest.cc",
diff --git a/components/sync/base/BUILD.gn b/components/sync/base/BUILD.gn index 64372f3..3fa2f4e 100644 --- a/components/sync/base/BUILD.gn +++ b/components/sync/base/BUILD.gn
@@ -31,8 +31,6 @@ "logging.h", "model_type.cc", "model_type.h", - "node_ordinal.cc", - "node_ordinal.h", "ordinal.h", "passphrase_enums.cc", "passphrase_enums.h",
diff --git a/components/sync/base/node_ordinal.cc b/components/sync/base/node_ordinal.cc deleted file mode 100644 index 51dd90d6..0000000 --- a/components/sync/base/node_ordinal.cc +++ /dev/null
@@ -1,51 +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. - -#include "components/sync/base/node_ordinal.h" - -#include <algorithm> -#include <string> - -#include "base/check.h" -#include "base/notreached.h" - -namespace syncer { - -NodeOrdinal Int64ToNodeOrdinal(int64_t x) { - uint64_t y = static_cast<uint64_t>(x); - y ^= 0x8000000000000000ULL; - std::string bytes(NodeOrdinal::kMinLength, '\x00'); - if (y == 0) { - // 0 is a special case since |bytes| must not be all zeros. - bytes.push_back('\x80'); - } else { - for (int i = 7; i >= 0; --i) { - bytes[i] = static_cast<uint8_t>(y); - y >>= 8; - } - } - NodeOrdinal ordinal(bytes); - DCHECK(ordinal.IsValid()); - return ordinal; -} - -int64_t NodeOrdinalToInt64(const NodeOrdinal& ordinal) { - uint64_t y = 0; - const std::string& s = ordinal.ToInternalValue(); - size_t l = NodeOrdinal::kMinLength; - if (s.length() < l) { - NOTREACHED(); - l = s.length(); - } - for (size_t i = 0; i < l; ++i) { - const uint8_t byte = s[l - i - 1]; - y |= static_cast<uint64_t>(byte) << (i * 8); - } - y ^= 0x8000000000000000ULL; - // This is technically implementation-defined if y > INT64_MAX, so - // we're assuming that we're on a twos-complement machine. - return static_cast<int64_t>(y); -} - -} // namespace syncer
diff --git a/components/sync/base/node_ordinal.h b/components/sync/base/node_ordinal.h deleted file mode 100644 index 38f2cde..0000000 --- a/components/sync/base/node_ordinal.h +++ /dev/null
@@ -1,56 +0,0 @@ -// Copyright 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 COMPONENTS_SYNC_BASE_NODE_ORDINAL_H_ -#define COMPONENTS_SYNC_BASE_NODE_ORDINAL_H_ - -#include <stddef.h> -#include <stdint.h> - -#include "components/sync/base/ordinal.h" - -namespace syncer { - -// A NodeOrdinal is an Ordinal whose internal value comes from the -// ordinal_in_parent field of SyncEntity (see sync.proto). It uses -// the entire uint8_t range for backwards compatibility with the old -// int64_t-based positioning. - -struct NodeOrdinalTraits { - static const uint8_t kZeroDigit = 0; - static const uint8_t kMaxDigit = UINT8_MAX; - static const size_t kMinLength = 8; -}; - -using NodeOrdinal = Ordinal<NodeOrdinalTraits>; - -static_assert(static_cast<char>(NodeOrdinal::kZeroDigit) == '\x00', - "NodeOrdinal has incorrect zero digit"); -static_assert(static_cast<char>(NodeOrdinal::kOneDigit) == '\x01', - "NodeOrdinal has incorrect one digit"); -static_assert(static_cast<char>(NodeOrdinal::kMidDigit) == '\x80', - "NodeOrdinal has incorrect mid digit"); -static_assert(static_cast<char>(NodeOrdinal::kMaxDigit) == '\xff', - "NodeOrdinal has incorrect max digit"); -static_assert(NodeOrdinal::kMidDigitValue == 128, - "NodeOrdinal has incorrect mid digit value"); -static_assert(NodeOrdinal::kMaxDigitValue == 255, - "NodeOrdinal has incorrect max digit value"); -static_assert(NodeOrdinal::kRadix == 256, "NodeOrdinal has incorrect radix"); - -// Converts an int64_t position (usually from the position_in_parent -// field of SyncEntity) to a NodeOrdinal. This transformation -// preserves the ordering relation: a < b under integer ordering if -// and only if Int64ToNodeOrdinal(a) < Int64ToNodeOrdinal(b). -NodeOrdinal Int64ToNodeOrdinal(int64_t x); - -// The inverse of Int64ToNodeOrdinal. This conversion is, in general, -// lossy: NodeOrdinals can have arbitrary fidelity, while numeric -// positions contain only 64 bits of information (in fact, this is the -// reason we've moved away from them). -int64_t NodeOrdinalToInt64(const NodeOrdinal& ordinal); - -} // namespace syncer - -#endif // COMPONENTS_SYNC_BASE_NODE_ORDINAL_H_
diff --git a/components/sync/base/node_ordinal_unittest.cc b/components/sync/base/node_ordinal_unittest.cc deleted file mode 100644 index d5b6ca7..0000000 --- a/components/sync/base/node_ordinal_unittest.cc +++ /dev/null
@@ -1,148 +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. - -#include "components/sync/base/node_ordinal.h" - -#include <algorithm> -#include <cstddef> -#include <functional> -#include <limits> -#include <vector> - -#include "base/cxx17_backports.h" -#include "base/memory/raw_ptr.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace syncer { - -namespace { - -const int64_t kTestValues[] = {0LL, - 1LL, - -1LL, - 2LL, - -2LL, - 3LL, - -3LL, - 0x79LL, - -0x79LL, - 0x80LL, - -0x80LL, - 0x81LL, - -0x81LL, - 0xFELL, - -0xFELL, - 0xFFLL, - -0xFFLL, - 0x100LL, - -0x100LL, - 0x101LL, - -0x101LL, - 0xFA1AFELL, - -0xFA1AFELL, - 0xFFFFFFFELL, - -0xFFFFFFFELL, - 0xFFFFFFFFLL, - -0xFFFFFFFFLL, - 0x100000000LL, - -0x100000000LL, - 0x100000001LL, - -0x100000001LL, - 0xFFFFFFFFFFLL, - -0xFFFFFFFFFFLL, - 0x112358132134LL, - -0x112358132134LL, - 0xFEFFBEEFABC1234LL, - -0xFEFFBEEFABC1234LL, - INT64_MAX, - INT64_MIN, - INT64_MIN + 1, - INT64_MAX - 1}; - -const size_t kNumTestValues = base::size(kTestValues); - -// Convert each test value to an ordinal. All ordinals should be -// valid. -TEST(NodeOrdinalTest, IsValid) { - for (size_t i = 0; i < kNumTestValues; ++i) { - const NodeOrdinal ordinal = Int64ToNodeOrdinal(kTestValues[i]); - EXPECT_TRUE(ordinal.IsValid()) << "i = " << i; - } -} - -// Convert each test value to an ordinal. All ordinals should have -// 8-byte strings, except for kint64min, which should have a 9-byte -// string. -TEST(NodeOrdinalTest, Size) { - EXPECT_EQ(9U, Int64ToNodeOrdinal(std::numeric_limits<int64_t>::min()) - .ToInternalValue() - .size()); - - for (size_t i = 0; i < kNumTestValues; ++i) { - if (kTestValues[i] == std::numeric_limits<int64_t>::min()) { - continue; - } - const NodeOrdinal ordinal = Int64ToNodeOrdinal(kTestValues[i]); - EXPECT_EQ(8U, ordinal.ToInternalValue().size()) << "i = " << i; - } -} - -// Convert each test value to an ordinal and back. That resulting -// value should be equal to the original value. -TEST(NodeOrdinalTest, PositionToOrdinalToPosition) { - for (size_t i = 0; i < kNumTestValues; ++i) { - const int64_t expected_value = kTestValues[i]; - const NodeOrdinal ordinal = Int64ToNodeOrdinal(expected_value); - const int64_t value = NodeOrdinalToInt64(ordinal); - EXPECT_EQ(expected_value, value) << "i = " << i; - } -} - -template <typename T, typename LessThan = std::less<T>> -class IndexedLessThan { - public: - explicit IndexedLessThan(const T* values) : values_(values) {} - - bool operator()(int i1, int i2) { - return less_than_(values_[i1], values_[i2]); - } - - private: - raw_ptr<const T> values_; - LessThan less_than_; -}; - -// Sort kTestValues by int64_t value and then sort it by NodeOrdinal -// value. kTestValues should not already be sorted (by either -// comparator) and the two orderings should be the same. -TEST(NodeOrdinalTest, ConsistentOrdering) { - NodeOrdinal ordinals[kNumTestValues]; - std::vector<int> original_ordering(kNumTestValues); - std::vector<int> int64_ordering(kNumTestValues); - std::vector<int> ordinal_ordering(kNumTestValues); - for (size_t i = 0; i < kNumTestValues; ++i) { - ordinals[i] = Int64ToNodeOrdinal(kTestValues[i]); - original_ordering[i] = int64_ordering[i] = ordinal_ordering[i] = i; - } - - std::sort(int64_ordering.begin(), int64_ordering.end(), - IndexedLessThan<int64_t>(kTestValues)); - std::sort(ordinal_ordering.begin(), ordinal_ordering.end(), - IndexedLessThan<NodeOrdinal, NodeOrdinal::LessThanFn>(ordinals)); - EXPECT_NE(original_ordering, int64_ordering); - EXPECT_EQ(int64_ordering, ordinal_ordering); -} - -// Create two NodeOrdinals and create another one between them. It -// should lie halfway between them. -TEST(NodeOrdinalTest, CreateBetween) { - const NodeOrdinal ordinal1("\1\1\1\1\1\1\1\1"); - const NodeOrdinal ordinal2("\1\1\1\1\1\1\1\3"); - EXPECT_EQ("\1\1\1\1\1\1\1\2", - ordinal1.CreateBetween(ordinal2).ToInternalValue()); -} - -} // namespace - -} // namespace syncer
diff --git a/components/sync/engine/bookmark_update_preprocessing_unittest.cc b/components/sync/engine/bookmark_update_preprocessing_unittest.cc index 0ec6632..9a21712 100644 --- a/components/sync/engine/bookmark_update_preprocessing_unittest.cc +++ b/components/sync/engine/bookmark_update_preprocessing_unittest.cc
@@ -140,7 +140,7 @@ histogram_tester.ExpectUniqueSample("Sync.BookmarkGUIDSource2", /*sample=*/ ExpectedBookmarkGuidSource::kSpecifics, - /*count=*/1); + /*expected_bucket_count=*/1); } // Tests that AdaptGuidForBookmark() uses the originator client item ID as GUID @@ -162,7 +162,7 @@ histogram_tester.ExpectUniqueSample("Sync.BookmarkGUIDSource2", /*sample=*/ ExpectedBookmarkGuidSource::kValidOCII, - /*count=*/1); + /*expected_bucket_count=*/1); } // Tests that AdaptGuidForBookmark() infers the GUID when the field in specifics @@ -184,7 +184,7 @@ histogram_tester.ExpectUniqueSample("Sync.BookmarkGUIDSource2", /*sample=*/ ExpectedBookmarkGuidSource::kInferred, - /*count=*/1); + /*expected_bucket_count=*/1); } TEST(BookmarkUpdatePreprocessingTest, @@ -204,7 +204,7 @@ "Sync.BookmarkGUIDSource2", /*sample=*/ ExpectedBookmarkGuidSource::kLeftEmptyPossiblyForClientTag, - /*count=*/1); + /*expected_bucket_count=*/1); } // Tests that inferred GUIDs are computed deterministically.
diff --git a/components/sync/engine/cancelation_signal_unittest.cc b/components/sync/engine/cancelation_signal_unittest.cc index c6c6bc32..8b8b9af0 100644 --- a/components/sync/engine/cancelation_signal_unittest.cc +++ b/components/sync/engine/cancelation_signal_unittest.cc
@@ -44,15 +44,14 @@ base::WaitableEvent event_; base::Thread exec_thread_; raw_ptr<CancelationSignal> cancel_signal_; - bool was_started_; + bool was_started_ = false; }; BlockingTask::BlockingTask(CancelationSignal* cancel_signal) : event_(base::WaitableEvent::ResetPolicy::MANUAL, base::WaitableEvent::InitialState::NOT_SIGNALED), exec_thread_("BlockingTaskBackgroundThread"), - cancel_signal_(cancel_signal), - was_started_(false) {} + cancel_signal_(cancel_signal) {} BlockingTask::~BlockingTask() { if (was_started_) {
diff --git a/components/sync/engine/commit_util.cc b/components/sync/engine/commit_util.cc index 6e96984..fa553c1 100644 --- a/components/sync/engine/commit_util.cc +++ b/components/sync/engine/commit_util.cc
@@ -6,9 +6,7 @@ #include "components/sync/protocol/sync.pb.h" -namespace syncer { - -namespace commit_util { +namespace syncer::commit_util { void AddExtensionsActivityToMessage( ExtensionsActivity* activity, @@ -55,6 +53,4 @@ } } -} // namespace commit_util - -} // namespace syncer +} // namespace syncer::commit_util
diff --git a/components/sync/engine/commit_util.h b/components/sync/engine/commit_util.h index 541f58e..841b3ea 100644 --- a/components/sync/engine/commit_util.h +++ b/components/sync/engine/commit_util.h
@@ -16,9 +16,7 @@ class CommitMessage; } -namespace syncer { - -namespace commit_util { +namespace syncer::commit_util { // Adds bookmark extensions activity report to |message|. void AddExtensionsActivityToMessage( @@ -35,8 +33,6 @@ const std::vector<std::string>& fcm_registration_tokens, sync_pb::CommitMessage* message); -} // namespace commit_util - -} // namespace syncer +} // namespace syncer::commit_util #endif // COMPONENTS_SYNC_ENGINE_COMMIT_UTIL_H_
diff --git a/components/sync/engine/cycle/debug_info_getter.h b/components/sync/engine/cycle/debug_info_getter.h index be6f6b02..1d822b2 100644 --- a/components/sync/engine/cycle/debug_info_getter.h +++ b/components/sync/engine/cycle/debug_info_getter.h
@@ -15,14 +15,14 @@ // to communicate the debug info data to the syncer. class DebugInfoGetter { public: + virtual ~DebugInfoGetter() = default; + // Gets the client debug info. Be sure to clear the info to ensure the data // isn't sent multiple times. virtual sync_pb::DebugInfo GetDebugInfo() const = 0; // Clears the debug info. virtual void ClearDebugInfo() = 0; - - virtual ~DebugInfoGetter() {} }; } // namespace syncer
diff --git a/components/sync/engine/cycle/sync_cycle.h b/components/sync/engine/cycle/sync_cycle.h index f8f0d52..dd717160 100644 --- a/components/sync/engine/cycle/sync_cycle.h +++ b/components/sync/engine/cycle/sync_cycle.h
@@ -79,7 +79,7 @@ virtual void OnReceivedMigrationRequest(ModelTypeSet types) = 0; protected: - virtual ~Delegate() {} + virtual ~Delegate() = default; }; SyncCycle(SyncCycleContext* context, Delegate* delegate);
diff --git a/components/sync/engine/engine_components_factory.h b/components/sync/engine/engine_components_factory.h index cc0a3d2..b713233e 100644 --- a/components/sync/engine/engine_components_factory.h +++ b/components/sync/engine/engine_components_factory.h
@@ -44,7 +44,7 @@ bool force_short_nudge_delay_for_test; }; - virtual ~EngineComponentsFactory() {} + virtual ~EngineComponentsFactory() = default; virtual std::unique_ptr<SyncScheduler> BuildScheduler( const std::string& name,
diff --git a/components/sync/engine/get_updates_processor_unittest.cc b/components/sync/engine/get_updates_processor_unittest.cc index b4dc4a99..325bd10 100644 --- a/components/sync/engine/get_updates_processor_unittest.cc +++ b/components/sync/engine/get_updates_processor_unittest.cc
@@ -38,8 +38,8 @@ // A test fixture for tests exercising download updates functions. class GetUpdatesProcessorTest : public ::testing::Test { - protected: - GetUpdatesProcessorTest() : kTestStartTime(base::TimeTicks::Now()) {} + public: + GetUpdatesProcessorTest() = default; GetUpdatesProcessorTest(const GetUpdatesProcessorTest&) = delete; GetUpdatesProcessorTest& operator=(const GetUpdatesProcessorTest&) = delete; @@ -75,9 +75,6 @@ response->set_changes_remaining(0); } - const base::TimeTicks kTestStartTime; - - protected: MockUpdateHandler* AddUpdateHandler(ModelType type) { enabled_types_.Put(type); @@ -90,6 +87,8 @@ return handler_ptr; } + const base::TimeTicks kTestStartTime = base::TimeTicks::Now(); + private: ModelTypeSet enabled_types_; std::set<std::unique_ptr<MockUpdateHandler>> update_handlers_;
diff --git a/components/sync/engine/loopback_server/loopback_server.h b/components/sync/engine/loopback_server/loopback_server.h index a107f2f..10d968bd 100644 --- a/components/sync/engine/loopback_server/loopback_server.h +++ b/components/sync/engine/loopback_server/loopback_server.h
@@ -41,7 +41,7 @@ public: class ObserverForTests { public: - virtual ~ObserverForTests() {} + virtual ~ObserverForTests() = default; // Called after the server has processed a successful commit. The types // updated as part of the commit are passed in |committed_model_types|.
diff --git a/components/sync/engine/model_type_processor_metrics.cc b/components/sync/engine/model_type_processor_metrics.cc index fd73a32..4bcc01f9 100644 --- a/components/sync/engine/model_type_processor_metrics.cc +++ b/components/sync/engine/model_type_processor_metrics.cc
@@ -42,7 +42,7 @@ "Sync.NonReflectionUpdateFreshnessPossiblySkewed2", freshness, /*min=*/base::Milliseconds(100), /*max=*/base::Days(7), - /*bucket_count=*/50); + /*buckets=*/50); base::UmaHistogramCustomTimes( std::string("Sync.NonReflectionUpdateFreshnessPossiblySkewed2.") + @@ -50,7 +50,7 @@ freshness, /*min=*/base::Milliseconds(100), /*max=*/base::Days(7), - /*bucket_count=*/50); + /*buckets=*/50); } } // namespace syncer
diff --git a/components/sync/engine/polling_constants.h b/components/sync/engine/polling_constants.h index 7a819c8..3b18970 100644 --- a/components/sync/engine/polling_constants.h +++ b/components/sync/engine/polling_constants.h
@@ -14,35 +14,37 @@ // Constants used by SyncScheduler when polling servers for updates. // Factor by which the backoff time will be multiplied. -constexpr double kBackoffMultiplyFactor = 2.0; +constexpr inline double kBackoffMultiplyFactor = 2.0; // Backoff interval randomization factor. -constexpr double kBackoffJitterFactor = 0.5; +constexpr inline double kBackoffJitterFactor = 0.5; // Server can overwrite these values via client commands. // We use high values here to ensure that failure to receive poll updates from // the server doesn't result in rapid-fire polling from the client due to low // local limits. -constexpr base::TimeDelta kDefaultPollInterval = base::Hours(8); +constexpr inline base::TimeDelta kDefaultPollInterval = base::Hours(8); // Minimum and maximum interval for exponential backoff. -constexpr base::TimeDelta kMinBackoffTime = base::Seconds(1); -constexpr base::TimeDelta kMaxBackoffTime = base::Minutes(10); +constexpr inline base::TimeDelta kMinBackoffTime = base::Seconds(1); +constexpr inline base::TimeDelta kMaxBackoffTime = base::Minutes(10); // After a failure contacting sync servers, specifies how long to wait before // reattempting and entering exponential backoff if consecutive failures // occur. -constexpr base::TimeDelta kInitialBackoffRetryTime = base::Seconds(30); +constexpr inline base::TimeDelta kInitialBackoffRetryTime = base::Seconds(30); // A dangerously short retry value that would not actually protect servers from // DDoS if it were used as a seed for exponential backoff, although the client // would still follow exponential backoff. Useful for debugging and tests (when // you don't want to wait 5 minutes). -constexpr base::TimeDelta kInitialBackoffShortRetryTime = base::Seconds(1); +constexpr inline base::TimeDelta kInitialBackoffShortRetryTime = + base::Seconds(1); // Similar to kInitialBackoffRetryTime above, but only to be used in // certain exceptional error cases, such as MIGRATION_DONE. -constexpr base::TimeDelta kInitialBackoffImmediateRetryTime = base::Seconds(0); +constexpr inline base::TimeDelta kInitialBackoffImmediateRetryTime = + base::Seconds(0); } // namespace syncer
diff --git a/components/sync/engine/sync_auth_provider.h b/components/sync/engine/sync_auth_provider.h index 4b9a5a9d..64773eb 100644 --- a/components/sync/engine/sync_auth_provider.h +++ b/components/sync/engine/sync_auth_provider.h
@@ -21,7 +21,7 @@ base::OnceCallback<void(const GoogleServiceAuthError& error, const std::string& token)>; - virtual ~SyncAuthProvider() {} + virtual ~SyncAuthProvider() = default; // Request access token for sync. Callback will be called with error and // access token. If error is anything other than NONE then token is invalid.
diff --git a/components/sync/engine/sync_manager_factory.h b/components/sync/engine/sync_manager_factory.h index 3afb424..4f4366b 100644 --- a/components/sync/engine/sync_manager_factory.h +++ b/components/sync/engine/sync_manager_factory.h
@@ -21,7 +21,7 @@ // Helper class to allow dependency injection of the SyncManager in tests. class SyncManagerFactory { public: - SyncManagerFactory( + explicit SyncManagerFactory( network::NetworkConnectionTracker* network_connection_tracker); SyncManagerFactory(const SyncManagerFactory&) = delete;
diff --git a/components/sync/engine/syncer_proto_util.h b/components/sync/engine/syncer_proto_util.h index 12db3305..d9f02ed 100644 --- a/components/sync/engine/syncer_proto_util.h +++ b/components/sync/engine/syncer_proto_util.h
@@ -74,7 +74,7 @@ static void SetProtocolVersion(sync_pb::ClientToServerMessage* msg); private: - SyncerProtoUtil() {} + SyncerProtoUtil() = default; // Helper functions for PostClientToServerMessage.
diff --git a/components/sync/engine/syncer_proto_util_unittest.cc b/components/sync/engine/syncer_proto_util_unittest.cc index f3ecbbd..786ffc7 100644 --- a/components/sync/engine/syncer_proto_util_unittest.cc +++ b/components/sync/engine/syncer_proto_util_unittest.cc
@@ -193,15 +193,15 @@ base::HistogramTester histogram_tester; dcm.set_send_error(true); EXPECT_FALSE(SyncerProtoUtil::PostAndProcessHeaders(&dcm, msg, &response)); - EXPECT_EQ(1, - histogram_tester.GetBucketCount("Sync.PostedClientToServerMessage", - /*GET_UPDATES=*/2)); + EXPECT_EQ(1, histogram_tester.GetBucketCount( + "Sync.PostedClientToServerMessage", + /*sample=*/ClientToServerMessage::GET_UPDATES)); dcm.set_send_error(false); EXPECT_TRUE(SyncerProtoUtil::PostAndProcessHeaders(&dcm, msg, &response)); - EXPECT_EQ(2, - histogram_tester.GetBucketCount("Sync.PostedClientToServerMessage", - /*GET_UPDATES=*/2)); + EXPECT_EQ(2, histogram_tester.GetBucketCount( + "Sync.PostedClientToServerMessage", + /*sample=*/ClientToServerMessage::GET_UPDATES)); } } // namespace syncer
diff --git a/components/sync/engine/syncer_unittest.cc b/components/sync/engine/syncer_unittest.cc index ca6b00d11..3bea332b 100644 --- a/components/sync/engine/syncer_unittest.cc +++ b/components/sync/engine/syncer_unittest.cc
@@ -83,7 +83,7 @@ class SyncerTest : public testing::Test, public SyncCycle::Delegate, public SyncEngineEventListener { - protected: + public: SyncerTest() = default; SyncerTest(const SyncerTest&) = delete; @@ -93,18 +93,23 @@ void OnThrottled(const base::TimeDelta& throttle_duration) override { FAIL() << "Should not get silenced."; } + void OnTypesThrottled(ModelTypeSet types, const base::TimeDelta& throttle_duration) override { scheduler_->OnTypesThrottled(types, throttle_duration); } + void OnTypesBackedOff(ModelTypeSet types) override { scheduler_->OnTypesBackedOff(types); } + bool IsAnyThrottleOrBackoff() override { return false; } + void OnReceivedPollIntervalUpdate( const base::TimeDelta& new_interval) override { last_poll_interval_received_ = new_interval; } + void OnReceivedCustomNudgeDelays( const std::map<ModelType, base::TimeDelta>& delay_map) override { auto iter = delay_map.find(SESSIONS); @@ -114,9 +119,11 @@ if (iter != delay_map.end() && iter->second.is_positive()) last_bookmarks_commit_delay_ = iter->second; } + void OnReceivedClientInvalidationHintBufferSize(int size) override { last_client_invalidation_hint_buffer_size_ = size; } + void OnReceivedGuRetryDelay(const base::TimeDelta& delay) override {} void OnReceivedMigrationRequest(ModelTypeSet types) override {} void OnProtocolEvent(const ProtocolEvent& event) override {} @@ -241,6 +248,7 @@ ASSERT_FALSE(nudge_tracker_.IsGetUpdatesRequired(ModelTypeSet::All())); } + protected: base::test::SingleThreadTaskEnvironment task_environment_; FakeSyncEncryptionHandler encryption_handler_; @@ -502,10 +510,10 @@ histogram_tester.ExpectBucketCount("Sync.CommitResponse.PREFERENCE", SyncerError::SYNC_SERVER_ERROR, - /*count=*/1); + /*expected_count=*/1); histogram_tester.ExpectBucketCount("Sync.CommitResponse", SyncerError::SYNC_SERVER_ERROR, - /*count=*/1); + /*expected_count=*/1); } // Test that a single conflict response from the server will cause us to exit
diff --git a/components/sync/model/client_tag_based_model_type_processor.cc b/components/sync/model/client_tag_based_model_type_processor.cc index 4ddcbed..ecbda68 100644 --- a/components/sync/model/client_tag_based_model_type_processor.cc +++ b/components/sync/model/client_tag_based_model_type_processor.cc
@@ -10,6 +10,7 @@ #include "base/bind.h" #include "base/location.h" +#include "base/logging.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/histogram_macros.h" #include "base/strings/stringprintf.h"
diff --git a/components/sync/model/model_type_store_service_impl.cc b/components/sync/model/model_type_store_service_impl.cc index eabaf28..2ba35c74 100644 --- a/components/sync/model/model_type_store_service_impl.cc +++ b/components/sync/model/model_type_store_service_impl.cc
@@ -10,6 +10,7 @@ #include "base/bind.h" #include "base/callback_helpers.h" #include "base/feature_list.h" +#include "base/logging.h" #include "base/memory/ptr_util.h" #include "base/task/post_task.h" #include "base/task/task_runner_util.h"
diff --git a/components/sync/nigori/nigori_model_type_processor.cc b/components/sync/nigori/nigori_model_type_processor.cc index 1bba5f02..e9501a2 100644 --- a/components/sync/nigori/nigori_model_type_processor.cc +++ b/components/sync/nigori/nigori_model_type_processor.cc
@@ -4,6 +4,7 @@ #include "components/sync/nigori/nigori_model_type_processor.h" +#include "base/logging.h" #include "base/threading/sequenced_task_runner_handle.h" #include "components/sync/base/client_tag_hash.h" #include "components/sync/base/data_type_histogram.h"
diff --git a/components/sync/nigori/nigori_sync_bridge_impl.cc b/components/sync/nigori/nigori_sync_bridge_impl.cc index 6824f2a..c1676be0 100644 --- a/components/sync/nigori/nigori_sync_bridge_impl.cc +++ b/components/sync/nigori/nigori_sync_bridge_impl.cc
@@ -11,6 +11,7 @@ #include "base/feature_list.h" #include "base/json/json_string_value_serializer.h" #include "base/location.h" +#include "base/logging.h" #include "base/metrics/histogram_macros.h" #include "base/observer_list.h" #include "components/os_crypt/os_crypt.h"
diff --git a/components/sync/nigori/pending_local_nigori_commit.cc b/components/sync/nigori/pending_local_nigori_commit.cc index 97f7a18..e2809640a 100644 --- a/components/sync/nigori/pending_local_nigori_commit.cc +++ b/components/sync/nigori/pending_local_nigori_commit.cc
@@ -5,6 +5,7 @@ #include "components/sync/nigori/pending_local_nigori_commit.h" #include "base/feature_list.h" +#include "base/logging.h" #include "base/metrics/histogram_macros.h" #include "base/time/time.h" #include "components/sync/engine/nigori/key_derivation_params.h"
diff --git a/components/sync/trusted_vault/trusted_vault_switches.cc b/components/sync/trusted_vault/trusted_vault_switches.cc index 0d938de..eaa76264 100644 --- a/components/sync/trusted_vault/trusted_vault_switches.cc +++ b/components/sync/trusted_vault/trusted_vault_switches.cc
@@ -8,18 +8,8 @@ namespace switches { -// Allows device registration within trusted vault server without having trusted -// vault key. Effectively disabled if kSyncTrustedVaultPassphraseRecovery -// is disabled. -const base::Feature kAllowSilentTrustedVaultDeviceRegistration{ - "AllowSilentTrustedVaultDeviceRegistration", - base::FEATURE_ENABLED_BY_DEFAULT}; - // Specifies how long requests to vault service shouldn't be retried after // encountering transient error. -// TODO(crbug.com/1292114): Move to the same file as -// kSyncTrustedVaultPassphraseRecovery so this can be moved to the header as -// an inline variable. const base::FeatureParam<base::TimeDelta> kTrustedVaultServiceThrottlingDuration{ &kSyncTrustedVaultPassphraseRecovery,
diff --git a/components/sync/trusted_vault/trusted_vault_switches.h b/components/sync/trusted_vault/trusted_vault_switches.h index 6599ebb6..5e4007a 100644 --- a/components/sync/trusted_vault/trusted_vault_switches.h +++ b/components/sync/trusted_vault/trusted_vault_switches.h
@@ -10,7 +10,13 @@ namespace switches { -extern const base::Feature kAllowSilentTrustedVaultDeviceRegistration; +// Allows device registration within trusted vault server without having trusted +// vault key. Effectively disabled if kSyncTrustedVaultPassphraseRecovery +// is disabled. +constexpr inline base::Feature kAllowSilentTrustedVaultDeviceRegistration{ + "AllowSilentTrustedVaultDeviceRegistration", + base::FEATURE_ENABLED_BY_DEFAULT}; + extern const base::FeatureParam<base::TimeDelta> kTrustedVaultServiceThrottlingDuration;
diff --git a/components/sync_sessions/synced_session.cc b/components/sync_sessions/synced_session.cc index 98e1f61..d413ae1 100644 --- a/components/sync_sessions/synced_session.cc +++ b/components/sync_sessions/synced_session.cc
@@ -6,6 +6,7 @@ #include <vector> +#include "base/notreached.h" #include "base/strings/utf_string_conversions.h" #include "components/sessions/core/serialized_navigation_driver.h" #include "components/sync/base/time.h"
diff --git a/components/sync_sessions/synced_session_tracker.cc b/components/sync_sessions/synced_session_tracker.cc index 05dc367..506f2a1 100644 --- a/components/sync_sessions/synced_session_tracker.cc +++ b/components/sync_sessions/synced_session_tracker.cc
@@ -7,6 +7,7 @@ #include <algorithm> #include <utility> +#include "base/callback.h" #include "base/logging.h" #include "base/ranges/algorithm.h" #include "base/strings/utf_string_conversions.h"
diff --git a/components/sync_sessions/synced_session_tracker.h b/components/sync_sessions/synced_session_tracker.h index 8d142a6..18d1809 100644 --- a/components/sync_sessions/synced_session_tracker.h +++ b/components/sync_sessions/synced_session_tracker.h
@@ -13,6 +13,7 @@ #include <string> #include <vector> +#include "base/callback_forward.h" #include "base/feature_list.h" #include "base/memory/raw_ptr.h" #include "components/sessions/core/session_id.h"
diff --git a/components/translate/content/android/translate_feature_list.cc b/components/translate/content/android/translate_feature_list.cc index 77ca7a6..266a1135 100644 --- a/components/translate/content/android/translate_feature_list.cc +++ b/components/translate/content/android/translate_feature_list.cc
@@ -6,6 +6,7 @@ #include "base/android/jni_string.h" #include "base/feature_list.h" +#include "base/metrics/field_trial_params.h" #include "base/notreached.h" #include "components/language/core/common/language_experiments.h" #include "components/translate/content/android/jni_headers/TranslateFeatureList_jni.h"
diff --git a/components/translate/content/renderer/isolated_world_util.cc b/components/translate/content/renderer/isolated_world_util.cc index e7dbcc4..0ede174 100644 --- a/components/translate/content/renderer/isolated_world_util.cc +++ b/components/translate/content/renderer/isolated_world_util.cc
@@ -4,6 +4,8 @@ #include "components/translate/content/renderer/isolated_world_util.h" +#include <ostream> + #include "base/check_op.h" #include "components/translate/core/common/translate_util.h" #include "third_party/abseil-cpp/absl/types/optional.h"
diff --git a/components/translate/core/browser/translate_prefs.cc b/components/translate/core/browser/translate_prefs.cc index 7fd52c4..04a77df 100644 --- a/components/translate/core/browser/translate_prefs.cc +++ b/components/translate/core/browser/translate_prefs.cc
@@ -182,7 +182,7 @@ const base::Feature kTranslate{"Translate", base::FEATURE_ENABLED_BY_DEFAULT}; const base::Feature kMigrateAlwaysTranslateLanguagesFix{ - "MigrateAlwaysTranslateLanguagesFix", base::FEATURE_DISABLED_BY_DEFAULT}; + "MigrateAlwaysTranslateLanguagesFix", base::FEATURE_ENABLED_BY_DEFAULT}; TranslateLanguageInfo::TranslateLanguageInfo() = default;
diff --git a/components/translate/core/browser/translate_ui_delegate.cc b/components/translate/core/browser/translate_ui_delegate.cc index f64fc04..cf1c924 100644 --- a/components/translate/core/browser/translate_ui_delegate.cc +++ b/components/translate/core/browser/translate_ui_delegate.cc
@@ -7,6 +7,7 @@ #include <algorithm> #include "base/i18n/string_compare.h" +#include "base/metrics/field_trial_params.h" #include "base/metrics/histogram_macros.h" #include "base/strings/string_number_conversions.h" #include "base/strings/utf_string_conversions.h"
diff --git a/components/variations/variations_seed_simulator_unittest.cc b/components/variations/variations_seed_simulator_unittest.cc index 8b90004..c9b0b2b 100644 --- a/components/variations/variations_seed_simulator_unittest.cc +++ b/components/variations/variations_seed_simulator_unittest.cc
@@ -10,6 +10,7 @@ #include "base/strings/stringprintf.h" #include "base/test/mock_entropy_provider.h" +#include "base/time/time.h" #include "components/variations/processed_study.h" #include "components/variations/proto/study.pb.h" #include "components/variations/variations_associated_data.h"
diff --git a/components/viz/service/display/overlay_processor_on_gpu.cc b/components/viz/service/display/overlay_processor_on_gpu.cc index 0e5667b..0677546 100644 --- a/components/viz/service/display/overlay_processor_on_gpu.cc +++ b/components/viz/service/display/overlay_processor_on_gpu.cc
@@ -33,22 +33,17 @@ // TODO(weiliangc): Currently only implemented for Android Classic code path. for (auto& overlay : overlay_candidates) { auto shared_image_overlay = - shared_image_representation_factory_->ProduceOverlay(overlay.mailbox); + shared_image_representation_factory_->ProduceLegacyOverlay( + overlay.mailbox); // When the display is re-opened, the first few frames might not have a // video resource ready. Possible investigation crbug.com/1023971. if (!shared_image_overlay) continue; - // In the current implementation, the BeginReadAccess will end up calling - // CodecImage::RenderToOverlay. Currently this code path is only used for - // Android Classic video overlay, where update of the overlay plane is - // within the media code. Since we are not actually passing an overlay plane - // to the display controller here, we are able to call EndReadAccess - // directly after BeginReadAccess. + // RenderToOverlay() will notify media code to update frame in + // SurfaceView/Dialog. shared_image_overlay->NotifyOverlayPromotion( true, ToNearestRect(overlay.display_rect)); - std::unique_ptr<gpu::SharedImageRepresentationOverlay::ScopedReadAccess> - scoped_access = shared_image_overlay->BeginScopedReadAccess( - false /* needs_gl_image */); + shared_image_overlay->RenderToOverlay(); } #endif } @@ -59,7 +54,7 @@ base::flat_map<gpu::Mailbox, gfx::Rect> possible_promotions) { for (auto& denied : promotion_denied) { auto shared_image_overlay = - shared_image_representation_factory_->ProduceOverlay(denied); + shared_image_representation_factory_->ProduceLegacyOverlay(denied); // When display is re-opened, the first few frames might not have video // resource ready. Possible investigation crbug.com/1023971. if (!shared_image_overlay) @@ -69,7 +64,8 @@ } for (auto& possible : possible_promotions) { auto shared_image_overlay = - shared_image_representation_factory_->ProduceOverlay(possible.first); + shared_image_representation_factory_->ProduceLegacyOverlay( + possible.first); // When display is re-opened, the first few frames might not have video // resource ready. Possible investigation crbug.com/1023971. if (!shared_image_overlay)
diff --git a/content/app_shim_remote_cocoa/web_contents_occlusion_checker_mac.mm b/content/app_shim_remote_cocoa/web_contents_occlusion_checker_mac.mm index 8f0cdcbc..aa12782 100644 --- a/content/app_shim_remote_cocoa/web_contents_occlusion_checker_mac.mm +++ b/content/app_shim_remote_cocoa/web_contents_occlusion_checker_mac.mm
@@ -7,6 +7,7 @@ #include "base/auto_reset.h" #include "base/feature_list.h" #import "base/mac/scoped_objc_class_swizzler.h" +#include "base/metrics/field_trial_params.h" #include "base/no_destructor.h" namespace { @@ -32,7 +33,6 @@ NSWindow* _windowResizingMovingOrClosing; NSWindow* _windowReceivingFullscreenTransitionNotifications; BOOL _displaysAreAsleep; - BOOL _applicationReceivedHiddenNotification; } // Computes and returns the `window`'s visibility state, a hybrid of // macOS's and our manual occlusion calculation. @@ -49,7 +49,9 @@ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedInstance = [[self alloc] init]; - GetWindowClassSwizzler(); + if (kEnhancedWindowOcclusionDetection.Get()) { + GetWindowClassSwizzler(); + } }); return sharedInstance; } @@ -64,6 +66,7 @@ - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; + [[[NSWorkspace sharedWorkspace] notificationCenter] removeObserver:self]; [super dealloc]; } @@ -87,39 +90,32 @@ NSNotificationCenter* notificationCenter = [NSNotificationCenter defaultCenter]; - [notificationCenter - addObserver:self - selector:@selector(notifyUpdateWebContentsVisibility) - name:NSApplicationDidChangeOcclusionStateNotification - object:nil]; - [notificationCenter addObserver:self - selector:@selector(windowWillMove:) - name:NSWindowWillMoveNotification - object:nil]; - [notificationCenter addObserver:self - selector:@selector(windowDidMove:) - name:NSWindowDidMoveNotification - object:nil]; - [notificationCenter addObserver:self - selector:@selector(notifyUpdateWebContentsVisibility) - name:NSWindowDidMoveNotification - object:nil]; - [notificationCenter addObserver:self - selector:@selector(windowWillStartLiveResize:) - name:NSWindowWillStartLiveResizeNotification - object:nil]; - [notificationCenter addObserver:self - selector:@selector(windowWillEndLiveResize) - name:NSWindowDidEndLiveResizeNotification - object:nil]; + if (kEnhancedWindowOcclusionDetection.Get()) { + [notificationCenter addObserver:self + selector:@selector(windowWillMove:) + name:NSWindowWillMoveNotification + object:nil]; + [notificationCenter addObserver:self + selector:@selector(windowDidMove:) + name:NSWindowDidMoveNotification + object:nil]; + [notificationCenter addObserver:self + selector:@selector(windowWillStartLiveResize:) + name:NSWindowWillStartLiveResizeNotification + object:nil]; + [notificationCenter addObserver:self + selector:@selector(windowWillEndLiveResize) + name:NSWindowDidEndLiveResizeNotification + object:nil]; + [notificationCenter addObserver:self + selector:@selector(windowWillClose:) + name:NSWindowWillCloseNotification + object:nil]; + } [notificationCenter addObserver:self selector:@selector(windowChangedOcclusionState:) name:NSWindowDidChangeOcclusionStateNotification object:nil]; - [notificationCenter addObserver:self - selector:@selector(windowWillClose:) - name:NSWindowWillCloseNotification - object:nil]; [notificationCenter addObserver:self selector:@selector(fullscreenTransitionStarted:) @@ -138,24 +134,18 @@ name:NSWindowDidExitFullScreenNotification object:nil]; - [notificationCenter addObserver:self - selector:@selector(applicationDidHide) - name:NSApplicationDidHideNotification - object:nil]; - [notificationCenter addObserver:self - selector:@selector(applicationDidUnhide) - name:NSApplicationDidUnhideNotification - object:nil]; - [[[NSWorkspace sharedWorkspace] notificationCenter] - addObserver:self - selector:@selector(displaysDidSleep:) - name:NSWorkspaceScreensDidSleepNotification - object:nil]; - [[[NSWorkspace sharedWorkspace] notificationCenter] - addObserver:self - selector:@selector(displaysDidWake:) - name:NSWorkspaceScreensDidWakeNotification - object:nil]; + if (kDisplaySleepAndAppHideDetection.Get()) { + [[[NSWorkspace sharedWorkspace] notificationCenter] + addObserver:self + selector:@selector(displaysDidSleep:) + name:NSWorkspaceScreensDidSleepNotification + object:nil]; + [[[NSWorkspace sharedWorkspace] notificationCenter] + addObserver:self + selector:@selector(displaysDidWake:) + name:NSWorkspaceScreensDidWakeNotification + object:nil]; + } } - (void)windowWillClose:(NSNotification*)notification { @@ -189,53 +179,15 @@ } - (void)displaysDidSleep:(NSNotification*)notification { - // Ignore if display sleep and application hide detection are disabled by the - // experiment. - if (!kDisplaySleepAndAppHideDetection.Get()) { - return; - } - _displaysAreAsleep = YES; [self notifyUpdateWebContentsVisibility]; } - (void)displaysDidWake:(NSNotification*)notification { - // Ignore if display sleep and application hide detection are disabled by the - // experiment. - if (!kDisplaySleepAndAppHideDetection.Get()) { - return; - } - _displaysAreAsleep = NO; [self notifyUpdateWebContentsVisibility]; } -- (void)applicationDidHide { - // Ignore if display sleep and application hide detection are disabled by the - // experiment. - if (!kDisplaySleepAndAppHideDetection.Get()) { - return; - } - - // Use the reception of this notification as an indication of the - // application's hidden state because [[NSRunningApplication - // currentApplication] isHidden] does not appear to return true when this - // notification fires. - _applicationReceivedHiddenNotification = YES; - [self notifyUpdateWebContentsVisibility]; -} - -- (void)applicationDidUnhide { - // Ignore if display sleep and application hide detection are disabled by the - // experiment. - if (!kDisplaySleepAndAppHideDetection.Get()) { - return; - } - - _applicationReceivedHiddenNotification = NO; - [self notifyUpdateWebContentsVisibility]; -} - - (void)fullscreenTransitionStarted:(NSNotification*)notification { _windowReceivingFullscreenTransitionNotifications = [notification object]; } @@ -278,8 +230,7 @@ - (remote_cocoa::mojom::Visibility)contentVisibilityStateForWindow: (NSWindow*)window { - if (_displaysAreAsleep || _applicationReceivedHiddenNotification || - [window isMiniaturized] || ![window isVisible]) { + if (_displaysAreAsleep) { return remote_cocoa::mojom::Visibility::kHidden; }
diff --git a/content/app_shim_remote_cocoa/window_occlusion_browsertest_mac.mm b/content/app_shim_remote_cocoa/window_occlusion_browsertest_mac.mm index 380d144..51e6103 100644 --- a/content/app_shim_remote_cocoa/window_occlusion_browsertest_mac.mm +++ b/content/app_shim_remote_cocoa/window_occlusion_browsertest_mac.mm
@@ -478,34 +478,6 @@ remote_cocoa::mojom::Visibility::kVisible); } -// Checks that web contents are marked kHidden on app hide. -IN_PROC_BROWSER_TEST_F( - WindowOcclusionBrowserTestMacWithDisplaySleepDetectionFeature, - OcclusionDetectionOnApplicationHide) { - InitWindowA(); - - EXPECT_EQ(WindowAWebContentsVisibility(), - remote_cocoa::mojom::Visibility::kVisible); - - // Fake an application hide notification. - [[NSNotificationCenter defaultCenter] - postNotificationName:NSApplicationDidHideNotification - object:nil - userInfo:nil]; - - EXPECT_EQ(WindowAWebContentsVisibility(), - remote_cocoa::mojom::Visibility::kHidden); - - // Fake an application unhide notification. - [[NSNotificationCenter defaultCenter] - postNotificationName:NSApplicationDidUnhideNotification - object:nil - userInfo:nil]; - - EXPECT_EQ(WindowAWebContentsVisibility(), - remote_cocoa::mojom::Visibility::kVisible); -} - // Checks that occlusion updates are ignored in between fullscreen transition // notifications. IN_PROC_BROWSER_TEST_F( @@ -705,8 +677,8 @@ [window_a miniaturize:nil]; EXPECT_TRUE([window_a isMiniaturized]); - EXPECT_EQ(WindowAWebContentsVisibility(), - remote_cocoa::mojom::Visibility::kHidden); + EXPECT_NE(WindowAWebContentsVisibility(), + remote_cocoa::mojom::Visibility::kVisible); [window_a deminiaturize:nil]; EXPECT_FALSE([window_a isMiniaturized]);
diff --git a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc index 0d86ac69..c17bf38 100644 --- a/content/browser/accessibility/dump_accessibility_tree_browsertest.cc +++ b/content/browser/accessibility/dump_accessibility_tree_browsertest.cc
@@ -2383,6 +2383,11 @@ RunHtmlTest(FILE_PATH_LITERAL("label.html")); } +IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, + AccessibilityLabelForHiddenInput) { + RunHtmlTest(FILE_PATH_LITERAL("label-for-hidden-input.html")); +} + IN_PROC_BROWSER_TEST_P(DumpAccessibilityTreeTest, AccessibilityLabelUpdates) { RunHtmlTest(FILE_PATH_LITERAL("label-updates.html")); }
diff --git a/content/browser/attribution_reporting/attribution_manager_impl.cc b/content/browser/attribution_reporting/attribution_manager_impl.cc index c1182caf..ccfce3e 100644 --- a/content/browser/attribution_reporting/attribution_manager_impl.cc +++ b/content/browser/attribution_reporting/attribution_manager_impl.cc
@@ -83,12 +83,6 @@ base::UmaHistogramEnumeration("Conversions.CreateReportStatus", status); } -// We measure this in order to be able to count reports that weren't -// successfully deleted, which can lead to duplicate reports. -void RecordDeleteEvent(AttributionManagerImpl::DeleteEvent event) { - base::UmaHistogramEnumeration("Conversions.DeleteSentReportOperation", event); -} - ConversionReportSendOutcome ConvertToConversionReportSendOutcome( SendResult::Status status) { switch (status) { @@ -550,7 +544,6 @@ std::move(done), weak_factory_.GetWeakPtr(), report_id, report.report_time())); } else { - RecordDeleteEvent(DeleteEvent::kStarted); attribution_storage_.AsyncCall(&AttributionStorage::DeleteReport) .WithArgs(report_id) .Then(base::BindOnce( @@ -558,8 +551,6 @@ base::WeakPtr<AttributionManagerImpl> manager, AttributionReport::EventLevelData::Id report_id, bool success) { std::move(done).Run(); - RecordDeleteEvent(success ? DeleteEvent::kSucceeded - : DeleteEvent::kFailed); if (manager && success) { manager->MarkReportCompleted(report_id);
diff --git a/content/browser/attribution_reporting/attribution_manager_impl.h b/content/browser/attribution_reporting/attribution_manager_impl.h index eccf1a4b..f042d5e 100644 --- a/content/browser/attribution_reporting/attribution_manager_impl.h +++ b/content/browser/attribution_reporting/attribution_manager_impl.h
@@ -63,15 +63,6 @@ : public AttributionManager, public network::NetworkConnectionTracker::NetworkConnectionObserver { public: - // These values are persisted to logs. Entries should not be renumbered and - // numeric values should never be reused. - enum class DeleteEvent { - kStarted = 0, - kSucceeded = 1, - kFailed = 2, - kMaxValue = kFailed, - }; - // This class is responsible for sending conversion reports to their // configured endpoints over the network. class NetworkSender {
diff --git a/content/browser/attribution_reporting/attribution_manager_impl_unittest.cc b/content/browser/attribution_reporting/attribution_manager_impl_unittest.cc index 8bc76c7..f01c21c 100644 --- a/content/browser/attribution_reporting/attribution_manager_impl_unittest.cc +++ b/content/browser/attribution_reporting/attribution_manager_impl_unittest.cc
@@ -914,7 +914,7 @@ 1); } -TEST_F(AttributionManagerImplTest, OnReportSent_RecordsDeleteEventMetric) { +TEST_F(AttributionManagerImplTest, OnReportSent_NotifiesObservers) { base::HistogramTester histograms; attribution_manager_->HandleSource(SourceBuilder().Build()); attribution_manager_->HandleTrigger(DefaultTrigger()); @@ -933,13 +933,6 @@ EXPECT_THAT(network_sender_->calls(), SizeIs(1)); network_sender_->RunCallbacksAndReset({SendResult::Status::kSent}); EXPECT_THAT(StoredReports(), IsEmpty()); - - static constexpr char kMetric[] = "Conversions.DeleteSentReportOperation"; - histograms.ExpectTotalCount(kMetric, 2); - histograms.ExpectBucketCount( - kMetric, AttributionManagerImpl::DeleteEvent::kStarted, 1); - histograms.ExpectBucketCount( - kMetric, AttributionManagerImpl::DeleteEvent::kSucceeded, 1); } TEST_F(AttributionManagerImplTest, HandleSource_NotifiesObservers) {
diff --git a/content/browser/attribution_reporting/attribution_storage_sql.cc b/content/browser/attribution_reporting/attribution_storage_sql.cc index b1d6f10a..c0ac4212 100644 --- a/content/browser/attribution_reporting/attribution_storage_sql.cc +++ b/content/browser/attribution_reporting/attribution_storage_sql.cc
@@ -684,8 +684,7 @@ AttributionReport::EventLevelData(trigger_data, trigger.priority(), /*id=*/absl::nullopt)); - switch ( - rate_limit_table_.AttributionAllowed(db_.get(), report, current_time)) { + switch (rate_limit_table_.AttributionAllowed(db_.get(), report)) { case RateLimitTable::AttributionAllowedStatus::kAllowed: break; case RateLimitTable::AttributionAllowedStatus::kNotAllowed:
diff --git a/content/browser/attribution_reporting/attribution_test_utils.cc b/content/browser/attribution_reporting/attribution_test_utils.cc index 6978353..de06bb3 100644 --- a/content/browser/attribution_reporting/attribution_test_utils.cc +++ b/content/browser/attribution_reporting/attribution_test_utils.cc
@@ -342,6 +342,15 @@ AttributionReport::EventLevelData(trigger_data_, priority_, report_id_)); } +bool operator==(const AttributionTrigger& a, const AttributionTrigger& b) { + const auto tie = [](const AttributionTrigger& t) { + return std::make_tuple(t.trigger_data(), t.conversion_destination(), + t.reporting_origin(), t.event_source_trigger_data(), + t.priority(), t.dedup_key()); + }; + return tie(a) == tie(b); +} + bool operator==(const CommonSourceInfo& a, const CommonSourceInfo& b) { const auto tie = [](const CommonSourceInfo& source) { return std::make_tuple(source.source_event_id(), source.impression_origin(),
diff --git a/content/browser/attribution_reporting/attribution_test_utils.h b/content/browser/attribution_reporting/attribution_test_utils.h index 59307c6..aa1ead0 100644 --- a/content/browser/attribution_reporting/attribution_test_utils.h +++ b/content/browser/attribution_reporting/attribution_test_utils.h
@@ -282,7 +282,9 @@ int64_t priority_ = 0; StoredSource::AttributionLogic attribution_logic_ = StoredSource::AttributionLogic::kTruthfully; - StoredSource::Id source_id_; + // `base::StrongAlias` does not automatically initialize the value here. + // Ensure that we don't use uninitialized memory. + StoredSource::Id source_id_{0}; std::vector<int64_t> dedup_keys_; }; @@ -354,6 +356,8 @@ absl::optional<AttributionReport::EventLevelData::Id> report_id_; }; +bool operator==(const AttributionTrigger& a, const AttributionTrigger& b); + bool operator==(const CommonSourceInfo& a, const CommonSourceInfo& b); bool operator==(const AttributionStorage::Delegate::FakeReport& a,
diff --git a/content/browser/attribution_reporting/rate_limit_table.cc b/content/browser/attribution_reporting/rate_limit_table.cc index 61b73aa1..98c0062 100644 --- a/content/browser/attribution_reporting/rate_limit_table.cc +++ b/content/browser/attribution_reporting/rate_limit_table.cc
@@ -107,27 +107,10 @@ const AttributionReport& report) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - return AddRow( - db, - AttributionTypeFromSourceType( - report.source().common_info().source_type()), - report.source().source_id(), - report.source().common_info().ImpressionSite().Serialize(), - SerializeOrigin(report.source().common_info().impression_origin()), - report.source().common_info().ConversionDestination().Serialize(), - SerializeOrigin(report.source().common_info().conversion_origin()), - report.trigger_time()); -} + const CommonSourceInfo& common_info = report.source().common_info(); + AttributionType attribution_type = + AttributionTypeFromSourceType(common_info.source_type()); -bool RateLimitTable::AddRow( - sql::Database* db, - AttributionType attribution_type, - StoredSource::Id source_id, - const std::string& serialized_impression_site, - const std::string& serialized_impression_origin, - const std::string& serialized_conversion_destination, - const std::string& serialized_conversion_origin, - base::Time time) { // Only delete expired rate limits periodically to avoid excessive DB // operations. const base::TimeDelta delete_frequency = @@ -148,51 +131,30 @@ sql::Statement statement( db->GetCachedStatement(SQL_FROM_HERE, kStoreRateLimitSql)); statement.BindInt(0, SerializeAttributionType(attribution_type)); - statement.BindInt64(1, *source_id); - statement.BindString(2, serialized_impression_site); - statement.BindString(3, serialized_impression_origin); - statement.BindString(4, serialized_conversion_destination); - statement.BindString(5, serialized_conversion_origin); - statement.BindTime(6, time); + statement.BindInt64(1, *report.source().source_id()); + statement.BindString(2, common_info.ImpressionSite().Serialize()); + statement.BindString(3, SerializeOrigin(common_info.impression_origin())); + statement.BindString(4, common_info.ConversionDestination().Serialize()); + statement.BindString(5, SerializeOrigin(common_info.conversion_origin())); + statement.BindTime(6, report.trigger_time()); return statement.Run(); } AttributionAllowedStatus RateLimitTable::AttributionAllowed( sql::Database* db, - const AttributionReport& report, - base::Time now) { + const AttributionReport& report) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - const std::string serialized_impression_site = - report.source().common_info().ImpressionSite().Serialize(); - const std::string serialized_conversion_destination = - report.source().common_info().ConversionDestination().Serialize(); + const CommonSourceInfo& common_info = report.source().common_info(); + AttributionType attribution_type = + AttributionTypeFromSourceType(common_info.source_type()); - const int64_t capacity = GetCapacity( - db, - AttributionTypeFromSourceType( - report.source().common_info().source_type()), - serialized_impression_site, serialized_conversion_destination, now); - // This should only be possible if there is DB corruption. - if (capacity < 0) - return AttributionAllowedStatus::kError; - if (capacity == 0) - return AttributionAllowedStatus::kNotAllowed; - return AttributionAllowedStatus::kAllowed; -} - -int64_t RateLimitTable::GetCapacity( - sql::Database* db, - AttributionType attribution_type, - const std::string& serialized_impression_site, - const std::string& serialized_conversion_destination, - base::Time now) { const AttributionStorage::Delegate::RateLimitConfig rate_limits = delegate_->GetRateLimits(attribution_type); DCHECK_GT(rate_limits.time_window, base::TimeDelta()); DCHECK_GT(rate_limits.max_contributions_per_window, 0); - base::Time min_timestamp = now - rate_limits.time_window; + base::Time min_timestamp = report.trigger_time() - rate_limits.time_window; static constexpr char kAttributionAllowedSql[] = "SELECT COUNT(*) FROM rate_limits " @@ -204,18 +166,18 @@ sql::Statement statement( db->GetCachedStatement(SQL_FROM_HERE, kAttributionAllowedSql)); statement.BindInt(0, SerializeAttributionType(attribution_type)); - statement.BindString(1, serialized_impression_site); - statement.BindString(2, serialized_conversion_destination); + statement.BindString(1, common_info.ImpressionSite().Serialize()); + statement.BindString(2, common_info.ConversionDestination().Serialize()); statement.BindTime(3, min_timestamp); if (!statement.Step()) - return -1; + return AttributionAllowedStatus::kError; int64_t count = statement.ColumnInt64(0); - return rate_limits.max_contributions_per_window > count - ? rate_limits.max_contributions_per_window - count - : 0; + return count < rate_limits.max_contributions_per_window + ? AttributionAllowedStatus::kAllowed + : AttributionAllowedStatus::kNotAllowed; } bool RateLimitTable::ClearAllDataInRange(sql::Database* db,
diff --git a/content/browser/attribution_reporting/rate_limit_table.h b/content/browser/attribution_reporting/rate_limit_table.h index 5ee69a9..45669fb2 100644 --- a/content/browser/attribution_reporting/rate_limit_table.h +++ b/content/browser/attribution_reporting/rate_limit_table.h
@@ -59,8 +59,7 @@ // Checks if the given attribution is allowed according to the data in the // table and policy as specified by the delegate. AttributionAllowedStatus AttributionAllowed(sql::Database* db, - const AttributionReport& report, - base::Time now); + const AttributionReport& report); // These should be 1:1 with |AttributionStorageSql|'s |ClearData| functions. // Returns false on failure. @@ -77,26 +76,6 @@ const std::vector<StoredSource::Id>& source_ids); private: - // Returns the capacity for the given `attribution_type`, `impression_site`, - // `conversion_destination`, according to `delegate_->GetRateLimits()`. - // Returns 0 if there is no capacity, -1 on error. - int64_t GetCapacity(sql::Database* db, - AttributionStorage::AttributionType attribution_type, - const std::string& serialized_impression_site, - const std::string& serialized_conversion_destination, - base::Time now) VALID_CONTEXT_REQUIRED(sequence_checker_); - - // Returns false on failure. - [[nodiscard]] bool AddRow( - sql::Database* db, - AttributionStorage::AttributionType attribution_type, - StoredSource::Id source_id, - const std::string& serialized_impression_site, - const std::string& serialized_impression_origin, - const std::string& serialized_conversion_destination, - const std::string& serialized_conversion_origin, - base::Time time) VALID_CONTEXT_REQUIRED(sequence_checker_); - // Returns false on failure. [[nodiscard]] bool ClearAllDataInRange(sql::Database* db, base::Time delete_begin,
diff --git a/content/browser/attribution_reporting/rate_limit_table_unittest.cc b/content/browser/attribution_reporting/rate_limit_table_unittest.cc index e058685..6f243bb 100644 --- a/content/browser/attribution_reporting/rate_limit_table_unittest.cc +++ b/content/browser/attribution_reporting/rate_limit_table_unittest.cc
@@ -4,12 +4,17 @@ #include "content/browser/attribution_reporting/rate_limit_table.h" -#include <memory> +#include <stdint.h> + +#include <ostream> +#include <string> +#include <utility> +#include <vector> #include "base/bind.h" #include "base/callback_helpers.h" +#include "base/containers/flat_map.h" #include "base/files/file_util.h" -#include "base/files/scoped_temp_dir.h" #include "base/test/task_environment.h" #include "base/time/time.h" #include "content/browser/attribution_reporting/attribution_report.h" @@ -18,9 +23,9 @@ #include "content/browser/attribution_reporting/stored_source.h" #include "sql/database.h" #include "sql/statement.h" -#include "sql/test/test_helpers.h" #include "testing/gtest/include/gtest/gtest.h" #include "url/gurl.h" +#include "url/origin.h" namespace content { @@ -28,537 +33,366 @@ using AttributionAllowedStatus = ::content::RateLimitTable::AttributionAllowedStatus; + +using ::testing::_; using ::testing::ElementsAre; +using ::testing::Field; +using ::testing::IsEmpty; +using ::testing::Pair; +using ::testing::SizeIs; + +struct RateLimitRow { + std::string impression_origin; + std::string conversion_origin; + base::Time time; + + AttributionReport BuildReport() const { + auto source = + SourceBuilder() + .SetImpressionOrigin(url::Origin::Create(GURL(impression_origin))) + .SetConversionOrigin(url::Origin::Create(GURL(conversion_origin))) + .BuildStored(); + + return ReportBuilder(std::move(source)).SetTriggerTime(time).Build(); + } +}; + +bool operator==(const RateLimitRow& a, const RateLimitRow& b) { + const auto tie = [](const RateLimitRow& row) { + return std::make_tuple(row.impression_origin, row.conversion_origin, + row.time); + }; + return tie(a) == tie(b); +} + +std::ostream& operator<<(std::ostream& out, const RateLimitRow& row) { + return out << "{" << row.impression_origin << "," << row.conversion_origin + << "," << row.time << "}"; +} class RateLimitTableTest : public testing::Test { public: - RateLimitTableTest() = default; - void SetUp() override { - ASSERT_TRUE(temp_directory_.CreateUniqueTempDir()); - delegate_ = std::make_unique<ConfigurableStorageDelegate>(); - table_ = std::make_unique<RateLimitTable>(delegate_.get()); + ASSERT_TRUE(db_.OpenInMemory()); + ASSERT_TRUE(table_.CreateTable(&db_)); + + // Prevent any rows from being deleted during the test by default. + delegate_.set_delete_expired_rate_limits_frequency(base::TimeDelta::Max()); } - AttributionReport NewConversionReport( - url::Origin impression_origin, - url::Origin conversion_origin, - StoredSource::Id source_id = StoredSource::Id(0), - CommonSourceInfo::SourceType source_type = - CommonSourceInfo::SourceType::kNavigation) { - return ReportBuilder(SourceBuilder() - .SetImpressionOrigin(std::move(impression_origin)) - .SetConversionOrigin(std::move(conversion_origin)) - .SetSourceId(source_id) - .SetSourceType(source_type) - .BuildStored()) - .SetTriggerTime(base::Time::Now()) - .SetReportTime(base::Time::Now()) - .Build(); - } + base::flat_map<int64_t, RateLimitRow> GetRateLimitRows() { + std::vector<std::pair<int64_t, RateLimitRow>> rows; - size_t GetRateLimitRows(sql::Database* db) { - size_t rows = 0; - EXPECT_TRUE(sql::test::CountTableRows(db, "rate_limits", &rows)); - return rows; - } + static constexpr char kSelectSql[] = + "SELECT rate_limit_id,impression_origin,conversion_origin," + "conversion_time FROM rate_limits"; + sql::Statement statement(db_.GetCachedStatement(SQL_FROM_HERE, kSelectSql)); - std::vector<std::string> GetRateLimitImpressionOrigins(sql::Database* db) { - const char kSelectSql[] = - "SELECT impression_origin FROM rate_limits ORDER BY rate_limit_id ASC"; - sql::Statement statement(db->GetCachedStatement(SQL_FROM_HERE, kSelectSql)); - std::vector<std::string> impression_origins; while (statement.Step()) { - impression_origins.push_back(statement.ColumnString(0)); + rows.emplace_back(statement.ColumnInt64(0), + RateLimitRow{ + .impression_origin = statement.ColumnString(1), + .conversion_origin = statement.ColumnString(2), + .time = statement.ColumnTime(3), + }); } - return impression_origins; + + EXPECT_TRUE(statement.Succeeded()); + return base::flat_map<int64_t, RateLimitRow>(std::move(rows)); } - base::FilePath db_path() { - return temp_directory_.GetPath().Append(FILE_PATH_LITERAL("Conversions")); + [[nodiscard]] bool AddRateLimit(const AttributionReport& report) { + return table_.AddRateLimit(&db_, report); } - RateLimitTable* table() { return table_.get(); } - - ConfigurableStorageDelegate* delegate() { return delegate_.get(); } + [[nodiscard]] RateLimitTable::AttributionAllowedStatus AttributionAllowed( + const AttributionReport& report) { + return table_.AttributionAllowed(&db_, report); + } protected: base::test::SingleThreadTaskEnvironment task_environment_{ base::test::TaskEnvironment::TimeSource::MOCK_TIME}; - base::ScopedTempDir temp_directory_; - private: - std::unique_ptr<ConfigurableStorageDelegate> delegate_; - std::unique_ptr<RateLimitTable> table_; + sql::Database db_; + ConfigurableStorageDelegate delegate_; + RateLimitTable table_{&delegate_}; }; } // namespace -TEST_F(RateLimitTableTest, TableCreated_TableAndIndicesInitialized) { - sql::Database db; - EXPECT_TRUE(db.Open(db_path())); - EXPECT_FALSE(db.DoesTableExist("rate_limits")); - EXPECT_FALSE(db.DoesIndexExist("rate_limit_impression_site_type_idx")); - EXPECT_FALSE( - db.DoesIndexExist("rate_limit_attribution_type_conversion_time_idx")); - EXPECT_TRUE(table()->CreateTable(&db)); - EXPECT_TRUE(db.DoesTableExist("rate_limits")); - EXPECT_TRUE(db.DoesIndexExist("rate_limit_impression_site_type_idx")); - EXPECT_TRUE( - db.DoesIndexExist("rate_limit_attribution_type_conversion_time_idx")); - EXPECT_EQ(0u, GetRateLimitRows(&db)); -} - -TEST_F(RateLimitTableTest, AddRateLimit) { - sql::Database db; - EXPECT_TRUE(db.Open(db_path())); - EXPECT_TRUE(table()->CreateTable(&db)); - - delegate()->set_rate_limits({ - .time_window = base::Days(3), - .max_contributions_per_window = INT_MAX, - }); - - EXPECT_TRUE(table()->AddRateLimit( - &db, - NewConversionReport(url::Origin::Create(GURL("https://a.example/")), - url::Origin::Create(GURL("https://b.example/"))))); - - EXPECT_EQ(1u, GetRateLimitRows(&db)); - - // The above report should be deleted, as it expires after the clock is - // advanced. - task_environment_.FastForwardBy(base::Days(3)); - EXPECT_TRUE(table()->AddRateLimit( - &db, - NewConversionReport(url::Origin::Create(GURL("https://c.example/")), - url::Origin::Create(GURL("https://d.example/"))))); - - EXPECT_EQ(1u, GetRateLimitRows(&db)); -} - -TEST_F(RateLimitTableTest, AttributionAllowed) { - sql::Database db; - EXPECT_TRUE(db.Open(db_path())); - EXPECT_TRUE(table()->CreateTable(&db)); - - delegate()->set_rate_limits({ - // Set this to >9d so |AddRateLimit|'s calls to |DeleteExpiredRateLimits| - // don't delete any of the rows we're adding. - .time_window = base::Days(10), +TEST_F(RateLimitTableTest, + AttributionAllowed_ScopedToSourceSiteDestinationSiteTimeWindow) { + constexpr base::TimeDelta kTimeWindow = base::Days(1); + delegate_.set_rate_limits({ + .time_window = kTimeWindow, .max_contributions_per_window = 2, }); - const url::Origin example_a = url::Origin::Create(GURL("https://a.example/")); - const url::Origin example_b = url::Origin::Create(GURL("https://b.example/")); - const url::Origin example_c = url::Origin::Create(GURL("https://c.example/")); - const url::Origin example_d = url::Origin::Create(GURL("https://d.example/")); + const base::Time now = base::Time::Now(); - // We will expire this row by advancing the clock to +10d below. - EXPECT_TRUE( - table()->AddRateLimit(&db, NewConversionReport(example_a, example_c))); + // The following loop iterations are *not* independent: Each one depends on + // the correct handling of the previous one. + const struct { + RateLimitRow row; + AttributionAllowedStatus expected; + } kRateLimitsToAdd[] = { + // Add the limit of 2 reports for this tuple. Note that although the first + // two *origins* for each row are different, they share the same *sites*, + // that is, https://s1.test and https://d1.test, respectively. - task_environment_.FastForwardBy(base::Days(3)); - EXPECT_TRUE( - table()->AddRateLimit(&db, NewConversionReport(example_a, example_d))); + {{"https://a.s1.test", "https://a.d1.test", now}, + AttributionAllowedStatus::kAllowed}, - task_environment_.FastForwardBy(base::Days(3)); - EXPECT_TRUE( - table()->AddRateLimit(&db, NewConversionReport(example_a, example_c))); + {{"https://b.s1.test", "https://b.d1.test", now}, + AttributionAllowedStatus::kAllowed}, - EXPECT_EQ(3u, GetRateLimitRows(&db)); + // This is not allowed because + // <https://s1.test, https://d1.test> already has the maximum of 2 + // reports. + {{"https://b.s1.test", "https://b.d1.test", now}, + AttributionAllowedStatus::kNotAllowed}, - // impression and conversion match - const auto report_a_c = NewConversionReport(example_a, example_c); - const auto report_a_d = NewConversionReport(example_a, example_d); - // impression doesn't match - const auto report_b_c = NewConversionReport(example_b, example_c); - // conversion doesn't match - const auto report_a_b = NewConversionReport(example_a, example_b); - // neither impression nor conversion match - const auto report_b_a = NewConversionReport(example_b, example_a); + // This is allowed because the source site is different. + {{"https://s2.test", "https://a.d1.test", now}, + AttributionAllowedStatus::kAllowed}, - base::Time now = base::Time::Now(); - EXPECT_EQ(AttributionAllowedStatus::kNotAllowed, - table()->AttributionAllowed(&db, report_a_c, now)); - EXPECT_EQ(AttributionAllowedStatus::kAllowed, - table()->AttributionAllowed(&db, report_a_d, now)); - EXPECT_EQ(AttributionAllowedStatus::kAllowed, - table()->AttributionAllowed(&db, report_b_c, now)); - EXPECT_EQ(AttributionAllowedStatus::kAllowed, - table()->AttributionAllowed(&db, report_a_b, now)); - EXPECT_EQ(AttributionAllowedStatus::kAllowed, - table()->AttributionAllowed(&db, report_b_a, now)); + // This is allowed because the destination site is different. + {{"https://a.s1.test", "https://d2.test", now}, + AttributionAllowedStatus::kAllowed}, + }; - // Expire the first row above by advancing to +10d. - task_environment_.FastForwardBy(base::Days(4)); - now = base::Time::Now(); - EXPECT_EQ(AttributionAllowedStatus::kAllowed, - table()->AttributionAllowed(&db, report_a_c, now)); - EXPECT_EQ(AttributionAllowedStatus::kAllowed, - table()->AttributionAllowed(&db, report_a_d, now)); - EXPECT_EQ(AttributionAllowedStatus::kAllowed, - table()->AttributionAllowed(&db, report_b_c, now)); - EXPECT_EQ(AttributionAllowedStatus::kAllowed, - table()->AttributionAllowed(&db, report_a_b, now)); - EXPECT_EQ(AttributionAllowedStatus::kAllowed, - table()->AttributionAllowed(&db, report_b_a, now)); + for (const auto& rate_limit_to_add : kRateLimitsToAdd) { + auto report = rate_limit_to_add.row.BuildReport(); - EXPECT_EQ(3u, GetRateLimitRows(&db)); + ASSERT_EQ(rate_limit_to_add.expected, AttributionAllowed(report)) << report; + + if (rate_limit_to_add.expected == AttributionAllowedStatus::kAllowed) { + ASSERT_TRUE(AddRateLimit(report)) << report; + } + } + + task_environment_.FastForwardBy(kTimeWindow); + + // This is allowed because the original rows for the tuple have fallen out of + // the time window. + const RateLimitRow row{"https://a.s1.test", "https://a.d1.test", + base::Time::Now()}; + ASSERT_EQ(AttributionAllowedStatus::kAllowed, + AttributionAllowed(row.BuildReport())); } -TEST_F(RateLimitTableTest, CheckAttributionAllowed_SourceTypesIndependent) { +TEST_F(RateLimitTableTest, AttributionAllowed_SourceTypesIndependent) { // Tests that limits are calculated independently for each // `CommonSourceInfo::SourceType`. In the future, we may change this so that // there is a combined calculation but each source type is weighted // differently. - sql::Database db; - EXPECT_TRUE(db.Open(db_path())); - EXPECT_TRUE(table()->CreateTable(&db)); - - delegate()->set_rate_limits({ - .time_window = base::Days(2), + delegate_.set_rate_limits({ + .time_window = base::Days(1), .max_contributions_per_window = 2, }); - const url::Origin example_a = url::Origin::Create(GURL("https://a.example/")); - const url::Origin example_c = url::Origin::Create(GURL("https://c.example/")); + const auto navigation_report = + ReportBuilder( + SourceBuilder() + .SetSourceType(CommonSourceInfo::SourceType::kNavigation) + .BuildStored()) + .Build(); - const auto report_navigation = - NewConversionReport(example_a, example_c, StoredSource::Id(0), - CommonSourceInfo::SourceType::kNavigation); - const auto report_event = - NewConversionReport(example_a, example_c, StoredSource::Id(0), - CommonSourceInfo::SourceType::kEvent); + const auto event_report = + ReportBuilder(SourceBuilder() + .SetSourceType(CommonSourceInfo::SourceType::kEvent) + .BuildStored()) + .Build(); - // Add distinct source types on the same origin to ensure independence. - EXPECT_TRUE(table()->AddRateLimit(&db, report_navigation)); - EXPECT_TRUE(table()->AddRateLimit(&db, report_event)); - EXPECT_EQ(2u, GetRateLimitRows(&db)); + ASSERT_EQ(AttributionAllowedStatus::kAllowed, + AttributionAllowed(navigation_report)); - base::Time now = base::Time::Now(); - EXPECT_EQ(AttributionAllowedStatus::kAllowed, - table()->AttributionAllowed(&db, report_navigation, now)); - EXPECT_EQ(AttributionAllowedStatus::kAllowed, - table()->AttributionAllowed(&db, report_event, now)); + ASSERT_EQ(AttributionAllowedStatus::kAllowed, + AttributionAllowed(event_report)); - EXPECT_TRUE(table()->AddRateLimit(&db, report_navigation)); - EXPECT_EQ(3u, GetRateLimitRows(&db)); - EXPECT_EQ(AttributionAllowedStatus::kNotAllowed, - table()->AttributionAllowed(&db, report_navigation, now)); - EXPECT_EQ(AttributionAllowedStatus::kAllowed, - table()->AttributionAllowed(&db, report_event, now)); + ASSERT_TRUE(AddRateLimit(navigation_report)); + ASSERT_TRUE(AddRateLimit(event_report)); - EXPECT_TRUE(table()->AddRateLimit(&db, report_event)); - EXPECT_EQ(4u, GetRateLimitRows(&db)); - EXPECT_EQ(AttributionAllowedStatus::kNotAllowed, - table()->AttributionAllowed(&db, report_navigation, now)); - EXPECT_EQ(AttributionAllowedStatus::kNotAllowed, - table()->AttributionAllowed(&db, report_event, now)); -} + ASSERT_EQ(AttributionAllowedStatus::kAllowed, + AttributionAllowed(navigation_report)); -TEST_F(RateLimitTableTest, - CheckAttributionAllowed_ConversionDestinationSubdomains) { - sql::Database db; - EXPECT_TRUE(db.Open(db_path())); - EXPECT_TRUE(table()->CreateTable(&db)); + ASSERT_EQ(AttributionAllowedStatus::kAllowed, + AttributionAllowed(event_report)); - delegate()->set_rate_limits({ - .time_window = base::Days(4), - .max_contributions_per_window = 2, - }); + ASSERT_TRUE(AddRateLimit(navigation_report)); - const url::Origin example_a = url::Origin::Create(GURL("https://a.example/")); - const url::Origin example_c = url::Origin::Create(GURL("https://c.example/")); - const url::Origin example_c_sub_a = - url::Origin::Create(GURL("https://a.c.example/")); - const url::Origin example_c_sub_b = - url::Origin::Create(GURL("https://b.c.example/")); + ASSERT_EQ(AttributionAllowedStatus::kNotAllowed, + AttributionAllowed(navigation_report)); - // Add distinct subdomains on the same origin to ensure correct use of - // ConversionDestination. - EXPECT_TRUE(table()->AddRateLimit( - &db, NewConversionReport(example_a, example_c_sub_a))); - task_environment_.FastForwardBy(base::Days(3)); - EXPECT_TRUE(table()->AddRateLimit( - &db, NewConversionReport(example_a, example_c_sub_b))); + ASSERT_EQ(AttributionAllowedStatus::kAllowed, + AttributionAllowed(event_report)); - base::Time now = base::Time::Now(); - EXPECT_EQ(AttributionAllowedStatus::kNotAllowed, - table()->AttributionAllowed( - &db, NewConversionReport(example_a, example_c_sub_a), now)); - EXPECT_EQ(AttributionAllowedStatus::kNotAllowed, - table()->AttributionAllowed( - &db, NewConversionReport(example_a, example_c_sub_b), now)); - EXPECT_EQ(AttributionAllowedStatus::kNotAllowed, - table()->AttributionAllowed( - &db, NewConversionReport(example_a, example_c), now)); -} + ASSERT_TRUE(AddRateLimit(event_report)); -TEST_F(RateLimitTableTest, CheckAttributionAllowed_ImpressionSiteSubdomains) { - sql::Database db; - EXPECT_TRUE(db.Open(db_path())); - EXPECT_TRUE(table()->CreateTable(&db)); + ASSERT_EQ(AttributionAllowedStatus::kNotAllowed, + AttributionAllowed(navigation_report)); - delegate()->set_rate_limits({ - .time_window = base::Days(4), - .max_contributions_per_window = 2, - }); - - const url::Origin example_a = url::Origin::Create(GURL("https://a.example/")); - const url::Origin example_c = url::Origin::Create(GURL("https://c.example/")); - const url::Origin example_c_sub_a = - url::Origin::Create(GURL("https://a.c.example/")); - const url::Origin example_c_sub_b = - url::Origin::Create(GURL("https://b.c.example/")); - - // Add distinct subdomains on the same origin to ensure correct use of - // impression_site. - EXPECT_TRUE(table()->AddRateLimit( - &db, NewConversionReport(example_c_sub_a, example_a))); - task_environment_.FastForwardBy(base::Days(3)); - EXPECT_TRUE(table()->AddRateLimit( - &db, NewConversionReport(example_c_sub_b, example_a))); - - base::Time now = base::Time::Now(); - EXPECT_EQ(AttributionAllowedStatus::kNotAllowed, - table()->AttributionAllowed( - &db, NewConversionReport(example_c_sub_a, example_a), now)); - EXPECT_EQ(AttributionAllowedStatus::kNotAllowed, - table()->AttributionAllowed( - &db, NewConversionReport(example_c_sub_b, example_a), now)); - EXPECT_EQ(AttributionAllowedStatus::kNotAllowed, - table()->AttributionAllowed( - &db, NewConversionReport(example_c, example_a), now)); + ASSERT_EQ(AttributionAllowedStatus::kNotAllowed, + AttributionAllowed(event_report)); } TEST_F(RateLimitTableTest, ClearAllDataAllTime) { - sql::Database db; - EXPECT_TRUE(db.Open(db_path())); - EXPECT_TRUE(table()->CreateTable(&db)); + for (int i = 0; i < 2; i++) { + ASSERT_TRUE( + AddRateLimit(ReportBuilder(SourceBuilder().BuildStored()).Build())); + } + ASSERT_THAT(GetRateLimitRows(), SizeIs(2)); - const url::Origin example_a = url::Origin::Create(GURL("https://a.example/")); - const url::Origin example_b = url::Origin::Create(GURL("https://b.example/")); - - EXPECT_TRUE( - table()->AddRateLimit(&db, NewConversionReport(example_a, example_b))); - EXPECT_TRUE( - table()->AddRateLimit(&db, NewConversionReport(example_b, example_a))); - EXPECT_EQ(2u, GetRateLimitRows(&db)); - - EXPECT_TRUE(table()->ClearAllDataAllTime(&db)); - EXPECT_EQ(0u, GetRateLimitRows(&db)); -} - -TEST_F(RateLimitTableTest, ClearAllDataInRange) { - sql::Database db; - EXPECT_TRUE(db.Open(db_path())); - EXPECT_TRUE(table()->CreateTable(&db)); - - delegate()->set_rate_limits({ - .time_window = base::TimeDelta::Max(), - .max_contributions_per_window = 2, - }); - - const url::Origin example_a = url::Origin::Create(GURL("https://a.example/")); - const url::Origin example_b = url::Origin::Create(GURL("https://b.example/")); - const url::Origin example_c = url::Origin::Create(GURL("https://c.example/")); - - EXPECT_TRUE( - table()->AddRateLimit(&db, NewConversionReport(example_a, example_b))); - task_environment_.FastForwardBy(base::Days(2)); - EXPECT_TRUE( - table()->AddRateLimit(&db, NewConversionReport(example_a, example_b))); - task_environment_.FastForwardBy(base::Days(2)); - EXPECT_TRUE( - table()->AddRateLimit(&db, NewConversionReport(example_b, example_c))); - task_environment_.FastForwardBy(base::Days(2)); - EXPECT_TRUE( - table()->AddRateLimit(&db, NewConversionReport(example_b, example_c))); - EXPECT_EQ(4u, GetRateLimitRows(&db)); - - base::Time now = base::Time::Now(); - - EXPECT_EQ(AttributionAllowedStatus::kNotAllowed, - table()->AttributionAllowed( - &db, NewConversionReport(example_a, example_b), now)); - EXPECT_EQ(AttributionAllowedStatus::kNotAllowed, - table()->AttributionAllowed( - &db, NewConversionReport(example_b, example_c), now)); - - // Delete the first row: attribution should now be allowed for the site, - // but the other rows should not be deleted. - EXPECT_TRUE(table()->ClearDataForOriginsInRange( - &db, now - base::Days(7), now - base::Days(6), - /*filter=*/base::NullCallback())); - EXPECT_EQ(3u, GetRateLimitRows(&db)); - EXPECT_EQ(AttributionAllowedStatus::kAllowed, - table()->AttributionAllowed( - &db, NewConversionReport(example_a, example_b), now)); - EXPECT_EQ(AttributionAllowedStatus::kNotAllowed, - table()->AttributionAllowed( - &db, NewConversionReport(example_b, example_c), now)); + ASSERT_TRUE(table_.ClearAllDataAllTime(&db_)); + ASSERT_THAT(GetRateLimitRows(), IsEmpty()); } TEST_F(RateLimitTableTest, ClearDataForOriginsInRange) { - sql::Database db; - EXPECT_TRUE(db.Open(db_path())); - EXPECT_TRUE(table()->CreateTable(&db)); + const base::Time now = base::Time::Now(); - delegate()->set_rate_limits({ - .time_window = base::TimeDelta::Max(), - .max_contributions_per_window = 2, - }); + const struct { + const char* desc; + base::Time delete_min; + base::Time delete_max; + base::RepeatingCallback<bool(const url::Origin&)> filter; + std::vector<int64_t> expect_deleted; + } kTestCases[] = { + { + "no deletions: filter never matches", + base::Time::Min(), + base::Time::Max(), + base::BindRepeating([](const url::Origin&) { return false; }), + {}, + }, + { + "no deletions: no rows in time range", + now + base::Days(1) + base::Milliseconds(1), + base::Time::Max(), + base::NullCallback(), + {}, + }, + { + "1 deletion: time range and filter match for source origin", + now + base::Milliseconds(1), + base::Time::Max(), + base::BindRepeating([](const url::Origin& origin) { + return origin == url::Origin::Create(GURL("https://a.s1.test")); + }), + {3}, + }, + { + "2 deletions: filter matches for destination origin", + base::Time::Min(), + base::Time::Max(), + base::BindRepeating([](const url::Origin& origin) { + return origin == url::Origin::Create(GURL("https://b.d1.test")); + }), + {2, 4}, + }, + { + "4 deletions: null filter matches everything", + now, + base::Time::Max(), + base::NullCallback(), + {1, 2, 3, 4}, + }, + }; - const url::Origin example_a = url::Origin::Create(GURL("https://a.example/")); - const url::Origin example_b = url::Origin::Create(GURL("https://b.example/")); - const url::Origin example_ba = - url::Origin::Create(GURL("https://a.b.example/")); - const url::Origin example_bb = - url::Origin::Create(GURL("https://b.b.example/")); - const url::Origin example_c = url::Origin::Create(GURL("https://c.example/")); - const url::Origin example_d = url::Origin::Create(GURL("https://d.example/")); + for (const auto& test_case : kTestCases) { + base::flat_map<int64_t, RateLimitRow> rows = { + {1, {"https://a.s1.test", "https://a.d1.test", now}}, + {2, {"https://b.s1.test", "https://b.d1.test", now}}, + {3, {"https://a.s1.test", "https://a.d1.test", now + base::Days(1)}}, + {4, {"https://b.s1.test", "https://b.d1.test", now + base::Days(1)}}, + }; - EXPECT_TRUE( - table()->AddRateLimit(&db, NewConversionReport(example_a, example_ba))); - task_environment_.FastForwardBy(base::Days(2)); - EXPECT_TRUE( - table()->AddRateLimit(&db, NewConversionReport(example_a, example_bb))); - task_environment_.FastForwardBy(base::Days(2)); - EXPECT_TRUE( - table()->AddRateLimit(&db, NewConversionReport(example_d, example_c))); + for (const auto& [_, row] : rows) { + const auto report = row.BuildReport(); + ASSERT_TRUE(AddRateLimit(report)) << report; + } - EXPECT_EQ(3u, GetRateLimitRows(&db)); + ASSERT_EQ(GetRateLimitRows(), rows); - base::Time now = base::Time::Now(); - EXPECT_EQ(AttributionAllowedStatus::kNotAllowed, - table()->AttributionAllowed( - &db, NewConversionReport(example_a, example_b), now)); + ASSERT_TRUE(table_.ClearDataForOriginsInRange( + &db_, test_case.delete_min, test_case.delete_max, test_case.filter)) + << test_case.desc; - // Should delete nothing, because (example_d, example_c) is at now. - EXPECT_TRUE(table()->ClearDataForOriginsInRange( - &db, base::Time(), now - base::Days(1), - base::BindRepeating(std::equal_to<url::Origin>(), example_c))); - EXPECT_EQ(3u, GetRateLimitRows(&db)); - EXPECT_EQ(AttributionAllowedStatus::kNotAllowed, - table()->AttributionAllowed( - &db, NewConversionReport(example_a, example_b), now)); + for (int64_t rate_limit_id : test_case.expect_deleted) { + ASSERT_EQ(1u, rows.erase(rate_limit_id)) << test_case.desc; + } - // Should delete (example_a, example_ba). - EXPECT_TRUE(table()->ClearDataForOriginsInRange( - &db, base::Time(), base::Time::Max(), - base::BindRepeating(std::equal_to<url::Origin>(), example_ba))); - EXPECT_EQ(2u, GetRateLimitRows(&db)); - EXPECT_EQ(AttributionAllowedStatus::kAllowed, - table()->AttributionAllowed( - &db, NewConversionReport(example_a, example_b), now)); + ASSERT_EQ(GetRateLimitRows(), rows) << test_case.desc; - // Should delete (example_d, example_c), the only report >= now. - EXPECT_TRUE(table()->ClearDataForOriginsInRange( - &db, now, base::Time::Max(), - base::BindRepeating([](const url::Origin& origin) { return true; }))); - EXPECT_EQ(1u, GetRateLimitRows(&db)); - - // Should delete (example_a, example_bb). - EXPECT_TRUE(table()->ClearDataForOriginsInRange( - &db, base::Time(), base::Time::Max(), - base::BindRepeating(std::equal_to<url::Origin>(), example_a))); - EXPECT_EQ(0u, GetRateLimitRows(&db)); + ASSERT_TRUE(table_.ClearAllDataAllTime(&db_)) << test_case.desc; + ASSERT_THAT(GetRateLimitRows(), IsEmpty()) << test_case.desc; + } } -TEST_F(RateLimitTableTest, AddRateLimit_DeletesExpiredRateLimits) { - delegate()->set_delete_expired_rate_limits_frequency(base::Minutes(5)); - - sql::Database db; - EXPECT_TRUE(db.Open(db_path())); - EXPECT_TRUE(table()->CreateTable(&db)); - - EXPECT_TRUE(table()->AddRateLimit( - &db, - NewConversionReport(url::Origin::Create(GURL("https://a.example/")), - url::Origin::Create(GURL("https://b.example/"))))); - EXPECT_TRUE(table()->AddRateLimit( - &db, - NewConversionReport(url::Origin::Create(GURL("https://c.example/")), - url::Origin::Create(GURL("https://d.example/"))))); - EXPECT_THAT(GetRateLimitImpressionOrigins(&db), - ElementsAre("https://a.example", "https://c.example")); - - delegate()->set_rate_limits({ +TEST_F(RateLimitTableTest, AddRateLimit_DeletesExpiredRows) { + delegate_.set_rate_limits({ .time_window = base::Minutes(2), .max_contributions_per_window = INT_MAX, }); - task_environment_.FastForwardBy(base::Minutes(1)); - EXPECT_TRUE(table()->AddRateLimit( - &db, - NewConversionReport(url::Origin::Create(GURL("https://e.example/")), - url::Origin::Create(GURL("https://f.example/"))))); - EXPECT_THAT(GetRateLimitImpressionOrigins(&db), - ElementsAre("https://a.example", "https://c.example", - "https://e.example")); - task_environment_.FastForwardBy(base::Minutes(3)); - EXPECT_TRUE(table()->AddRateLimit( - &db, - NewConversionReport(url::Origin::Create(GURL("https://g.example/")), - url::Origin::Create(GURL("https://h.example/"))))); - EXPECT_EQ(4u, GetRateLimitRows(&db)); - EXPECT_THAT(GetRateLimitImpressionOrigins(&db), - ElementsAre("https://a.example", "https://c.example", - "https://e.example", "https://g.example")); + delegate_.set_delete_expired_rate_limits_frequency(base::Minutes(4)); - task_environment_.FastForwardBy(base::Minutes(1)); - EXPECT_TRUE(table()->AddRateLimit( - &db, - NewConversionReport(url::Origin::Create(GURL("https://i.example/")), - url::Origin::Create(GURL("https://j.example/"))))); - EXPECT_THAT(GetRateLimitImpressionOrigins(&db), - ElementsAre("https://g.example", "https://i.example")); + ASSERT_TRUE(AddRateLimit( + ReportBuilder( + SourceBuilder() + .SetImpressionOrigin(url::Origin::Create(GURL("https://s1.test"))) + .BuildStored()) + .SetTriggerTime(base::Time::Now()) + .Build())); + + task_environment_.FastForwardBy(base::Minutes(4) - base::Milliseconds(1)); + + ASSERT_TRUE(AddRateLimit( + ReportBuilder( + SourceBuilder() + .SetImpressionOrigin(url::Origin::Create(GURL("https://s2.test"))) + .BuildStored()) + .SetTriggerTime(base::Time::Now()) + .Build())); + + // Neither row has expired at this point. + ASSERT_THAT(GetRateLimitRows(), SizeIs(2)); + + // Advance to the next expiry period. + task_environment_.FastForwardBy(base::Milliseconds(1)); + + ASSERT_TRUE(AddRateLimit( + ReportBuilder( + SourceBuilder() + .SetImpressionOrigin(url::Origin::Create(GURL("https://s3.test"))) + .BuildStored()) + .SetTriggerTime(base::Time::Now()) + .Build())); + + // The first row should be expired at this point. + ASSERT_THAT( + GetRateLimitRows(), + ElementsAre( + Pair(_, Field(&RateLimitRow::impression_origin, "https://s2.test")), + Pair(_, Field(&RateLimitRow::impression_origin, "https://s3.test")))); } TEST_F(RateLimitTableTest, ClearDataForSourceIds) { - sql::Database db; - EXPECT_TRUE(db.Open(db_path())); - EXPECT_TRUE(table()->CreateTable(&db)); + for (int64_t id = 7; id <= 9; id++) { + ASSERT_TRUE(AddRateLimit( + ReportBuilder( + SourceBuilder().SetSourceId(StoredSource::Id(id)).BuildStored()) + .Build())); + } - delegate()->set_rate_limits({ - .time_window = base::TimeDelta::Max(), - .max_contributions_per_window = 2, - }); + ASSERT_THAT(GetRateLimitRows(), + ElementsAre(Pair(1, _), Pair(2, _), Pair(3, _))); - const url::Origin example_a = url::Origin::Create(GURL("https://a.example/")); - const url::Origin example_b = url::Origin::Create(GURL("https://b.example/")); - const url::Origin example_c = url::Origin::Create(GURL("https://c.example/")); - const url::Origin example_d = url::Origin::Create(GURL("https://d.example/")); + ASSERT_TRUE(table_.ClearDataForSourceIds( + &db_, {StoredSource::Id(7), StoredSource::Id(9)})); - base::Time now = base::Time::Now(); - - EXPECT_TRUE(table()->AddRateLimit( - &db, NewConversionReport(example_a, example_b, StoredSource::Id(1)))); - EXPECT_TRUE(table()->AddRateLimit( - &db, NewConversionReport(example_a, example_b, StoredSource::Id(2)))); - EXPECT_TRUE(table()->AddRateLimit( - &db, NewConversionReport(example_c, example_d, StoredSource::Id(3)))); - EXPECT_TRUE(table()->AddRateLimit( - &db, NewConversionReport(example_c, example_d, StoredSource::Id(4)))); - EXPECT_EQ(4u, GetRateLimitRows(&db)); - EXPECT_EQ(AttributionAllowedStatus::kNotAllowed, - table()->AttributionAllowed( - &db, NewConversionReport(example_a, example_b), now)); - EXPECT_EQ(AttributionAllowedStatus::kNotAllowed, - table()->AttributionAllowed( - &db, NewConversionReport(example_c, example_d), now)); - - EXPECT_TRUE(table()->ClearDataForSourceIds( - &db, {StoredSource::Id(1), StoredSource::Id(4)})); - EXPECT_EQ(2u, GetRateLimitRows(&db)); - EXPECT_EQ(AttributionAllowedStatus::kAllowed, - table()->AttributionAllowed( - &db, NewConversionReport(example_a, example_b), now)); - EXPECT_EQ(AttributionAllowedStatus::kAllowed, - table()->AttributionAllowed( - &db, NewConversionReport(example_c, example_d), now)); + ASSERT_THAT(GetRateLimitRows(), ElementsAre(Pair(2, _))); } } // namespace content
diff --git a/content/browser/browsing_instance.cc b/content/browser/browsing_instance.cc index c63bf8c..940d364 100644 --- a/content/browser/browsing_instance.cc +++ b/content/browser/browsing_instance.cc
@@ -57,9 +57,12 @@ // No current SiteInstance for this site, so let's create one. scoped_refptr<SiteInstanceImpl> instance = new SiteInstanceImpl(this); - // Set the site of this new SiteInstance, which will register it with us, - // unless this URL should leave the SiteInstance's site unassigned. - if (SiteInstance::ShouldAssignSiteForURL(url_info.url)) + // Set the site of this new SiteInstance, which will register it with us. + // Some URLs should leave the SiteInstance's site unassigned, though if + // `instance` is for a guest, we should always set the site to ensure that it + // carries guest information contained within SiteInfo. + if (SiteInstance::ShouldAssignSiteForURL(url_info.url) || + isolation_context_.is_guest()) instance->SetSite(url_info); return instance; }
diff --git a/content/browser/download/save_package.cc b/content/browser/download/save_package.cc index 1431279..5de2eaf 100644 --- a/content/browser/download/save_package.cc +++ b/content/browser/download/save_package.cc
@@ -1079,7 +1079,8 @@ absl::optional<blink::FrameToken> frame_token = save_item_frame_tree_node->render_manager() - ->GetFrameTokenForSiteInstance(target->GetSiteInstance()); + ->GetFrameTokenForSiteInstanceGroup( + target->GetSiteInstance()->group()); DCHECK(frame_token.has_value());
diff --git a/content/browser/loader/navigation_early_hints_manager.cc b/content/browser/loader/navigation_early_hints_manager.cc index cc6f20a..1fc23464 100644 --- a/content/browser/loader/navigation_early_hints_manager.cc +++ b/content/browser/loader/navigation_early_hints_manager.cc
@@ -273,13 +273,13 @@ } void OnReceiveResponse(network::mojom::URLResponseHeadPtr head, mojo::ScopedDataPipeConsumerHandle body) override { - if (head->network_accessed || !head->was_fetched_via_cache) + if (!head->network_accessed && head->was_fetched_via_cache) { + // Cancel the client since the response is already stored in the cache. + result_.was_canceled = true; + MaybeCompletePreload(); return; - result_.was_canceled = true; - auto weak_this = weak_ptr_factory_.GetWeakPtr(); - MaybeCompletePreload(); - if (!weak_this) - return; + } + if (body) OnStartLoadingResponseBody(std::move(body)); } @@ -346,8 +346,6 @@ PreloadedResource result_; std::unique_ptr<mojo::DataPipeDrainer> response_body_drainer_; - - base::WeakPtrFactory<PreloadURLLoaderClient> weak_ptr_factory_{this}; }; NavigationEarlyHintsManager::NavigationEarlyHintsManager(
diff --git a/content/browser/renderer_host/input/composited_scrolling_browsertest.cc b/content/browser/renderer_host/input/composited_scrolling_browsertest.cc index a4e0df41..91e14bf 100644 --- a/content/browser/renderer_host/input/composited_scrolling_browsertest.cc +++ b/content/browser/renderer_host/input/composited_scrolling_browsertest.cc
@@ -261,12 +261,6 @@ base::HistogramBase::Sample expected_bucket = CompositingEnabled() ? kScrollingOnCompositor : kScrollingOnMain; - if (base::FeatureList::IsEnabled(::features::kScrollUnification)) { - // TODO: crbug.com/1082590 - // After ScrollUnification all scrolls happen on the compositor thread - // but some will still force blocking on main thread - expected_bucket = kScrollingOnCompositor; - } histograms.ExpectUniqueSample(kTouchHistogramName, expected_bucket, 2); histograms.ExpectUniqueSample(kWheelHistogramName, expected_bucket, 1); @@ -314,12 +308,6 @@ base::HistogramBase::Sample expected_bucket = CompositingEnabled() ? kScrollingOnCompositorBlockedOnMain : kScrollingOnMain; - if (base::FeatureList::IsEnabled(::features::kScrollUnification)) { - // TODO: crbug.com/1082590 - // After ScrollUnification all scrolls happen on the compositor thread - // but some will still force blocking on main thread - expected_bucket = kScrollingOnCompositorBlockedOnMain; - } histograms.ExpectUniqueSample(kTouchHistogramName, expected_bucket, 2); histograms.ExpectUniqueSample(kWheelHistogramName, expected_bucket, 1); @@ -367,12 +355,6 @@ base::HistogramBase::Sample expected_bucket = CompositingEnabled() ? kScrollingOnCompositor : kScrollingOnMain; - if (base::FeatureList::IsEnabled(::features::kScrollUnification)) { - // TODO: crbug.com/1082590 - // After ScrollUnification all scrolls happen on the compositor thread - // but some will still force blocking on main thread - expected_bucket = kScrollingOnCompositor; - } histograms.ExpectUniqueSample(kTouchHistogramName, expected_bucket, 2); histograms.ExpectUniqueSample(kWheelHistogramName, expected_bucket, 1);
diff --git a/content/browser/renderer_host/private_network_access_browsertest.cc b/content/browser/renderer_host/private_network_access_browsertest.cc index b41da0f..4a2e108 100644 --- a/content/browser/renderer_host/private_network_access_browsertest.cc +++ b/content/browser/renderer_host/private_network_access_browsertest.cc
@@ -2984,11 +2984,10 @@ IN_PROC_BROWSER_TEST_F(PrivateNetworkAccessBrowserTest, Redirect) { EXPECT_TRUE(NavigateToURL(shell(), SecurePrivateURL(kDefaultPath))); - GURL target = SecureLocalURL("/server-redirect?" + - SecurePrivateURL(kDefaultPath).spec()); + GURL target = + SecureLocalURL("/server-redirect?" + SecurePrivateURL(kCorsPath).spec()); - // TODO(https://crbug.com/1293891): Expect true here. - EXPECT_EQ(false, EvalJs(root_frame_host(), FetchSubresourceScript(target))); + EXPECT_EQ(true, EvalJs(root_frame_host(), FetchSubresourceScript(target))); } // =========================
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc index bbcf5f3..d1b05af 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -7702,12 +7702,45 @@ // Collect children first before calling PendingDeletionCheckCompleted() on // them, because it may delete them. - std::vector<RenderFrameHostImpl*> children_rfh; - for (std::unique_ptr<FrameTreeNode>& child : children_) - children_rfh.push_back(child->current_frame_host()); + // + // Note: In https://crbug.com/1276535, we believe as a side effect of deleting + // on RenderFrameHost, a sibling gets deleted. As an attempt to verify this, + // this holds WeakPtr<T> instead of T*. + std::vector<base::WeakPtr<RenderFrameHostImpl>> children_rfh; + for (std::unique_ptr<FrameTreeNode>& child : children_) { + RenderFrameHostImpl* child_rfh = child->current_frame_host(); + if (!child_rfh) { + // A FrameTreeNode is guaranteed to hold a RenderFrameHost. + // Note: This is not entirely true anymore, due to Prerender. Maybe this + // is a clue to https://crbug.com/1276535 ? + static auto* const crash_key_location = AllocateCrashKeyString( + "pending_deletion_check_completed_subtree_location_1", + base::debug::CrashKeySize::Size32); + SetCrashKeyString(crash_key_location, "true"); + static auto* const crash_key_prerender = AllocateCrashKeyString( + "prerender", base::debug::CrashKeySize::Size32); + SetCrashKeyString(crash_key_prerender, + frame_tree()->is_prerendering() ? "true" : "false"); + base::debug::DumpWithoutCrashing(); + continue; + } + children_rfh.push_back(child_rfh->GetWeakPtr()); + } - for (RenderFrameHostImpl* child_rfh : children_rfh) + for (base::WeakPtr<RenderFrameHostImpl>& child_rfh : children_rfh) { + if (!child_rfh) { + // A RenderFrameHost has been deleted, as a result of calling + // PendingDeletionCheckCompletedOnSubtree(), this would be unexpected. + // Please report to: https://crbug.com/1276535 + static auto* const crash_key_location = AllocateCrashKeyString( + "pending_deletion_check_completed_subtree_location_2", + base::debug::CrashKeySize::Size32); + SetCrashKeyString(crash_key_location, "true"); + base::debug::DumpWithoutCrashing(); + continue; + } child_rfh->PendingDeletionCheckCompletedOnSubtree(); + } } void RenderFrameHostImpl::ResetNavigationsForPendingDeletion() { @@ -7737,7 +7770,7 @@ auto opener_frame_token = frame_tree_node_->render_manager()->GetOpenerFrameToken( - GetSiteInstance()); + GetSiteInstance()->group()); GetAssociatedLocalFrame()->UpdateOpener(opener_frame_token); }
diff --git a/content/browser/renderer_host/render_frame_host_manager.cc b/content/browser/renderer_host/render_frame_host_manager.cc index aba74f8..2e9fb06 100644 --- a/content/browser/renderer_host/render_frame_host_manager.cc +++ b/content/browser/renderer_host/render_frame_host_manager.cc
@@ -2951,7 +2951,8 @@ if (render_view_host->IsRenderViewLive()) return true; - auto opener_frame_token = GetOpenerFrameToken(site_instance); + auto opener_frame_token = GetOpenerFrameToken( + static_cast<SiteInstanceImpl*>(site_instance)->group()); bool created = delegate_->CreateRenderViewForRenderManager( render_view_host, opener_frame_token, proxy); @@ -3054,8 +3055,10 @@ SiteInstance* site_instance = render_frame_host->GetSiteInstance(); absl::optional<blink::FrameToken> opener_frame_token; - if (frame_tree_node_->opener()) - opener_frame_token = GetOpenerFrameToken(site_instance); + if (frame_tree_node_->opener()) { + opener_frame_token = GetOpenerFrameToken( + static_cast<SiteInstanceImpl*>(site_instance)->group()); + } int parent_routing_id = MSG_ROUTING_NONE; if (frame_tree_node_->parent()) { @@ -3188,13 +3191,12 @@ } absl::optional<blink::FrameToken> -RenderFrameHostManager::GetFrameTokenForSiteInstance( - SiteInstance* site_instance) { - if (render_frame_host_->GetSiteInstance() == site_instance) +RenderFrameHostManager::GetFrameTokenForSiteInstanceGroup( + SiteInstanceGroup* site_instance_group) { + if (render_frame_host_->GetSiteInstance()->group() == site_instance_group) return render_frame_host_->GetFrameToken(); - RenderFrameProxyHost* proxy = GetRenderFrameProxyHost( - static_cast<SiteInstanceImpl*>(site_instance)->group()); + RenderFrameProxyHost* proxy = GetRenderFrameProxyHost(site_instance_group); if (proxy) return proxy->GetFrameToken(); @@ -3684,8 +3686,8 @@ if (!proxy) continue; - auto opener_frame_token = - node->render_manager()->GetOpenerFrameToken(instance); + auto opener_frame_token = node->render_manager()->GetOpenerFrameToken( + static_cast<SiteInstanceImpl*>(instance)->group()); DCHECK(opener_frame_token); proxy->GetAssociatedRemoteFrame()->UpdateOpener(opener_frame_token); } @@ -3710,13 +3712,13 @@ } absl::optional<blink::FrameToken> RenderFrameHostManager::GetOpenerFrameToken( - SiteInstance* instance) { + SiteInstanceGroup* group) { if (!frame_tree_node_->opener()) return absl::nullopt; return frame_tree_node_->opener() ->render_manager() - ->GetFrameTokenForSiteInstance(instance); + ->GetFrameTokenForSiteInstanceGroup(group); } void RenderFrameHostManager::ExecutePageBroadcastMethod(
diff --git a/content/browser/renderer_host/render_frame_host_manager.h b/content/browser/renderer_host/render_frame_host_manager.h index dae4eb0..d4e31fd8a 100644 --- a/content/browser/renderer_host/render_frame_host_manager.h +++ b/content/browser/renderer_host/render_frame_host_manager.h
@@ -340,13 +340,13 @@ int GetRoutingIdForSiteInstance(SiteInstance* site_instance); // Returns the frame token for a RenderFrameHost or RenderFrameProxyHost - // that has the given SiteInstance and is associated with this + // that has the given SiteInstanceGroup and is associated with this // RenderFrameHostManager. Returns absl::nullopt if none is found. Note that // the FrameToken will internally be either a LocalFrameToken (if the frame is - // a RenderFrameHost in the given |site_instance|) or a RemoteFrameToken (if - // it is a RenderFrameProxyHost). - absl::optional<blink::FrameToken> GetFrameTokenForSiteInstance( - SiteInstance* site_instance); + // a RenderFrameHost in the given |site_instance_group|) or a RemoteFrameToken + // (if it is a RenderFrameProxyHost). + absl::optional<blink::FrameToken> GetFrameTokenForSiteInstanceGroup( + SiteInstanceGroup* site_instance_group); // Notifies the RenderFrameHostManager that a new NavigationRequest has been // created and set in the FrameTreeNode so that it can speculatively create a @@ -427,11 +427,12 @@ void CreateProxiesForNewNamedFrame(); // Returns a blink::FrameToken for the current FrameTreeNode's opener - // node in the given SiteInstance. May return a frame token of either a - // RenderFrameHost (if opener's current or pending RFH has SiteInstance - // |instance|) or a RenderFrameProxyHost. Returns absl::nullopt if there is - // no opener, or if the opener node doesn't have a proxy for |instance|. - absl::optional<blink::FrameToken> GetOpenerFrameToken(SiteInstance* instance); + // node in the given SiteInstanceGroup. May return a frame token of either a + // RenderFrameHost (if opener's current or pending RFH has SiteInstanceGroup + // |group|) or a RenderFrameProxyHost. Returns absl::nullopt if there is + // no opener, or if the opener node doesn't have a proxy for |group|. + absl::optional<blink::FrameToken> GetOpenerFrameToken( + SiteInstanceGroup* group); // Called on the RFHM of the inner WebContents to create a // RenderFrameProxyHost in its outer WebContents's SiteInstance,
diff --git a/content/browser/renderer_host/render_frame_host_manager_unittest.cc b/content/browser/renderer_host/render_frame_host_manager_unittest.cc index 2b3faa5..95509988 100644 --- a/content/browser/renderer_host/render_frame_host_manager_unittest.cc +++ b/content/browser/renderer_host/render_frame_host_manager_unittest.cc
@@ -1436,9 +1436,9 @@ opener1_manager->GetRenderFrameProxyHost(rfh2->GetSiteInstance()->group()) ->GetRenderViewHost() ->IsRenderViewLive()); - EXPECT_EQ( - opener1_manager->GetFrameTokenForSiteInstance(rfh2->GetSiteInstance()), - rfh2->GetRenderViewHost()->opener_frame_token()); + EXPECT_EQ(opener1_manager->GetFrameTokenForSiteInstanceGroup( + rfh2->GetSiteInstance()->group()), + rfh2->GetRenderViewHost()->opener_frame_token()); } // Test that we reuse the same guest SiteInstance if we navigate across sites. @@ -2282,9 +2282,9 @@ // Verify that the proxies' openers point to each other. auto tab1_opener_frame_token = - tab1_manager->GetOpenerFrameToken(rfh2->GetSiteInstance()); + tab1_manager->GetOpenerFrameToken(rfh2->GetSiteInstance()->group()); auto tab2_opener_frame_token = - tab2_manager->GetOpenerFrameToken(rfh2->GetSiteInstance()); + tab2_manager->GetOpenerFrameToken(rfh2->GetSiteInstance()->group()); EXPECT_EQ(*tab1_opener_frame_token, tab2_proxy->GetFrameToken()); EXPECT_EQ(*tab2_opener_frame_token, tab1_proxy->GetFrameToken()); @@ -2293,7 +2293,7 @@ // Verify that this IPC was sent and that it passed correct frame token. base::RunLoop().RunUntilIdle(); DCHECK(proxy_observers.OpenerFrameToken(tab2_proxy) == - tab2_manager->GetOpenerFrameToken(rfh2->GetSiteInstance())); + tab2_manager->GetOpenerFrameToken(rfh2->GetSiteInstance()->group())); } // Test that opener proxies are created properly when the opener points @@ -2333,7 +2333,7 @@ // Verify that the proxy's opener points to itself. auto opener_frame_token = - opener_manager->GetOpenerFrameToken(rfh2->GetSiteInstance()); + opener_manager->GetOpenerFrameToken(rfh2->GetSiteInstance()->group()); EXPECT_EQ(*opener_frame_token, opener_proxy->GetFrameToken()); // Setting the opener in opener_proxy required an extra IPC message, since @@ -2341,7 +2341,7 @@ // Verify that this IPC was sent and that it passed correct frame token. base::RunLoop().RunUntilIdle(); DCHECK(proxy_observers.OpenerFrameToken(opener_proxy) == - opener_manager->GetOpenerFrameToken(rfh2->GetSiteInstance())); + opener_manager->GetOpenerFrameToken(rfh2->GetSiteInstance()->group())); } // Build the following frame opener graph and see that it can be properly
diff --git a/content/browser/renderer_host/render_frame_proxy_host.cc b/content/browser/renderer_host/render_frame_proxy_host.cc index abb765d..d2111b7 100644 --- a/content/browser/renderer_host/render_frame_proxy_host.cc +++ b/content/browser/renderer_host/render_frame_proxy_host.cc
@@ -280,7 +280,7 @@ if (frame_tree_node_->opener()) { opener_frame_token = frame_tree_node_->render_manager()->GetOpenerFrameToken( - site_instance_.get()); + site_instance_group_.get()); } int view_routing_id = GetRenderViewHost()->GetRoutingID(); @@ -403,7 +403,7 @@ auto opener_frame_token = frame_tree_node_->render_manager()->GetOpenerFrameToken( - GetSiteInstance()); + site_instance_group_.get()); GetAssociatedRemoteFrame()->UpdateOpener(opener_frame_token); }
diff --git a/content/browser/web_contents/web_contents_impl_unittest.cc b/content/browser/web_contents/web_contents_impl_unittest.cc index 5ed8e3f..0a9b2b0 100644 --- a/content/browser/web_contents/web_contents_impl_unittest.cc +++ b/content/browser/web_contents/web_contents_impl_unittest.cc
@@ -1001,7 +1001,7 @@ // ID is returned here. Otherwise, we should find the pending RFH and not // create a new proxy. auto opener_frame_token = - popup->GetRenderManager()->GetOpenerFrameToken(instance); + popup->GetRenderManager()->GetOpenerFrameToken(instance->group()); RenderFrameProxyHost* proxy = contents()->GetRenderManager()->GetRenderFrameProxyHost( instance->group());
diff --git a/content/browser/web_contents/web_contents_view_aura.cc b/content/browser/web_contents/web_contents_view_aura.cc index 1aa844b6..4f31774 100644 --- a/content/browser/web_contents/web_contents_view_aura.cc +++ b/content/browser/web_contents/web_contents_view_aura.cc
@@ -345,15 +345,22 @@ } // namespace +WebContentsViewAura::DropMetadata::DropMetadata( + const ui::DropTargetEvent& event) { + localized_location = event.location_f(); + source_operations = event.source_operations(); + flags = event.flags(); +} + WebContentsViewAura::OnPerformDropContext::OnPerformDropContext( RenderWidgetHostImpl* target_rwh, - const ui::DropTargetEvent& event, + DropMetadata drop_metadata, std::unique_ptr<ui::OSExchangeData> data, base::ScopedClosureRunner end_drag_runner, absl::optional<gfx::PointF> transformed_pt, gfx::PointF screen_pt) : target_rwh(target_rwh->GetWeakPtr()), - event(event), + drop_metadata(drop_metadata), data(std::move(data)), end_drag_runner(std::move(end_drag_runner)), transformed_pt(std::move(transformed_pt)), @@ -1331,7 +1338,7 @@ // WebContentsViewAura, aura::client::DragDropDelegate implementation: void WebContentsViewAura::DragEnteredCallback( - ui::DropTargetEvent event, + DropMetadata drop_metadata, std::unique_ptr<DropData> drop_data, base::WeakPtr<RenderWidgetHostViewBase> target, absl::optional<gfx::PointF> transformed_pt) { @@ -1350,7 +1357,7 @@ current_rwh_for_drag_->FilterDropData(current_drop_data_.get()); blink::DragOperationsMask op_mask = - ConvertToDragOperationsMask(event.source_operations()); + ConvertToDragOperationsMask(drop_metadata.source_operations); WebContentsDelegate* delegate = web_contents_->GetDelegate(); @@ -1380,7 +1387,8 @@ gfx::PointF screen_pt(display::Screen::GetScreen()->GetCursorScreenPoint()); current_rwh_for_drag_->DragTargetDragEnter( *current_drop_data_, transformed_pt.value(), screen_pt, op_mask, - ui::EventFlagsToWebEventModifiers(event.flags()), base::DoNothing()); + ui::EventFlagsToWebEventModifiers(drop_metadata.flags), + base::DoNothing()); if (drag_dest_delegate_) { drag_dest_delegate_->OnDragEnter(); @@ -1404,12 +1412,13 @@ drag_dest_delegate_->OnReceiveDragData(event.data()); } + DropMetadata drop_metadata(event); web_contents_->GetInputEventRouter() ->GetRenderWidgetHostAtPointAsynchronously( web_contents_->GetRenderViewHost()->GetWidget()->GetView(), event.location_f(), base::BindOnce(&WebContentsViewAura::DragEnteredCallback, - weak_ptr_factory_.GetWeakPtr(), event, + weak_ptr_factory_.GetWeakPtr(), drop_metadata, std::move(drop_data))); } @@ -1452,7 +1461,9 @@ current_rwh_for_drag_->DragTargetDragLeave(transformed_leave_point, screen_pt); } - DragEnteredCallback(event, std::move(drop_data), target, transformed_pt); + DropMetadata drop_metadata(event); + DragEnteredCallback(drop_metadata, std::move(drop_data), target, + transformed_pt); } if (!current_drop_data_) { @@ -1525,7 +1536,7 @@ } void WebContentsViewAura::PerformDropCallback( - ui::DropTargetEvent event, + DropMetadata drop_metadata, std::unique_ptr<ui::OSExchangeData> data, base::WeakPtr<RenderWidgetHostViewBase> target, absl::optional<gfx::PointF> transformed_pt) { @@ -1549,13 +1560,14 @@ std::unique_ptr<DropData> drop_data = std::make_unique<DropData>(); PrepareDropData(drop_data.get(), *data.get()); - DragEnteredCallback(event, std::move(drop_data), target, transformed_pt); + DragEnteredCallback(drop_metadata, std::move(drop_data), target, + transformed_pt); } if (!current_drop_data_) return; - OnPerformDropContext context(target_rwh, event, std::move(data), + OnPerformDropContext context(target_rwh, drop_metadata, std::move(data), std::move(end_drag_runner), transformed_pt, screen_pt); // |delegate_| may be null in unit tests. @@ -1575,7 +1587,7 @@ OnPerformDropContext context, WebContentsViewDelegate::DropCompletionResult result) { const int key_modifiers = - ui::EventFlagsToWebEventModifiers(context.event.flags()); + ui::EventFlagsToWebEventModifiers(context.drop_metadata.flags); // This is possibly an async callback. Make sure the RWH is still valid. if (!context.target_rwh || !IsValidDragTarget(context.target_rwh.get())) return; @@ -1636,8 +1648,20 @@ return base::DoNothing(); base::ScopedClosureRunner drag_exit(base::BindOnce( &WebContentsViewAura::CompleteDragExit, weak_ptr_factory_.GetWeakPtr())); - return base::BindOnce(&WebContentsViewAura::PerformDropOrExitDrag, - weak_ptr_factory_.GetWeakPtr(), std::move(drag_exit)); + DropMetadata drop_metadata(event); + // TODO(crbug.com/1293449): Remove this when DropTargetEvent is removed from + // DropCallback. + return base::BindOnce( + [](base::WeakPtr<WebContentsViewAura> web_contents, + base::ScopedClosureRunner exit_drag, DropMetadata drop_metadata, + const ui::DropTargetEvent&, std::unique_ptr<ui::OSExchangeData> data, + ui::mojom::DragOperation& output_drag_op) { + if (!web_contents) + return; + web_contents->PerformDropOrExitDrag(std::move(exit_drag), drop_metadata, + std::move(data), output_drag_op); + }, + weak_ptr_factory_.GetWeakPtr(), std::move(drag_exit), drop_metadata); } void WebContentsViewAura::CompleteDrop(RenderWidgetHostImpl* target_rwh, @@ -1661,15 +1685,15 @@ void WebContentsViewAura::PerformDropOrExitDrag( base::ScopedClosureRunner exit_drag, - const ui::DropTargetEvent& event, + DropMetadata drop_metadata, std::unique_ptr<ui::OSExchangeData> data, ui::mojom::DragOperation& output_drag_op) { web_contents_->GetInputEventRouter() ->GetRenderWidgetHostAtPointAsynchronously( web_contents_->GetRenderViewHost()->GetWidget()->GetView(), - event.location_f(), + drop_metadata.localized_location, base::BindOnce(&WebContentsViewAura::PerformDropCallback, - weak_ptr_factory_.GetWeakPtr(), event, + weak_ptr_factory_.GetWeakPtr(), drop_metadata, std::move(data))); output_drag_op = current_drag_op_; exit_drag.ReplaceClosure(base::DoNothing());
diff --git a/content/browser/web_contents/web_contents_view_aura.h b/content/browser/web_contents/web_contents_view_aura.h index 56b4405..1a0f1a4 100644 --- a/content/browser/web_contents/web_contents_view_aura.h +++ b/content/browser/web_contents/web_contents_view_aura.h
@@ -75,12 +75,26 @@ RenderWidgetHostViewCreateFunction create_render_widget_host_view); private: + // Just the metadata from DropTargetEvent that's safe and cheap to copy to + // help locate drop events in the callback. + struct DropMetadata { + explicit DropMetadata(const ui::DropTargetEvent& event); + + // Location local to WebContentsViewAura. + gfx::PointF localized_location; + // The supported DnD operation of the source. A bitmask of + // ui::mojom::DragOperations. + int source_operations; + // Flags from ui::Event. Usually represents modifier keys used at drop time. + int flags; + }; + // A structure used to keep drop context for asynchronously finishing a // drop operation. This is required because some drop event data gets // cleared out once PerformDropCallback() returns. struct CONTENT_EXPORT OnPerformDropContext { OnPerformDropContext(RenderWidgetHostImpl* target_rwh, - const ui::DropTargetEvent& event, + DropMetadata drop_metadata, std::unique_ptr<ui::OSExchangeData> data, base::ScopedClosureRunner end_drag_runner, absl::optional<gfx::PointF> transformed_pt, @@ -89,7 +103,7 @@ ~OnPerformDropContext(); base::WeakPtr<RenderWidgetHostImpl> target_rwh; - ui::DropTargetEvent event; + DropMetadata drop_metadata; std::unique_ptr<ui::OSExchangeData> data; base::ScopedClosureRunner end_drag_runner; absl::optional<gfx::PointF> transformed_pt; @@ -245,7 +259,7 @@ aura::client::DragDropDelegate::DropCallback GetDropCallback( const ui::DropTargetEvent& event) override; - void DragEnteredCallback(ui::DropTargetEvent event, + void DragEnteredCallback(DropMetadata flags, std::unique_ptr<DropData> drop_data, base::WeakPtr<RenderWidgetHostViewBase> target, absl::optional<gfx::PointF> transformed_pt); @@ -253,7 +267,7 @@ std::unique_ptr<DropData> drop_data, base::WeakPtr<RenderWidgetHostViewBase> target, absl::optional<gfx::PointF> transformed_pt); - void PerformDropCallback(ui::DropTargetEvent event, + void PerformDropCallback(DropMetadata drop_metadata, std::unique_ptr<ui::OSExchangeData> data, base::WeakPtr<RenderWidgetHostViewBase> target, absl::optional<gfx::PointF> transformed_pt); @@ -277,7 +291,7 @@ // Performs drop if it's run. Otherwise, it exits the drag. Returned by // GetDropCallback. void PerformDropOrExitDrag(base::ScopedClosureRunner exit_drag, - const ui::DropTargetEvent& event, + DropMetadata drop_metadata, std::unique_ptr<ui::OSExchangeData> data, ui::mojom::DragOperation& output_drag_op);
diff --git a/content/browser/webid/federated_auth_request_impl.cc b/content/browser/webid/federated_auth_request_impl.cc index 984effc..a970716 100644 --- a/content/browser/webid/federated_auth_request_impl.cc +++ b/content/browser/webid/federated_auth_request_impl.cc
@@ -459,15 +459,15 @@ void FederatedAuthRequestImpl::OnClientIdMetadataResponseReceived( IdpNetworkRequestManager::FetchStatus status, IdpNetworkRequestManager::ClientIdMetadata data) { - // TODO(cbiesinger): we currently do not send referer to IDP when fetching the - // client metadata so we cannot get any response. Making client metadata - // optional until the fix is in place. https://crbug.com/1284781. + // We purposefully do not check status; client metadata is optional. client_id_metadata_ = data; + network_manager_->SendAccountsRequest( endpoints_.accounts, request_dialog_controller_->GetBrandIconIdealSize(), request_dialog_controller_->GetBrandIconMinimumSize(), base::BindOnce(&FederatedAuthRequestImpl::DownloadBitmap, weak_ptr_factory_.GetWeakPtr()), + client_id_, base::BindOnce(&FederatedAuthRequestImpl::OnAccountsResponseReceived, weak_ptr_factory_.GetWeakPtr())); } @@ -652,6 +652,11 @@ // Populate the accounts login state. for (auto& account : accounts) { + // We set the login state based on the IDP response if it sends + // back an approved_clients list. If it does not, we need to set + // it here based on browser state. + if (account.login_state) + continue; LoginState login_state = LoginState::kSignUp; // Consider this a sign-in if we have seen a successful sign-up for // this account before.
diff --git a/content/browser/webid/federated_auth_request_impl_unittest.cc b/content/browser/webid/federated_auth_request_impl_unittest.cc index 4531a2aa8..4fa8c853 100644 --- a/content/browser/webid/federated_auth_request_impl_unittest.cc +++ b/content/browser/webid/federated_auth_request_impl_unittest.cc
@@ -582,10 +582,11 @@ std::string token, bool prefer_auto_sign_in) { if (conf.accounts_response) { - EXPECT_CALL(*mock_request_manager_, SendAccountsRequest(_, _, _, _, _)) + EXPECT_CALL(*mock_request_manager_, SendAccountsRequest(_, _, _, _, _, _)) .WillOnce(Invoke( [&](const GURL&, int, int, IdpNetworkRequestManager::BrandIconDownloader, + const std::string&, IdpNetworkRequestManager::AccountsRequestCallback callback) { std::move(callback).Run(*conf.accounts_response, conf.accounts, IdentityProviderMetadata());
diff --git a/content/browser/webid/idp_network_request_manager.cc b/content/browser/webid/idp_network_request_manager.cc index 7aeb8c5..441d11d4 100644 --- a/content/browser/webid/idp_network_request_manager.cc +++ b/content/browser/webid/idp_network_request_manager.cc
@@ -31,6 +31,8 @@ namespace content { namespace { +using LoginState = IdentityRequestAccount::LoginState; + // TODO(kenrb): These need to be defined in the explainer or draft spec and // referenced here. @@ -146,7 +148,8 @@ } absl::optional<content::IdentityRequestAccount> ParseAccount( - const base::Value& account) { + const base::Value& account, + const std::string& client_id) { // TODO(yigu): Per spec the account id field should be "account_id" instead of // "sub". Using "sub" temporarily to unblock partner deployment. auto* account_id = account.FindStringKey("sub"); @@ -154,20 +157,38 @@ auto* name = account.FindStringKey("name"); auto* given_name = account.FindStringKey("given_name"); auto* picture = account.FindStringKey("picture"); + auto* approved_clients = account.FindListKey("approved_clients"); // required fields if (!(account_id && email && name)) return absl::nullopt; - return content::IdentityRequestAccount(*account_id, *email, *name, - given_name ? *given_name : "", - picture ? GURL(*picture) : GURL()); + absl::optional<LoginState> approved_value; + if (approved_clients) { + for (const base::Value& entry : approved_clients->GetList()) { + if (entry.is_string() && entry.GetString() == client_id) { + approved_value = LoginState::kSignIn; + break; + } + } + if (!approved_value) { + // We did get an approved_clients list, but the client ID was not found. + // This means we are certain that the client is not approved; set to + // kSignUp instead of leaving as nullopt. + approved_value = LoginState::kSignUp; + } + } + + return content::IdentityRequestAccount( + *account_id, *email, *name, given_name ? *given_name : "", + picture ? GURL(*picture) : GURL(), approved_value); } // Parses accounts from given Value. Returns true if parse is successful and // adds parsed accounts to the |account_list|. bool ParseAccounts(const base::Value* accounts, - IdpNetworkRequestManager::AccountList& account_list) { + IdpNetworkRequestManager::AccountList& account_list, + const std::string& client_id) { DCHECK(account_list.empty()); if (!accounts->is_list()) return false; @@ -176,7 +197,7 @@ if (!account.is_dict()) return false; - auto parsed_account = ParseAccount(account); + auto parsed_account = ParseAccount(account, client_id); if (parsed_account) account_list.push_back(parsed_account.value()); } @@ -289,11 +310,13 @@ AccountsRequestCallback callback, int idp_brand_icon_ideal_size, int idp_brand_icon_minimum_size, - IdpNetworkRequestManager::BrandIconDownloader idp_brand_icon_downloader) + IdpNetworkRequestManager::BrandIconDownloader idp_brand_icon_downloader, + const std::string& client_id) : callback(std::move(callback)), idp_brand_icon_ideal_size(idp_brand_icon_ideal_size), idp_brand_icon_minimum_size(idp_brand_icon_minimum_size), - idp_brand_icon_downloader(std::move(idp_brand_icon_downloader)) {} + idp_brand_icon_downloader(std::move(idp_brand_icon_downloader)), + client_id(client_id) {} IdpNetworkRequestManager::AccountRequestInfo::~AccountRequestInfo() = default; IdpNetworkRequestManager::AccountRequestInfo::AccountRequestInfo( AccountRequestInfo&&) = default; @@ -375,6 +398,7 @@ int idp_brand_icon_ideal_size, int idp_brand_icon_minimum_size, BrandIconDownloader idp_brand_icon_downloader, + const std::string& client_id, AccountsRequestCallback callback) { DCHECK(!url_loader_); @@ -388,7 +412,7 @@ weak_ptr_factory_.GetWeakPtr(), AccountRequestInfo(std::move(callback), idp_brand_icon_ideal_size, idp_brand_icon_minimum_size, - std::move(idp_brand_icon_downloader))), + std::move(idp_brand_icon_downloader), client_id)), maxResponseSizeInKiB * 1024); } @@ -661,7 +685,8 @@ AccountList account_list; auto& response = *result.value; const base::Value* accounts = response.FindKey(kAccountsKey); - bool accounts_present = accounts && ParseAccounts(accounts, account_list); + bool accounts_present = + accounts && ParseAccounts(accounts, account_list, request_info.client_id); if (!accounts_present) { Fail();
diff --git a/content/browser/webid/idp_network_request_manager.h b/content/browser/webid/idp_network_request_manager.h index 0fe1850..37a4fd12 100644 --- a/content/browser/webid/idp_network_request_manager.h +++ b/content/browser/webid/idp_network_request_manager.h
@@ -155,6 +155,7 @@ int idp_brand_icon_ideal_size, int idp_brand_icon_minimum_size, BrandIconDownloader icon_downloader, + const std::string& client_id, AccountsRequestCallback callback); // Request a new token for this user account and RP from the IDP. @@ -177,7 +178,8 @@ AccountRequestInfo(AccountsRequestCallback callback, int idp_brand_icon_ideal_size, int idp_brand_icon_minimum_size, - BrandIconDownloader idp_brand_icon_downloader); + BrandIconDownloader idp_brand_icon_downloader, + const std::string& client_id); ~AccountRequestInfo(); AccountRequestInfo(AccountRequestInfo&&); @@ -185,6 +187,7 @@ int idp_brand_icon_ideal_size; int idp_brand_icon_minimum_size; BrandIconDownloader idp_brand_icon_downloader; + std::string client_id; }; void OnWellKnownLoaded(std::unique_ptr<std::string> response_body);
diff --git a/content/browser/webid/idp_network_request_manager_unittest.cc b/content/browser/webid/idp_network_request_manager_unittest.cc index 5f1cc74..cf7c4568 100644 --- a/content/browser/webid/idp_network_request_manager_unittest.cc +++ b/content/browser/webid/idp_network_request_manager_unittest.cc
@@ -13,6 +13,7 @@ #include "base/test/bind.h" #include "base/test/task_environment.h" #include "base/values.h" +#include "content/public/browser/identity_request_dialog_controller.h" #include "content/public/browser/manifest_icon_downloader.h" #include "services/data_decoder/public/cpp/test_support/in_process_data_decoder.h" #include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h" @@ -28,6 +29,7 @@ using AccountsRequestCallback = content::IdpNetworkRequestManager::AccountsRequestCallback; using RevokeResponse = content::IdpNetworkRequestManager::RevokeResponse; +using LoginState = content::IdentityRequestAccount::LoginState; namespace content { @@ -61,7 +63,9 @@ } std::tuple<FetchStatus, AccountList, IdentityProviderMetadata> - SendAccountsRequestAndWaitForResponse(const char* test_accounts) { + SendAccountsRequestAndWaitForResponse(const char* test_accounts, + const char* client_id = "", + bool send_id_and_referrer = false) { GURL accounts_endpoint(kTestAccountsEndpoint); test_url_loader_factory().AddResponse(accounts_endpoint.spec(), test_accounts); @@ -83,7 +87,7 @@ kTestIdpBrandIconMinimumSize, base::BindOnce(&IdpNetworkRequestManagerTest::DownloadBitmap, base::Unretained(this)), - std::move(callback)); + client_id, std::move(callback)); run_loop.Run(); return {parsed_accounts_response, parsed_accounts, @@ -665,6 +669,72 @@ EXPECT_EQ(FetchStatus::kSuccess, accounts_response); } +// Verifies that we correctly check the signed-in status. +TEST_F(IdpNetworkRequestManagerTest, AccountSignedInStatus) { + bool called = false; + auto interceptor = + base::BindLambdaForTesting([&](const network::ResourceRequest& request) { + called = true; + EXPECT_EQ(GURL(kTestAccountsEndpoint), request.url); + EXPECT_EQ(request.request_body, nullptr); + EXPECT_FALSE(request.referrer.is_valid()); + }); + test_url_loader_factory().SetInterceptor(interceptor); + + const char test_accounts_json[] = R"({ + "accounts" : [ + { + "sub" : "1", + "email": "ken@idp.test", + "name": "Ken R. Example", + "approved_clients": ["xxx"] + }, + { + "sub" : "2", + "email": "jim@idp.test", + "name": "Jim R. Example", + "approved_clients": [] + }, + { + "sub" : "3", + "email": "rashida@idp.test", + "name": "Rashida R. Example", + "approved_clients": ["yyy"] + }, + { + "sub" : "4", + "email": "wei@idp.test", + "name": "Wei R. Example" + }, + { + "sub" : "5", + "email": "hans@idp.test", + "name": "Hans R. Example", + "approved_clients": ["xxx", "yyy"] + } + ] + })"; + + FetchStatus accounts_response; + AccountList accounts; + IdentityProviderMetadata idp_metadata; + std::tie(accounts_response, accounts, idp_metadata) = + SendAccountsRequestAndWaitForResponse(test_accounts_json, "xxx"); + + EXPECT_TRUE(called); + EXPECT_EQ(FetchStatus::kSuccess, accounts_response); + ASSERT_EQ(5ul, accounts.size()); + ASSERT_TRUE(accounts[0].login_state.has_value()); + EXPECT_EQ(LoginState::kSignIn, *accounts[0].login_state); + ASSERT_TRUE(accounts[1].login_state.has_value()); + EXPECT_EQ(LoginState::kSignUp, *accounts[1].login_state); + ASSERT_TRUE(accounts[2].login_state.has_value()); + EXPECT_EQ(LoginState::kSignUp, *accounts[2].login_state); + EXPECT_FALSE(accounts[3].login_state.has_value()); + ASSERT_TRUE(accounts[4].login_state.has_value()); + EXPECT_EQ(LoginState::kSignIn, *accounts[4].login_state); +} + // Tests the token request implementation. TEST_F(IdpNetworkRequestManagerTest, TokenRequest) { bool called = false;
diff --git a/content/browser/webid/test/mock_idp_network_request_manager.h b/content/browser/webid/test/mock_idp_network_request_manager.h index 4175d2b..b144874 100644 --- a/content/browser/webid/test/mock_idp_network_request_manager.h +++ b/content/browser/webid/test/mock_idp_network_request_manager.h
@@ -28,11 +28,12 @@ FetchClientIdMetadataCallback)); MOCK_METHOD3(SendSigninRequest, void(const GURL&, const std::string&, SigninRequestCallback)); - MOCK_METHOD5(SendAccountsRequest, + MOCK_METHOD6(SendAccountsRequest, void(const GURL&, int, int, BrandIconDownloader, + const std::string&, AccountsRequestCallback)); MOCK_METHOD4(SendTokenRequest, void(const GURL&,
diff --git a/content/public/browser/identity_request_dialog_controller.cc b/content/public/browser/identity_request_dialog_controller.cc index 86fe5694..5f72d93 100644 --- a/content/public/browser/identity_request_dialog_controller.cc +++ b/content/public/browser/identity_request_dialog_controller.cc
@@ -21,12 +21,13 @@ // See https://fetch.spec.whatwg.org/#forbidden-header-name const char kSecFedCmCsrfHeader[] = "Sec-FedCM-CSRF"; -IdentityRequestAccount::IdentityRequestAccount(const std::string& account_id, - const std::string& email, - const std::string& name, - const std::string& given_name, - const GURL& picture, - LoginState login_state) +IdentityRequestAccount::IdentityRequestAccount( + const std::string& account_id, + const std::string& email, + const std::string& name, + const std::string& given_name, + const GURL& picture, + absl::optional<LoginState> login_state) : account_id{account_id}, email{email}, name{name},
diff --git a/content/public/browser/identity_request_dialog_controller.h b/content/public/browser/identity_request_dialog_controller.h index 8a3a573..db7bbe8 100644 --- a/content/public/browser/identity_request_dialog_controller.h +++ b/content/public/browser/identity_request_dialog_controller.h
@@ -46,12 +46,13 @@ kAuto, }; - IdentityRequestAccount(const std::string& account_id, - const std::string& email, - const std::string& name, - const std::string& given_name, - const GURL& picture, - LoginState login_state = LoginState::kSignUp); + IdentityRequestAccount( + const std::string& account_id, + const std::string& email, + const std::string& name, + const std::string& given_name, + const GURL& picture, + absl::optional<LoginState> login_state = absl::nullopt); IdentityRequestAccount(const IdentityRequestAccount&); ~IdentityRequestAccount(); @@ -61,10 +62,9 @@ std::string given_name; GURL picture; - // The account login state. Unlike the other fields this one is not populated - // by the IDP but instead by the browser based on its stored permission - // grants. - LoginState login_state; + // The account login state. Unlike the other fields this one can be populated + // either by the IDP or by the browser based on its stored permission grants. + absl::optional<LoginState> login_state; }; struct ClientIdData {
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index 3ba869f..41c9e09d 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn
@@ -2355,6 +2355,7 @@ "../renderer/skia_benchmarking_extension_unittest.cc", "../renderer/v8_value_converter_impl_unittest.cc", "../renderer/worker/worker_thread_registry_unittest.cc", + "attribution_simulator_input_parser_unittest.cc", "navigation_simulator_unittest.cc", "test_aggregation_service_impl_unittest.cc", "test_render_frame_host_unittest.cc",
diff --git a/content/test/attribution_simulator_input_parser_unittest.cc b/content/test/attribution_simulator_input_parser_unittest.cc new file mode 100644 index 0000000..6038adc --- /dev/null +++ b/content/test/attribution_simulator_input_parser_unittest.cc
@@ -0,0 +1,414 @@ +// Copyright 2022 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/test/attribution_simulator_input_parser.h" + +#include <ostream> +#include <vector> + +#include "base/test/values_test_util.h" +#include "base/time/time.h" +#include "base/values.h" +#include "content/browser/attribution_reporting/attribution_test_utils.h" +#include "content/browser/attribution_reporting/common_source_info.h" +#include "content/browser/attribution_reporting/storable_source.h" +#include "net/base/schemeful_site.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "third_party/abseil-cpp/absl/types/variant.h" +#include "url/gurl.h" +#include "url/origin.h" + +namespace content { + +bool operator==(const AttributionTriggerAndTime& a, + const AttributionTriggerAndTime& b) { + return a.trigger == b.trigger && a.time == b.time; +} + +std::ostream& operator<<(std::ostream& out, + const AttributionTriggerAndTime& t) { + return out << "{time=" << t.time << ",trigger=" << t.trigger << "}"; +} + +namespace { + +using ::testing::ElementsAreArray; +using ::testing::IsEmpty; +using ::testing::SizeIs; + +// Pick an arbitrary offset time to test correct handling. +constexpr base::Time kOffsetTime = base::Time::UnixEpoch() + base::Days(5); + +TEST(AttributionSimulatorInputParserTest, EmptyInputParses) { + const char* const kTestCases[] = { + R"json({})json", + R"json({"sources":[]})json", + R"json({"triggers":[]})json", + }; + + for (const char* json : kTestCases) { + base::Value value = base::test::ParseJson(json); + EXPECT_THAT(ParseAttributionSimulationInputOrExit(value, kOffsetTime), + IsEmpty()) + << json; + } +} + +TEST(AttributionSimulatorInputParserTest, ValidSourceParses) { + constexpr char kJson[] = R"json({"sources": [ + { + "source_type": "navigation", + "source_time": 1643235574, + "reporting_origin": "https://a.r.test", + "source_origin": "https://a.s.test", + "registration_config": { + "source_event_id": "123", + "destination": "https://a.d.test", + "expiry": "864000000", + "priority": "-5" + } + }, + { + "source_type": "event", + "source_time": 1643235573, + "reporting_origin": "https://b.r.test", + "source_origin": "https://b.s.test", + "registration_config": { + "source_event_id": "456", + "destination": "https://b.d.test" + } + }, + { + "source_type": "event", + "source_time": 1643235575, + "reporting_origin": "https://c.r.test", + "source_origin": "https://c.s.test", + "registration_config": { + "source_event_id": "789", + "destination": "https://c.d.test", + "expiry": "864000001" + } + } + ]})json"; + + const AttributionSimulationEvent expected[] = { + SourceBuilder(kOffsetTime + base::Seconds(1643235574)) + .SetSourceType(CommonSourceInfo::SourceType::kNavigation) + .SetReportingOrigin(url::Origin::Create(GURL("https://a.r.test"))) + .SetImpressionOrigin(url::Origin::Create(GURL("https://a.s.test"))) + .SetSourceEventId(123) + .SetConversionOrigin(url::Origin::Create(GURL("https://a.d.test"))) + .SetExpiry(base::Days(10)) + .SetPriority(-5) + .Build(), + SourceBuilder(kOffsetTime + base::Seconds(1643235573)) + .SetSourceType(CommonSourceInfo::SourceType::kEvent) + .SetReportingOrigin(url::Origin::Create(GURL("https://b.r.test"))) + .SetImpressionOrigin(url::Origin::Create(GURL("https://b.s.test"))) + .SetSourceEventId(456) + .SetConversionOrigin(url::Origin::Create(GURL("https://b.d.test"))) + .SetExpiry(base::Days(30)) // default + .SetPriority(0) // default + .Build(), + SourceBuilder(kOffsetTime + base::Seconds(1643235575)) + .SetSourceType(CommonSourceInfo::SourceType::kEvent) + .SetReportingOrigin(url::Origin::Create(GURL("https://c.r.test"))) + .SetImpressionOrigin(url::Origin::Create(GURL("https://c.s.test"))) + .SetSourceEventId(789) + .SetConversionOrigin(url::Origin::Create(GURL("https://c.d.test"))) + .SetExpiry(base::Days(10)) // rounded to whole number of days + .SetPriority(0) // default + .Build(), + }; + + base::Value value = base::test::ParseJson(kJson); + EXPECT_THAT(ParseAttributionSimulationInputOrExit(value, kOffsetTime), + ElementsAreArray(expected)); +} + +TEST(AttributionSimulatorInputParserTest, ValidTriggerParses) { + constexpr char kJson[] = R"json({"triggers": [ + { + "trigger_time": 1643235576, + "reporting_origin": "https://a.r.test", + "destination": " https://a.d1.test", + "registration_config": { + "trigger_data": "10", + "event_source_trigger_data": "3", + "priority": "-5", + "dedup_key": "123" + } + }, + { + "trigger_time": 1643235575, + "reporting_origin": "https://b.r.test", + "destination": " https://a.d2.test", + "registration_config": {} + } + ]})json"; + + const AttributionSimulationEvent expected[] = { + AttributionTriggerAndTime{ + .trigger = TriggerBuilder() + .SetReportingOrigin( + url::Origin::Create(GURL("https://a.r.test"))) + .SetConversionDestination(net::SchemefulSite( + url::Origin::Create(GURL("https://a.d1.test")))) + .SetTriggerData(2) // sanitized to 3 bits + .SetEventSourceTriggerData(1) // sanitized to 1 bit + .SetPriority(-5) + .SetDedupKey(123) + .Build(), + .time = kOffsetTime + base::Seconds(1643235576), + }, + AttributionTriggerAndTime{ + .trigger = TriggerBuilder() + .SetReportingOrigin( + url::Origin::Create(GURL("https://b.r.test"))) + .SetConversionDestination(net::SchemefulSite( + url::Origin::Create(GURL("https://a.d2.test")))) + .SetTriggerData(0) // default + .SetEventSourceTriggerData(0) // default + .SetPriority(0) // default + .SetDedupKey(absl::nullopt) // default + .Build(), + .time = kOffsetTime + base::Seconds(1643235575), + }, + }; + + base::Value value = base::test::ParseJson(kJson); + EXPECT_THAT(ParseAttributionSimulationInputOrExit(value, kOffsetTime), + ElementsAreArray(expected)); +} + +TEST(AttributionSimulatorInputParserTest, ValidSourceAndTriggerParses) { + constexpr char kJson[] = R"json({ + "sources": [{ + "source_type": "event", + "source_time": 1643235573, + "reporting_origin": "https://b.r.test", + "source_origin": "https://b.s.test", + "registration_config": { + "source_event_id": "456", + "destination": "https://b.d.test" + } + }], + "triggers": [{ + "trigger_time": 1643235575, + "reporting_origin": "https://b.r.test", + "destination": " https://a.d2.test", + "registration_config": {} + }] + })json"; + + base::Value value = base::test::ParseJson(kJson); + EXPECT_THAT(ParseAttributionSimulationInputOrExit(value, kOffsetTime), + SizeIs(2)); +} + +struct DeathTestCase { + const char* expected_failure; + const char* json; +}; + +// Death tests are slow, so use a parameterized test fixture instead of a loop +// over test cases so that incremental progress is made and tests can be +// parallelized. +class AttributionSimulatorInputParserDeathTest + : public testing::TestWithParam<DeathTestCase> {}; + +TEST_P(AttributionSimulatorInputParserDeathTest, InvalidInputExits) { + const DeathTestCase& test_case = GetParam(); + EXPECT_DEATH_IF_SUPPORTED( + { + base::Value value = base::test::ParseJson(test_case.json); + ParseAttributionSimulationInputOrExit(value, kOffsetTime); + }, + test_case.expected_failure); +} + +const DeathTestCase kSourceDeathTestCases[] = { + { + "key not found: source_type", + R"json({"sources": [{ + "source_time": 1643235574, + "reporting_origin": "https://a.r.test", + "source_origin": "https://a.s.test", + "registration_config": { + "source_event_id": "123", + "destination": "https://a.d.test" + } + }]})json", + }, + { + "key not found: source_time", + R"json({"sources": [{ + "source_type": "navigation", + "reporting_origin": "https://a.r.test", + "source_origin": "https://a.s.test", + "registration_config": { + "source_event_id": "123", + "destination": "https://a.d.test" + } + }]})json", + }, + { + "key not found: reporting_origin", + R"json({"sources": [{ + "source_type": "navigation", + "source_time": 1643235574, + "source_origin": "https://a.s.test", + "registration_config": { + "source_event_id": "123", + "destination": "https://a.d.test" + } + }]})json", + }, + { + "key not found: source_origin", + R"json({"sources": [{ + "source_type": "navigation", + "source_time": 1643235574, + "reporting_origin": "https://a.s.test", + "registration_config": { + "source_event_id": "123", + "destination": "https://a.d.test" + } + }]})json", + }, + { + "key not found: registration_config", + R"json({"sources": [{ + "source_type": "navigation", + "source_time": 1643235574, + "reporting_origin": "https://a.r.test", + "source_origin": "https://a.s.test" + }]})json", + }, + { + "key not found: source_event_id", + R"json({"sources": [{ + "source_type": "navigation", + "source_time": 1643235574, + "reporting_origin": "https://a.r.test", + "source_origin": "https://a.s.test", + "registration_config": { + "destination": "https://a.d.test" + } + }]})json", + }, + { + "key not found: destination", + R"json({"sources": [{ + "source_type": "navigation", + "source_time": 1643235574, + "reporting_origin": "https://a.r.test", + "source_origin": "https://a.s.test", + "registration_config": { + "source_event_id": "123", + } + }]})json", + }, + { + "invalid source type: NAVIGATION", + R"json({"sources": [{ + "source_type": "NAVIGATION", + "source_time": 1643235574, + "reporting_origin": "https://a.r.test", + "source_origin": "https://a.s.test", + "registration_config": { + "source_event_id": "123", + "destination": "https://a.d.test" + } + }]})json", + }, + { + "expiry must be >= 0: -5", + R"json({"sources": [{ + "source_type": "navigation", + "source_time": 1643235574, + "reporting_origin": "https://a.r.test", + "source_origin": "https://a.s.test", + "registration_config": { + "source_event_id": "123", + "destination": "https://a.d.test", + "expiry": "-5" + } + }]})json", + }, + { + "invalid int64: x", + R"json({"sources": [{ + "source_type": "navigation", + "source_time": 1643235574, + "reporting_origin": "https://a.r.test", + "source_origin": "https://a.s.test", + "registration_config": { + "source_event_id": "123", + "destination": "https://a.d.test", + "priority": "x" + } + }]})json", + }, + { + "invalid uint64: x", + R"json({"sources": [{ + "source_type": "navigation", + "source_time": 1643235574, + "reporting_origin": "https://a.r.test", + "source_origin": "https://a.s.test", + "registration_config": { + "source_event_id": "x", + "destination": "https://a.d.test", + } + }]})json", + }, +}; + +INSTANTIATE_TEST_SUITE_P(AttributionSimulatorInputParserInvalidSources, + AttributionSimulatorInputParserDeathTest, + ::testing::ValuesIn(kSourceDeathTestCases)); + +const DeathTestCase kTriggerDeathTestCases[] = { + { + "key not found: registration_config", + R"json({"triggers": [{ + "trigger_time": 1643235576, + "reporting_origin": "https://a.r.test", + "destination": " https://a.d1.test", + }]})json", + }, + { + "key not found: trigger_time", + R"json({"triggers": [{ + "reporting_origin": "https://a.r.test", + "destination": " https://a.d1.test", + "registration_config": {} + }]})json", + }, + { + "key not found: destination", + R"json({"triggers": [{ + "trigger_time": 1643235576, + "reporting_origin": "https://a.r.test", + "registration_config": {} + }]})json", + }, + { + "key not found: reporting_origin", + R"json({"triggers": [{ + "trigger_time": 1643235576, + "destination": " https://a.d1.test", + "registration_config": {} + }]})json", + }, +}; + +INSTANTIATE_TEST_SUITE_P(AttributionSimulatorInputParserInvalidTriggers, + AttributionSimulatorInputParserDeathTest, + ::testing::ValuesIn(kTriggerDeathTestCases)); + +} // namespace +} // namespace content
diff --git a/content/test/data/accessibility/html/label-for-hidden-input-expected-auralinux.txt b/content/test/data/accessibility/html/label-for-hidden-input-expected-auralinux.txt new file mode 100644 index 0000000..2de6734 --- /dev/null +++ b/content/test/data/accessibility/html/label-for-hidden-input-expected-auralinux.txt
@@ -0,0 +1,4 @@ +[document web] +++[section] +++++[label] +++++++[static] name='This label should be visible'
diff --git a/content/test/data/accessibility/html/label-for-hidden-input-expected-blink.txt b/content/test/data/accessibility/html/label-for-hidden-input-expected-blink.txt new file mode 100644 index 0000000..251a3ce --- /dev/null +++ b/content/test/data/accessibility/html/label-for-hidden-input-expected-blink.txt
@@ -0,0 +1,7 @@ +rootWebArea +++genericContainer ignored +++++genericContainer +++++++labelText +++++++++staticText name='This label should be visible' +++++++++++inlineTextBox name='This label should be visible' +++++++checkBox ignored invisible
diff --git a/content/test/data/accessibility/html/label-for-hidden-input.html b/content/test/data/accessibility/html/label-for-hidden-input.html new file mode 100644 index 0000000..45b7382 --- /dev/null +++ b/content/test/data/accessibility/html/label-for-hidden-input.html
@@ -0,0 +1,6 @@ +<html> +<body> +<label for="hiddenInput">This label should be visible</label> +<input type="checkbox" id="hiddenInput" style="display: none;"/> +</body> +</html>
diff --git a/content/test/data/accessibility/mac/attributes/ax-access-key-expected.txt b/content/test/data/accessibility/mac/attributes/ax-access-key-expected.txt index 8c8e0bb..528ce1eb 100644 --- a/content/test/data/accessibility/mac/attributes/ax-access-key-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-access-key-expected.txt
@@ -1,4 +1,8 @@ -focusable.AXAccessKey='s' -restriction.AXAccessKey='s' -invalid.AXAccessKey=n/a -not_applicable.AXAccessKey=n/a +focusable.accessibilityAttributeNames.has(AXAccessKey)='yes' +focusable.accessibilityAttributeValue(AXAccessKey)='s' +restriction.accessibilityAttributeNames.has(AXAccessKey)='yes' +restriction.accessibilityAttributeValue(AXAccessKey)='s' +invalid.accessibilityAttributeNames.has(AXAccessKey)='no' +invalid.accessibilityAttributeValue(AXAccessKey)='s' +not_applicable.accessibilityAttributeNames.has(AXAccessKey)='no' +not_applicable.accessibilityAttributeValue(AXAccessKey)='s'
diff --git a/content/test/data/accessibility/mac/attributes/ax-access-key.html b/content/test/data/accessibility/mac/attributes/ax-access-key.html index b11ac16..b80f9fa 100644 --- a/content/test/data/accessibility/mac/attributes/ax-access-key.html +++ b/content/test/data/accessibility/mac/attributes/ax-access-key.html
@@ -1,9 +1,13 @@ <!-- @SCRIPT: - focusable.AXAccessKey - restriction.AXAccessKey - invalid.AXAccessKey - not_applicable.AXAccessKey + focusable.accessibilityAttributeNames.has(AXAccessKey) + focusable.accessibilityAttributeValue(AXAccessKey) + restriction.accessibilityAttributeNames.has(AXAccessKey) + restriction.accessibilityAttributeValue(AXAccessKey) + invalid.accessibilityAttributeNames.has(AXAccessKey) + invalid.accessibilityAttributeValue(AXAccessKey) + not_applicable.accessibilityAttributeNames.has(AXAccessKey) + not_applicable.accessibilityAttributeValue(AXAccessKey) --> <!DOCTYPE html> <input id="focusable" accesskey="s">
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-atomic-expected.txt b/content/test/data/accessibility/mac/attributes/ax-aria-atomic-expected.txt index ab0b1180..a56c0b71 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-atomic-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-aria-atomic-expected.txt
@@ -1,3 +1,6 @@ -true.AXARIAAtomic=1 -false.AXARIAAtomic=0 -none.AXARIAAtomic=0 +true.accessibilityAttributeNames.has(AXARIAAtomic)='yes' +true.accessibilityAttributeValue(AXARIAAtomic)=1 +false.accessibilityAttributeNames.has(AXARIAAtomic)='yes' +false.accessibilityAttributeValue(AXARIAAtomic)=0 +none.accessibilityAttributeNames.has(AXARIAAtomic)='yes' +none.accessibilityAttributeValue(AXARIAAtomic)=0
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-atomic.html b/content/test/data/accessibility/mac/attributes/ax-aria-atomic.html index 0697a13..6698bd27 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-atomic.html +++ b/content/test/data/accessibility/mac/attributes/ax-aria-atomic.html
@@ -1,8 +1,11 @@ <!-- @SCRIPT: - true.AXARIAAtomic - false.AXARIAAtomic - none.AXARIAAtomic + true.accessibilityAttributeNames.has(AXARIAAtomic) + true.accessibilityAttributeValue(AXARIAAtomic) + false.accessibilityAttributeNames.has(AXARIAAtomic) + false.accessibilityAttributeValue(AXARIAAtomic) + none.accessibilityAttributeNames.has(AXARIAAtomic) + none.accessibilityAttributeValue(AXARIAAtomic) --> <!DOCTYPE html> <div id="true" aria-atomic="true" aria-live="polite"></div>
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-busy-expected.txt b/content/test/data/accessibility/mac/attributes/ax-aria-busy-expected.txt index 8cde68d..7c7bccdc 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-busy-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-aria-busy-expected.txt
@@ -1,3 +1,6 @@ -true.AXARIABusy=1 -false.AXARIABusy=n/a -none.AXARIABusy=n/a +true.accessibilityAttributeNames.has(AXARIABusy)='yes' +true.accessibilityAttributeValue(AXARIABusy)=1 +false.accessibilityAttributeNames.has(AXARIABusy)='no' +false.accessibilityAttributeValue(AXARIABusy)=0 +none.accessibilityAttributeNames.has(AXARIABusy)='no' +none.accessibilityAttributeValue(AXARIABusy)=0
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-busy.html b/content/test/data/accessibility/mac/attributes/ax-aria-busy.html index e009441..f57e315 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-busy.html +++ b/content/test/data/accessibility/mac/attributes/ax-aria-busy.html
@@ -1,8 +1,11 @@ <!-- @SCRIPT: - true.AXARIABusy - false.AXARIABusy - none.AXARIABusy + true.accessibilityAttributeNames.has(AXARIABusy) + true.accessibilityAttributeValue(AXARIABusy) + false.accessibilityAttributeNames.has(AXARIABusy) + false.accessibilityAttributeValue(AXARIABusy) + none.accessibilityAttributeNames.has(AXARIABusy) + none.accessibilityAttributeValue(AXARIABusy) --> <!DOCTYPE html> <div id="true" aria-busy="true"></div>
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-column-count-expected.txt b/content/test/data/accessibility/mac/attributes/ax-aria-column-count-expected.txt index 4b3cfd75..efacc35 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-column-count-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-aria-column-count-expected.txt
@@ -1,3 +1,6 @@ -tableAuto.AXARIAColumnCount=1 -table.AXARIAColumnCount=2 -div.AXARIAColumnCount=n/a +tableAuto.accessibilityAttributeNames.has(AXARIAColumnCount)='yes' +tableAuto.accessibilityAttributeValue(AXARIAColumnCount)=1 +table.accessibilityAttributeNames.has(AXARIAColumnCount)='yes' +table.accessibilityAttributeValue(AXARIAColumnCount)=2 +div.accessibilityAttributeNames.has(AXARIAColumnCount)='no' +div.accessibilityAttributeValue(AXARIAColumnCount)=NULL
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-column-count.html b/content/test/data/accessibility/mac/attributes/ax-aria-column-count.html index 412d122..abcaac5a 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-column-count.html +++ b/content/test/data/accessibility/mac/attributes/ax-aria-column-count.html
@@ -1,8 +1,11 @@ <!-- @SCRIPT: - tableAuto.AXARIAColumnCount - table.AXARIAColumnCount - div.AXARIAColumnCount + tableAuto.accessibilityAttributeNames.has(AXARIAColumnCount) + tableAuto.accessibilityAttributeValue(AXARIAColumnCount) + table.accessibilityAttributeNames.has(AXARIAColumnCount) + table.accessibilityAttributeValue(AXARIAColumnCount) + div.accessibilityAttributeNames.has(AXARIAColumnCount) + div.accessibilityAttributeValue(AXARIAColumnCount) --> <!DOCTYPE html> <div id="tableAuto" role="table">
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-column-index-expected.txt b/content/test/data/accessibility/mac/attributes/ax-aria-column-index-expected.txt index e8ba353..e1e9a1f 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-column-index-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-aria-column-index-expected.txt
@@ -1,3 +1,6 @@ -tableCellAuto.AXARIAColumnIndex=1 -tableCell.AXARIAColumnIndex=2 -div.AXARIAColumnIndex=n/a +tableCellAuto.accessibilityAttributeNames.has(AXARIAColumnIndex)='yes' +tableCellAuto.accessibilityAttributeValue(AXARIAColumnIndex)=1 +tableCell.accessibilityAttributeNames.has(AXARIAColumnIndex)='yes' +tableCell.accessibilityAttributeValue(AXARIAColumnIndex)=2 +div.accessibilityAttributeNames.has(AXARIAColumnIndex)='no' +div.accessibilityAttributeValue(AXARIAColumnIndex)=NULL
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-column-index.html b/content/test/data/accessibility/mac/attributes/ax-aria-column-index.html index ff26eb1..9d7ef02e 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-column-index.html +++ b/content/test/data/accessibility/mac/attributes/ax-aria-column-index.html
@@ -1,8 +1,11 @@ <!-- @SCRIPT: - tableCellAuto.AXARIAColumnIndex - tableCell.AXARIAColumnIndex - div.AXARIAColumnIndex + tableCellAuto.accessibilityAttributeNames.has(AXARIAColumnIndex) + tableCellAuto.accessibilityAttributeValue(AXARIAColumnIndex) + tableCell.accessibilityAttributeNames.has(AXARIAColumnIndex) + tableCell.accessibilityAttributeValue(AXARIAColumnIndex) + div.accessibilityAttributeNames.has(AXARIAColumnIndex) + div.accessibilityAttributeValue(AXARIAColumnIndex) --> <!DOCTYPE html> <div role="table">
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-current-expected.txt b/content/test/data/accessibility/mac/attributes/ax-aria-current-expected.txt index 4b0a7e7d..6525476 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-current-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-aria-current-expected.txt
@@ -1,8 +1,16 @@ -page.AXARIACurrent='page' -step.AXARIACurrent='step' -location.AXARIACurrent='location' -date.AXARIACurrent='date' -time.AXARIACurrent='time' -true.AXARIACurrent='true' -false.AXARIACurrent='false' -none.AXARIACurrent=n/a +page.accessibilityAttributeNames.has(AXARIACurrent)='yes' +page.accessibilityAttributeValue(AXARIACurrent)='page' +step.accessibilityAttributeNames.has(AXARIACurrent)='yes' +step.accessibilityAttributeValue(AXARIACurrent)='step' +location.accessibilityAttributeNames.has(AXARIACurrent)='yes' +location.accessibilityAttributeValue(AXARIACurrent)='location' +date.accessibilityAttributeNames.has(AXARIACurrent)='yes' +date.accessibilityAttributeValue(AXARIACurrent)='date' +time.accessibilityAttributeNames.has(AXARIACurrent)='yes' +time.accessibilityAttributeValue(AXARIACurrent)='time' +true.accessibilityAttributeNames.has(AXARIACurrent)='yes' +true.accessibilityAttributeValue(AXARIACurrent)='true' +false.accessibilityAttributeNames.has(AXARIACurrent)='yes' +false.accessibilityAttributeValue(AXARIACurrent)='false' +none.accessibilityAttributeNames.has(AXARIACurrent)='no' +none.accessibilityAttributeValue(AXARIACurrent)=NULL
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-current.html b/content/test/data/accessibility/mac/attributes/ax-aria-current.html index 2198e632..156228f 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-current.html +++ b/content/test/data/accessibility/mac/attributes/ax-aria-current.html
@@ -1,13 +1,21 @@ <!-- @SCRIPT: - page.AXARIACurrent - step.AXARIACurrent - location.AXARIACurrent - date.AXARIACurrent - time.AXARIACurrent - true.AXARIACurrent - false.AXARIACurrent - none.AXARIACurrent + page.accessibilityAttributeNames.has(AXARIACurrent) + page.accessibilityAttributeValue(AXARIACurrent) + step.accessibilityAttributeNames.has(AXARIACurrent) + step.accessibilityAttributeValue(AXARIACurrent) + location.accessibilityAttributeNames.has(AXARIACurrent) + location.accessibilityAttributeValue(AXARIACurrent) + date.accessibilityAttributeNames.has(AXARIACurrent) + date.accessibilityAttributeValue(AXARIACurrent) + time.accessibilityAttributeNames.has(AXARIACurrent) + time.accessibilityAttributeValue(AXARIACurrent) + true.accessibilityAttributeNames.has(AXARIACurrent) + true.accessibilityAttributeValue(AXARIACurrent) + false.accessibilityAttributeNames.has(AXARIACurrent) + false.accessibilityAttributeValue(AXARIACurrent) + none.accessibilityAttributeNames.has(AXARIACurrent) + none.accessibilityAttributeValue(AXARIACurrent) --> <!DOCTYPE html> <div id="page" aria-current="page"></div>
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-live-expected.txt b/content/test/data/accessibility/mac/attributes/ax-aria-live-expected.txt index 6e6a20fd..df7a719 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-live-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-aria-live-expected.txt
@@ -1 +1,2 @@ -div.AXARIALive='polite' +div.accessibilityAttributeNames.has(AXARIALive)='yes' +div.accessibilityAttributeValue(AXARIALive)='polite'
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-live.html b/content/test/data/accessibility/mac/attributes/ax-aria-live.html index cff4cb2..21dbbf3 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-live.html +++ b/content/test/data/accessibility/mac/attributes/ax-aria-live.html
@@ -1,6 +1,7 @@ <!-- @SCRIPT: - div.AXARIALive + div.accessibilityAttributeNames.has(AXARIALive) + div.accessibilityAttributeValue(AXARIALive) --> <!DOCTYPE html> <div id="div" aria-live="polite"></div>
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-pos-in-set-expected.txt b/content/test/data/accessibility/mac/attributes/ax-aria-pos-in-set-expected.txt index 066fb4a7..c4dc4a71 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-pos-in-set-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-aria-pos-in-set-expected.txt
@@ -1,3 +1,6 @@ -item_numeric.AXARIAPosInSet=1 -item_null.AXARIAPosInSet=NULL -not_applicable.AXARIAPosInSet=n/a +item_numeric.accessibilityAttributeNames.has(AXARIAPosInSet)='yes' +item_numeric.accessibilityAttributeValue(AXARIAPosInSet)=1 +item_null.accessibilityAttributeNames.has(AXARIAPosInSet)='yes' +item_null.accessibilityAttributeValue(AXARIAPosInSet)=NULL +not_applicable.accessibilityAttributeNames.has(AXARIAPosInSet)='no' +not_applicable.accessibilityAttributeValue(AXARIAPosInSet)=NULL
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-pos-in-set.html b/content/test/data/accessibility/mac/attributes/ax-aria-pos-in-set.html index 73303d9..f0bc438f 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-pos-in-set.html +++ b/content/test/data/accessibility/mac/attributes/ax-aria-pos-in-set.html
@@ -1,8 +1,11 @@ <!-- @SCRIPT: - item_numeric.AXARIAPosInSet - item_null.AXARIAPosInSet - not_applicable.AXARIAPosInSet + item_numeric.accessibilityAttributeNames.has(AXARIAPosInSet) + item_numeric.accessibilityAttributeValue(AXARIAPosInSet) + item_null.accessibilityAttributeNames.has(AXARIAPosInSet) + item_null.accessibilityAttributeValue(AXARIAPosInSet) + not_applicable.accessibilityAttributeNames.has(AXARIAPosInSet) + not_applicable.accessibilityAttributeValue(AXARIAPosInSet) --> <!DOCTYPE html> <ul role="menu">
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-relevant-expected.txt b/content/test/data/accessibility/mac/attributes/ax-aria-relevant-expected.txt index 7c31568..41ed03d 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-relevant-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-aria-relevant-expected.txt
@@ -1 +1,2 @@ -div.AXARIARelevant='additions' +div.accessibilityAttributeNames.has(AXARIARelevant)='yes' +div.accessibilityAttributeValue(AXARIARelevant)='additions'
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-relevant.html b/content/test/data/accessibility/mac/attributes/ax-aria-relevant.html index 222af64e..133aaad 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-relevant.html +++ b/content/test/data/accessibility/mac/attributes/ax-aria-relevant.html
@@ -1,6 +1,7 @@ <!-- @SCRIPT: - div.AXARIARelevant + div.accessibilityAttributeNames.has(AXARIARelevant) + div.accessibilityAttributeValue(AXARIARelevant) --> <!DOCTYPE html> <div id="div" aria-relevant="additions" aria-live="polite"></div>
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-row-count-expected.txt b/content/test/data/accessibility/mac/attributes/ax-aria-row-count-expected.txt index b12658f..a8946fb1f 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-row-count-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-aria-row-count-expected.txt
@@ -1,3 +1,6 @@ -tableAuto.AXARIARowCount=1 -table.AXARIARowCount=2 -div.AXARIARowCount=n/a +tableAuto.accessibilityAttributeNames.has(AXARIARowCount)='yes' +tableAuto.accessibilityAttributeValue(AXARIARowCount)=1 +table.accessibilityAttributeNames.has(AXARIARowCount)='yes' +table.accessibilityAttributeValue(AXARIARowCount)=2 +div.accessibilityAttributeNames.has(AXARIARowCount)='no' +div.accessibilityAttributeValue(AXARIARowCount)=NULL
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-row-count.html b/content/test/data/accessibility/mac/attributes/ax-aria-row-count.html index 66da683..1aa9b75 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-row-count.html +++ b/content/test/data/accessibility/mac/attributes/ax-aria-row-count.html
@@ -1,8 +1,11 @@ <!-- @SCRIPT: - tableAuto.AXARIARowCount - table.AXARIARowCount - div.AXARIARowCount + tableAuto.accessibilityAttributeNames.has(AXARIARowCount) + tableAuto.accessibilityAttributeValue(AXARIARowCount) + table.accessibilityAttributeNames.has(AXARIARowCount) + table.accessibilityAttributeValue(AXARIARowCount) + div.accessibilityAttributeNames.has(AXARIARowCount) + div.accessibilityAttributeValue(AXARIARowCount) --> <!DOCTYPE html> <div id="tableAuto" role="table">
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-row-index-expected.txt b/content/test/data/accessibility/mac/attributes/ax-aria-row-index-expected.txt index 882e4971..d9ff599 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-row-index-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-aria-row-index-expected.txt
@@ -1,3 +1,6 @@ -tableCellAuto.AXARIARowIndex=1 -tableCell.AXARIARowIndex=2 -div.AXARIARowIndex=n/a +tableCellAuto.accessibilityAttributeNames.has(AXARIARowIndex)='yes' +tableCellAuto.accessibilityAttributeValue(AXARIARowIndex)=1 +tableCell.accessibilityAttributeNames.has(AXARIARowIndex)='yes' +tableCell.accessibilityAttributeValue(AXARIARowIndex)=2 +div.accessibilityAttributeNames.has(AXARIARowIndex)='no' +div.accessibilityAttributeValue(AXARIARowIndex)=NULL
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-row-index.html b/content/test/data/accessibility/mac/attributes/ax-aria-row-index.html index fbbba1d..4e96eeb2 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-row-index.html +++ b/content/test/data/accessibility/mac/attributes/ax-aria-row-index.html
@@ -1,8 +1,11 @@ <!-- @SCRIPT: - tableCellAuto.AXARIARowIndex - tableCell.AXARIARowIndex - div.AXARIARowIndex + tableCellAuto.accessibilityAttributeNames.has(AXARIARowIndex) + tableCellAuto.accessibilityAttributeValue(AXARIARowIndex) + tableCell.accessibilityAttributeNames.has(AXARIARowIndex) + tableCell.accessibilityAttributeValue(AXARIARowIndex) + div.accessibilityAttributeNames.has(AXARIARowIndex) + div.accessibilityAttributeValue(AXARIARowIndex) --> <!DOCTYPE html> <div role="table">
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-set-size-expected.txt b/content/test/data/accessibility/mac/attributes/ax-aria-set-size-expected.txt index 31ca647..322e09d7 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-set-size-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-aria-set-size-expected.txt
@@ -1,4 +1,8 @@ -item_numeric.AXARIASetSize=3 -item_null.AXARIASetSize=NULL -set_null.AXARIASetSize=NULL -not_applicable.AXARIASetSize=n/a +item_numeric.accessibilityAttributeNames.has(AXARIASetSize)='yes' +item_numeric.accessibilityAttributeValue(AXARIASetSize)=3 +item_null.accessibilityAttributeNames.has(AXARIASetSize)='yes' +item_null.accessibilityAttributeValue(AXARIASetSize)=NULL +set_null.accessibilityAttributeNames.has(AXARIASetSize)='yes' +set_null.accessibilityAttributeValue(AXARIASetSize)=NULL +not_applicable.accessibilityAttributeNames.has(AXARIASetSize)='no' +not_applicable.accessibilityAttributeValue(AXARIASetSize)=NULL
diff --git a/content/test/data/accessibility/mac/attributes/ax-aria-set-size.html b/content/test/data/accessibility/mac/attributes/ax-aria-set-size.html index 22c4ab7..c54ad7a 100644 --- a/content/test/data/accessibility/mac/attributes/ax-aria-set-size.html +++ b/content/test/data/accessibility/mac/attributes/ax-aria-set-size.html
@@ -1,9 +1,13 @@ <!-- @SCRIPT: - item_numeric.AXARIASetSize - item_null.AXARIASetSize - set_null.AXARIASetSize - not_applicable.AXARIASetSize + item_numeric.accessibilityAttributeNames.has(AXARIASetSize) + item_numeric.accessibilityAttributeValue(AXARIASetSize) + item_null.accessibilityAttributeNames.has(AXARIASetSize) + item_null.accessibilityAttributeValue(AXARIASetSize) + set_null.accessibilityAttributeNames.has(AXARIASetSize) + set_null.accessibilityAttributeValue(AXARIASetSize) + not_applicable.accessibilityAttributeNames.has(AXARIASetSize) + not_applicable.accessibilityAttributeValue(AXARIASetSize) --> <!DOCTYPE html> <ul role="menu">
diff --git a/content/test/data/accessibility/mac/attributes/ax-autocomplete-value-expected.txt b/content/test/data/accessibility/mac/attributes/ax-autocomplete-value-expected.txt index d4db4044..79aeb2e 100644 --- a/content/test/data/accessibility/mac/attributes/ax-autocomplete-value-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-autocomplete-value-expected.txt
@@ -1,2 +1,4 @@ -autocomplete.AXAutocompleteValue='list' -not_applicable.AXAutocompleteValue=n/a +autocomplete.accessibilityAttributeNames.has(AXAutocompleteValue)='yes' +autocomplete.accessibilityAttributeValue(AXAutocompleteValue)='list' +not_applicable.accessibilityAttributeNames.has(AXAutocompleteValue)='no' +not_applicable.accessibilityAttributeValue(AXAutocompleteValue)=NULL
diff --git a/content/test/data/accessibility/mac/attributes/ax-autocomplete-value.html b/content/test/data/accessibility/mac/attributes/ax-autocomplete-value.html index 941faf84..9fb34100 100644 --- a/content/test/data/accessibility/mac/attributes/ax-autocomplete-value.html +++ b/content/test/data/accessibility/mac/attributes/ax-autocomplete-value.html
@@ -1,7 +1,9 @@ <!-- @SCRIPT: - autocomplete.AXAutocompleteValue - not_applicable.AXAutocompleteValue + autocomplete.accessibilityAttributeNames.has(AXAutocompleteValue) + autocomplete.accessibilityAttributeValue(AXAutocompleteValue) + not_applicable.accessibilityAttributeNames.has(AXAutocompleteValue) + not_applicable.accessibilityAttributeValue(AXAutocompleteValue) --> <!DOCTYPE html> <input id="autocomplete" aria-autocomplete="list">
diff --git a/content/test/data/accessibility/mac/attributes/ax-block-quote-level-expected.txt b/content/test/data/accessibility/mac/attributes/ax-block-quote-level-expected.txt index 028c91e..d14562bf 100644 --- a/content/test/data/accessibility/mac/attributes/ax-block-quote-level-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-block-quote-level-expected.txt
@@ -1,2 +1,4 @@ -level_one.AXBlockQuoteLevel=1 -not_applicable.AXBlockQuoteLevel=0 +level_one.accessibilityAttributeNames.has(AXBlockQuoteLevel)='yes' +level_one.accessibilityAttributeValue(AXBlockQuoteLevel)=1 +not_applicable.accessibilityAttributeNames.has(AXBlockQuoteLevel)='yes' +not_applicable.accessibilityAttributeValue(AXBlockQuoteLevel)=0
diff --git a/content/test/data/accessibility/mac/attributes/ax-block-quote-level.html b/content/test/data/accessibility/mac/attributes/ax-block-quote-level.html index 85c6749..7159314 100644 --- a/content/test/data/accessibility/mac/attributes/ax-block-quote-level.html +++ b/content/test/data/accessibility/mac/attributes/ax-block-quote-level.html
@@ -1,7 +1,9 @@ <!-- @SCRIPT: - level_one.AXBlockQuoteLevel - not_applicable.AXBlockQuoteLevel + level_one.accessibilityAttributeNames.has(AXBlockQuoteLevel) + level_one.accessibilityAttributeValue(AXBlockQuoteLevel) + not_applicable.accessibilityAttributeNames.has(AXBlockQuoteLevel) + not_applicable.accessibilityAttributeValue(AXBlockQuoteLevel) --> <!DOCTYPE html> <blockquote id="level_one"></blockquote>
diff --git a/content/test/data/accessibility/mac/attributes/ax-column-header-ui-elements-expected.txt b/content/test/data/accessibility/mac/attributes/ax-column-header-ui-elements-expected.txt index baa0948..ad3601a7 100644 --- a/content/test/data/accessibility/mac/attributes/ax-column-header-ui-elements-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-column-header-ui-elements-expected.txt
@@ -1,3 +1,6 @@ -table.AXColumnHeaderUIElements=[:4] -cell.AXColumnHeaderUIElements=[:4] -columnheader.AXColumnHeaderUIElements=n/a +table.accessibilityAttributeNames.has(AXColumnHeaderUIElements)='yes' +table.accessibilityAttributeValue(AXColumnHeaderUIElements)=[:4] +cell.accessibilityAttributeNames.has(AXColumnHeaderUIElements)='yes' +cell.accessibilityAttributeValue(AXColumnHeaderUIElements)=[:4] +columnheader.accessibilityAttributeNames.has(AXColumnHeaderUIElements)='no' +columnheader.accessibilityAttributeValue(AXColumnHeaderUIElements)=[:4]
diff --git a/content/test/data/accessibility/mac/attributes/ax-column-header-ui-elements.html b/content/test/data/accessibility/mac/attributes/ax-column-header-ui-elements.html index 93aec053..77ecf60f 100644 --- a/content/test/data/accessibility/mac/attributes/ax-column-header-ui-elements.html +++ b/content/test/data/accessibility/mac/attributes/ax-column-header-ui-elements.html
@@ -1,8 +1,11 @@ <!-- @SCRIPT: - table.AXColumnHeaderUIElements - cell.AXColumnHeaderUIElements - columnheader.AXColumnHeaderUIElements + table.accessibilityAttributeNames.has(AXColumnHeaderUIElements) + table.accessibilityAttributeValue(AXColumnHeaderUIElements) + cell.accessibilityAttributeNames.has(AXColumnHeaderUIElements) + cell.accessibilityAttributeValue(AXColumnHeaderUIElements) + columnheader.accessibilityAttributeNames.has(AXColumnHeaderUIElements) + columnheader.accessibilityAttributeValue(AXColumnHeaderUIElements) --> <!DOCTYPE html> <table id="table" border=1>
diff --git a/content/test/data/accessibility/mac/attributes/ax-details-elements-expected.txt b/content/test/data/accessibility/mac/attributes/ax-details-elements-expected.txt index 8967937..4e41537 100644 --- a/content/test/data/accessibility/mac/attributes/ax-details-elements-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-details-elements-expected.txt
@@ -1,2 +1,4 @@ -details.AXDetailsElements=[:4, :6] -none.AXDetailsElements=n/a +details.accessibilityAttributeNames.has(AXDetailsElements)='yes' +details.accessibilityAttributeValue(AXDetailsElements)=[:4, :6] +none.accessibilityAttributeNames.has(AXDetailsElements)='no' +none.accessibilityAttributeValue(AXDetailsElements)=NULL
diff --git a/content/test/data/accessibility/mac/attributes/ax-details-elements.html b/content/test/data/accessibility/mac/attributes/ax-details-elements.html index d12c6ed..5c9e789 100644 --- a/content/test/data/accessibility/mac/attributes/ax-details-elements.html +++ b/content/test/data/accessibility/mac/attributes/ax-details-elements.html
@@ -1,7 +1,9 @@ <!-- @SCRIPT: - details.AXDetailsElements - none.AXDetailsElements + details.accessibilityAttributeNames.has(AXDetailsElements) + details.accessibilityAttributeValue(AXDetailsElements) + none.accessibilityAttributeNames.has(AXDetailsElements) + none.accessibilityAttributeValue(AXDetailsElements) --> <!DOCTYPE html> <div id="details" aria-details="comment1 comment2"></div>
diff --git a/content/test/data/accessibility/mac/attributes/ax-dom-class-list-expected.txt b/content/test/data/accessibility/mac/attributes/ax-dom-class-list-expected.txt index 7e625a3..ccf6f7f7 100644 --- a/content/test/data/accessibility/mac/attributes/ax-dom-class-list-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-dom-class-list-expected.txt
@@ -1,2 +1,4 @@ -class_list.AXDOMClassList=['firstclass', 'secondclass'] -empty.AXDOMClassList=[] +class_list.accessibilityAttributeNames.has(AXDOMClassList)='yes' +class_list.accessibilityAttributeValue(AXDOMClassList)=['firstclass', 'secondclass'] +empty.accessibilityAttributeNames.has(AXDOMClassList)='yes' +empty.accessibilityAttributeValue(AXDOMClassList)=[]
diff --git a/content/test/data/accessibility/mac/attributes/ax-dom-class-list.html b/content/test/data/accessibility/mac/attributes/ax-dom-class-list.html index 810f228c..e28b658 100644 --- a/content/test/data/accessibility/mac/attributes/ax-dom-class-list.html +++ b/content/test/data/accessibility/mac/attributes/ax-dom-class-list.html
@@ -1,7 +1,9 @@ <!-- @SCRIPT: - class_list.AXDOMClassList - empty.AXDOMClassList + class_list.accessibilityAttributeNames.has(AXDOMClassList) + class_list.accessibilityAttributeValue(AXDOMClassList) + empty.accessibilityAttributeNames.has(AXDOMClassList) + empty.accessibilityAttributeValue(AXDOMClassList) --> <!DOCTYPE html> <div id="class_list" class="firstclass secondclass">
diff --git a/content/test/data/accessibility/mac/attributes/ax-dom-identifier-expected.txt b/content/test/data/accessibility/mac/attributes/ax-dom-identifier-expected.txt index 61f60f5..c663048 100644 --- a/content/test/data/accessibility/mac/attributes/ax-dom-identifier-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-dom-identifier-expected.txt
@@ -1,2 +1,4 @@ -header.AXDOMIdentifier='header' -header.AXChildren[0].AXDOMIdentifier='' +header.accessibilityAttributeNames.has(AXDOMIdentifier)='yes' +header.accessibilityAttributeValue(AXDOMIdentifier)='header' +header.AXChildren[0].accessibilityAttributeNames.has(AXDOMIdentifier)='yes' +header.AXChildren[0].accessibilityAttributeValue(AXDOMIdentifier)=''
diff --git a/content/test/data/accessibility/mac/attributes/ax-dom-identifier.html b/content/test/data/accessibility/mac/attributes/ax-dom-identifier.html index b2eb8631..a9a43c9 100644 --- a/content/test/data/accessibility/mac/attributes/ax-dom-identifier.html +++ b/content/test/data/accessibility/mac/attributes/ax-dom-identifier.html
@@ -1,7 +1,9 @@ <!-- @SCRIPT: - header.AXDOMIdentifier - header.AXChildren[0].AXDOMIdentifier + header.accessibilityAttributeNames.has(AXDOMIdentifier) + header.accessibilityAttributeValue(AXDOMIdentifier) + header.AXChildren[0].accessibilityAttributeNames.has(AXDOMIdentifier) + header.AXChildren[0].accessibilityAttributeValue(AXDOMIdentifier) --> <!DOCTYPE html> <header id="header"><button>button</button></header>
diff --git a/content/test/data/accessibility/mac/attributes/ax-drop-effects-expected.txt b/content/test/data/accessibility/mac/attributes/ax-drop-effects-expected.txt index 0ba40f2e..6431af7 100644 --- a/content/test/data/accessibility/mac/attributes/ax-drop-effects-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-drop-effects-expected.txt
@@ -1,2 +1,4 @@ -drop_effect.AXDropEffects='copy' -not_applicable.AXDropEffects=n/a +drop_effect.accessibilityAttributeNames.has(AXDropEffects)='yes' +drop_effect.accessibilityAttributeValue(AXDropEffects)='copy' +not_applicable.accessibilityAttributeNames.has(AXDropEffects)='no' +not_applicable.accessibilityAttributeValue(AXDropEffects)=NULL
diff --git a/content/test/data/accessibility/mac/attributes/ax-drop-effects.html b/content/test/data/accessibility/mac/attributes/ax-drop-effects.html index 619dcc5c..483a7f0 100644 --- a/content/test/data/accessibility/mac/attributes/ax-drop-effects.html +++ b/content/test/data/accessibility/mac/attributes/ax-drop-effects.html
@@ -1,7 +1,9 @@ <!-- @SCRIPT: - drop_effect.AXDropEffects - not_applicable.AXDropEffects + drop_effect.accessibilityAttributeNames.has(AXDropEffects) + drop_effect.accessibilityAttributeValue(AXDropEffects) + not_applicable.accessibilityAttributeNames.has(AXDropEffects) + not_applicable.accessibilityAttributeValue(AXDropEffects) --> <!DOCTYPE html> <div id="drop_effect" aria-dropeffect="copy">
diff --git a/content/test/data/accessibility/mac/attributes/ax-has-popup-expected.txt b/content/test/data/accessibility/mac/attributes/ax-has-popup-expected.txt index c356171..b3ea536 100644 --- a/content/test/data/accessibility/mac/attributes/ax-has-popup-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-has-popup-expected.txt
@@ -1,2 +1,4 @@ -has_popup.AXHasPopup=1 -not_applicable.AXHasPopup=n/a +has_popup.accessibilityAttributeNames.has(AXHasPopup)='yes' +has_popup.accessibilityAttributeValue(AXHasPopup)=1 +not_applicable.accessibilityAttributeNames.has(AXHasPopup)='no' +not_applicable.accessibilityAttributeValue(AXHasPopup)=0
diff --git a/content/test/data/accessibility/mac/attributes/ax-has-popup.html b/content/test/data/accessibility/mac/attributes/ax-has-popup.html index 07f1745..b4a9438 100644 --- a/content/test/data/accessibility/mac/attributes/ax-has-popup.html +++ b/content/test/data/accessibility/mac/attributes/ax-has-popup.html
@@ -1,7 +1,9 @@ <!-- @SCRIPT: - has_popup.AXHasPopup - not_applicable.AXHasPopup + has_popup.accessibilityAttributeNames.has(AXHasPopup) + has_popup.accessibilityAttributeValue(AXHasPopup) + not_applicable.accessibilityAttributeNames.has(AXHasPopup) + not_applicable.accessibilityAttributeValue(AXHasPopup) --> <!DOCTYPE html> <div id="has_popup" role="combobox" aria-haspopup="listbox"></div>
diff --git a/content/test/data/accessibility/mac/attributes/ax-popup-value-expected.txt b/content/test/data/accessibility/mac/attributes/ax-popup-value-expected.txt index f80db6b..17e77b6 100644 --- a/content/test/data/accessibility/mac/attributes/ax-popup-value-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-popup-value-expected.txt
@@ -1,6 +1,12 @@ -has_popup_menu.AXPopupValue='menu' -has_popup_listbox.AXPopupValue='listbox' -has_popup_tree.AXPopupValue='tree' -has_popup_grid.AXPopupValue='grid' -has_popup_dialog.AXPopupValue='dialog' -not_applicable.AXPopupValue=n/a +has_popup_menu.accessibilityAttributeNames.has(AXPopupValue)='yes' +has_popup_menu.accessibilityAttributeValue(AXPopupValue)='menu' +has_popup_listbox.accessibilityAttributeNames.has(AXPopupValue)='yes' +has_popup_listbox.accessibilityAttributeValue(AXPopupValue)='listbox' +has_popup_tree.accessibilityAttributeNames.has(AXPopupValue)='yes' +has_popup_tree.accessibilityAttributeValue(AXPopupValue)='tree' +has_popup_grid.accessibilityAttributeNames.has(AXPopupValue)='yes' +has_popup_grid.accessibilityAttributeValue(AXPopupValue)='grid' +has_popup_dialog.accessibilityAttributeNames.has(AXPopupValue)='yes' +has_popup_dialog.accessibilityAttributeValue(AXPopupValue)='dialog' +not_applicable.accessibilityAttributeNames.has(AXPopupValue)='no' +not_applicable.accessibilityAttributeValue(AXPopupValue)='false'
diff --git a/content/test/data/accessibility/mac/attributes/ax-popup-value.html b/content/test/data/accessibility/mac/attributes/ax-popup-value.html index 2ca576e..aa278c9 100644 --- a/content/test/data/accessibility/mac/attributes/ax-popup-value.html +++ b/content/test/data/accessibility/mac/attributes/ax-popup-value.html
@@ -1,11 +1,17 @@ <!-- @SCRIPT: - has_popup_menu.AXPopupValue - has_popup_listbox.AXPopupValue - has_popup_tree.AXPopupValue - has_popup_grid.AXPopupValue - has_popup_dialog.AXPopupValue - not_applicable.AXPopupValue + has_popup_menu.accessibilityAttributeNames.has(AXPopupValue) + has_popup_menu.accessibilityAttributeValue(AXPopupValue) + has_popup_listbox.accessibilityAttributeNames.has(AXPopupValue) + has_popup_listbox.accessibilityAttributeValue(AXPopupValue) + has_popup_tree.accessibilityAttributeNames.has(AXPopupValue) + has_popup_tree.accessibilityAttributeValue(AXPopupValue) + has_popup_grid.accessibilityAttributeNames.has(AXPopupValue) + has_popup_grid.accessibilityAttributeValue(AXPopupValue) + has_popup_dialog.accessibilityAttributeNames.has(AXPopupValue) + has_popup_dialog.accessibilityAttributeValue(AXPopupValue) + not_applicable.accessibilityAttributeNames.has(AXPopupValue) + not_applicable.accessibilityAttributeValue(AXPopupValue) --> <!DOCTYPE html> <div id="has_popup_menu" role="combobox" aria-haspopup="menu"></div>
diff --git a/content/test/data/accessibility/mac/attributes/ax-required-expected.txt b/content/test/data/accessibility/mac/attributes/ax-required-expected.txt index ee4239dd..9f8f1928 100644 --- a/content/test/data/accessibility/mac/attributes/ax-required-expected.txt +++ b/content/test/data/accessibility/mac/attributes/ax-required-expected.txt
@@ -1,10 +1,6 @@ -input.AXRequired=0 -input_required.AXRequired=1 -input_aria_required.AXRequired=0 -input_aria_required_true.AXRequired=1 -input_aria_required_false.AXRequired=0 -combobox.AXRequired=0 -combobox_aria_required_true.AXRequired=1 -combobox_aria_required_false.AXRequired=0 -not_applicable.AXRequired=n/a -not_applicable_aria.AXRequired=n/a +input.accessibilityAttributeNames.has(AXRequired)='yes' +input.accessibilityAttributeValue(AXRequired)=0 +input_required.accessibilityAttributeNames.has(AXRequired)='yes' +input_required.accessibilityAttributeValue(AXRequired)=1 +not_applicable.accessibilityAttributeNames.has(AXRequired)='no' +not_applicable.accessibilityAttributeValue(AXRequired)=0
diff --git a/content/test/data/accessibility/mac/attributes/ax-required.html b/content/test/data/accessibility/mac/attributes/ax-required.html index e81b467d..42b9ab81 100644 --- a/content/test/data/accessibility/mac/attributes/ax-required.html +++ b/content/test/data/accessibility/mac/attributes/ax-required.html
@@ -1,24 +1,13 @@ <!-- @SCRIPT: - input.AXRequired - input_required.AXRequired - input_aria_required.AXRequired - input_aria_required_true.AXRequired - input_aria_required_false.AXRequired - combobox.AXRequired - combobox_aria_required_true.AXRequired - combobox_aria_required_false.AXRequired - not_applicable.AXRequired - not_applicable_aria.AXRequired + input.accessibilityAttributeNames.has(AXRequired) + input.accessibilityAttributeValue(AXRequired) + input_required.accessibilityAttributeNames.has(AXRequired) + input_required.accessibilityAttributeValue(AXRequired) + not_applicable.accessibilityAttributeNames.has(AXRequired) + not_applicable.accessibilityAttributeValue(AXRequired) --> <!DOCTYPE html> <input id="input"> <input id="input_required" required> -<input id="input_aria_required" aria-required> -<input id="input_aria_required_true" aria-required="true"> -<input id="input_aria_required_false" aria-required="false"> -<div id="combobox" role="combobox"> -<div id="combobox_aria_required_true" role="combobox" aria-required="true"> -<div id="combobox_aria_required_false" role="combobox" aria-required="false"> <div id="not_applicable" required> -<div id="not_applicable_aria" aria-required="true">
diff --git a/device/bluetooth/bluez/bluetooth_service_attribute_value_bluez_unittest.cc b/device/bluetooth/bluez/bluetooth_service_attribute_value_bluez_unittest.cc index 4e81ecf..b8ec5b95 100644 --- a/device/bluetooth/bluez/bluetooth_service_attribute_value_bluez_unittest.cc +++ b/device/bluetooth/bluez/bluetooth_service_attribute_value_bluez_unittest.cc
@@ -23,9 +23,8 @@ void CheckUuidValue(const BluetoothServiceAttributeValueBlueZ& value, const std::string& uuid) { EXPECT_EQ(Type::UUID, value.type()); - std::string str; - EXPECT_TRUE(value.value().GetAsString(&str)); - EXPECT_EQ(uuid, str); + EXPECT_TRUE(value.value().is_string()); + EXPECT_EQ(uuid, value.value().GetString()); } void CheckIntValue(const BluetoothServiceAttributeValueBlueZ& value,
diff --git a/device/bluetooth/bluez/bluetooth_service_record_bluez_unittest.cc b/device/bluetooth/bluez/bluetooth_service_record_bluez_unittest.cc index f8480c7..fa996d6f 100644 --- a/device/bluetooth/bluez/bluetooth_service_record_bluez_unittest.cc +++ b/device/bluetooth/bluez/bluetooth_service_record_bluez_unittest.cc
@@ -117,10 +117,9 @@ BluetoothServiceAttributeValueBlueZ service_class_list = records_[0].GetAttributeValue(ids0[1]); - std::string str_value; - EXPECT_TRUE( - service_class_list.sequence()[0].value().GetAsString(&str_value)); - EXPECT_EQ("1802", str_value); + const base::Value& value = service_class_list.sequence()[0].value(); + EXPECT_TRUE(value.is_string()); + EXPECT_EQ("1802", value.GetString()); std::vector<uint16_t> ids1 = records_[1].GetAttributeIds(); EXPECT_EQ(1u, ids1.size());
diff --git a/device/fido/cable/v2_registration.cc b/device/fido/cable/v2_registration.cc index bbbab0c..95ac919 100644 --- a/device/fido/cable/v2_registration.cc +++ b/device/fido/cable/v2_registration.cc
@@ -74,7 +74,9 @@ instance_id_->GetToken( kFCMSenderId, instance_id::kGCMScope, /*time_to_live=*/base::TimeDelta(), - /*flags=*/{}, + // This flag causes high-priority messages to be processed immediately + // rather than deferred until the device is not dozing. + {instance_id::InstanceID::Flags::kBypassScheduler}, base::BindOnce(&FCMHandler::GetTokenComplete, base::Unretained(this))); }
diff --git a/docs/security/document-domain.md b/docs/security/document-domain.md new file mode 100644 index 0000000..6b11fb7 --- /dev/null +++ b/docs/security/document-domain.md
@@ -0,0 +1,129 @@ +# Document.domain Setting is Deprecated + +Setting [document.domain](https://developer.mozilla.org/en-US/docs/Web/API/Document/domain) +is [deprecated](https://html.spec.whatwg.org/multipage/origin.html#relaxing-the-same-origin-restriction). +Document.domain setting can be used to relax the same-origin restrictions +between different frames, hosted within the same site but on different origins. +Doing so make themselves effectively same-origin for the purpose of +synchronous access. + +For example, `https.//www.example.test/` might host a media player on +`media.example.org`. If both the main page and the frame execute +`document.domain = "example.org";` they may then access each others' DOM +tree, which they normally couldn't. (A better way would be to cooperate +by `postMessage`.) + +This usage is now being deprecated. (More information can be found +[here](https://developer.chrome.com/blog/immutable-document-domain/) and +[there](https://github.com/mikewest/deprecating-document-domain)). + +## What is happening, and when? + +* M100: Chrome will show deprecation warnings when document.domain is set. +* M106: Chrome will disable document.domain by default. + +Note that the second milestone is tentative: When the time comes, we will +examine how many pages will be impacted by this change, and will start a +separate discussion (intent to remove) on the +[blink-dev mailing list](https://groups.google.com/a/chromium.org/g/blink-dev). + +## Document.domain` and Origin-keyed Agent Clusters + +Most documentation on this change is phrased in terms of Origin-keyed +Agent Clusters. This is [a concept in the HTML +specification](https://html.spec.whatwg.org/multipage/origin.html#origin-keyed-agent-clusters). +Here we focus on the behaviour of the `document.domain` setter, which is +the visible effect. + +A web browser can cluster sites (in order to assign them to operating +system processes) and sites can be clustered by origin, or by site. +Origin-keyed agent clustering is preferable for security reasons. However +when sites are clustered by origin, synchronous access to frames outside of +that origin (but within the same site) is no longer possible. Thus sites in +origin-keyed agent clusters disable the `document.domain` setter. This is the +mechanism underlying this change: From M106 on pages will be assigned to +origin-keyed agent clusters by default and therefore `document.domain` +will no longer be settable by default, either. + +This also gives us an opt-out mechanism for pages who do not wish to follow +this change: By setting the `Origin-Agent-Cluster: ?0` http header, a site +can request assignment to a site-keyed agent cluster, and `document.domain` +will continue to work for them as it currently does. Note that adding this +header has no other observable effect and thus retains the current +(pre-M106) behaviour. This makes it an easy and _safe_ way to opt-out. + +Setting this header is a no-op in current versions of Chromium since it +matches the default setting, and will preserve this behaviour in the future. +It is also a no-op in other browsers, since they either match Chromium's +current default or have not implemented the `Origin-Agent-Cluster` header at +all. + +## How can I test this: + +In the DevTools console, for a page `www.example.test`: + +``` +document.domain = "example.test"; +document.domain; // "example.test" in a site-keyed agent cluster. + // "www.example.test" in an origin-keyed agent cluster. +``` + +One can also directly query whether a page is assigned to an origin-keyed +agent cluster, by querying `window.originAgentCluster`. + +``` +window.originAgentCluster; // True, if page is assigned to an origin-keyed + // agent cluster. +``` + +How to enable/disable the deprecation: + +### Enable the warning (Scheduled for M100) + +* Start Chrome with `--enable-features=OriginAgentClusterDefaultWarning` + +### Enable the deprecation (Scheduled for M106) + +* In [chrome://flags](chrome://flags#origin-agent-cluster-default), go to + the "Origin Agent Cluster Default" setting and enable it. +* Or start Chrome with `--enable-features=OriginAgentClusterDefaultEnable` +* Or add the `Origin-Agent-Cluster: ?1` header to your pages and frames. + (E.g. in a testing instance of your site.) + +### Testing at Scale / Reporting API + +The deprecation warnings are delivered through the +[Reporting API](https://web.dev/reporting-api/). They can +be pragrammatically processed using `ReportingObserver`. For example, the +first code snippet in +https://developers.google.com/web/updates/2018/07/reportingobserver +will report these warnings. The message object delivered by this API is a +`[DeprecationReportBody](https://developer.mozilla.org/en-US/docs/Web/API/DeprecationReportBody)` +instance which offers information about the source code location that triggered +the warning. + +## What can I do? + +If your site does not use `document.domain` setting you don't have to do +anything. You could explicitly set the `Origin-Agent-Cluster: ?1` header. +But after M106 this would be the default behaviour anyhow. + +If your site uses document.domain setting to enable cross-origin Javascript +access, you should refactor the code to instead use +[Window.postMessage](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage) (or any other mechanism) to cooperate across origins. Or alternatively +reduce the need for cross-origin cooperation by moving the copperating pieces +onto the same origin. + +## What if I don't have the time right now, or want to continue setting `document.domain`? + +You can add the `Origin-Agent-Cluster: ?0` http header to your site. Note that +the header must be set both for the main page, as well as for the embedded +frame(s) that wish to use `document.domain` setting. + +## Enterprise Users + +Users of [Chrome for Enterprise](https://chromeenterprise.google/) can set +the `OriginAgentClusterDefaultEnabled` policy to `False` to retain the +current (pre-M106) default for all of their users, until all their internal +sites and customers have migrated off of `document.domain` usage. +
diff --git a/gpu/command_buffer/service/external_vk_image_overlay_representation.cc b/gpu/command_buffer/service/external_vk_image_overlay_representation.cc index 0bb1cf9d..1ad31c50 100644 --- a/gpu/command_buffer/service/external_vk_image_overlay_representation.cc +++ b/gpu/command_buffer/service/external_vk_image_overlay_representation.cc
@@ -66,14 +66,6 @@ return nullptr; } -#if BUILDFLAG(IS_ANDROID) -void ExternalVkImageOverlayRepresentation::NotifyOverlayPromotion( - bool promotion, - const gfx::Rect& bounds) { - NOTREACHED(); -} -#endif - void ExternalVkImageOverlayRepresentation::GetAcquireFences( std::vector<gfx::GpuFence>* fences) { const VkDevice& device = vk_image_backing_->context_provider()
diff --git a/gpu/command_buffer/service/external_vk_image_overlay_representation.h b/gpu/command_buffer/service/external_vk_image_overlay_representation.h index 3995b30..7c2680b 100644 --- a/gpu/command_buffer/service/external_vk_image_overlay_representation.h +++ b/gpu/command_buffer/service/external_vk_image_overlay_representation.h
@@ -30,10 +30,6 @@ void EndReadAccess(gfx::GpuFenceHandle release_fence) override; gl::GLImage* GetGLImage() override; -#if BUILDFLAG(IS_ANDROID) - void NotifyOverlayPromotion(bool promotion, const gfx::Rect& bounds) override; -#endif - private: void GetAcquireFences(std::vector<gfx::GpuFence>* fences);
diff --git a/gpu/command_buffer/service/native_image_buffer.cc b/gpu/command_buffer/service/native_image_buffer.cc index 21e6d05..bcb0feb 100644 --- a/gpu/command_buffer/service/native_image_buffer.cc +++ b/gpu/command_buffer/service/native_image_buffer.cc
@@ -7,6 +7,7 @@ #include <list> #include "base/memory/raw_ptr.h" +#include "base/notreached.h" #include "base/synchronization/lock.h" #include "build/build_config.h" #include "ui/gl/gl_image.h"
diff --git a/gpu/command_buffer/service/shared_image_backing.cc b/gpu/command_buffer/service/shared_image_backing.cc index 4327dd7..e6ecb2c 100644 --- a/gpu/command_buffer/service/shared_image_backing.cc +++ b/gpu/command_buffer/service/shared_image_backing.cc
@@ -114,6 +114,14 @@ return nullptr; } +#if BUILDFLAG(IS_ANDROID) +std::unique_ptr<SharedImageRepresentationLegacyOverlay> +SharedImageBacking::ProduceLegacyOverlay(SharedImageManager* manager, + MemoryTypeTracker* tracker) { + return nullptr; +} +#endif + void SharedImageBacking::AddRef(SharedImageRepresentation* representation) { AutoLock auto_lock(this);
diff --git a/gpu/command_buffer/service/shared_image_backing.h b/gpu/command_buffer/service/shared_image_backing.h index 5657de20bd..332e4d0 100644 --- a/gpu/command_buffer/service/shared_image_backing.h +++ b/gpu/command_buffer/service/shared_image_backing.h
@@ -50,6 +50,7 @@ class SharedImageRepresentationGLTexturePassthrough; class SharedImageRepresentationSkia; class SharedImageRepresentationDawn; +class SharedImageRepresentationLegacyOverlay; class SharedImageRepresentationOverlay; class SharedImageRepresentationMemory; class SharedImageRepresentationVaapi; @@ -189,6 +190,10 @@ virtual std::unique_ptr<SharedImageRepresentationRaster> ProduceRaster( SharedImageManager* manager, MemoryTypeTracker* tracker); +#if BUILDFLAG(IS_ANDROID) + virtual std::unique_ptr<SharedImageRepresentationLegacyOverlay> + ProduceLegacyOverlay(SharedImageManager* manager, MemoryTypeTracker* tracker); +#endif // Used by subclasses during destruction. bool have_context() const EXCLUSIVE_LOCKS_REQUIRED(lock_);
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc index d243cfaa..708e71ea 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc +++ b/gpu/command_buffer/service/shared_image_backing_factory_ahardwarebuffer.cc
@@ -59,15 +59,7 @@ explicit OverlayImage(AHardwareBuffer* buffer) : handle_(base::android::ScopedHardwareBufferHandle::Create(buffer)) {} - void SetBeginFence(base::ScopedFD fence_fd) { - DCHECK(!end_read_fence_.is_valid()); - DCHECK(!begin_read_fence_.is_valid()); - begin_read_fence_ = std::move(fence_fd); - } - base::ScopedFD TakeEndFence() { - DCHECK(!begin_read_fence_.is_valid()); - previous_end_read_fence_ = base::ScopedFD(HANDLE_EINTR(dup(end_read_fence_.get()))); return std::move(end_read_fence_); @@ -78,7 +70,7 @@ GetAHardwareBuffer() override { return std::make_unique<ScopedHardwareBufferFenceSyncImpl>( this, base::android::ScopedHardwareBufferHandle::Create(handle_.get()), - std::move(begin_read_fence_), std::move(previous_end_read_fence_)); + std::move(previous_end_read_fence_)); } protected: @@ -91,17 +83,15 @@ ScopedHardwareBufferFenceSyncImpl( scoped_refptr<OverlayImage> image, base::android::ScopedHardwareBufferHandle handle, - base::ScopedFD fence_fd, base::ScopedFD available_fence_fd) : ScopedHardwareBufferFenceSync(std::move(handle), - std::move(fence_fd), + base::ScopedFD(), std::move(available_fence_fd), false /* is_video */), image_(std::move(image)) {} ~ScopedHardwareBufferFenceSyncImpl() override = default; void SetReadFence(base::ScopedFD fence_fd, bool has_context) override { - DCHECK(!image_->begin_read_fence_.is_valid()); DCHECK(!image_->end_read_fence_.is_valid()); DCHECK(!image_->previous_end_read_fence_.is_valid()); @@ -114,9 +104,6 @@ base::android::ScopedHardwareBufferHandle handle_; - // The fence for overlay controller to wait on before scanning out. - base::ScopedFD begin_read_fence_; - // The fence for overlay controller to set to indicate scanning out // completion. The image content should not be modified before passing this // fence. @@ -159,7 +146,7 @@ gfx::Rect ClearedRect() const override; void SetClearedRect(const gfx::Rect& cleared_rect) override; base::android::ScopedHardwareBufferHandle GetAhbHandle() const; - gl::GLImage* BeginOverlayAccess(); + gl::GLImage* BeginOverlayAccess(gfx::GpuFenceHandle&); void EndOverlayAccess(); protected: @@ -230,13 +217,13 @@ return static_cast<SharedImageBackingAHB*>(backing()); } - void NotifyOverlayPromotion(bool promotion, - const gfx::Rect& bounds) override { - NOTREACHED(); - } - bool BeginReadAccess(std::vector<gfx::GpuFence>* acquire_fences) override { - gl_image_ = ahb_backing()->BeginOverlayAccess(); + gfx::GpuFenceHandle fence_handle; + gl_image_ = ahb_backing()->BeginOverlayAccess(fence_handle); + + if (!fence_handle.is_null()) + acquire_fences->emplace_back(std::move(fence_handle)); + return !!gl_image_; } @@ -439,7 +426,8 @@ tracker); } -gl::GLImage* SharedImageBackingAHB::BeginOverlayAccess() { +gl::GLImage* SharedImageBackingAHB::BeginOverlayAccess( + gfx::GpuFenceHandle& begin_read_fence) { AutoLock auto_lock(this); DCHECK(!is_overlay_accessing_); @@ -457,8 +445,10 @@ } if (write_sync_fd_.is_valid()) { - base::ScopedFD fence_fd(HANDLE_EINTR(dup(write_sync_fd_.get()))); - overlay_image_->SetBeginFence(std::move(fence_fd)); + gfx::GpuFenceHandle fence_handle; + fence_handle.owned_fd = + base::ScopedFD(HANDLE_EINTR(dup(write_sync_fd_.get()))); + begin_read_fence = std::move(fence_handle); } is_overlay_accessing_ = true;
diff --git a/gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.cc b/gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.cc index c1a39ac..cdf5d28 100644 --- a/gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.cc +++ b/gpu/command_buffer/service/shared_image_backing_factory_angle_vulkan.cc
@@ -282,7 +282,8 @@ auto egl_image = base::MakeRefCounted<gl::GLImageEGLAngleVulkan>(size()); if (!egl_image->Initialize(vulkan_image_->image(), - &vulkan_image_->create_info())) { + &vulkan_image_->create_info(), + viz::GLInternalFormat(format()))) { return false; }
diff --git a/gpu/command_buffer/service/shared_image_backing_scoped_hardware_buffer_fence_sync.cc b/gpu/command_buffer/service/shared_image_backing_scoped_hardware_buffer_fence_sync.cc index 493601e..5bad186c 100644 --- a/gpu/command_buffer/service/shared_image_backing_scoped_hardware_buffer_fence_sync.cc +++ b/gpu/command_buffer/service/shared_image_backing_scoped_hardware_buffer_fence_sync.cc
@@ -56,11 +56,6 @@ backing()); } - void NotifyOverlayPromotion(bool promotion, - const gfx::Rect& bounds) override { - NOTREACHED(); - } - bool BeginReadAccess(std::vector<gfx::GpuFence>* acquire_fences) override { gfx::GpuFenceHandle begin_read_handle; hardware_buffer_ = ahb_backing()->BeginOverlayAccess(begin_read_handle);
diff --git a/gpu/command_buffer/service/shared_image_factory.cc b/gpu/command_buffer/service/shared_image_factory.cc index 5866c49..8710b18 100644 --- a/gpu/command_buffer/service/shared_image_factory.cc +++ b/gpu/command_buffer/service/shared_image_factory.cc
@@ -685,4 +685,12 @@ return manager_->ProduceRaster(mailbox, tracker_.get()); } +#if BUILDFLAG(IS_ANDROID) +std::unique_ptr<SharedImageRepresentationLegacyOverlay> +SharedImageRepresentationFactory::ProduceLegacyOverlay( + const gpu::Mailbox& mailbox) { + return manager_->ProduceLegacyOverlay(mailbox, tracker_.get()); +} +#endif + } // namespace gpu
diff --git a/gpu/command_buffer/service/shared_image_factory.h b/gpu/command_buffer/service/shared_image_factory.h index a3db943..9195d06 100644 --- a/gpu/command_buffer/service/shared_image_factory.h +++ b/gpu/command_buffer/service/shared_image_factory.h
@@ -221,6 +221,11 @@ std::unique_ptr<SharedImageRepresentationRaster> ProduceRaster( const Mailbox& mailbox); +#if BUILDFLAG(IS_ANDROID) + std::unique_ptr<SharedImageRepresentationLegacyOverlay> ProduceLegacyOverlay( + const Mailbox& mailbox); +#endif + private: const raw_ptr<SharedImageManager> manager_; std::unique_ptr<MemoryTypeTracker> tracker_;
diff --git a/gpu/command_buffer/service/shared_image_manager.cc b/gpu/command_buffer/service/shared_image_manager.cc index 3ffe666..95255b2 100644 --- a/gpu/command_buffer/service/shared_image_manager.cc +++ b/gpu/command_buffer/service/shared_image_manager.cc
@@ -348,6 +348,33 @@ return (*found)->ProduceRaster(this, tracker); } +#if BUILDFLAG(IS_ANDROID) +std::unique_ptr<SharedImageRepresentationLegacyOverlay> +SharedImageManager::ProduceLegacyOverlay(const Mailbox& mailbox, + MemoryTypeTracker* tracker) { + CALLED_ON_VALID_THREAD(); + + AutoLock autolock(this); + auto found = images_.find(mailbox); + if (found == images_.end()) { + LOG(ERROR) + << "SharedImageManager::ProduceLegacyOverlay: Trying to Produce a " + "Legacy Overlay representation from a non-existent mailbox."; + return nullptr; + } + + auto representation = (*found)->ProduceLegacyOverlay(this, tracker); + if (!representation) { + LOG(ERROR) + << "SharedImageManager::ProduceLegacyOverlay: Trying to produce a " + "Legacy Overlay representation from an incompatible mailbox."; + return nullptr; + } + + return representation; +} +#endif + void SharedImageManager::OnRepresentationDestroyed( const Mailbox& mailbox, SharedImageRepresentation* representation) {
diff --git a/gpu/command_buffer/service/shared_image_manager.h b/gpu/command_buffer/service/shared_image_manager.h index 2feaab4..7446d9ca 100644 --- a/gpu/command_buffer/service/shared_image_manager.h +++ b/gpu/command_buffer/service/shared_image_manager.h
@@ -88,6 +88,12 @@ const Mailbox& mailbox, MemoryTypeTracker* ref); +#if BUILDFLAG(IS_ANDROID) + std::unique_ptr<SharedImageRepresentationLegacyOverlay> ProduceLegacyOverlay( + const Mailbox& mailbox, + MemoryTypeTracker* ref); +#endif + // Called by SharedImageRepresentation in the destructor. void OnRepresentationDestroyed(const Mailbox& mailbox, SharedImageRepresentation* representation);
diff --git a/gpu/command_buffer/service/shared_image_representation.h b/gpu/command_buffer/service/shared_image_representation.h index 7b82840..12d7872c 100644 --- a/gpu/command_buffer/service/shared_image_representation.h +++ b/gpu/command_buffer/service/shared_image_representation.h
@@ -459,17 +459,9 @@ gfx::GpuFenceHandle release_fence_; }; -#if BUILDFLAG(IS_ANDROID) - virtual void NotifyOverlayPromotion(bool promotion, - const gfx::Rect& bounds) = 0; -#endif - std::unique_ptr<ScopedReadAccess> BeginScopedReadAccess(bool needs_gl_image); protected: - // TODO(weiliangc): Currently this only handles Android pre-SurfaceControl - // case. Add appropriate fence later. - // Notifies the backing that an access will start. Returns false if there is a // conflict. Otherwise, returns true and: // - Adds gpu fences to |acquire_fences| that should be waited on before the @@ -494,6 +486,25 @@ virtual gl::GLImage* GetGLImage() = 0; }; +#if BUILDFLAG(IS_ANDROID) +class GPU_GLES2_EXPORT SharedImageRepresentationLegacyOverlay + : public SharedImageRepresentation { + public: + SharedImageRepresentationLegacyOverlay(SharedImageManager* manager, + SharedImageBacking* backing, + MemoryTypeTracker* tracker) + : SharedImageRepresentation(manager, backing, tracker) {} + + // Renders shared image to SurfaceView/Dialog overlay. Should only be called + // if the image already promoted to overlay. + virtual void RenderToOverlay() = 0; + + // Notifies legacy overlay system about overlay promotion. + virtual void NotifyOverlayPromotion(bool promotion, + const gfx::Rect& bounds) = 0; +}; +#endif + class GPU_GLES2_EXPORT SharedImageRepresentationMemory : public SharedImageRepresentation { public:
diff --git a/gpu/command_buffer/service/shared_image_video_image_reader.cc b/gpu/command_buffer/service/shared_image_video_image_reader.cc index 86fcb2b..0f5ec11e 100644 --- a/gpu/command_buffer/service/shared_image_video_image_reader.cc +++ b/gpu/command_buffer/service/shared_image_video_image_reader.cc
@@ -60,9 +60,8 @@ public: VideoImage() = default; - VideoImage(AHardwareBuffer* buffer, base::ScopedFD begin_read_fence) - : handle_(base::android::ScopedHardwareBufferHandle::Create(buffer)), - begin_read_fence_(std::move(begin_read_fence)) {} + VideoImage(AHardwareBuffer* buffer) + : handle_(base::android::ScopedHardwareBufferHandle::Create(buffer)) {} // gl::GLImage: std::unique_ptr<base::android::ScopedHardwareBufferFenceSync> @@ -71,8 +70,7 @@ return nullptr; return std::make_unique<ScopedHardwareBufferFenceSyncImpl>( - this, base::android::ScopedHardwareBufferHandle::Create(handle_.get()), - std::move(begin_read_fence_)); + this, base::android::ScopedHardwareBufferHandle::Create(handle_.get())); } base::ScopedFD TakeEndReadFence() { return std::move(end_read_fence_); } @@ -86,10 +84,9 @@ public: ScopedHardwareBufferFenceSyncImpl( scoped_refptr<VideoImage> image, - base::android::ScopedHardwareBufferHandle handle, - base::ScopedFD fence_fd) + base::android::ScopedHardwareBufferHandle handle) : ScopedHardwareBufferFenceSync(std::move(handle), - std::move(fence_fd), + base::ScopedFD(), base::ScopedFD(), /*is_video=*/true), image_(std::move(image)) {} @@ -106,9 +103,6 @@ base::android::ScopedHardwareBufferHandle handle_; - // This fence should be waited upon before reading from the buffer. - base::ScopedFD begin_read_fence_; - // This fence should be waited upon to ensure that the reader is finished // reading from the buffer. base::ScopedFD end_read_fence_; @@ -528,13 +522,22 @@ protected: bool BeginReadAccess(std::vector<gfx::GpuFence>* acquire_fences) override { base::AutoLockMaybe auto_lock(GetDrDcLockPtr()); - // A |CodecImage| is already in a SurfaceView, render content to the - // overlay. - if (!stream_image()->HasTextureOwner()) { - TRACE_EVENT0("media", - "SharedImageRepresentationOverlayVideo::BeginReadAccess"); - stream_image()->RenderToOverlay(); - } + // A |CodecImage| must have TextureOwner() for SurfaceControl overlays. + // Legacy overlays are handled by SharedImageRepresentationLegacyOverlay. + DCHECK(stream_image()->HasTextureOwner()); + scoped_hardware_buffer_ = stream_image()->GetAHardwareBuffer(); + + // |scoped_hardware_buffer_| could be null for cases when a buffer is + // not acquired in ImageReader for some reasons and there is no previously + // acquired image left. + if (!scoped_hardware_buffer_) + return false; + + gfx::GpuFenceHandle handle; + handle.owned_fd = scoped_hardware_buffer_->TakeFence(); + if (!handle.is_null()) + acquire_fences->emplace_back(std::move(handle)); + return true; } @@ -547,49 +550,24 @@ true); } gl_image_.reset(); - scoped_hardware_buffer_.reset(); } + scoped_hardware_buffer_.reset(); } gl::GLImage* GetGLImage() override { base::AutoLockMaybe auto_lock(GetDrDcLockPtr()); DCHECK(stream_image()->HasTextureOwner()) << "The backing is already in a SurfaceView!"; + DCHECK(scoped_hardware_buffer_); - // Note that we have SurfaceView overlay as well as SurfaceControl. - // SurfaceView may/may not have TextureOwner whereas SurfaceControl always - // have TextureOwner. It is not possible to know whether we are in - // SurfaceView or SurfaceControl mode in Begin/EndReadAccess. Hence - // |scoped_hardware_buffer_| and |gl_image_| needs to be created here since - // GetGLImage will only be called for SurfaceControl. if (!gl_image_) { - scoped_hardware_buffer_ = stream_image()->GetAHardwareBuffer(); - - // |scoped_hardware_buffer_| could be null for cases when a buffer is - // not acquired in ImageReader for some reasons and there is no previously - // acquired image left. - if (scoped_hardware_buffer_) { - gl_image_ = base::MakeRefCounted<VideoImage>( - scoped_hardware_buffer_->buffer(), - scoped_hardware_buffer_->TakeFence()); - } else { - // Caller of GetGLImage currently do not expect a null |gl_image_|. - // Hence creating a valid object with null buffer which results in a - // blank video frame and is expected. TODO(vikassoni) : Explore option - // of returning a null GLImage here. - gl_image_ = base::MakeRefCounted<VideoImage>(); - } + gl_image_ = + base::MakeRefCounted<VideoImage>(scoped_hardware_buffer_->buffer()); gl_image_->SetColorSpace(color_space()); } return gl_image_.get(); } - void NotifyOverlayPromotion(bool promotion, - const gfx::Rect& bounds) override { - base::AutoLockMaybe auto_lock(GetDrDcLockPtr()); - stream_image()->NotifyOverlayPromotion(promotion, bounds); - } - private: std::unique_ptr<base::android::ScopedHardwareBufferFenceSync> scoped_hardware_buffer_; @@ -602,6 +580,45 @@ } }; +// Representation of SharedImageVideoImageReader as an SurfaceView overlay +// plane. +class SharedImageVideoImageReader::SharedImageRepresentationLegacyOverlayVideo + : public gpu::SharedImageRepresentationLegacyOverlay, + public RefCountedLockHelperDrDc { + public: + SharedImageRepresentationLegacyOverlayVideo( + gpu::SharedImageManager* manager, + SharedImageVideoImageReader* backing, + gpu::MemoryTypeTracker* tracker, + scoped_refptr<RefCountedLock> drdc_lock) + : gpu::SharedImageRepresentationLegacyOverlay(manager, backing, tracker), + RefCountedLockHelperDrDc(std::move(drdc_lock)) {} + + void RenderToOverlay() override { + TRACE_EVENT0( + "media", + "SharedImageRepresentationLegacyOverlayVideo::RenderToOverlay"); + + base::AutoLockMaybe auto_lock(GetDrDcLockPtr()); + auto* stream_texture_sii = stream_image(); + DCHECK(!stream_texture_sii->HasTextureOwner()) + << "Image must be promoted to overlay first."; + stream_texture_sii->RenderToOverlay(); + } + + void NotifyOverlayPromotion(bool promotion, + const gfx::Rect& bounds) override { + base::AutoLockMaybe auto_lock(GetDrDcLockPtr()); + stream_image()->NotifyOverlayPromotion(promotion, bounds); + } + + StreamTextureSharedImageInterface* stream_image() { + auto* video_backing = static_cast<SharedImageVideoImageReader*>(backing()); + DCHECK(video_backing); + return video_backing->stream_texture_sii_.get(); + } +}; + std::unique_ptr<gpu::SharedImageRepresentationOverlay> SharedImageVideoImageReader::ProduceOverlay(gpu::SharedImageManager* manager, gpu::MemoryTypeTracker* tracker) { @@ -609,6 +626,14 @@ manager, this, tracker, GetDrDcLock()); } +std::unique_ptr<gpu::SharedImageRepresentationLegacyOverlay> +SharedImageVideoImageReader::ProduceLegacyOverlay( + gpu::SharedImageManager* manager, + gpu::MemoryTypeTracker* tracker) { + return std::make_unique<SharedImageRepresentationLegacyOverlayVideo>( + manager, this, tracker, GetDrDcLock()); +} + SharedImageVideoImageReader::ContextLostObserverHelper:: ContextLostObserverHelper( scoped_refptr<SharedContextState> context_state,
diff --git a/gpu/command_buffer/service/shared_image_video_image_reader.h b/gpu/command_buffer/service/shared_image_video_image_reader.h index 2200d16..d78dacc5 100644 --- a/gpu/command_buffer/service/shared_image_video_image_reader.h +++ b/gpu/command_buffer/service/shared_image_video_image_reader.h
@@ -67,8 +67,9 @@ gpu::SharedImageManager* manager, gpu::MemoryTypeTracker* tracker) override; - // TODO(vikassoni): Add overlay and AHardwareBuffer representations in future - // patch. Overlays are anyways using legacy mailbox for now. + std::unique_ptr<gpu::SharedImageRepresentationLegacyOverlay> + ProduceLegacyOverlay(gpu::SharedImageManager* manager, + gpu::MemoryTypeTracker* tracker) override; private: // Helper class for observing SharedContext loss on gpu main thread and @@ -97,6 +98,7 @@ class SharedImageRepresentationGLTexturePassthroughVideo; class SharedImageRepresentationVideoSkiaVk; class SharedImageRepresentationOverlayVideo; + class SharedImageRepresentationLegacyOverlayVideo; void BeginGLReadAccess(const GLuint service_id);
diff --git a/gpu/command_buffer/service/shared_image_video_surface_texture.cc b/gpu/command_buffer/service/shared_image_video_surface_texture.cc index a6fdc142..b68cfd7 100644 --- a/gpu/command_buffer/service/shared_image_video_surface_texture.cc +++ b/gpu/command_buffer/service/shared_image_video_surface_texture.cc
@@ -286,12 +286,13 @@ // Representation of SharedImageVideoSurfaceTexture as an overlay plane. class SharedImageVideoSurfaceTexture::SharedImageRepresentationOverlayVideo - : public gpu::SharedImageRepresentationOverlay { + : public gpu::SharedImageRepresentationLegacyOverlay { public: SharedImageRepresentationOverlayVideo(gpu::SharedImageManager* manager, SharedImageVideoSurfaceTexture* backing, gpu::MemoryTypeTracker* tracker) - : gpu::SharedImageRepresentationOverlay(manager, backing, tracker) {} + : gpu::SharedImageRepresentationLegacyOverlay(manager, backing, tracker) { + } // Disallow copy and assign. SharedImageRepresentationOverlayVideo( @@ -300,25 +301,12 @@ const SharedImageRepresentationOverlayVideo&) = delete; protected: - bool BeginReadAccess(std::vector<gfx::GpuFence>* acquire_fences) override { - // A |CodecImage| is already in a SurfaceView, render content to the - // overlay. - if (!stream_image()->HasTextureOwner()) { - TRACE_EVENT0("media", - "SharedImageRepresentationOverlayVideo::BeginReadAccess"); - stream_image()->RenderToOverlay(); - } - return true; - } - - void EndReadAccess(gfx::GpuFenceHandle release_fence) override { - DCHECK(release_fence.is_null()); - } - - gl::GLImage* GetGLImage() override { - // This method should not be called for SurfaceView. - NOTREACHED(); - return nullptr; + void RenderToOverlay() override { + DCHECK(!stream_image()->HasTextureOwner()) + << "CodecImage must be already in overlay"; + TRACE_EVENT0("media", + "SharedImageRepresentationOverlayVideo::RenderToOverlay"); + stream_image()->RenderToOverlay(); } void NotifyOverlayPromotion(bool promotion, @@ -335,8 +323,8 @@ } }; -std::unique_ptr<gpu::SharedImageRepresentationOverlay> -SharedImageVideoSurfaceTexture::ProduceOverlay( +std::unique_ptr<gpu::SharedImageRepresentationLegacyOverlay> +SharedImageVideoSurfaceTexture::ProduceLegacyOverlay( gpu::SharedImageManager* manager, gpu::MemoryTypeTracker* tracker) { DCHECK(gpu_main_task_runner_->RunsTasksInCurrentSequence());
diff --git a/gpu/command_buffer/service/shared_image_video_surface_texture.h b/gpu/command_buffer/service/shared_image_video_surface_texture.h index a06ce89..31361bb 100644 --- a/gpu/command_buffer/service/shared_image_video_surface_texture.h +++ b/gpu/command_buffer/service/shared_image_video_surface_texture.h
@@ -65,12 +65,9 @@ MemoryTypeTracker* tracker, scoped_refptr<SharedContextState> context_state) override; - std::unique_ptr<gpu::SharedImageRepresentationOverlay> ProduceOverlay( - gpu::SharedImageManager* manager, - gpu::MemoryTypeTracker* tracker) override; - - // TODO(vikassoni): Add overlay and AHardwareBuffer representations in future - // patch. Overlays are anyways using legacy mailbox for now. + std::unique_ptr<gpu::SharedImageRepresentationLegacyOverlay> + ProduceLegacyOverlay(gpu::SharedImageManager* manager, + gpu::MemoryTypeTracker* tracker) override; private: class SharedImageRepresentationGLTextureVideo;
diff --git a/gpu/command_buffer/service/test_shared_image_backing.cc b/gpu/command_buffer/service/test_shared_image_backing.cc index 321c04d5..30a8af5 100644 --- a/gpu/command_buffer/service/test_shared_image_backing.cc +++ b/gpu/command_buffer/service/test_shared_image_backing.cc
@@ -135,11 +135,6 @@ } void EndReadAccess(gfx::GpuFenceHandle release_fence) override {} gl::GLImage* GetGLImage() override { return nullptr; } - -#if BUILDFLAG(IS_ANDROID) - void NotifyOverlayPromotion(bool promotion, - const gfx::Rect& bounds) override {} -#endif }; } // namespace
diff --git a/headless/BUILD.gn b/headless/BUILD.gn index 38279a7c..c26cd8ed 100644 --- a/headless/BUILD.gn +++ b/headless/BUILD.gn
@@ -50,7 +50,6 @@ "$root_gen_dir/content/app/resources/content_resources_100_percent.pak", "$root_gen_dir/content/content_resources.pak", "$root_gen_dir/content/dev_ui_content_resources.pak", - "$root_gen_dir/headless/headless_lib_resources.pak", "$root_gen_dir/net/net_resources.pak", "$root_gen_dir/third_party/blink/public/resources/blink_resources.pak", "$root_gen_dir/third_party/blink/public/resources/blink_scaled_resources_100_percent.pak", @@ -60,7 +59,6 @@ ] deps = [ - ":resources", "//components/resources:components_resources", "//content:content_resources", "//content:dev_ui_content_resources", @@ -162,14 +160,6 @@ deps = [ ":resource_pack_strings" ] } -grit("resources") { - source = "lib/resources/headless_lib_resources.grd" - outputs = [ - "grit/headless_lib_resources.h", - "$root_gen_dir/headless/headless_lib_resources.pak", - ] -} - devtools_domains = [ "accessibility", "animation",
diff --git a/headless/lib/browser/headless_browser_context_impl.cc b/headless/lib/browser/headless_browser_context_impl.cc index d757e17..6eb8b9ce 100644 --- a/headless/lib/browser/headless_browser_context_impl.cc +++ b/headless/lib/browser/headless_browser_context_impl.cc
@@ -18,7 +18,6 @@ #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/storage_partition.h" -#include "headless/grit/headless_lib_resources.h" #include "headless/lib/browser/headless_browser_context_options.h" #include "headless/lib/browser/headless_browser_impl.h" #include "headless/lib/browser/headless_browser_main_parts.h"
diff --git a/headless/lib/browser/headless_devtools.cc b/headless/lib/browser/headless_devtools.cc index 0b8925f..69b2b9e8 100644 --- a/headless/lib/browser/headless_devtools.cc +++ b/headless/lib/browser/headless_devtools.cc
@@ -16,7 +16,6 @@ #include "content/public/browser/devtools_agent_host.h" #include "content/public/browser/devtools_socket_factory.h" #include "content/public/browser/navigation_entry.h" -#include "headless/grit/headless_lib_resources.h" #include "headless/public/headless_browser.h" #include "net/base/ip_address.h" #include "net/base/net_errors.h"
diff --git a/headless/lib/browser/headless_devtools_manager_delegate.cc b/headless/lib/browser/headless_devtools_manager_delegate.cc index d523098..12dfeb0 100644 --- a/headless/lib/browser/headless_devtools_manager_delegate.cc +++ b/headless/lib/browser/headless_devtools_manager_delegate.cc
@@ -8,7 +8,6 @@ #include "content/public/browser/devtools_agent_host.h" #include "content/public/browser/devtools_agent_host_client_channel.h" #include "content/public/browser/web_contents.h" -#include "headless/grit/headless_lib_resources.h" #include "headless/lib/browser/headless_browser_context_impl.h" #include "headless/lib/browser/headless_browser_impl.h" #include "headless/lib/browser/headless_web_contents_impl.h" @@ -47,11 +46,6 @@ web_contents_impl->web_contents()); } -std::string HeadlessDevToolsManagerDelegate::GetDiscoveryPageHTML() { - return ui::ResourceBundle::GetSharedInstance().LoadDataResourceString( - IDR_HEADLESS_LIB_DEVTOOLS_DISCOVERY_PAGE); -} - bool HeadlessDevToolsManagerDelegate::HasBundledFrontendResources() { return true; }
diff --git a/headless/lib/browser/headless_devtools_manager_delegate.h b/headless/lib/browser/headless_devtools_manager_delegate.h index ed20bd3..5376765 100644 --- a/headless/lib/browser/headless_devtools_manager_delegate.h +++ b/headless/lib/browser/headless_devtools_manager_delegate.h
@@ -33,7 +33,6 @@ NotHandledCallback callback) override; scoped_refptr<content::DevToolsAgentHost> CreateNewTarget( const GURL& url) override; - std::string GetDiscoveryPageHTML() override; bool HasBundledFrontendResources() override; void ClientAttached( content::DevToolsAgentHostClientChannel* channel) override;
diff --git a/headless/lib/resources/devtools_discovery_page.html b/headless/lib/resources/devtools_discovery_page.html deleted file mode 100644 index 333f9f8..0000000 --- a/headless/lib/resources/devtools_discovery_page.html +++ /dev/null
@@ -1,63 +0,0 @@ -<html> -<head> -<title>Headless remote debugging</title> -<style> -</style> - -<script> -const fetchjson = (url) => fetch(url).then(r => r.json()); - -function loadData() { - const getList = fetchjson("/json/list"); - const getVersion = fetchjson('/json/version'); - Promise.all([getList, getVersion]).then(parseResults); -} - -function parseResults([listData, versionData]){ - const version = versionData['WebKit-Version']; - const hash = version.match(/\s\(@(\b[0-9a-f]{5,40}\b)/)[1]; - listData.forEach(item => appendItem(item, hash)); -} - -function appendItem(item, hash) { - let link; - if (item.devtoolsFrontendUrl) { - link = document.createElement("a"); - var devtoolsFrontendUrl = item.devtoolsFrontendUrl.replace(/^\/devtools\//,''); - link.href = `https://chrome-devtools-frontend.appspot.com/serve_file/@${hash}/${devtoolsFrontendUrl}&remoteFrontend=true`; - link.title = item.title; - } else { - link = document.createElement("div"); - link.title = "The tab already has active debugging session"; - } - - var text = document.createElement("div"); - if (item.title) - text.textContent = item.title; - else - text.textContent = "(untitled tab)"; - if (item.faviconUrl) - text.style.cssText = "background-image:url(" + item.faviconUrl + ")"; - link.appendChild(text); - - var p = document.createElement("p"); - p.appendChild(link); - - document.getElementById("items").appendChild(p); -} -</script> -</head> -<body onload='loadData()'> - <div id='caption'>Inspectable WebContents</div> - <div style="margin: 4px"> - <span style="color: red">WARNING:</span> This page is deprecated and - will be removed by m96. Please use - <input type="text" readonly value="chrome://inspect" size="13" - style="background-color: #e0e0e0; border-width: 0; font-weight: 800"> - </input> instead. Use <a href="http://crbug.com/1232509" - >crbug.com/1232509</a> for comments, questions and feedback. - </div> - - <div id='items'></div> -</body> -</html>
diff --git a/headless/lib/resources/headless_lib_resources.grd b/headless/lib/resources/headless_lib_resources.grd deleted file mode 100644 index 3137ec6..0000000 --- a/headless/lib/resources/headless_lib_resources.grd +++ /dev/null
@@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<grit latest_public_release="0" current_release="1" output_all_resource_defines="false"> - <outputs> - <output filename="grit/headless_lib_resources.h" type="rc_header"> - <emit emit_type='prepend'></emit> - </output> - <output filename="headless_lib_resources.pak" type="data_package" /> - </outputs> - <translations /> - <release seq="1"> - <includes> - <include name="IDR_HEADLESS_LIB_DEVTOOLS_DISCOVERY_PAGE" file="devtools_discovery_page.html" type="BINDATA" /> - </includes> - </release> -</grit>
diff --git a/infra/config/OWNERS b/infra/config/OWNERS index e6aa9e907..85b5725a 100644 --- a/infra/config/OWNERS +++ b/infra/config/OWNERS
@@ -1,9 +1,10 @@ # iOS owners for changing Xcode constants only. per-file lib/builders.star=file://infra/config/groups/ios/OWNERS -# iOS owners for builder configs. -per-file subprojects/chromium/ci.star=file://infra/config/groups/ios/OWNERS -per-file subprojects/chromium/try.star=file://infra/config/groups/ios/OWNERS +# iOS owners for iOS builder configs. +per-file subprojects/chromium/ci/chromium.fyi.star=file://infra/config/groups/ios/OWNERS +per-file subprojects/chromium/ci/chromium.mac.star=file://infra/config/groups/ios/OWNERS +per-file subprojects/chromium/try/tryserver.chromium.mac.star=file://infra/config/groups/ios/OWNERS # For weetbix configs. per-file *-weetbix-*=meiring@google.com
diff --git a/infra/config/generated/builders/ci/ios-catalyst/properties.textpb b/infra/config/generated/builders/ci/ios-catalyst/properties.textpb index 6d2a595..b65703ff 100644 --- a/infra/config/generated/builders/ci/ios-catalyst/properties.textpb +++ b/infra/config/generated/builders/ci/ios-catalyst/properties.textpb
@@ -17,5 +17,5 @@ "chromium", "ios" ], - "xcode_build_version": "13a233" + "xcode_build_version": "13c100" } \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios15-sdk-device/properties.textpb b/infra/config/generated/builders/ci/ios15-sdk-device/properties.textpb index 9015f79..c18caf9e 100644 --- a/infra/config/generated/builders/ci/ios15-sdk-device/properties.textpb +++ b/infra/config/generated/builders/ci/ios15-sdk-device/properties.textpb
@@ -13,5 +13,5 @@ }, "builder_group": "chromium.fyi", "recipe": "chromium", - "xcode_build_version": "13a233" + "xcode_build_version": "13c100" } \ No newline at end of file
diff --git a/infra/config/generated/builders/ci/ios15-sdk-simulator/properties.textpb b/infra/config/generated/builders/ci/ios15-sdk-simulator/properties.textpb index 9015f79..c18caf9e 100644 --- a/infra/config/generated/builders/ci/ios15-sdk-simulator/properties.textpb +++ b/infra/config/generated/builders/ci/ios15-sdk-simulator/properties.textpb
@@ -13,5 +13,5 @@ }, "builder_group": "chromium.fyi", "recipe": "chromium", - "xcode_build_version": "13a233" + "xcode_build_version": "13c100" } \ No newline at end of file
diff --git a/infra/config/generated/builders/try/android_cfi_rel_ng/properties.textpb b/infra/config/generated/builders/try/android_cfi_rel_ng/properties.textpb deleted file mode 100644 index d90599c..0000000 --- a/infra/config/generated/builders/try/android_cfi_rel_ng/properties.textpb +++ /dev/null
@@ -1,17 +0,0 @@ -{ - "$build/goma": { - "enable_ats": true, - "rpc_extra_params": "?prod", - "server_host": "goma.chromium.org", - "use_luci_auth": true - }, - "$recipe_engine/resultdb/test_presentation": { - "column_keys": [], - "grouping_keys": [ - "status", - "v.test_suite" - ] - }, - "builder_group": "tryserver.chromium.android", - "recipe": "chromium_trybot" -} \ No newline at end of file
diff --git a/infra/config/generated/builders/try/ios-catalyst/properties.textpb b/infra/config/generated/builders/try/ios-catalyst/properties.textpb index d729138..b9041d6 100644 --- a/infra/config/generated/builders/try/ios-catalyst/properties.textpb +++ b/infra/config/generated/builders/try/ios-catalyst/properties.textpb
@@ -13,5 +13,5 @@ }, "builder_group": "tryserver.chromium.mac", "recipe": "chromium_trybot", - "xcode_build_version": "13a233" + "xcode_build_version": "13c100" } \ No newline at end of file
diff --git a/infra/config/generated/builders/try/ios15-sdk-simulator/properties.textpb b/infra/config/generated/builders/try/ios15-sdk-simulator/properties.textpb index d729138..b9041d6 100644 --- a/infra/config/generated/builders/try/ios15-sdk-simulator/properties.textpb +++ b/infra/config/generated/builders/try/ios15-sdk-simulator/properties.textpb
@@ -13,5 +13,5 @@ }, "builder_group": "tryserver.chromium.mac", "recipe": "chromium_trybot", - "xcode_build_version": "13a233" + "xcode_build_version": "13c100" } \ No newline at end of file
diff --git a/infra/config/generated/luci/commit-queue.cfg b/infra/config/generated/luci/commit-queue.cfg index 7dcbbe5a..6e022a0 100644 --- a/infra/config/generated/luci/commit-queue.cfg +++ b/infra/config/generated/luci/commit-queue.cfg
@@ -550,10 +550,6 @@ includable_only: true } builders { - name: "chromium/try/android_cfi_rel_ng" - includable_only: true - } - builders { name: "chromium/try/android_compile_dbg" location_regexp: ".*" location_regexp_exclude: ".+/[+]/docs/.+"
diff --git a/infra/config/generated/luci/cr-buildbucket.cfg b/infra/config/generated/luci/cr-buildbucket.cfg index 8875fc59..ede5558 100644 --- a/infra/config/generated/luci/cr-buildbucket.cfg +++ b/infra/config/generated/luci/cr-buildbucket.cfg
@@ -29161,8 +29161,8 @@ '}' execution_timeout_secs: 10800 caches { - name: "xcode_ios_13a233" - path: "xcode_ios_13a233.app" + name: "xcode_ios_13c100" + path: "xcode_ios_13c100.app" } build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -30232,8 +30232,8 @@ '}' execution_timeout_secs: 36000 caches { - name: "xcode_ios_13a233" - path: "xcode_ios_13a233.app" + name: "xcode_ios_13c100" + path: "xcode_ios_13c100.app" } build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -30313,8 +30313,8 @@ '}' execution_timeout_secs: 36000 caches { - name: "xcode_ios_13a233" - path: "xcode_ios_13a233.app" + name: "xcode_ios_13c100" + path: "xcode_ios_13c100.app" } build_numbers: YES service_account: "chromium-ci-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -51144,96 +51144,6 @@ } } builders { - name: "android_cfi_rel_ng" - swarming_host: "chromium-swarm.appspot.com" - dimensions: "builderless:1" - dimensions: "cores:32" - dimensions: "cpu:x86-64" - dimensions: "os:Ubuntu-18.04" - dimensions: "pool:luci.chromium.try" - dimensions: "ssd:0" - exe { - cipd_package: "infra/chromium/bootstrapper/${platform}" - cipd_version: "latest" - cmd: "bootstrapper" - } - properties: - '{' - ' "$bootstrap/exe": {' - ' "exe": {' - ' "cipd_package": "infra/recipe_bundles/chromium.googlesource.com/chromium/tools/build",' - ' "cipd_version": "refs/heads/main",' - ' "cmd": [' - ' "luciexe"' - ' ]' - ' }' - ' },' - ' "$bootstrap/properties": {' - ' "properties_file": "infra/config/generated/builders/try/android_cfi_rel_ng/properties.textpb",' - ' "top_level_project": {' - ' "ref": "refs/heads/main",' - ' "repo": {' - ' "host": "chromium.googlesource.com",' - ' "project": "chromium/src"' - ' }' - ' }' - ' },' - ' "builder_group": "tryserver.chromium.android",' - ' "led_builder_is_bootstrapped": true,' - ' "recipe": "chromium_trybot"' - '}' - execution_timeout_secs: 14400 - expiration_secs: 7200 - grace_period { - seconds: 120 - } - caches { - name: "win_toolchain" - path: "win_toolchain" - } - build_numbers: YES - service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com" - task_template_canary_percentage { - value: 5 - } - experiments { - key: "luci.recipes.use_python3" - value: 100 - } - resultdb { - enable: true - bq_exports { - project: "chrome-luci-data" - dataset: "chromium" - table: "try_test_results" - test_results {} - } - bq_exports { - project: "chrome-luci-data" - dataset: "chromium" - table: "gpu_try_test_results" - test_results { - predicate { - test_id_regexp: "ninja://chrome/test:telemetry_gpu_integration_test[^/]*/.+" - } - } - } - bq_exports { - project: "chrome-luci-data" - dataset: "chromium" - table: "blink_web_tests_try_test_results" - test_results { - predicate { - test_id_regexp: "ninja://[^/]*blink_web_tests/.+" - } - } - } - history_options { - use_invocation_timestamp: true - } - } - } - builders { name: "android_compile_dbg" swarming_host: "chromium-swarm.appspot.com" dimensions: "builder:android_compile_dbg" @@ -60047,8 +59957,8 @@ path: "win_toolchain" } caches { - name: "xcode_ios_13a233" - path: "xcode_ios_13a233.app" + name: "xcode_ios_13c100" + path: "xcode_ios_13c100.app" } build_numbers: YES service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com" @@ -61151,8 +61061,8 @@ path: "win_toolchain" } caches { - name: "xcode_ios_13a233" - path: "xcode_ios_13a233.app" + name: "xcode_ios_13c100" + path: "xcode_ios_13c100.app" } build_numbers: YES service_account: "chromium-try-builder@chops-service-accounts.iam.gserviceaccount.com"
diff --git a/infra/config/generated/luci/luci-milo.cfg b/infra/config/generated/luci/luci-milo.cfg index 52b58113..e0dce76 100644 --- a/infra/config/generated/luci/luci-milo.cfg +++ b/infra/config/generated/luci/luci-milo.cfg
@@ -14237,9 +14237,6 @@ name: "buildbucket/luci.chromium.try/android_blink_rel" } builders { - name: "buildbucket/luci.chromium.try/android_cfi_rel_ng" - } - builders { name: "buildbucket/luci.chromium.try/android_compile_dbg" } builders { @@ -15336,9 +15333,6 @@ name: "buildbucket/luci.chromium.try/android_blink_rel" } builders { - name: "buildbucket/luci.chromium.try/android_cfi_rel_ng" - } - builders { name: "buildbucket/luci.chromium.try/android_compile_dbg" } builders {
diff --git a/infra/config/lib/builders.star b/infra/config/lib/builders.star index fe76a5f8..6ab1e54e 100644 --- a/infra/config/lib/builders.star +++ b/infra/config/lib/builders.star
@@ -185,10 +185,10 @@ x12d4e = xcode_enum("12d4e"), # Xcode 12.5. Requires Mac11+ OS. x12e262 = xcode_enum("12e262"), - # Default Xcode 13 for chromium iOS (release candidate). + # Default Xcode 13 for chromium iOS. x13main = xcode_enum("13a233"), - # Xcode 13.0 latest beta (release candidate). - x13latestbeta = xcode_enum("13a233"), + # A newer Xcode version used on beta bots. + x13betabots = xcode_enum("13c100"), # in use by ios-webkit-tot x13wk = xcode_enum("13a1030dwk"), )
diff --git a/infra/config/subprojects/chromium/ci/chromium.fyi.star b/infra/config/subprojects/chromium/ci/chromium.fyi.star index f77ccad..04bb87d 100644 --- a/infra/config/subprojects/chromium/ci/chromium.fyi.star +++ b/infra/config/subprojects/chromium/ci/chromium.fyi.star
@@ -1077,7 +1077,7 @@ ), ], os = os.MAC_11, - xcode = xcode.x13latestbeta, + xcode = xcode.x13betabots, ) fyi_ios_builder( @@ -1089,7 +1089,7 @@ ), ], os = os.MAC_11, - xcode = xcode.x13latestbeta, + xcode = xcode.x13betabots, ) fyi_mac_builder(
diff --git a/infra/config/subprojects/chromium/ci/chromium.mac.star b/infra/config/subprojects/chromium/ci/chromium.mac.star index df7cdcf..7b0369a0 100644 --- a/infra/config/subprojects/chromium/ci/chromium.mac.star +++ b/infra/config/subprojects/chromium/ci/chromium.mac.star
@@ -197,6 +197,8 @@ short_name = "ctl", ), ], + # TODO(crbug.com/1266211): Use main Xcode when main version >= 13c100. + xcode = xcode.x13betabots, ) ios_builder(
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.android.star b/infra/config/subprojects/chromium/try/tryserver.chromium.android.star index 6a0f7de10e..3a19662 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.android.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.android.star
@@ -390,11 +390,6 @@ ) try_.builder( - name = "android_cfi_rel_ng", - cores = 32, -) - -try_.builder( name = "android_compile_dbg", branch_selector = branches.STANDARD_MILESTONE, builderless = not settings.is_main,
diff --git a/infra/config/subprojects/chromium/try/tryserver.chromium.mac.star b/infra/config/subprojects/chromium/try/tryserver.chromium.mac.star index 64a1bd5..0323de0 100644 --- a/infra/config/subprojects/chromium/try/tryserver.chromium.mac.star +++ b/infra/config/subprojects/chromium/try/tryserver.chromium.mac.star
@@ -149,6 +149,8 @@ ios_builder( name = "ios-catalyst", + # TODO(crbug.com/1266211): Use main Xcode when main version >= 13c100. + xcode = xcode.x13betabots, ) ios_builder( @@ -233,7 +235,7 @@ ios_builder( name = "ios15-sdk-simulator", - xcode = xcode.x13latestbeta, + xcode = xcode.x13betabots, ) try_.gpu.optional_tests_builder(
diff --git a/ios/chrome/app/BUILD.gn b/ios/chrome/app/BUILD.gn index a794bf5..5f0a79b 100644 --- a/ios/chrome/app/BUILD.gn +++ b/ios/chrome/app/BUILD.gn
@@ -212,7 +212,10 @@ deps = [ ":enterprise_app_agent_ui", "//base", + "//components/policy/core/common", "//ios/chrome/app/application_delegate:app_state_header", + "//ios/chrome/browser", + "//ios/chrome/browser/policy", "//ios/chrome/browser/ui/main:scene_state_header", ] }
diff --git a/ios/chrome/app/DEPS b/ios/chrome/app/DEPS index c3929b8..860c1bc 100644 --- a/ios/chrome/app/DEPS +++ b/ios/chrome/app/DEPS
@@ -18,6 +18,7 @@ "+components/ntp_snippets", "+components/password_manager/core/common", "+components/payments/core", + "+components/policy/core/common", "+components/prefs", "+components/previous_session_info/previous_session_info.h", "+components/reading_list/core",
diff --git a/ios/chrome/app/enterprise_app_agent.mm b/ios/chrome/app/enterprise_app_agent.mm index 2dfdca1a..9c012997 100644 --- a/ios/chrome/app/enterprise_app_agent.mm +++ b/ios/chrome/app/enterprise_app_agent.mm
@@ -5,19 +5,39 @@ #import "ios/chrome/app/enterprise_app_agent.h" #include "base/check.h" +#include "components/policy/core/common/cloud/cloud_policy_client.h" +#import "components/policy/core/common/cloud/machine_level_user_cloud_policy_manager.h" +#import "components/policy/core/common/policy_namespace.h" #import "ios/chrome/app/application_delegate/app_state.h" #import "ios/chrome/app/enterprise_loading_screen_view_controller.h" +#include "ios/chrome/browser/application_context.h" +#import "ios/chrome/browser/policy/browser_policy_connector_ios.h" +#include "ios/chrome/browser/policy/chrome_browser_cloud_management_controller_ios.h" +#import "ios/chrome/browser/policy/chrome_browser_cloud_management_controller_observer_bridge.h" +#import "ios/chrome/browser/policy/cloud_policy_client_observer_bridge.h" #import "ios/chrome/browser/ui/main/scene_state.h" #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." #endif -@interface EnterpriseAppAgent () <SceneStateObserver> +@interface EnterpriseAppAgent () < + ChromeBrowserCloudManagementControllerObserver, + CloudPolicyClientObserver, + SceneStateObserver> { + std::unique_ptr<ChromeBrowserCloudManagementControllerObserverBridge> + _cloudManagementControllerObserver; + std::unique_ptr<CloudPolicyClientObserverBridge> _cloudPolicyClientObserver; + + BrowserPolicyConnectorIOS* _policyConnector; +} // The app state for the app. @property(nonatomic, weak, readonly) AppState* appState; +// Browser policy connector for iOS. +@property(nonatomic, assign) BrowserPolicyConnectorIOS* policyConnector; + @end @implementation EnterpriseAppAgent @@ -50,23 +70,24 @@ - (void)appState:(AppState*)appState didTransitionFromInitStage:(InitStage)previousInitStage { if (appState.initStage == InitStageEnterprise) { - // TODO(crbug.com/1178818): When fully implemented, the transition to the - // next init stage will only happen when the policy is actually fetched. if ([self shouldShowEnterpriseLoadScreen]) { + _cloudManagementControllerObserver = std::make_unique< + ChromeBrowserCloudManagementControllerObserverBridge>( + self, + self.policyConnector->chrome_browser_cloud_management_controller()); + + policy::CloudPolicyClient* client = + self.policyConnector->machine_level_user_cloud_policy_manager() + ->core() + ->client(); + _cloudPolicyClientObserver = + std::make_unique<CloudPolicyClientObserverBridge>(self, client); + for (SceneState* scene in appState.connectedScenes) { if (scene.activationLevel > SceneActivationLevelBackground) { [self showUIInScene:scene]; } } - - // TODO(crbug.com/1178818): remove this when the fetching is implemented. - // This is just debug code to simulate a long fetch. - dispatch_after( - dispatch_time(DISPATCH_TIME_NOW, (int64_t)(12 * NSEC_PER_SEC)), - dispatch_get_main_queue(), ^{ - [self.appState queueTransitionToNextInitStage]; - }); - } else { [self.appState queueTransitionToNextInitStage]; } @@ -74,6 +95,10 @@ if (previousInitStage == InitStageEnterprise) { // Nothing left to do; clean up. + _cloudManagementControllerObserver = nullptr; + _cloudPolicyClientObserver = nullptr; + + // Let the following line at the end of the block. [self.appState removeAgent:self]; } } @@ -88,6 +113,29 @@ } } +#pragma mark - ChromeBrowserCloudManagementControllerObserverBridge + +- (void)policyRegistrationDidCompleteSuccessfuly:(BOOL)succeeded { + if (!succeeded) { + [self.appState queueTransitionToNextInitStage]; + } +} + +#pragma mark - CloudPolicyClientObserverBridge + +- (void)cloudPolicyWasFetched:(policy::CloudPolicyClient*)client { + [self.appState queueTransitionToNextInitStage]; +} + +- (void)cloudPolicyDidError:(policy::CloudPolicyClient*)client { + [self.appState queueTransitionToNextInitStage]; +} + +- (void)cloudPolicyRegistrationChanged:(policy::CloudPolicyClient*)client { + // Ignored as for initialization, only registration and fetch completion + // results are needed. +} + #pragma mark - private - (void)showUIInScene:(SceneState*)sceneState { @@ -102,8 +150,24 @@ } - (BOOL)shouldShowEnterpriseLoadScreen { - // TODO(crbug.com/1178818): add actual logic here - return NO; + self.policyConnector = GetApplicationContext()->GetBrowserPolicyConnector(); + // |policyConnector| is nullptr if policy is not enabled. + if (!self.policyConnector) { + return NO; + } + + // |machineLevelUserCloudPolicyManager| is nullptr if the DM token needed + // for fetch is explicitly invalid or if enrollment tokens and DM token are + // empty. + policy::MachineLevelUserCloudPolicyManager* + machineLevelUserCloudPolicyManager = + self.policyConnector->machine_level_user_cloud_policy_manager(); + + return self.policyConnector->chrome_browser_cloud_management_controller() + ->IsEnabled() && + machineLevelUserCloudPolicyManager && + !machineLevelUserCloudPolicyManager->IsFirstPolicyLoadComplete( + policy::POLICY_DOMAIN_CHROME); } @end
diff --git a/ios/chrome/browser/commerce/price_alert_util.mm b/ios/chrome/browser/commerce/price_alert_util.mm index 2fe6815..30c95250 100644 --- a/ios/chrome/browser/commerce/price_alert_util.mm +++ b/ios/chrome/browser/commerce/price_alert_util.mm
@@ -4,6 +4,7 @@ #import "ios/chrome/browser/commerce/price_alert_util.h" +#include "base/metrics/field_trial_params.h" #include "components/prefs/pref_service.h" #include "components/unified_consent/url_keyed_data_collection_consent_helper.h" #import "ios/chrome/browser/browser_state/chrome_browser_state.h"
diff --git a/ios/chrome/browser/policy/BUILD.gn b/ios/chrome/browser/policy/BUILD.gn index 7b851b1d..5961e706 100644 --- a/ios/chrome/browser/policy/BUILD.gn +++ b/ios/chrome/browser/policy/BUILD.gn
@@ -16,8 +16,12 @@ "browser_state_policy_connector_factory.mm", "chrome_browser_cloud_management_controller_ios.h", "chrome_browser_cloud_management_controller_ios.mm", + "chrome_browser_cloud_management_controller_observer_bridge.h", + "chrome_browser_cloud_management_controller_observer_bridge.mm", "client_data_delegate_ios.cc", "client_data_delegate_ios.h", + "cloud_policy_client_observer_bridge.h", + "cloud_policy_client_observer_bridge.mm", "configuration_policy_handler_list_factory.h", "configuration_policy_handler_list_factory.mm", "device_management_service_configuration_ios.h",
diff --git a/ios/chrome/browser/policy/chrome_browser_cloud_management_controller_observer_bridge.h b/ios/chrome/browser/policy/chrome_browser_cloud_management_controller_observer_bridge.h new file mode 100644 index 0000000..4c8d69e --- /dev/null +++ b/ios/chrome/browser/policy/chrome_browser_cloud_management_controller_observer_bridge.h
@@ -0,0 +1,45 @@ +// Copyright 2022 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_POLICY_CHROME_BROWSER_CLOUD_MANAGEMENT_CONTROLLER_OBSERVER_BRIDGE_H_ +#define IOS_CHROME_BROWSER_POLICY_CHROME_BROWSER_CLOUD_MANAGEMENT_CONTROLLER_OBSERVER_BRIDGE_H_ + +#import <Foundation/Foundation.h> + +#include "components/enterprise/browser/controller/chrome_browser_cloud_management_controller.h" + +#include "base/scoped_observation.h" + +// Objective-C protocol mirroring +// policy::ChromeBrowserCloudManagementController::Observer. +@protocol ChromeBrowserCloudManagementControllerObserver <NSObject> +- (void)policyRegistrationDidCompleteSuccessfuly:(BOOL)succeeded; +@end + +// Simple observer bridge that forwards all events to its delegate observer. +class ChromeBrowserCloudManagementControllerObserverBridge + : public policy::ChromeBrowserCloudManagementController::Observer { + public: + ChromeBrowserCloudManagementControllerObserverBridge( + id<ChromeBrowserCloudManagementControllerObserver> observer_delegate, + policy::ChromeBrowserCloudManagementController* + chrome_cloud_management_observer); + ChromeBrowserCloudManagementControllerObserverBridge( + const ChromeBrowserCloudManagementControllerObserverBridge&) = delete; + ChromeBrowserCloudManagementControllerObserverBridge& operator=( + const ChromeBrowserCloudManagementControllerObserverBridge&) = delete; + ~ChromeBrowserCloudManagementControllerObserverBridge() override; + + // policy::ChromeBrowserCloudManagementController::Observer implementation. + void OnPolicyRegisterFinished(bool succeeded) override; + + private: + __weak id<ChromeBrowserCloudManagementControllerObserver> observer_; + base::ScopedObservation< + policy::ChromeBrowserCloudManagementController, + policy::ChromeBrowserCloudManagementController::Observer> + scoped_observation_{this}; +}; + +#endif // IOS_CHROME_BROWSER_POLICY_CHROME_BROWSER_CLOUD_MANAGEMENT_CONTROLLER_OBSERVER_BRIDGE_H_
diff --git a/ios/chrome/browser/policy/chrome_browser_cloud_management_controller_observer_bridge.mm b/ios/chrome/browser/policy/chrome_browser_cloud_management_controller_observer_bridge.mm new file mode 100644 index 0000000..96b155fb --- /dev/null +++ b/ios/chrome/browser/policy/chrome_browser_cloud_management_controller_observer_bridge.mm
@@ -0,0 +1,28 @@ +// Copyright 2022 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/policy/chrome_browser_cloud_management_controller_observer_bridge.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +ChromeBrowserCloudManagementControllerObserverBridge:: + ChromeBrowserCloudManagementControllerObserverBridge( + id<ChromeBrowserCloudManagementControllerObserver> observer_delegate, + policy::ChromeBrowserCloudManagementController* + chrome_cloud_management_observer) + : observer_(observer_delegate) { + DCHECK(observer_); + + scoped_observation_.Observe(chrome_cloud_management_observer); +} + +ChromeBrowserCloudManagementControllerObserverBridge:: + ~ChromeBrowserCloudManagementControllerObserverBridge() {} + +void ChromeBrowserCloudManagementControllerObserverBridge:: + OnPolicyRegisterFinished(bool succeeded) { + [observer_ policyRegistrationDidCompleteSuccessfuly:succeeded]; +}
diff --git a/ios/chrome/browser/policy/cloud_policy_client_observer_bridge.h b/ios/chrome/browser/policy/cloud_policy_client_observer_bridge.h new file mode 100644 index 0000000..048bc10 --- /dev/null +++ b/ios/chrome/browser/policy/cloud_policy_client_observer_bridge.h
@@ -0,0 +1,47 @@ +// Copyright 2022 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef IOS_CHROME_BROWSER_POLICY_CLOUD_POLICY_CLIENT_OBSERVER_BRIDGE_H_ +#define IOS_CHROME_BROWSER_POLICY_CLOUD_POLICY_CLIENT_OBSERVER_BRIDGE_H_ + +#import <Foundation/Foundation.h> + +#include "components/policy/core/common/cloud/cloud_policy_client.h" + +#include "base/scoped_observation.h" + +// Objective-C protocol mirroring +// policy::CloudPolicyClient::Observer. +@protocol CloudPolicyClientObserver <NSObject> +- (void)cloudPolicyWasFetched:(policy::CloudPolicyClient*)client; +- (void)cloudPolicyDidError:(policy::CloudPolicyClient*)client; +- (void)cloudPolicyRegistrationChanged:(policy::CloudPolicyClient*)client; +@end + +// Simple observer bridge that forwards all events to its delegate observer. +class CloudPolicyClientObserverBridge + : public policy::CloudPolicyClient::Observer { + public: + CloudPolicyClientObserverBridge( + id<CloudPolicyClientObserver> observer_delegate, + policy::CloudPolicyClient* cloud_policy_client_observer); + CloudPolicyClientObserverBridge(const CloudPolicyClientObserverBridge&) = + delete; + CloudPolicyClientObserverBridge& operator=( + const CloudPolicyClientObserverBridge&) = delete; + ~CloudPolicyClientObserverBridge() override; + + // policy::CloudPolicyClient::Observer implementation. + void OnPolicyFetched(policy::CloudPolicyClient* client) override; + void OnClientError(policy::CloudPolicyClient* client) override; + void OnRegistrationStateChanged(policy::CloudPolicyClient* client) override; + + private: + __weak id<CloudPolicyClientObserver> observer_; + base::ScopedObservation<policy::CloudPolicyClient, + policy::CloudPolicyClient::Observer> + scoped_observation_{this}; +}; + +#endif // IOS_CHROME_BROWSER_POLICY_CLOUD_POLICY_CLIENT_OBSERVER_BRIDGE_H_
diff --git a/ios/chrome/browser/policy/cloud_policy_client_observer_bridge.mm b/ios/chrome/browser/policy/cloud_policy_client_observer_bridge.mm new file mode 100644 index 0000000..8fab9ec --- /dev/null +++ b/ios/chrome/browser/policy/cloud_policy_client_observer_bridge.mm
@@ -0,0 +1,35 @@ +// Copyright 2022 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "ios/chrome/browser/policy/cloud_policy_client_observer_bridge.h" + +#if !defined(__has_feature) || !__has_feature(objc_arc) +#error "This file requires ARC support." +#endif + +CloudPolicyClientObserverBridge::CloudPolicyClientObserverBridge( + id<CloudPolicyClientObserver> observer_delegate, + policy::CloudPolicyClient* cloud_policy_client_observer) + : observer_(observer_delegate) { + DCHECK(observer_); + + scoped_observation_.Observe(cloud_policy_client_observer); +} + +CloudPolicyClientObserverBridge::~CloudPolicyClientObserverBridge() {} + +void CloudPolicyClientObserverBridge::OnPolicyFetched( + policy::CloudPolicyClient* client) { + [observer_ cloudPolicyWasFetched:client]; +} + +void CloudPolicyClientObserverBridge::OnClientError( + policy::CloudPolicyClient* client) { + [observer_ cloudPolicyDidError:client]; +} + +void CloudPolicyClientObserverBridge::OnRegistrationStateChanged( + policy::CloudPolicyClient* client) { + [observer_ cloudPolicyRegistrationChanged:client]; +}
diff --git a/ios/chrome/browser/ui/ntp/feed_metrics_recorder.h b/ios/chrome/browser/ui/ntp/feed_metrics_recorder.h index 74438c6..7c1d196 100644 --- a/ios/chrome/browser/ui/ntp/feed_metrics_recorder.h +++ b/ios/chrome/browser/ui/ntp/feed_metrics_recorder.h
@@ -16,9 +16,10 @@ kDiscoverFeedParent = 2, kDiscoverFeedWrapperParent = 3, kContentSuggestionsReset = 4, + kFeedHeaderParent = 5, // Change this to match max value. - kMaxValue = 4, + kMaxValue = 5, }; // Records different metrics for the NTP feeds.
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_coordinator.mm b/ios/chrome/browser/ui/ntp/new_tab_page_coordinator.mm index 9def1a1..8a2cc9a 100644 --- a/ios/chrome/browser/ui/ntp/new_tab_page_coordinator.mm +++ b/ios/chrome/browser/ui/ntp/new_tab_page_coordinator.mm
@@ -4,6 +4,7 @@ #import "ios/chrome/browser/ui/ntp/new_tab_page_coordinator.h" +#include "base/metrics/field_trial_params.h" #include "base/metrics/histogram_functions.h" #include "base/metrics/user_metrics.h" #include "base/metrics/user_metrics_action.h"
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm b/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm index 784d424b..dfa69c2 100644 --- a/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm +++ b/ios/chrome/browser/ui/ntp/new_tab_page_view_controller.mm
@@ -590,7 +590,7 @@ [self stickFakeOmniboxToTop]; - if (IsWebChannelsEnabled()) { + if (IsWebChannelsEnabled() && self.feedHeaderViewController) { [self stickFeedHeaderToTop]; } } @@ -659,6 +659,8 @@ // Pins feed header to top of the NTP when scrolled into the feed, below the // omnibox. - (void)stickFeedHeaderToTop { + DCHECK(self.feedHeaderViewController); + [NSLayoutConstraint deactivateConstraints:self.feedHeaderConstraints]; self.feedHeaderConstraints = @[ @@ -883,6 +885,9 @@ recordBrokenNTPHierarchy:BrokenNTPHierarchyRelationship:: kContentSuggestionsParent]; } + [self ensureView:self.feedHeaderViewController.view + isSubviewOf:self.collectionView + withRelationshipID:BrokenNTPHierarchyRelationship::kFeedHeaderParent]; [self ensureView:self.collectionView isSubviewOf:self.discoverFeedWrapperViewController.discoverFeed .view
diff --git a/ios/chrome/browser/ui/omnibox/popup/simple_omnibox_icon.mm b/ios/chrome/browser/ui/omnibox/popup/simple_omnibox_icon.mm index 4c7d52d..92a0a7d3 100644 --- a/ios/chrome/browser/ui/omnibox/popup/simple_omnibox_icon.mm +++ b/ios/chrome/browser/ui/omnibox/popup/simple_omnibox_icon.mm
@@ -4,6 +4,7 @@ #import "ios/chrome/browser/ui/omnibox/popup/simple_omnibox_icon.h" +#import "base/notreached.h" #import "ios/chrome/browser/ui/colors/MDCPalette+CrAdditions.h" #import "ios/chrome/browser/ui/omnibox/omnibox_suggestion_icon_util.h" #import "ios/chrome/browser/ui/ui_feature_flags.h"
diff --git a/ios/chrome/browser/ui/overlays/infobar_banner/infobar_banner_features.mm b/ios/chrome/browser/ui/overlays/infobar_banner/infobar_banner_features.mm index cef7440a..ac59740 100644 --- a/ios/chrome/browser/ui/overlays/infobar_banner/infobar_banner_features.mm +++ b/ios/chrome/browser/ui/overlays/infobar_banner/infobar_banner_features.mm
@@ -3,6 +3,8 @@ // found in the LICENSE file. #import "ios/chrome/browser/ui/overlays/infobar_banner/infobar_banner_features.h" + +#include "base/metrics/field_trial_params.h" #import "ios/chrome/browser/ui/infobars/infobar_constants.h" #if !defined(__has_feature) || !__has_feature(objc_arc)
diff --git a/ios/chrome/browser/ui/reading_list/reading_list_features.mm b/ios/chrome/browser/ui/reading_list/reading_list_features.mm index 7a5b3dc..8f43494a 100644 --- a/ios/chrome/browser/ui/reading_list/reading_list_features.mm +++ b/ios/chrome/browser/ui/reading_list/reading_list_features.mm
@@ -4,6 +4,8 @@ #import "ios/chrome/browser/ui/reading_list/reading_list_features.h" +#include "base/metrics/field_trial_params.h" + #if !defined(__has_feature) || !__has_feature(objc_arc) #error "This file requires ARC support." #endif
diff --git a/ios/chrome/browser/ui/util/ui_util.mm b/ios/chrome/browser/ui/util/ui_util.mm index 61f4dca..9519c527 100644 --- a/ios/chrome/browser/ui/util/ui_util.mm +++ b/ios/chrome/browser/ui/util/ui_util.mm
@@ -5,6 +5,7 @@ #import "ios/chrome/browser/ui/util/ui_util.h" #import <UIKit/UIKit.h> +#include <cmath> #include <limits> #include "base/feature_list.h"
diff --git a/ios/chrome/common/ui/elements/popover_label_view_controller.mm b/ios/chrome/common/ui/elements/popover_label_view_controller.mm index 10b4ee8..130d735 100644 --- a/ios/chrome/common/ui/elements/popover_label_view_controller.mm +++ b/ios/chrome/common/ui/elements/popover_label_view_controller.mm
@@ -59,7 +59,8 @@ - (instancetype)initWithMessage:(NSString*)message { NSDictionary* generalAttributes = @{ NSForegroundColorAttributeName : [UIColor colorNamed:kTextPrimaryColor], - NSFontAttributeName : [UIFont preferredFontForTextStyle:UIFontTextStyleBody] + NSFontAttributeName : + [UIFont preferredFontForTextStyle:UIFontTextStyleSubheadline] }; NSAttributedString* attributedString =
diff --git a/ios/chrome/test/earl_grey/BUILD.gn b/ios/chrome/test/earl_grey/BUILD.gn index 5a1ff320..69adda52a 100644 --- a/ios/chrome/test/earl_grey/BUILD.gn +++ b/ios/chrome/test/earl_grey/BUILD.gn
@@ -177,6 +177,7 @@ "//ios/third_party/material_components_ios", "//ios/web:eg_app_support+eg2", "//ios/web/common", + "//ios/web/js_messaging:js_messaging", "//ios/web/public", "//ios/web/public/deprecated", "//ios/web/public/js_messaging",
diff --git a/ios/chrome/test/earl_grey/DEPS b/ios/chrome/test/earl_grey/DEPS index 46a0e6c..4bbdc79 100644 --- a/ios/chrome/test/earl_grey/DEPS +++ b/ios/chrome/test/earl_grey/DEPS
@@ -5,6 +5,7 @@ "+components/password_manager/core/common/password_manager_features.h", "+components/payments/core/features.h", "+components/ukm/ios/features.h", + "+ios/web/js_messaging", "+services/metrics/public/cpp/ukm_recorder.h", ],
diff --git a/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm b/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm index b430978..e0508329 100644 --- a/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm +++ b/ios/chrome/test/earl_grey/chrome_earl_grey_app_interface.mm
@@ -54,6 +54,7 @@ #import "ios/testing/open_url_context.h" #include "ios/testing/verify_custom_webkit.h" #import "ios/web/common/features.h" +#import "ios/web/js_messaging/web_view_js_utils.h" #import "ios/web/public/deprecated/crw_js_injection_receiver.h" #import "ios/web/public/js_messaging/web_frame.h" #import "ios/web/public/js_messaging/web_frame_util.h" @@ -94,6 +95,18 @@ serializer.Serialize(*value); return base::SysUTF8ToNSString(serialized_value); } +// Returns a JSON-encoded string representing the given |value|. If |value| is +// nullptr, returns a string representing a base::Value of type NONE. +NSString* SerializedValue(const base::Value* value) { + base::Value none_value(base::Value::Type::NONE); + const base::Value* result = value ? value : &none_value; + DCHECK(result); + + std::string serialized_value; + JSONStringValueSerializer serializer(&serialized_value); + serializer.Serialize(*result); + return base::SysUTF8ToNSString(serialized_value); +} } @implementation JavaScriptExecutionResult @@ -958,33 +971,39 @@ __block NSString* blockResult = nil; __block bool blockError = false; - std::string script = base::SysNSStringToUTF8(javaScript); web::WebFrame* web_frame = web::GetMainFrame(chrome_test_util::GetCurrentWebState()); - web_frame->ExecuteJavaScript( - script, base::BindOnce(^(const base::Value* value, bool error) { - handlerCalled = true; - blockError = error; + if (web_frame) { + std::string script = base::SysNSStringToUTF8(javaScript); + web_frame->ExecuteJavaScript( + script, base::BindOnce(^(const base::Value* value, bool error) { + handlerCalled = true; + blockError = error; + blockResult = SerializedValue(value); + })); - base::Value none_value(base::Value::Type::NONE); - const base::Value* result = value ? value : &none_value; - DCHECK(result); + bool completed = WaitUntilConditionOrTimeout(kWaitForJSCompletionTimeout, ^{ + return handlerCalled; + }); - std::string serialized_value; - JSONStringValueSerializer serializer(&serialized_value); - serializer.Serialize(*result); - blockResult = base::SysUTF8ToNSString(serialized_value); - })); + BOOL success = completed && !blockError; - bool completed = WaitUntilConditionOrTimeout(kWaitForJSCompletionTimeout, ^{ - return handlerCalled; - }); + JavaScriptExecutionResult* result = + [[JavaScriptExecutionResult alloc] initWithResult:blockResult + successfulExecution:success]; + return result; + } - BOOL success = completed && !blockError; + NSError* error = nil; + id output = [self executeJavaScript:javaScript error:&error]; + std::unique_ptr<base::Value> value = web::ValueResultFromWKResult(output); + + NSString* callbackResult = SerializedValue(value.get()); + BOOL success = error ? false : true; JavaScriptExecutionResult* result = - [[JavaScriptExecutionResult alloc] initWithResult:blockResult + [[JavaScriptExecutionResult alloc] initWithResult:callbackResult successfulExecution:success]; return result; }
diff --git a/ios/net/cookies/cookie_store_ios.h b/ios/net/cookies/cookie_store_ios.h index ae6a5aaf..ad0fd8f 100644 --- a/ios/net/cookies/cookie_store_ios.h +++ b/ios/net/cookies/cookie_store_ios.h
@@ -86,10 +86,12 @@ void SetMetricsEnabled(); // Implementation of the net::CookieStore interface. - void SetCanonicalCookieAsync(std::unique_ptr<CanonicalCookie> cookie, - const GURL& source_url, - const net::CookieOptions& options, - SetCookiesCallback callback) override; + void SetCanonicalCookieAsync( + std::unique_ptr<CanonicalCookie> cookie, + const GURL& source_url, + const net::CookieOptions& options, + SetCookiesCallback callback, + const net::CookieAccessResult* cookie_access_result = nullptr) override; void GetCookieListWithOptionsAsync( const GURL& url, const net::CookieOptions& options,
diff --git a/ios/net/cookies/cookie_store_ios.mm b/ios/net/cookies/cookie_store_ios.mm index 266adc1..c6cf517d 100644 --- a/ios/net/cookies/cookie_store_ios.mm +++ b/ios/net/cookies/cookie_store_ios.mm
@@ -243,7 +243,8 @@ std::unique_ptr<net::CanonicalCookie> cookie, const GURL& source_url, const net::CookieOptions& options, - SetCookiesCallback callback) { + SetCookiesCallback callback, + const net::CookieAccessResult* cookie_access_result) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); // If cookies are not allowed, a CookieStoreIOS subclass should be used @@ -258,12 +259,18 @@ CookieAccessScheme access_scheme = cookie_util::ProvisionalAccessScheme(source_url); + net::CookieAccessResult access_result; + if (cookie_access_result) { + access_result = *cookie_access_result; + } + if (cookie->IsSecure() && access_scheme == CookieAccessScheme::kNonCryptographic) { - if (!callback.is_null()) - std::move(callback).Run( - net::CookieAccessResult(net::CookieInclusionStatus( - net::CookieInclusionStatus::EXCLUDE_SECURE_ONLY))); + if (!callback.is_null()) { + access_result.status.AddExclusionReason( + net::CookieInclusionStatus::EXCLUDE_SECURE_ONLY); + std::move(callback).Run(access_result); + } return; } @@ -272,13 +279,15 @@ if (ns_cookie != nil) { system_store_->SetCookieAsync( ns_cookie, &cookie->CreationDate(), - BindSetCookiesCallback(&callback, net::CookieAccessResult())); + BindSetCookiesCallback(&callback, access_result)); return; } - if (!callback.is_null()) - std::move(callback).Run(net::CookieAccessResult(net::CookieInclusionStatus( - net::CookieInclusionStatus::EXCLUDE_FAILURE_TO_STORE))); + if (!callback.is_null()) { + access_result.status.AddExclusionReason( + net::CookieInclusionStatus::EXCLUDE_FAILURE_TO_STORE); + std::move(callback).Run(access_result); + } } void CookieStoreIOS::GetCookieListWithOptionsAsync(
diff --git a/ios/web/public/test/fakes/fake_cookie_store.cc b/ios/web/public/test/fakes/fake_cookie_store.cc index 32dae89..8d618f7 100644 --- a/ios/web/public/test/fakes/fake_cookie_store.cc +++ b/ios/web/public/test/fakes/fake_cookie_store.cc
@@ -28,7 +28,8 @@ std::unique_ptr<net::CanonicalCookie> cookie, const GURL& source_url, const net::CookieOptions& options, - SetCookiesCallback callback) { + SetCookiesCallback callback, + const net::CookieAccessResult* cookie_access_result) { NOTIMPLEMENTED() << "Implement this if necessary."; }
diff --git a/ios/web/public/test/fakes/fake_cookie_store.h b/ios/web/public/test/fakes/fake_cookie_store.h index 50c72e7..6dcb371 100644 --- a/ios/web/public/test/fakes/fake_cookie_store.h +++ b/ios/web/public/test/fakes/fake_cookie_store.h
@@ -23,10 +23,12 @@ // Methods below have not been implemented in this fake. Implement them when // necessary. - void SetCanonicalCookieAsync(std::unique_ptr<net::CanonicalCookie> cookie, - const GURL& source_url, - const net::CookieOptions& options, - SetCookiesCallback callback) override; + void SetCanonicalCookieAsync( + std::unique_ptr<net::CanonicalCookie> cookie, + const GURL& source_url, + const net::CookieOptions& options, + SetCookiesCallback callback, + const net::CookieAccessResult* cookie_access_result = nullptr) override; void GetCookieListWithOptionsAsync( const GURL& url, const net::CookieOptions& options,
diff --git a/media/base/stream_parser.cc b/media/base/stream_parser.cc index 87041a8..eeaf076 100644 --- a/media/base/stream_parser.cc +++ b/media/base/stream_parser.cc
@@ -54,7 +54,7 @@ // buffers must not be less than. If |merged_buffers| already has buffers, // initialize |last_decode_timestamp| to the decode timestamp of the last // buffer in it. - DecodeTimestamp last_decode_timestamp = kNoDecodeTimestamp(); + DecodeTimestamp last_decode_timestamp = kNoDecodeTimestamp; if (!merged_buffers->empty()) last_decode_timestamp = merged_buffers->back()->GetDecodeTimestamp(); @@ -76,7 +76,7 @@ // Tracks which queue's iterator is pointing to the candidate buffer to // append next, or -1 if no candidate buffers found. This indexes |itrs|. int index_of_queue_with_next_decode_timestamp = -1; - DecodeTimestamp next_decode_timestamp = kNoDecodeTimestamp(); + DecodeTimestamp next_decode_timestamp = kNoDecodeTimestamp; // Scan each of the iterators for |buffer_queues| to find the candidate // buffer, if any, that has the lowest decode timestamp. @@ -87,12 +87,12 @@ // Extract the candidate buffer's decode timestamp. DecodeTimestamp ts = (*itrs[i])->GetDecodeTimestamp(); - if (last_decode_timestamp != kNoDecodeTimestamp() && + if (last_decode_timestamp != kNoDecodeTimestamp && ts < last_decode_timestamp) return false; if (ts < next_decode_timestamp || - next_decode_timestamp == kNoDecodeTimestamp()) { + next_decode_timestamp == kNoDecodeTimestamp) { // Remember the decode timestamp and queue iterator index for this // potentially winning candidate buffer. next_decode_timestamp = ts;
diff --git a/media/base/stream_parser_buffer.cc b/media/base/stream_parser_buffer.cc index 4ff451af..c064da2 100644 --- a/media/base/stream_parser_buffer.cc +++ b/media/base/stream_parser_buffer.cc
@@ -41,7 +41,7 @@ } DecodeTimestamp StreamParserBuffer::GetDecodeTimestamp() const { - if (decode_timestamp_ == kNoDecodeTimestamp()) + if (decode_timestamp_ == kNoDecodeTimestamp) return DecodeTimestamp::FromPresentationTime(timestamp()); return decode_timestamp_; } @@ -60,7 +60,7 @@ Type type, TrackId track_id) : DecoderBuffer(data, data_size, side_data, side_data_size), - decode_timestamp_(kNoDecodeTimestamp()), + decode_timestamp_(kNoDecodeTimestamp), config_id_(kInvalidConfigId), type_(type), track_id_(track_id),
diff --git a/media/base/stream_parser_buffer.h b/media/base/stream_parser_buffer.h index fd015461..fd994e9 100644 --- a/media/base/stream_parser_buffer.h +++ b/media/base/stream_parser_buffer.h
@@ -22,83 +22,98 @@ // between the two types explicit and easy to spot. class DecodeTimestamp { public: - DecodeTimestamp() {} - DecodeTimestamp(const DecodeTimestamp& rhs) : ts_(rhs.ts_) { } - DecodeTimestamp& operator=(const DecodeTimestamp& rhs) { - if (&rhs != this) - ts_ = rhs.ts_; - return *this; - } + constexpr DecodeTimestamp() = default; // Only operators that are actually used by the code have been defined. // Reviewers should pay close attention to the addition of new operators. - bool operator<(const DecodeTimestamp& rhs) const { return ts_ < rhs.ts_; } - bool operator>(const DecodeTimestamp& rhs) const { return ts_ > rhs.ts_; } - bool operator==(const DecodeTimestamp& rhs) const { return ts_ == rhs.ts_; } - bool operator!=(const DecodeTimestamp& rhs) const { return ts_ != rhs.ts_; } - bool operator>=(const DecodeTimestamp& rhs) const { return ts_ >= rhs.ts_; } - bool operator<=(const DecodeTimestamp& rhs) const { return ts_ <= rhs.ts_; } + constexpr bool operator<(const DecodeTimestamp& rhs) const { + return ts_ < rhs.ts_; + } + constexpr bool operator>(const DecodeTimestamp& rhs) const { + return ts_ > rhs.ts_; + } + constexpr bool operator==(const DecodeTimestamp& rhs) const { + return ts_ == rhs.ts_; + } + constexpr bool operator!=(const DecodeTimestamp& rhs) const { + return ts_ != rhs.ts_; + } + constexpr bool operator>=(const DecodeTimestamp& rhs) const { + return ts_ >= rhs.ts_; + } + constexpr bool operator<=(const DecodeTimestamp& rhs) const { + return ts_ <= rhs.ts_; + } - base::TimeDelta operator-(const DecodeTimestamp& rhs) const { + constexpr base::TimeDelta operator-(const DecodeTimestamp& rhs) const { return ts_ - rhs.ts_; } - DecodeTimestamp& operator+=(base::TimeDelta rhs) { + constexpr DecodeTimestamp& operator+=(base::TimeDelta rhs) { ts_ += rhs; return *this; } - DecodeTimestamp& operator-=(base::TimeDelta rhs) { + constexpr DecodeTimestamp& operator-=(base::TimeDelta rhs) { ts_ -= rhs; return *this; } - DecodeTimestamp operator+(base::TimeDelta rhs) const { + constexpr DecodeTimestamp operator+(base::TimeDelta rhs) const { return DecodeTimestamp(ts_ + rhs); } - DecodeTimestamp operator-(base::TimeDelta rhs) const { + constexpr DecodeTimestamp operator-(base::TimeDelta rhs) const { return DecodeTimestamp(ts_ - rhs); } - double operator/(base::TimeDelta rhs) const { return ts_ / rhs; } - int64_t IntDiv(base::TimeDelta rhs) const { return ts_.IntDiv(rhs); } + constexpr double operator/(base::TimeDelta rhs) const { return ts_ / rhs; } + constexpr int64_t IntDiv(base::TimeDelta rhs) const { + return ts_.IntDiv(rhs); + } - static DecodeTimestamp FromSecondsD(double seconds) { + static constexpr DecodeTimestamp FromSecondsD(double seconds) { return DecodeTimestamp(base::Seconds(seconds)); } - static DecodeTimestamp FromMilliseconds(int64_t milliseconds) { + static constexpr DecodeTimestamp FromMilliseconds(int64_t milliseconds) { return DecodeTimestamp(base::Milliseconds(milliseconds)); } - static DecodeTimestamp FromMicroseconds(int64_t microseconds) { + static constexpr DecodeTimestamp FromMicroseconds(int64_t microseconds) { return DecodeTimestamp(base::Microseconds(microseconds)); } // This method is used to explicitly call out when presentation timestamps // are being converted to a decode timestamp. - static DecodeTimestamp FromPresentationTime(base::TimeDelta timestamp) { + static constexpr DecodeTimestamp FromPresentationTime( + base::TimeDelta timestamp) { return DecodeTimestamp(timestamp); } - double InSecondsF() const { return ts_.InSecondsF(); } - int64_t InMilliseconds() const { return ts_.InMilliseconds(); } - int64_t InMicroseconds() const { return ts_.InMicroseconds(); } + constexpr double InSecondsF() const { return ts_.InSecondsF(); } + constexpr int64_t InMilliseconds() const { return ts_.InMilliseconds(); } + constexpr int64_t InMicroseconds() const { return ts_.InMicroseconds(); } // TODO(acolwell): Remove once all the hacks are gone. This method is called // by hacks where a decode time is being used as a presentation time. - base::TimeDelta ToPresentationTime() const { return ts_; } + constexpr base::TimeDelta ToPresentationTime() const { return ts_; } private: - explicit DecodeTimestamp(base::TimeDelta timestamp) : ts_(timestamp) { } + constexpr explicit DecodeTimestamp(base::TimeDelta timestamp) + : ts_(timestamp) {} base::TimeDelta ts_; }; -MEDIA_EXPORT extern inline DecodeTimestamp kNoDecodeTimestamp() { - return DecodeTimestamp::FromPresentationTime(kNoTimestamp); -} +// Indicates an invalid or missing decode timestamp. +constexpr DecodeTimestamp kNoDecodeTimestamp = + DecodeTimestamp::FromPresentationTime(kNoTimestamp); + +// Similar to media::kInfiniteDuration, indicates a decode timestamp of positive +// infinity. +constexpr DecodeTimestamp kMaxDecodeTimestamp = + DecodeTimestamp::FromPresentationTime(kInfiniteDuration); class MEDIA_EXPORT StreamParserBuffer : public DecoderBuffer { public:
diff --git a/media/filters/frame_processor.cc b/media/filters/frame_processor.cc index 0053cac..3f99a699 100644 --- a/media/filters/frame_processor.cc +++ b/media/filters/frame_processor.cc
@@ -195,8 +195,7 @@ MseTrackBuffer::MseTrackBuffer(ChunkDemuxerStream* stream, MediaLog* media_log, SourceBufferParseWarningCB parse_warning_cb) - : last_decode_timestamp_(kNoDecodeTimestamp()), - last_processed_decode_timestamp_(DecodeTimestamp()), + : last_decode_timestamp_(kNoDecodeTimestamp), pending_group_start_pts_(kNoTimestamp), last_keyframe_presentation_timestamp_(kNoTimestamp), last_signalled_group_start_pts_(kNoTimestamp), @@ -218,7 +217,7 @@ void MseTrackBuffer::Reset() { DVLOG(2) << __func__ << "()"; - last_decode_timestamp_ = kNoDecodeTimestamp(); + last_decode_timestamp_ = kNoDecodeTimestamp; last_frame_duration_ = kNoTimestamp; highest_presentation_timestamp_ = kNoTimestamp; needs_random_access_point_ = true; @@ -805,7 +804,7 @@ << " frame"; return false; } - if (decode_timestamp == kNoDecodeTimestamp()) { + if (decode_timestamp == kNoDecodeTimestamp) { MEDIA_LOG(ERROR, media_log_) << "Unknown DTS for " << frame->GetTypeName() << " frame"; return false; @@ -897,7 +896,7 @@ // times last frame duration: DecodeTimestamp track_last_decode_timestamp = track_buffer->last_decode_timestamp(); - if (track_last_decode_timestamp != kNoDecodeTimestamp()) { + if (track_last_decode_timestamp != kNoDecodeTimestamp) { base::TimeDelta track_dts_delta = decode_timestamp - track_last_decode_timestamp; if (track_dts_delta.is_negative() ||
diff --git a/media/filters/source_buffer_range.cc b/media/filters/source_buffer_range.cc index dcc13354..1412275e 100644 --- a/media/filters/source_buffer_range.cc +++ b/media/filters/source_buffer_range.cc
@@ -9,6 +9,7 @@ #include <string> #include "base/logging.h" +#include "media/base/stream_parser_buffer.h" #include "media/base/timestamp_constants.h" namespace media { @@ -117,7 +118,7 @@ for (BufferQueue::const_iterator itr = new_buffers.begin(); itr != new_buffers.end(); ++itr) { DCHECK((*itr)->timestamp() != kNoTimestamp); - DCHECK((*itr)->GetDecodeTimestamp() != kNoDecodeTimestamp()); + DCHECK((*itr)->GetDecodeTimestamp() != kNoDecodeTimestamp); buffers_.push_back(*itr); UpdateEndTime(*itr);
diff --git a/media/filters/source_buffer_stream.cc b/media/filters/source_buffer_stream.cc index 862e53e..ddd4a394 100644 --- a/media/filters/source_buffer_stream.cc +++ b/media/filters/source_buffer_stream.cc
@@ -16,6 +16,7 @@ #include "base/trace_event/trace_event.h" #include "media/base/demuxer_memory_limit.h" #include "media/base/media_switches.h" +#include "media/base/stream_parser_buffer.h" #include "media/base/timestamp_constants.h" namespace media { @@ -655,7 +656,7 @@ last_appended_buffer_timestamp_ = kNoTimestamp; last_appended_buffer_duration_ = kNoTimestamp; last_appended_buffer_is_keyframe_ = false; - last_appended_buffer_decode_timestamp_ = kNoDecodeTimestamp(); + last_appended_buffer_decode_timestamp_ = kNoDecodeTimestamp; highest_timestamp_in_append_sequence_ = kNoTimestamp; highest_buffered_end_time_in_append_sequence_ = kNoTimestamp; } @@ -677,7 +678,7 @@ itr != buffers.end(); ++itr) { DecodeTimestamp current_dts = (*itr)->GetDecodeTimestamp(); bool current_is_keyframe = (*itr)->is_key_frame(); - DCHECK(current_dts != kNoDecodeTimestamp()); + DCHECK(current_dts != kNoDecodeTimestamp); DCHECK((*itr)->duration() >= base::TimeDelta()) << "Packet with invalid duration." << " pts " << (*itr)->timestamp().InMicroseconds() << "us dts " @@ -693,10 +694,10 @@ // decode sequence since the last keyframe. if (current_is_keyframe) { // Reset prev_dts tracking since a new GOP is starting. - prev_dts = kNoDecodeTimestamp(); + prev_dts = kNoDecodeTimestamp; } - if (prev_dts != kNoDecodeTimestamp()) { + if (prev_dts != kNoDecodeTimestamp) { if (current_dts < prev_dts) { MEDIA_LOG(ERROR, media_log_) << "Buffers did not monotonically increase."; @@ -725,12 +726,12 @@ for (BufferQueue::const_iterator itr = buffers.begin(); itr != buffers.end(); ++itr) { DecodeTimestamp current_dts = (*itr)->GetDecodeTimestamp(); - DCHECK(current_dts != kNoDecodeTimestamp()); + DCHECK(current_dts != kNoDecodeTimestamp); base::TimeDelta interbuffer_distance = (*itr)->duration(); DCHECK(interbuffer_distance >= base::TimeDelta()); - if (prev_dts != kNoDecodeTimestamp()) { + if (prev_dts != kNoDecodeTimestamp) { interbuffer_distance = std::max(current_dts - prev_dts, interbuffer_distance); }
diff --git a/media/filters/source_buffer_stream.h b/media/filters/source_buffer_stream.h index 41ee2cf9..17d6858 100644 --- a/media/filters/source_buffer_stream.h +++ b/media/filters/source_buffer_stream.h
@@ -460,7 +460,7 @@ // verify monotonically increasing intra-GOP DTS sequence and to update max // interbuffer distance also by DTS deltas within a coded frame group, the // following is needed. - DecodeTimestamp last_appended_buffer_decode_timestamp_ = kNoDecodeTimestamp(); + DecodeTimestamp last_appended_buffer_decode_timestamp_ = kNoDecodeTimestamp; // The following is the highest presentation timestamp appended so far in this // coded frame group. Due to potentially out-of-order decode versus
diff --git a/media/formats/mp2t/es_parser.cc b/media/formats/mp2t/es_parser.cc index b54df62..df46f0a 100644 --- a/media/formats/mp2t/es_parser.cc +++ b/media/formats/mp2t/es_parser.cc
@@ -4,6 +4,7 @@ #include "media/formats/mp2t/es_parser.h" +#include "media/base/stream_parser_buffer.h" #include "media/base/timestamp_constants.h" #include "media/formats/common/offset_byte_queue.h" @@ -11,7 +12,7 @@ namespace mp2t { EsParser::TimingDesc::TimingDesc() - : dts(kNoDecodeTimestamp()), pts(kNoTimestamp) {} + : dts(kNoDecodeTimestamp), pts(kNoTimestamp) {} EsParser::TimingDesc::TimingDesc( DecodeTimestamp dts_in, base::TimeDelta pts_in)
diff --git a/media/formats/mp2t/es_parser_adts_fuzzer.cc b/media/formats/mp2t/es_parser_adts_fuzzer.cc index c126198..194d4ea 100644 --- a/media/formats/mp2t/es_parser_adts_fuzzer.cc +++ b/media/formats/mp2t/es_parser_adts_fuzzer.cc
@@ -6,6 +6,7 @@ #include <stdint.h> #include "base/bind.h" +#include "media/base/stream_parser_buffer.h" #include "media/formats/mp2t/es_parser_adts.h" static void NewAudioConfig(const media::AudioDecoderConfig& config) {} @@ -16,7 +17,7 @@ media::mp2t::EsParserAdts es_parser(base::BindRepeating(&NewAudioConfig), base::BindRepeating(&EmitBuffer), true); if (!es_parser.Parse(data, size, media::kNoTimestamp, - media::kNoDecodeTimestamp())) { + media::kNoDecodeTimestamp)) { return 0; } es_parser.Flush();
diff --git a/media/formats/mp2t/es_parser_h264.cc b/media/formats/mp2t/es_parser_h264.cc index eeae824..79ff5e9 100644 --- a/media/formats/mp2t/es_parser_h264.cc +++ b/media/formats/mp2t/es_parser_h264.cc
@@ -397,7 +397,7 @@ DVLOG_IF(1, current_timing_desc.pts == kNoTimestamp) << "Missing timestamp"; // If only the PTS is provided, copy the PTS into the DTS. - if (current_timing_desc.dts == kNoDecodeTimestamp()) { + if (current_timing_desc.dts == kNoDecodeTimestamp) { current_timing_desc.dts = DecodeTimestamp::FromPresentationTime(current_timing_desc.pts); }
diff --git a/media/formats/mp2t/es_parser_h264_fuzzer.cc b/media/formats/mp2t/es_parser_h264_fuzzer.cc index 69e2365..b39953c 100644 --- a/media/formats/mp2t/es_parser_h264_fuzzer.cc +++ b/media/formats/mp2t/es_parser_h264_fuzzer.cc
@@ -6,6 +6,7 @@ #include <stdint.h> #include "base/bind.h" +#include "media/base/stream_parser_buffer.h" #include "media/formats/mp2t/es_parser_h264.h" static void NewVideoConfig(const media::VideoDecoderConfig& config) {} @@ -16,7 +17,7 @@ media::mp2t::EsParserH264 es_parser(base::BindRepeating(&NewVideoConfig), base::BindRepeating(&EmitBuffer)); if (!es_parser.Parse(data, size, media::kNoTimestamp, - media::kNoDecodeTimestamp())) { + media::kNoDecodeTimestamp)) { return 0; } return 0;
diff --git a/media/formats/mp2t/es_parser_mpeg1audio_fuzzer.cc b/media/formats/mp2t/es_parser_mpeg1audio_fuzzer.cc index 933607a..ada891d 100644 --- a/media/formats/mp2t/es_parser_mpeg1audio_fuzzer.cc +++ b/media/formats/mp2t/es_parser_mpeg1audio_fuzzer.cc
@@ -9,6 +9,7 @@ #include "base/bind.h" #include "media/base/media_util.h" +#include "media/base/stream_parser_buffer.h" #include "media/formats/mp2t/es_parser_mpeg1audio.h" static void NewAudioConfig(const media::AudioDecoderConfig& config) {} @@ -21,7 +22,7 @@ base::BindRepeating(&NewAudioConfig), base::BindRepeating(&EmitBuffer), &media_log); if (es_parser.Parse(data, size, media::kNoTimestamp, - media::kNoDecodeTimestamp())) { + media::kNoDecodeTimestamp)) { es_parser.Flush(); } return 0;
diff --git a/media/formats/mp2t/es_parser_test_base.cc b/media/formats/mp2t/es_parser_test_base.cc index 157812f..8f448b74 100644 --- a/media/formats/mp2t/es_parser_test_base.cc +++ b/media/formats/mp2t/es_parser_test_base.cc
@@ -92,7 +92,7 @@ size_t cur_pes_size = pes_packets[k].size; base::TimeDelta pts = kNoTimestamp; - DecodeTimestamp dts = kNoDecodeTimestamp(); + DecodeTimestamp dts = kNoDecodeTimestamp; if (pes_packets[k].pts >= base::TimeDelta() || force_timing) pts = pes_packets[k].pts;
diff --git a/media/formats/mp2t/mp2t_stream_parser_unittest.cc b/media/formats/mp2t/mp2t_stream_parser_unittest.cc index 368b86e..decb1fcb 100644 --- a/media/formats/mp2t/mp2t_stream_parser_unittest.cc +++ b/media/formats/mp2t/mp2t_stream_parser_unittest.cc
@@ -166,10 +166,10 @@ video_frame_count_(0), has_audio_(true), has_video_(true), - audio_min_dts_(kNoDecodeTimestamp()), - audio_max_dts_(kNoDecodeTimestamp()), - video_min_dts_(kNoDecodeTimestamp()), - video_max_dts_(kNoDecodeTimestamp()), + audio_min_dts_(kNoDecodeTimestamp), + audio_max_dts_(kNoDecodeTimestamp), + video_min_dts_(kNoDecodeTimestamp), + video_max_dts_(kNoDecodeTimestamp), audio_track_id_(0), video_track_id_(0), current_audio_config_(), @@ -207,10 +207,10 @@ config_count_ = 0; audio_frame_count_ = 0; video_frame_count_ = 0; - audio_min_dts_ = kNoDecodeTimestamp(); - audio_max_dts_ = kNoDecodeTimestamp(); - video_min_dts_ = kNoDecodeTimestamp(); - video_max_dts_ = kNoDecodeTimestamp(); + audio_min_dts_ = kNoDecodeTimestamp; + audio_max_dts_ = kNoDecodeTimestamp; + video_min_dts_ = kNoDecodeTimestamp; + video_max_dts_ = kNoDecodeTimestamp; } bool AppendData(const uint8_t* data, size_t length) { @@ -317,18 +317,18 @@ if (!video_buffers.empty()) { DecodeTimestamp first_dts = video_buffers.front()->GetDecodeTimestamp(); DecodeTimestamp last_dts = video_buffers.back()->GetDecodeTimestamp(); - if (video_max_dts_ != kNoDecodeTimestamp() && first_dts < video_max_dts_) + if (video_max_dts_ != kNoDecodeTimestamp && first_dts < video_max_dts_) return false; - if (video_min_dts_ == kNoDecodeTimestamp()) + if (video_min_dts_ == kNoDecodeTimestamp) video_min_dts_ = first_dts; video_max_dts_ = last_dts; } if (!audio_buffers.empty()) { DecodeTimestamp first_dts = audio_buffers.front()->GetDecodeTimestamp(); DecodeTimestamp last_dts = audio_buffers.back()->GetDecodeTimestamp(); - if (audio_max_dts_ != kNoDecodeTimestamp() && first_dts < audio_max_dts_) + if (audio_max_dts_ != kNoDecodeTimestamp && first_dts < audio_max_dts_) return false; - if (audio_min_dts_ == kNoDecodeTimestamp()) + if (audio_min_dts_ == kNoDecodeTimestamp) audio_min_dts_ = first_dts; audio_max_dts_ = last_dts; }
diff --git a/media/formats/mp2t/ts_section_pes.cc b/media/formats/mp2t/ts_section_pes.cc index e2012da..59a5dc5 100644 --- a/media/formats/mp2t/ts_section_pes.cc +++ b/media/formats/mp2t/ts_section_pes.cc
@@ -9,6 +9,7 @@ #include "base/logging.h" #include "base/strings/string_number_conversions.h" #include "media/base/bit_reader.h" +#include "media/base/stream_parser_buffer.h" #include "media/base/timestamp_constants.h" #include "media/formats/mp2t/es_parser.h" #include "media/formats/mp2t/mp2t_common.h" @@ -223,7 +224,7 @@ // Convert and unroll the timestamps. base::TimeDelta media_pts(kNoTimestamp); - DecodeTimestamp media_dts(kNoDecodeTimestamp()); + DecodeTimestamp media_dts(kNoDecodeTimestamp); if (is_pts_valid) { int64_t pts = timestamp_unroller_->GetUnrolledTimestamp( ConvertTimestampSectionToTimestamp(pts_section));
diff --git a/media/formats/mp4/mp4_stream_parser.cc b/media/formats/mp4/mp4_stream_parser.cc index 3bb9f6e..f5402c2 100644 --- a/media/formats/mp4/mp4_stream_parser.cc +++ b/media/formats/mp4/mp4_stream_parser.cc
@@ -942,7 +942,7 @@ return ParseResult::kError; } - if (runs_->dts() != kNoDecodeTimestamp()) { + if (runs_->dts() != kNoDecodeTimestamp) { stream_buf->SetDecodeTimestamp(runs_->dts()); } else { MEDIA_LOG(ERROR, media_log_) << "Frame DTS exceeds representable limit";
diff --git a/media/formats/mp4/mp4_stream_parser_unittest.cc b/media/formats/mp4/mp4_stream_parser_unittest.cc index 2c973ff..ad20089d 100644 --- a/media/formats/mp4/mp4_stream_parser_unittest.cc +++ b/media/formats/mp4/mp4_stream_parser_unittest.cc
@@ -76,8 +76,7 @@ public: MP4StreamParserTest() : configs_received_(false), - lower_bound_( - DecodeTimestamp::FromPresentationTime(base::TimeDelta::Max())), + lower_bound_(kMaxDecodeTimestamp), verifying_keyframeness_sequence_(false) { std::set<int> audio_object_types; audio_object_types.insert(kISO_14496_3); @@ -158,12 +157,12 @@ } bool NewBuffersF(const StreamParser::BufferQueueMap& buffer_queue_map) { - DecodeTimestamp lowest_end_dts = kNoDecodeTimestamp(); + DecodeTimestamp lowest_end_dts = kNoDecodeTimestamp; for (const auto& it : buffer_queue_map) { DVLOG(3) << "Buffers for track_id=" << it.first; DCHECK(!it.second.empty()); - if (lowest_end_dts == kNoDecodeTimestamp() || + if (lowest_end_dts == kNoDecodeTimestamp || lowest_end_dts > it.second.back()->GetDecodeTimestamp()) lowest_end_dts = it.second.back()->GetDecodeTimestamp(); @@ -185,9 +184,9 @@ } } - EXPECT_NE(lowest_end_dts, kNoDecodeTimestamp()); + EXPECT_NE(lowest_end_dts, kNoDecodeTimestamp); - if (lower_bound_ != kNoDecodeTimestamp() && lowest_end_dts < lower_bound_) { + if (lower_bound_ != kNoDecodeTimestamp && lowest_end_dts < lower_bound_) { return false; } @@ -203,13 +202,12 @@ void NewSegmentF() { DVLOG(1) << "NewSegmentF"; - lower_bound_ = kNoDecodeTimestamp(); + lower_bound_ = kNoDecodeTimestamp; } void EndOfSegmentF() { DVLOG(1) << "EndOfSegmentF()"; - lower_bound_ = - DecodeTimestamp::FromPresentationTime(base::TimeDelta::Max()); + lower_bound_ = kMaxDecodeTimestamp; } void InitializeParserWithInitParametersExpectations(
diff --git a/media/formats/webm/webm_cluster_parser.cc b/media/formats/webm/webm_cluster_parser.cc index 436fa6a4..b76dc69 100644 --- a/media/formats/webm/webm_cluster_parser.cc +++ b/media/formats/webm/webm_cluster_parser.cc
@@ -13,6 +13,7 @@ #include "base/numerics/checked_math.h" #include "base/sys_byteorder.h" #include "media/base/decrypt_config.h" +#include "media/base/stream_parser_buffer.h" #include "media/base/timestamp_constants.h" #include "media/base/webvtt_util.h" #include "media/formats/webm/webm_constants.h" @@ -62,7 +63,7 @@ TrackType::VIDEO, video_default_duration, media_log), - ready_buffer_upper_bound_(kNoDecodeTimestamp()), + ready_buffer_upper_bound_(kNoDecodeTimestamp), media_log_(media_log) { for (auto it = text_tracks.begin(); it != text_tracks.end(); ++it) { text_track_map_.insert(std::make_pair( @@ -82,14 +83,14 @@ audio_.Reset(); video_.Reset(); ResetTextTracks(); - ready_buffer_upper_bound_ = kNoDecodeTimestamp(); + ready_buffer_upper_bound_ = kNoDecodeTimestamp; } int WebMClusterParser::Parse(const uint8_t* buf, int size) { audio_.ClearReadyBuffers(); video_.ClearReadyBuffers(); ClearTextTrackReadyBuffers(); - ready_buffer_upper_bound_ = kNoDecodeTimestamp(); + ready_buffer_upper_bound_ = kNoDecodeTimestamp; int result = parser_.Parse(buf, size); @@ -126,7 +127,7 @@ const WebMClusterParser::TextBufferQueueMap& WebMClusterParser::GetTextBuffers() { - if (ready_buffer_upper_bound_ == kNoDecodeTimestamp()) + if (ready_buffer_upper_bound_ == kNoDecodeTimestamp) UpdateReadyBuffers(); // Translate our |text_track_map_| into |text_buffers_map_|, inserting rows in @@ -145,7 +146,7 @@ void WebMClusterParser::GetBuffers(StreamParser::BufferQueueMap* buffers) { DCHECK(buffers->empty()); - if (ready_buffer_upper_bound_ == kNoDecodeTimestamp()) + if (ready_buffer_upper_bound_ == kNoDecodeTimestamp) UpdateReadyBuffers(); const BufferQueue& audio_buffers = audio_.ready_buffers(); if (!audio_buffers.empty()) { @@ -636,13 +637,13 @@ if (last_added_buffer_missing_duration_) return last_added_buffer_missing_duration_->GetDecodeTimestamp(); - return DecodeTimestamp::FromPresentationTime(base::TimeDelta::Max()); + return kMaxDecodeTimestamp; } void WebMClusterParser::Track::ExtractReadyBuffers( const DecodeTimestamp before_timestamp) { DCHECK(ready_buffers_.empty()); - DCHECK(kNoDecodeTimestamp() < before_timestamp); + DCHECK(kNoDecodeTimestamp < before_timestamp); if (buffers_.empty()) return; @@ -819,7 +820,7 @@ } void WebMClusterParser::UpdateReadyBuffers() { - DCHECK(ready_buffer_upper_bound_ == kNoDecodeTimestamp()); + DCHECK(ready_buffer_upper_bound_ == kNoDecodeTimestamp); DCHECK(text_buffers_map_.empty()); if (cluster_ended_) { @@ -828,14 +829,13 @@ // Per OnBlock(), all text buffers should already have valid durations, so // there is no need to call ApplyDurationEstimateIfNeeded() on text tracks // here. - ready_buffer_upper_bound_ = - DecodeTimestamp::FromPresentationTime(base::TimeDelta::Max()); + ready_buffer_upper_bound_ = kMaxDecodeTimestamp; DCHECK(ready_buffer_upper_bound_ == audio_.GetReadyUpperBound()); DCHECK(ready_buffer_upper_bound_ == video_.GetReadyUpperBound()); } else { ready_buffer_upper_bound_ = std::min(audio_.GetReadyUpperBound(), video_.GetReadyUpperBound()); - DCHECK(kNoDecodeTimestamp() < ready_buffer_upper_bound_); + DCHECK(kNoDecodeTimestamp < ready_buffer_upper_bound_); } // Prepare each track's ready buffers for retrieval.
diff --git a/media/formats/webm/webm_cluster_parser.h b/media/formats/webm/webm_cluster_parser.h index c581dee..1722382 100644 --- a/media/formats/webm/webm_cluster_parser.h +++ b/media/formats/webm/webm_cluster_parser.h
@@ -250,7 +250,7 @@ // bound.) // Parse() or Reset() must be called between calls to UpdateReadyBuffers() to // clear each track's ready buffers and to reset |ready_buffer_upper_bound_| - // to kNoDecodeTimestamp(). + // to kNoDecodeTimestamp. void UpdateReadyBuffers(); // Search for the indicated track_num among the text tracks. Returns NULL @@ -318,8 +318,8 @@ TextBufferQueueMap text_buffers_map_; // Limits the range of buffers returned by Get{Audio,Video,Text}Buffers() to - // this exclusive upper bound. Set to kNoDecodeTimestamp(), meaning not yet - // calculated, by Reset() and Parse(). If kNoDecodeTimestamp(), then + // this exclusive upper bound. Set to kNoDecodeTimestamp, meaning not yet + // calculated, by Reset() and Parse(). If kNoDecodeTimestamp, then // Get{Audio,Video,Text}Buffers() will calculate it to be the minimum (decode) // timestamp across all tracks' |last_buffer_missing_duration_|, or // kInfiniteDuration if no buffers are currently missing duration.
diff --git a/media/webrtc/audio_processor.cc b/media/webrtc/audio_processor.cc index 8487a7a..0551a5d0 100644 --- a/media/webrtc/audio_processor.cc +++ b/media/webrtc/audio_processor.cc
@@ -14,6 +14,7 @@ #include <utility> #include "base/feature_list.h" +#include "base/logging.h" #include "base/strings/stringprintf.h" #include "base/task/thread_pool.h" #include "base/trace_event/trace_event.h"
diff --git a/media/webrtc/helpers.cc b/media/webrtc/helpers.cc index 1c2f47e1..84829d8 100644 --- a/media/webrtc/helpers.cc +++ b/media/webrtc/helpers.cc
@@ -7,6 +7,7 @@ #include "base/feature_list.h" #include "base/files/file_util.h" #include "base/logging.h" +#include "base/metrics/field_trial_params.h" #include "build/build_config.h" #include "build/chromecast_buildflags.h" #include "media/webrtc/webrtc_features.h"
diff --git a/net/cookies/canonical_cookie.cc b/net/cookies/canonical_cookie.cc index 76c08c5..5cec04a 100644 --- a/net/cookies/canonical_cookie.cc +++ b/net/cookies/canonical_cookie.cc
@@ -1100,8 +1100,13 @@ const GURL& source_url, const CookieOptions& options, const CookieAccessParams& params, - const std::vector<std::string>& cookieable_schemes) const { + const std::vector<std::string>& cookieable_schemes, + const CookieAccessResult* cookie_access_result) const { CookieAccessResult access_result; + if (cookie_access_result) { + access_result = *cookie_access_result; + } + if (!base::Contains(cookieable_schemes, source_url.scheme())) { access_result.status.AddExclusionReason( CookieInclusionStatus::EXCLUDE_NONCOOKIEABLE_SCHEME);
diff --git a/net/cookies/canonical_cookie.h b/net/cookies/canonical_cookie.h index c406b47..984ade12 100644 --- a/net/cookies/canonical_cookie.h +++ b/net/cookies/canonical_cookie.h
@@ -339,11 +339,16 @@ // Returns if the cookie with given attributes can be set in context described // by |options| and |params|, and if no, describes why. + // + // |cookie_access_result| is an optional input status, to allow for status + // chaining from callers. It helps callers provide the status of a + // canonical cookie that may have warnings associated with it. CookieAccessResult IsSetPermittedInContext( const GURL& source_url, const CookieOptions& options, const CookieAccessParams& params, - const std::vector<std::string>& cookieable_schemes) const; + const std::vector<std::string>& cookieable_schemes, + const CookieAccessResult* cookie_access_result = nullptr) const; std::string DebugString() const;
diff --git a/net/cookies/canonical_cookie_unittest.cc b/net/cookies/canonical_cookie_unittest.cc index 633a324..b25d6e2c 100644 --- a/net/cookies/canonical_cookie_unittest.cc +++ b/net/cookies/canonical_cookie_unittest.cc
@@ -4337,6 +4337,29 @@ CookieSamePartyStatus::kNoSamePartyEnforcement), kCookieableSchemes), MatchesCookieAccessResult(IsInclude(), _, _, true)); + + // Test IsSetPermittedInContext successfully chains warnings by passing + // in a CookieAccessResult and expecting the result to have a + // WARN_ATTRIBUTE_VALUE_EXCEEDS_MAX_SIZE + CookieInclusionStatus status; + std::string long_path(ParsedCookie::kMaxCookieAttributeValueSize, 'a'); + + std::unique_ptr<CanonicalCookie> cookie_with_long_path = + CanonicalCookie::Create(url, "A=B; Path=/" + long_path, current_time, + absl::nullopt, absl::nullopt, &status); + CookieAccessResult cookie_access_result(status); + CookieOptions cookie_with_long_path_options; + EXPECT_THAT( + cookie_with_long_path->IsSetPermittedInContext( + url, cookie_with_long_path_options, + CookieAccessParams(CookieAccessSemantics::UNKNOWN, + false /* delegate_treats_url_as_trustworthy */, + CookieSamePartyStatus::kNoSamePartyEnforcement), + kCookieableSchemes, &cookie_access_result), + MatchesCookieAccessResult( + HasWarningReason( + CookieInclusionStatus::WARN_ATTRIBUTE_VALUE_EXCEEDS_MAX_SIZE), + _, _, _)); } TEST(CanonicalCookieTest, IsSetPermittedEffectiveSameSite) {
diff --git a/net/cookies/cookie_monster.cc b/net/cookies/cookie_monster.cc index 0aaef609..29341f25 100644 --- a/net/cookies/cookie_monster.cc +++ b/net/cookies/cookie_monster.cc
@@ -419,7 +419,8 @@ std::unique_ptr<CanonicalCookie> cookie, const GURL& source_url, const CookieOptions& options, - SetCookiesCallback callback) { + SetCookiesCallback callback, + const CookieAccessResult* cookie_access_result) { DCHECK(cookie->IsCanonical()); std::string domain = cookie->Domain(); @@ -429,7 +430,8 @@ // the callback on |*this|, so the callback will not outlive // the object. &CookieMonster::SetCanonicalCookie, base::Unretained(this), - std::move(cookie), source_url, options, std::move(callback)), + std::move(cookie), source_url, options, std::move(callback), + cookie_access_result), domain); } @@ -1471,10 +1473,12 @@ return std::make_pair(partition_it, cookie_it); } -void CookieMonster::SetCanonicalCookie(std::unique_ptr<CanonicalCookie> cc, - const GURL& source_url, - const CookieOptions& options, - SetCookiesCallback callback) { +void CookieMonster::SetCanonicalCookie( + std::unique_ptr<CanonicalCookie> cc, + const GURL& source_url, + const CookieOptions& options, + SetCookiesCallback callback, + const CookieAccessResult* cookie_access_result) { DCHECK(thread_checker_.CalledOnValidThread()); bool delegate_treats_url_as_trustworthy = @@ -1487,7 +1491,7 @@ delegate_treats_url_as_trustworthy, cookie_util::GetSamePartyStatus( *cc, options, first_party_sets_enabled_)), - cookieable_schemes_); + cookieable_schemes_, cookie_access_result); const std::string key(GetKey(cc->Domain()));
diff --git a/net/cookies/cookie_monster.h b/net/cookies/cookie_monster.h index 1ed421b..5ba0bca 100644 --- a/net/cookies/cookie_monster.h +++ b/net/cookies/cookie_monster.h
@@ -179,10 +179,12 @@ void SetAllCookiesAsync(const CookieList& list, SetCookiesCallback callback); // CookieStore implementation. - void SetCanonicalCookieAsync(std::unique_ptr<CanonicalCookie> cookie, - const GURL& source_url, - const CookieOptions& options, - SetCookiesCallback callback) override; + void SetCanonicalCookieAsync( + std::unique_ptr<CanonicalCookie> cookie, + const GURL& source_url, + const CookieOptions& options, + SetCookiesCallback callback, + const CookieAccessResult* cookie_access_result = nullptr) override; void GetCookieListWithOptionsAsync(const GURL& url, const CookieOptions& options, const CookiePartitionKeyCollection& s, @@ -370,10 +372,16 @@ // // |options| indicates if this setting operation is allowed // to affect http_only or same-site cookies. - void SetCanonicalCookie(std::unique_ptr<CanonicalCookie> cookie, - const GURL& source_url, - const CookieOptions& options, - SetCookiesCallback callback); + // + // |cookie_access_result| is an optional input status, to allow for status + // chaining from callers. It helps callers provide the status of a + // canonical cookie that may have warnings associated with it. + void SetCanonicalCookie( + std::unique_ptr<CanonicalCookie> cookie, + const GURL& source_url, + const CookieOptions& options, + SetCookiesCallback callback, + const CookieAccessResult* cookie_access_result = nullptr); void GetAllCookies(GetAllCookiesCallback callback);
diff --git a/net/cookies/cookie_monster_unittest.cc b/net/cookies/cookie_monster_unittest.cc index 5ef9e35..40579c0 100644 --- a/net/cookies/cookie_monster_unittest.cc +++ b/net/cookies/cookie_monster_unittest.cc
@@ -2904,7 +2904,7 @@ base::BindOnce(&CookieStore::SetCanonicalCookieAsync, base::Unretained(cm.get()), std::move(cookie), kUrl, CookieOptions::MakeAllInclusive(), - set_cookie_callback.MakeCallback()))); + set_cookie_callback.MakeCallback(), nullptr))); // Get cookie task. Queued before the delete task is executed, so should not // see the set cookie.
diff --git a/net/cookies/cookie_store.h b/net/cookies/cookie_store.h index 8631b10..4dbe5fd 100644 --- a/net/cookies/cookie_store.h +++ b/net/cookies/cookie_store.h
@@ -64,10 +64,16 @@ // which cookies it can alter (e.g. http only, or same site). // // The current time will be used in place of a null creation time. - virtual void SetCanonicalCookieAsync(std::unique_ptr<CanonicalCookie> cookie, - const GURL& source_url, - const CookieOptions& options, - SetCookiesCallback callback) = 0; + // + // |cookie_access_result| is an optional input status, to allow for status + // chaining from callers. It helps callers provide the status of a + // canonical cookie that may have warnings associated with it. + virtual void SetCanonicalCookieAsync( + std::unique_ptr<CanonicalCookie> cookie, + const GURL& source_url, + const CookieOptions& options, + SetCookiesCallback callback, + const CookieAccessResult* cookie_access_result = nullptr) = 0; // Obtains a CookieList for the given |url| and |options|. The returned // cookies are passed into |callback|, ordered by longest path, then earliest
diff --git a/net/cookies/cookie_store_test_helpers.cc b/net/cookies/cookie_store_test_helpers.cc index 6bd7395..501eaf58 100644 --- a/net/cookies/cookie_store_test_helpers.cc +++ b/net/cookies/cookie_store_test_helpers.cc
@@ -96,12 +96,14 @@ std::unique_ptr<CanonicalCookie> cookie, const GURL& source_url, const CookieOptions& options, - SetCookiesCallback callback) { + SetCookiesCallback callback, + const CookieAccessResult* cookie_access_result) { did_run_ = false; cookie_monster_->SetCanonicalCookieAsync( std::move(cookie), source_url, options, base::BindOnce(&DelayedCookieMonster::SetCookiesInternalCallback, - base::Unretained(this))); + base::Unretained(this)), + cookie_access_result); DCHECK_EQ(did_run_, true); base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( FROM_HERE,
diff --git a/net/cookies/cookie_store_test_helpers.h b/net/cookies/cookie_store_test_helpers.h index acbae8b..c75ec70 100644 --- a/net/cookies/cookie_store_test_helpers.h +++ b/net/cookies/cookie_store_test_helpers.h
@@ -59,10 +59,12 @@ // invoke the internal callback. // Post a delayed task to invoke the original callback with the results. - void SetCanonicalCookieAsync(std::unique_ptr<CanonicalCookie> cookie, - const GURL& source_url, - const CookieOptions& options, - SetCookiesCallback callback) override; + void SetCanonicalCookieAsync( + std::unique_ptr<CanonicalCookie> cookie, + const GURL& source_url, + const CookieOptions& options, + SetCookiesCallback callback, + const CookieAccessResult* cookie_access_result = nullptr) override; void GetCookieListWithOptionsAsync( const GURL& url,
diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc index 6a79b34..4338d10 100644 --- a/net/dns/host_resolver_manager.cc +++ b/net/dns/host_resolver_manager.cc
@@ -1110,7 +1110,8 @@ Callback callback, scoped_refptr<base::TaskRunner> proc_task_runner, const NetLogWithSource& job_net_log, - const base::TickClock* tick_clock) + const base::TickClock* tick_clock, + NetworkChangeNotifier::NetworkHandle network) : hostname_(std::move(hostname)), address_family_(address_family), flags_(flags), @@ -1120,7 +1121,8 @@ proc_task_runner_(std::move(proc_task_runner)), attempt_number_(0), net_log_(job_net_log), - tick_clock_(tick_clock) { + tick_clock_(tick_clock), + network_(network) { DCHECK(callback_); if (!params_.resolver_proc.get()) params_.resolver_proc = HostResolverProc::GetDefault(); @@ -1173,7 +1175,7 @@ FROM_HERE, base::BindOnce(&ProcTask::DoLookup, hostname_, address_family_, flags_, params_.resolver_proc, network_task_runner_, - std::move(completion_callback))); + std::move(completion_callback), network_)); net_log_.AddEventWithIntParams( NetLogEventType::HOST_RESOLVER_MANAGER_ATTEMPT_STARTED, @@ -1204,11 +1206,12 @@ HostResolverFlags flags, scoped_refptr<HostResolverProc> resolver_proc, scoped_refptr<base::SingleThreadTaskRunner> network_task_runner, - AttemptCompletionCallback completion_callback) { + AttemptCompletionCallback completion_callback, + NetworkChangeNotifier::NetworkHandle network) { AddressList results; int os_error = 0; int error = resolver_proc->Resolve(hostname, address_family, flags, - &results, &os_error); + &results, &os_error, network); network_task_runner->PostTask( FROM_HERE, base::BindOnce(std::move(completion_callback), results, @@ -1302,6 +1305,8 @@ NetLogWithSource net_log_; raw_ptr<const base::TickClock> tick_clock_; + // Network to perform DNS lookups for. + NetworkChangeNotifier::NetworkHandle network_; // Used to loop back from the blocking lookup attempt tasks as well as from // delayed retry tasks. Invalidate WeakPtrs on completion and cancellation to @@ -2516,7 +2521,8 @@ key_.flags, resolver_->proc_params_, base::BindOnce(&Job::OnProcTaskComplete, base::Unretained(this), tick_clock_->NowTicks()), - proc_task_runner_, net_log_, tick_clock_); + proc_task_runner_, net_log_, tick_clock_, + key_.resolve_context->target_network()); // Start() could be called from within Resolve(), hence it must NOT directly // call OnProcTaskComplete, for example, on synchronous failure.
diff --git a/net/dns/host_resolver_proc.cc b/net/dns/host_resolver_proc.cc index a63e421e..a205f62 100644 --- a/net/dns/host_resolver_proc.cc +++ b/net/dns/host_resolver_proc.cc
@@ -39,6 +39,20 @@ HostResolverProc::~HostResolverProc() = default; +int HostResolverProc::Resolve(const std::string& host, + AddressFamily address_family, + HostResolverFlags host_resolver_flags, + AddressList* addrlist, + int* os_error, + NetworkChangeNotifier::NetworkHandle network) { + if (network == NetworkChangeNotifier::kInvalidNetworkHandle) + return Resolve(host, address_family, host_resolver_flags, addrlist, + os_error); + + NOTIMPLEMENTED(); + return ERR_NOT_IMPLEMENTED; +} + int HostResolverProc::ResolveUsingPrevious( const std::string& host, AddressFamily address_family, @@ -114,7 +128,8 @@ AddressFamily address_family, HostResolverFlags host_resolver_flags, AddressList* addrlist, - int* os_error_opt) { + int* os_error_opt, + NetworkChangeNotifier::NetworkHandle network) { // |host| should be a valid domain name. HostResolverImpl::Resolve has checks // to fail early if this is not the case. DCHECK(IsValidDNSDomain(host)); @@ -180,7 +195,7 @@ !(BUILDFLAG(IS_APPLE) || BUILDFLAG(IS_OPENBSD) || BUILDFLAG(IS_ANDROID)) DnsReloaderMaybeReload(); #endif - auto [ai, err, os_error] = AddressInfo::Get(host, hints); + auto [ai, err, os_error] = AddressInfo::Get(host, hints, nullptr, network); bool should_retry = false; // If the lookup was restricted (either by address family, or address // detection), and the results where all localhost of a single family, @@ -198,7 +213,8 @@ } } if (should_retry) { - std::tie(ai, err, os_error) = AddressInfo::Get(host, hints); + std::tie(ai, err, os_error) = + AddressInfo::Get(host, hints, nullptr, network); } if (os_error_opt) @@ -213,16 +229,24 @@ SystemHostResolverProc::SystemHostResolverProc() : HostResolverProc(nullptr) {} +int SystemHostResolverProc::Resolve( + const std::string& hostname, + AddressFamily address_family, + HostResolverFlags host_resolver_flags, + AddressList* addr_list, + int* os_error, + NetworkChangeNotifier::NetworkHandle network) { + return SystemHostResolverCall(hostname, address_family, host_resolver_flags, + addr_list, os_error, network); +} + int SystemHostResolverProc::Resolve(const std::string& hostname, AddressFamily address_family, HostResolverFlags host_resolver_flags, AddressList* addr_list, int* os_error) { - return SystemHostResolverCall(hostname, - address_family, - host_resolver_flags, - addr_list, - os_error); + return Resolve(hostname, address_family, host_resolver_flags, addr_list, + os_error, NetworkChangeNotifier::kInvalidNetworkHandle); } SystemHostResolverProc::~SystemHostResolverProc() = default;
diff --git a/net/dns/host_resolver_proc.h b/net/dns/host_resolver_proc.h index e9a9807..cff9f64 100644 --- a/net/dns/host_resolver_proc.h +++ b/net/dns/host_resolver_proc.h
@@ -11,6 +11,7 @@ #include "base/time/time.h" #include "net/base/address_family.h" #include "net/base/net_export.h" +#include "net/base/network_change_notifier.h" namespace net { @@ -45,6 +46,15 @@ AddressList* addrlist, int* os_error) = 0; + // Same as above but requires an additional `network` parameter. Differently + // from above the lookup will be performed specifically for `network`. + virtual int Resolve(const std::string& host, + AddressFamily address_family, + HostResolverFlags host_resolver_flags, + AddressList* addrlist, + int* os_error, + NetworkChangeNotifier::NetworkHandle network); + protected: friend class base::RefCountedThreadSafe<HostResolverProc>; @@ -86,17 +96,21 @@ static HostResolverProc* default_proc_; }; -// Resolves |host| to an address list, using the system's default host resolver. +// Resolves `host` to an address list, using the system's default host resolver. // (i.e. this calls out to getaddrinfo()). If successful returns OK and fills -// |addrlist| with a list of socket addresses. Otherwise returns a -// network error code, and fills |os_error| with a more specific error if it +// `addrlist` with a list of socket addresses. Otherwise returns a +// network error code, and fills `os_error` with a more specific error if it // was non-NULL. +// `network` is an optional parameter, when specified (!= kInvalidNetworkHandle) +// the lookup will be performed specifically for `network`. NET_EXPORT_PRIVATE int SystemHostResolverCall( const std::string& host, AddressFamily address_family, HostResolverFlags host_resolver_flags, AddressList* addrlist, - int* os_error); + int* os_error, + NetworkChangeNotifier::NetworkHandle network = + NetworkChangeNotifier::kInvalidNetworkHandle); // Wraps call to SystemHostResolverCall as an instance of HostResolverProc. class NET_EXPORT_PRIVATE SystemHostResolverProc : public HostResolverProc { @@ -112,6 +126,13 @@ AddressList* addr_list, int* os_error) override; + int Resolve(const std::string& hostname, + AddressFamily address_family, + HostResolverFlags host_resolver_flags, + AddressList* addr_list, + int* os_error, + NetworkChangeNotifier::NetworkHandle network) override; + protected: ~SystemHostResolverProc() override; };
diff --git a/net/dns/resolve_context.h b/net/dns/resolve_context.h index 19b657d..81c3fb8 100644 --- a/net/dns/resolve_context.h +++ b/net/dns/resolve_context.h
@@ -18,6 +18,7 @@ #include "base/time/time.h" #include "net/base/isolation_info.h" #include "net/base/net_export.h" +#include "net/base/network_change_notifier.h" #include "net/dns/dns_config.h" #include "net/dns/public/secure_dns_mode.h" @@ -177,6 +178,14 @@ // (alternative service info if it supports QUIC, for instance). const IsolationInfo& isolation_info() const { return isolation_info_; } + // Network to perform the DNS lookups for. When equal to kInvalidNetworkHandle + // the decision of which one to target is left to the resolver. + NetworkChangeNotifier::NetworkHandle target_network() const { + // TODO(stefanoduo): Retrieve this from url_request_context_ once it can be + // bound to a network. + return NetworkChangeNotifier::kInvalidNetworkHandle; + } + base::SafeRef<ResolveContext> AsSafeRef() { return weak_ptr_factory_.GetSafeRef(); }
diff --git a/net/http/transport_security_state_static.json b/net/http/transport_security_state_static.json index 2cb06c1..0899981f 100644 --- a/net/http/transport_security_state_static.json +++ b/net/http/transport_security_state_static.json
@@ -1379,10 +1379,8 @@ { "name": "hostix.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "janoberst.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "jelmer.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "jelmer.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "munich-rage.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "posteo.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "stationary-traveller.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "thepaymentscompany.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "xps2pdf.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ansdell.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -1493,7 +1491,6 @@ { "name": "oscarvk.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "plothost.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "reishunger.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "salserocafe.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "samizdat.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "sslmate.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "steventress.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -2310,7 +2307,6 @@ { "name": "yafuoku.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "youdowell.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "188trafalgar.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "aerolog.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "aeyoun.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "afp548.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "afrodigital.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -2442,7 +2438,6 @@ { "name": "tallr.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "thehiddenbay.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tinkertry.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "voicesuk.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "vserver-preis-vergleich.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "whitestagforge.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "x.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -2996,7 +2991,6 @@ { "name": "webstudio-n.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "wonderhost.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "winsec.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "vbhelp.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "xgclan.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "yetcore.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "wpmeetup-berlin.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -3120,7 +3114,6 @@ { "name": "tcao.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "teamblueridge.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tecart-cloud.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "tecart-system.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tecartcrm.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "techandtux.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tehrabbitt.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -3768,7 +3761,6 @@ { "name": "takkaaaaa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "techcentric.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "thebreakroom.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "thego2swatking.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "thehackerblog.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "theitsage.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "topnovini.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -4062,7 +4054,6 @@ { "name": "polis.to", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "poon.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "poon.tech", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "pr1sm.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "pressrush.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "proxybay.la", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ptm.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -4266,7 +4257,6 @@ { "name": "leppis-it.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "liceserv.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "limpido.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "linuxbierwanderung.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "lmintlcx.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "locomore.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "lusis.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -4295,7 +4285,6 @@ { "name": "nanogeneinc.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "naval.tf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "neel.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "netlocal.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "nicoborghuis.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "niho.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "nodebrewery.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -4601,7 +4590,6 @@ { "name": "zooparadies.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "0paste.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "2nerds1bit.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "403.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "acr.im", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "adevel.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "adrl.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -4645,7 +4633,6 @@ { "name": "cadoth.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "caffeinatedcode.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "cais.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "caja-pdf.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "camperverzekerd.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "canadasmotorcycle.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "car-navi.ph", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -4704,7 +4691,6 @@ { "name": "faizan.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "faizan.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "federicomigliavacca.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "file-pdf.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "findtutorsnearme.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "flawlesscowboy.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "flowersandclouds.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -5071,7 +5057,6 @@ { "name": "realmic.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "rene-schwarz.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "rhinelander.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "rickyromero.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "romainmuller.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "royalpalacenogent.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "scs-simulatoren.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -5261,7 +5246,6 @@ { "name": "serfdom.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "seryo.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "sscd.no", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "terraform.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tinylan.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "travisf.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tresorsecurity.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -5387,7 +5371,6 @@ { "name": "bitcoinprivacy.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "blackphoenix.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "blastersklan.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "blue42.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bluescloud.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "blurringexistence.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bluserv.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -5614,7 +5597,6 @@ { "name": "gjspunk.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "glentakahashi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "go.ax", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "go2sh.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "goalsetup.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "gofigure.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "gorschenin.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -6284,7 +6266,6 @@ { "name": "bramvanaken.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "branchzero.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "brandred.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "bureaubolster.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "busold.ws", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "butchersworkshop.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "buybaby.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -6318,14 +6299,12 @@ { "name": "cool110.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "creep.im", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "cruzr.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "customd.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "cyberoptic.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "cygnius.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "czlx.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "d-designerin.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "dachb0den.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "dakrib.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "danieltollot.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "danjesensky.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "danrl.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "darrenm.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -6597,7 +6576,6 @@ { "name": "oscsdp.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ostendorf.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "p3in.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "pace.car", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "pajuvuo.fi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "palatin.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "pamplona.tv", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -6690,7 +6668,6 @@ { "name": "smet.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "smirkingwhorefromhighgarden.pro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "smoothics.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "snapworks.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "socialgrowing.cl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "socialhams.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "soldecom.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -6711,7 +6688,6 @@ { "name": "studlan.no", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "stumf.si", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "stygium.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "sudo.li", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "sundayfundayjapan.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "swansdoor.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "swmd5c.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -7220,7 +7196,6 @@ { "name": "edati.lv", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "educationunlimited.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "educator-one.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "electricianforum.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "elenoon.ir", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "emaily.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "emilyshepherd.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -7391,7 +7366,6 @@ { "name": "pcforum.sk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "pedicureduiven.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "pensiunealido.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "peoplesbankal.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "pepperworldhotshop.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "philadelphia.com.mx", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "picoauto.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -7506,7 +7480,6 @@ { "name": "us-immigration.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "uscitizenship.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "useresponse.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "userify.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "usimmigration.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "usitcolours.bg", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "validbrands.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -7544,7 +7517,6 @@ { "name": "xmerak.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "xotika.tv", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "xtronics.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "yufan.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "zberger.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "zizoo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "zju.tv", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -7564,7 +7536,6 @@ { "name": "baby-click.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bayden.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bckp.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "bespokestraps.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "betafive.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bildiri.ci", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bmone.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -7589,7 +7560,6 @@ { "name": "dairyshrine.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "davevelopment.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "dcpower.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "degroetenvanrosaline.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "donthedragonwilson.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "dragonschool.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "drkmtrx.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -7787,7 +7757,6 @@ { "name": "admitcard.co.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "adoal.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "adquisitio.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "adrenaline-gaming.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "aduvi.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "advelty.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "adventistdeploy.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -8011,7 +7980,6 @@ { "name": "brilliantdecisionmaking.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "britishscienceweek.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "britzer-toner.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "broken-oak.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "btcdlc.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bubblegumblog.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "buchheld.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -8058,7 +8026,6 @@ { "name": "casinolistings.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "casinoreal.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "castlejackpot.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "cdndepo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "cdnjs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "cdreporting.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ced-services.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -8326,7 +8293,6 @@ { "name": "equilibre-yoga-jennifer-will.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "equipsupply.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "erepublik-deutschland.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "ericwie.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ericyl.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "erigrid.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "errlytics.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -8746,7 +8712,6 @@ { "name": "juwairen.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "jym.fit", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "jznet.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "k-tube.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "kaangenc.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "kaasbijwijn.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "kabuabc.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -8907,7 +8872,6 @@ { "name": "maosensanguentadasdejesus.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "marcel-preuss.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "marcontrol.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "mark-a-hydrant.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "marketingdesignu.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "markido.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "markt-heiligenstadt.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -8968,8 +8932,6 @@ { "name": "mindbodycontinuum.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "miniskipper.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "minobar.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "mipiaci.co.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "mipiaci.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "mireservaonline.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "misakiya.co.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "missrain.tw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -9041,7 +9003,6 @@ { "name": "nalifornia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "nargileh.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "natalt.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "natanaelys.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "natenom.name", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "nathansmetana.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "nationalcentereg.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -9384,7 +9345,6 @@ { "name": "rsync.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "runcarina.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "runreport.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "ruobiyi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "rusempire.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "s-cubed.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "saccani.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -9421,7 +9381,6 @@ { "name": "secondarysurvivorportal.help", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "secretpanties.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "sectun.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "secure-server-hosting.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "secure.chat", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "securityinet.biz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "securityinet.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -9564,7 +9523,6 @@ { "name": "static.or.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "stationnementdenuit.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "statuschecks.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "steidlewirt.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "steigerplank.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "stevensononthe.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "stoffe-monster.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -9643,7 +9601,6 @@ { "name": "tgr.re", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "thai.land", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "thaicyberpoint.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "thaihostcool.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "theberkshirescompany.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "thecitizens.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "theclementinebutchers.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -9662,7 +9619,6 @@ { "name": "theseoframework.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "thesharepointfarm.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "theurbanyoga.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "thevintagenews.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "thewindow.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "thierfreund.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "thinktux.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -9852,7 +9808,6 @@ { "name": "wearandcare.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "web4pro.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "webchat.domains", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "webergrillrestaurant.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "webhosting4.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "weblogic.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "webmax.com.tr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -9869,7 +9824,6 @@ { "name": "wellensteyn.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "werbewelt-tv.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "werken-bij-inwork.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "werkenbijkfc.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "westsussexconnecttosupport.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "wetoxic.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "whatanime.ga", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -10116,7 +10070,6 @@ { "name": "ceyizlikelisleri.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "capecycles.co.za", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ceml.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "cfxdesign.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ceoimon.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ch-sc.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "cantrack.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -10783,7 +10736,6 @@ { "name": "snoupon.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "skyveo.ml", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "smallchat.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "smatch.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "smdev.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "snod.land", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "smartit.pro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -10806,7 +10758,6 @@ { "name": "stevenhumphrey.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "stillblackhat.id", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "stardanceacademy.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "sotiran.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "strbt.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "sunsetwx.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "stutelage.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -10975,7 +10926,6 @@ { "name": "xn--9pr52k0p5a.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "yclan.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "wsv-grafenau.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "yalook.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "yaucy.win", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "yard-fu.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "zachpeters.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -11346,7 +11296,6 @@ { "name": "linley.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "linuxandstuff.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "livingworduk.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "lonasdigital.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "look.co.il", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "lookastic.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "lookastic.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -11703,7 +11652,6 @@ { "name": "abyssproject.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "academialowcost.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "accwing.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "acg.sb", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "acgmoon.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "achow101.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "acsports.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -11856,7 +11804,6 @@ { "name": "bucket.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "buka.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bulbcompare.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "bulkcandystore.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bunkyo-life.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "burrow.ovh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bustimes.org.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -11970,7 +11917,6 @@ { "name": "culturedcode.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "cuongquach.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "cupi.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "current.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "cybozulive-dev.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "czechvirus.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "czerno.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -12289,7 +12235,6 @@ { "name": "info-beamer.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ingalls.run", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ins1gn1a.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "insertcoins.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "intafe.co.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "integraxor.com.tw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "intencje.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -12502,7 +12447,6 @@ { "name": "masterdigitale.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "maupiknik.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "maur.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "mcb-bank.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "mcdonalds.design", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "mchopkins.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "mckinley.school", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -13282,7 +13226,6 @@ { "name": "alisonlitchfield.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "athlin.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "benchmarkmonument.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "aquavitaedayspa.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "armadaquadrat.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "alspolska.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bartelt.name", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -13405,7 +13348,6 @@ { "name": "christophersole.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "byrko.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "budger.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "buffaloautomation.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bueltge.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "businessimmigration-eu.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "alexismeza.com.mx", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -13589,7 +13531,6 @@ { "name": "elenagherta.ga", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "dyn-nserve.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "eitler.cx", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "deamuseum.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "dukan-recepty.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "e7d.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "energyatlas.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -13611,7 +13552,6 @@ { "name": "connect.dating", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ecos-ev.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "dhome.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "ericisaweso.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "entourneebeetle.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "elenorsmadness.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "cougar.dating", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -13808,7 +13748,6 @@ { "name": "hdrsource.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "cloudteam.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "instagram-atom.appspot.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "hethely.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "hakatabijin-mind.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "honkion.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "hexagon-e.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -14078,7 +14017,6 @@ { "name": "makkusu.photo", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ls-alarm.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "loteks.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "menzel-motors.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "matrixcheats.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "logicio.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "mcea-hld.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -14156,7 +14094,6 @@ { "name": "mncloud.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "natsumihoshino.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "mobifinans.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "mitarbeiter-pc.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "mitsukabose.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "meronberry.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "mostlyharmless.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -14870,7 +14807,6 @@ { "name": "10tacle.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "aimeeandalec.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "addeekt.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "alertboxx.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "32h.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "anthropoid.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "acara-yoga.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -14893,16 +14829,13 @@ { "name": "abc-rz.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "arrowfunction.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "auroratownshipfd.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "4-1-where.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "best-wallpaper.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "andre-otto.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ardao.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "41where.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "australiancattle.dog", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "alisync.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "andbraiz.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bestgiftever.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "41-where.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "balonmano.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "basyspro.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "astrath.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -15021,7 +14954,6 @@ { "name": "channelcards.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "crackstation.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "comfy.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "comfortdom.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "charlenevondell.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "cavzodiaco.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "cwage.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -15488,7 +15420,6 @@ { "name": "lianye5.cc", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "logaldeveloper.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "lrssystems.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "lidl-tour.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "lantian.pub", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "luisv.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "lianye3.cc", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -15501,7 +15432,6 @@ { "name": "lidl-selection.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "localspot.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "lockpick.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "lustin.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "m2os.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "masterapi.ninja", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "lianyexiuchang.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -15540,7 +15470,6 @@ { "name": "martins.im", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "marmotte.love", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "liuboznaiko.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "meow.cloud", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "mayerbrownllz.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "melhoresdominios.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "lockpicks.se", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -15939,7 +15868,6 @@ { "name": "thewebsitemarketingagency.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ticktock.today", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tinyssh.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "tee-idf.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "trynowrinkleseyeserum.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tragmi.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "thijsvanderveen.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -15976,7 +15904,6 @@ { "name": "uli-eckhardt.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "wangqr.tk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "uswitch.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "vetmgmt.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "velen.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ureka.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ukk.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -16015,7 +15942,6 @@ { "name": "vrijstaandhuis-in-zwartewaterland-kopen.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "wormdisk.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ukrigging.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "vscale.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "wsdcapital.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "villasenor.online", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "wooviet.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -16167,7 +16093,6 @@ { "name": "af-fotografie.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "alt33c3.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "100onrainkajino.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "andymoore.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "anivar.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "amphibo.ly", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "armandsdiscount.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -16506,7 +16431,6 @@ { "name": "collectdocs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bierbringer.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "colombian.dating", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "cooink.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "comchezmeme.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "combron.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "corona-academy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -16575,7 +16499,6 @@ { "name": "devzero.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "deitti.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "dewin.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "discotek.club", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "der-bank-blog.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "diewebstube.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "dhpiggott.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -16583,7 +16506,6 @@ { "name": "dhpcs.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "delta-smart.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "deltasmart.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "derre.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "dicionario.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "cloud-crowd.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "destinattorneyjohngreene.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -16867,7 +16789,6 @@ { "name": "hallucinogen.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "gratis-lovecheck.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "h-rickroll-n.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "groupe-cassous.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "geekwithabudget.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "hearty.blog", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ginnegappen.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -16973,7 +16894,6 @@ { "name": "home-coaching.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "hanzubon.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ifengge.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "guso.site", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "hybridworx.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "identifyme.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "i28s.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -17202,7 +17122,6 @@ { "name": "lexico.pt", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "landgoedverkopen.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "legends-game.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "la-grande-jaugue.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "letsencrypt-for-cpanel.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "liukang.tech", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "levans.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -17312,7 +17231,6 @@ { "name": "martonmihaly.hu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "maskinkultur.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "michaeleichorn.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "mecenat-cassous.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "medy-me.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "mathieui.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "medpics.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -17624,7 +17542,6 @@ { "name": "puneflowermall.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "regain.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "progarm.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "prolan.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "raymondelooff.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "probiv.biz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "relaybox.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -18050,7 +17967,6 @@ { "name": "twee-onder-een-kap-woning-in-rijnwaarden-kopen.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "travelinsightswriter.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "twojfaktum.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "uevan.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "thedrop.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tentins.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tpidg.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -18335,7 +18251,6 @@ { "name": "aberdeenalmeras.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "agroyard.com.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "anitklib.ml", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "alloffice.com.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "andycrockett.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "acgaudio.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "animorphsfanforum.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -19360,7 +19275,6 @@ { "name": "jutlander-netbank.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "kathardt.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "keyihao.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "kettner.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "kehlenbach.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "juku-info.top", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "jasonwindholz.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -19453,7 +19367,6 @@ { "name": "latamarissiere.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "kruin.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "lacetsroses.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "lehtinen.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "lemondrops.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "lisamortimore.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "legalcontrol.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -19857,7 +19770,6 @@ { "name": "pomfe.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "plutokorea.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "pinkyf.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "peperiot.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "pony.today", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "popkins.cf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "peliseries24.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -20095,7 +20007,6 @@ { "name": "semaf.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "sfirat-haomer.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "securitywatch.co.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "shitbeast.institute", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "sapac.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "seefunk.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "scriptenforcer.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -20482,7 +20393,6 @@ { "name": "windholz.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "windwoodmedia.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "wemakeonlinereviews.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "webhelyesarcu.hu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "werner-ema.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "wispsuperfoods.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "vrijstaandhuis-in-alphen-aan-den-rijn-kopen.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -20831,7 +20741,6 @@ { "name": "dbdc.us", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "dclaisse.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "deadc0de.re", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "decstasy.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "deidee.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "deleidscheflesch.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "der-gardinenmann.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -21159,7 +21068,6 @@ { "name": "minacssas.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "mipapo.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "missualready.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "mistybox.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "miyako-kyoto.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "mk89.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "mo.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -21168,7 +21076,6 @@ { "name": "mobiwalk.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "modelservis.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "moellers.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "moellers.systems", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "monalisa.wtf", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "motohell.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "movie-cross.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -21593,7 +21500,6 @@ { "name": "11loc.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "1212873467.rsc.cdn77.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "125m125.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "130.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "132kv.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "13826145000.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "14x3.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -21631,7 +21537,6 @@ { "name": "404notfound.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "49889.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "4freepress.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "4hvac.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "4plebs.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "5c1fd0f31022cbc40af9f785847baaf9.space", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "64616e.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -21904,7 +21809,6 @@ { "name": "bazisszoftver.hu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bbimarketing.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bbkworldwide.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "bbrinck.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bcpc-ccgpfcheminots.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "beadare.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "beagreenbean.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -22266,7 +22170,6 @@ { "name": "crdmendoza.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "creadstudy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "creations-edita.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "creativesurvey.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "creators.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "credex.bg", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "creepycraft.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -22476,7 +22379,6 @@ { "name": "edwardspeyer.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "eer.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "eerstejaarsweekend.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "eez.ee", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ef-georgia.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "effective-altruist.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "eigo.work", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -22722,7 +22624,6 @@ { "name": "garanteasy.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "gardencarezone.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "garycarmell.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "garywhittington.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "gastauftritt.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "gauche.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "geborgen-wachsen.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -22811,7 +22712,6 @@ { "name": "gruenprint.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "gsmsecurity.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "gt-mp.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "gt-network.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "gufen.ga", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "guge.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "guid2steamid.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -23508,7 +23408,6 @@ { "name": "midnightmechanism.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "midweststructuralrepair.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "miffy.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "miguelgfierro.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "miguelmenendez.pro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "miketheuer.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "miki.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -23983,7 +23882,6 @@ { "name": "qcloud.cz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "qionouu.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "qixi.biz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "qredo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "quackerswaterproofing.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "quakerlens.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "qualitypropertycare.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -24388,7 +24286,6 @@ { "name": "ssrvpn.tech", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "stackfiles.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "stadtpapa.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "stairfallgames.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "stalkr.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "starfeeling.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "stastka.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -24400,7 +24297,6 @@ { "name": "steph-autoecole.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "stetspa.it", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "steve.kiwi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "stevechekblain.win", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "stevedoggett.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "stevengoodpaster.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "stift-kremsmuenster.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -25109,7 +25005,6 @@ { "name": "amicsdelbus.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "angeloroberto.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "aaronmcguire.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "apisyouwonthate.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "apadrinaunolivo.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "appscloudplus.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "animefluxxx.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -25184,7 +25079,6 @@ { "name": "armarinhovirtual.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "armazemdaminiatura.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "appleranch.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "awsmdev.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "aspatrimoine.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "australianfreebets.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "avspot.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -25232,7 +25126,6 @@ { "name": "azso.pro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "answers-online.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "baumannfabrice.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "battleboxx.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bearingworks.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bdenzer.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "beekeeper.blog", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -25743,7 +25636,6 @@ { "name": "deepspace.dedyn.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "echosim.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "duelsow.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "dsancomics.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "dormebebe.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "dullapp.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "droidwave.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -26705,7 +26597,6 @@ { "name": "luxescreenprotector.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "mkfs.be", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "molunerfinn.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "mohanmekap.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "miguel.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "mobil-bei-uns.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "lookart.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -27194,7 +27085,6 @@ { "name": "renezuo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "rfeif.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "qifu.org.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "ricketyspace.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "rishikeshyoga.in", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "returnofwar.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "retro.rocks", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -27770,7 +27660,6 @@ { "name": "thismumdoesntknowbest.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "towywebdesigns.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "vcmi.download", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "upbad.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "vernonchan.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "u-tokyo.club", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "usebean.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -28258,7 +28147,6 @@ { "name": "bigsisterchannel.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bett1.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "betamint.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "betkoo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "biblio.wiki", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bewonderen.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "92bmh.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -28273,7 +28161,6 @@ { "name": "bgtgames.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bernieware.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "biego.cn", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "blidz.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "birdiehosting.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bijugeral.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bigio.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -28282,7 +28169,6 @@ { "name": "blued.moe", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "asmbsurvey.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bijouxdegriffe.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "bijouxbrasil.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "blockified.io", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bl4ckb0x.biz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bernardfischer.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -28316,8 +28202,6 @@ { "name": "braams.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "brandcodeconsulting.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "birchbarkfurniture.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "birchbarkfurniture.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "birchbarkfurniture.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "cabaladada.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "brokenjoysticks.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "bzsparks.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -28481,7 +28365,6 @@ { "name": "dermediq.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "dengode.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "deped.blog", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "dataformers.at", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "criadorespet.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "dcautomacao.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "daren.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -29691,7 +29574,6 @@ { "name": "the-pcca.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tecyt.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tetsugakunomichi.jp", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "thaigirls.xyz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tech-zealots.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tes.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "svadobkajuvi.sk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -29764,7 +29646,6 @@ { "name": "tristanfarkas.one", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tmcreationweb.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "theruleslawyer.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "tqdev.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "trockendock.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tudiennhakhoa.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tzifas.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -30211,7 +30092,6 @@ { "name": "aliantsoft.pl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "allpointsblog.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "alternador.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "americandistribuidora.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "anime1.top", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "antenasmundosat.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "apcemporium.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -30861,7 +30741,6 @@ { "name": "ram.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "rambii.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "random-samplings.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "recantoshop.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "recantoshop.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "redair.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "renascentia.asia", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -31011,7 +30890,6 @@ { "name": "zhiku8.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ziemlich-zackig.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ziemlichzackig.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "zokster.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "zouk.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "zuan-in.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "zug.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -31128,7 +31006,6 @@ { "name": "resoundpro.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "risiinfo.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "royalcitytaxi.ca", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "sahb.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "sat7a-riyadh.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "sbanken.no", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "schlueter-software.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -31228,7 +31105,6 @@ { "name": "andrewdaws.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "andrewdaws.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "andrewrdaws.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "andrewryno.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "andro2id.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "angel-body.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "anime1.pw", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -31364,7 +31240,6 @@ { "name": "camilomodzz.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "caoyu.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "capuchinox.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "carlili.fr", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "carol-lambert.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "carrando.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "carrierplatform.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -31460,14 +31335,12 @@ { "name": "dark-infection.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "darkx.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "data-detox.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "data-detox.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "data.govt.nz", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "davesinclair.com.au", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "day.vip", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "dealbanana.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "deanbank.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "debrusoft.ch", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "debuis.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "dechat.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "deconsolutions.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "decorland.com.ua", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -31733,7 +31606,6 @@ { "name": "havasuhomepage.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "havasuinsurance.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "haze-productions.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "haze.network", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "haze.productions", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "head.ru", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "health-plan-news.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -31770,7 +31642,6 @@ { "name": "hulet.tech", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "humanexperiments.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "hyckenberg.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "iacono.com.br", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "iberiaversicherungen.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "ibiz.mk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "icondoom.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -31917,7 +31788,6 @@ { "name": "larraz.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "lasepiataca.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "latabledemontebello.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "laufcampus.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "lavamob.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "lavapot.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "le130rb.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -31988,7 +31858,6 @@ { "name": "marocemploi.co", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "marxist.party", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "maryeclark.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "massage4u.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "mat99.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "matheo-schefczyk.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "matriterie-sdv.ro", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -32364,7 +32233,6 @@ { "name": "sicilianbalm.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "sieulog.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "significados.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "siikarantacamping.fi", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "simpleinout.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "simplewire.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "sistel.es", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -32472,7 +32340,6 @@ { "name": "tik.help", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tkn.me", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tlca.org", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "tlcnet.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tntmobi.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tobaccore.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "tobaccore.sk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -32917,7 +32784,6 @@ { "name": "hfcbank.com.gh", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "hiddenmalta.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "hiltonarubabeachservices.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "himens.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "hiresuccessstaffing.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "hiv-symptome.de", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "hoekvanholland.eu", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -33137,7 +33003,6 @@ { "name": "showmax.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "simonbondo.dk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "simonfischer.info", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, - { "name": "skins.net", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "skortekaas.nl", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "slash32.co.uk", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, { "name": "slaughter.com", "policy": "bulk-18-weeks", "mode": "force-https", "include_subdomains": true }, @@ -33909,7 +33774,6 @@ { "name": "haydenjames.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hazeover.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "heldundsexgott.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "heliosvoting.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "helpflux.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hendrinortier.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hengstumone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -34878,7 +34742,6 @@ { "name": "cu247secure.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cuecamania.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "customizeyourshower.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "cybersafesolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cyclisjumper.gallery", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cytech.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "czaw.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -35231,7 +35094,6 @@ { "name": "sgb.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sgovaard.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "shadowsu.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "shadowsu.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "shaicoleman.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "shanxiapark.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "shehata.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -35251,7 +35113,6 @@ { "name": "simyo.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sinusbot.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sipc.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "skybound.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "smaltimento-rifiuti.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "smtp.bz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "smutba.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -35858,7 +35719,6 @@ { "name": "wein.co.kr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wellist.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wendu.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "wessner.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "whoiswp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wienerwichtelchallenge.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wilcodeboer.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -36814,7 +36674,6 @@ { "name": "domquixoteepi.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dongxuwang.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dotshule.ug", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "doubleaste.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "downrightcute.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dp.cx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dreadd.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -36870,7 +36729,6 @@ { "name": "endoftenancycleaninglondon.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "enginx.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ensemble-vos-idees.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "enviatufoto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "epa.com.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ephesusbreeze.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "epreskripce.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -37106,7 +36964,6 @@ { "name": "ich-hab-die-schnauze-voll-von-der-suche-nach-ner-kurzen-domain.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "icnsoft.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ideapaisajistas.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ideasenfoto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "idered.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "idesignstudio.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "idrissi.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -37297,7 +37154,6 @@ { "name": "maelstrom-fury.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "maisonpaulmier.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "makeurbiz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "malone.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mamaasia.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mamafit.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mamuko.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -37495,7 +37351,6 @@ { "name": "paket.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "palawan.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "palazzotalamo.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "pangci.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "papapa-members.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "papotage.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "paradependentesquimicos.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -37768,7 +37623,6 @@ { "name": "tass.nu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tbys.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tchaka.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "teambodyproject.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "teamninjaapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "techdroid.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "techformator.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -37800,7 +37654,6 @@ { "name": "tigit.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tiglitub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "timetech.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "timothybjacobs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tinlc.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tiny.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tju.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -38156,7 +38009,6 @@ { "name": "cookwithmanali.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "copdfoundation.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "corbi.net.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "cornmachine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "corona-renderer.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cozo.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "craftydev.design", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -38290,7 +38142,6 @@ { "name": "gamerzdot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gamesputnik.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gangnam-club.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "gangnam-karaoke.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "garten-bau.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gaysexpositions.guide", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gearallnews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -38329,7 +38180,6 @@ { "name": "hcaz.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "heatershop.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hiv.com.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "hnfertilizermachine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "holmq.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hotels-insolites.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "houstonauthorizedrepair.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -38524,7 +38374,6 @@ { "name": "pb-design.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pdxtowncar.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "peaceloveandlabor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "pelletizermill.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pendriveapps.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pengumuman.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pentofun.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -38933,7 +38782,6 @@ { "name": "briefvorlagen-papierformat.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "btcp.space", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "buchverlag-scholz.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "burgernet.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "businessfactors.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "buytermpaper.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "calatoruldigital.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -39029,7 +38877,6 @@ { "name": "ericloud.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "erikwagner.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "esamievalori.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "esbuilders.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "essayads.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "essaychecker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "essaydirectory.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -39467,7 +39314,6 @@ { "name": "tlumaczenie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "toetsplatform.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tokfun.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "tomasvecera.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tomasz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "topvertimai.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "touhou.ac.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -39730,7 +39576,6 @@ { "name": "croeder.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "croncron.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "crownpoint.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "cryptocaseproject.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cursosgratuitos.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cyberatlantis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cybercareers.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -39861,7 +39706,6 @@ { "name": "hestervanderheijden.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "higgsboson.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hitandhealth.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "hoevenstein.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hofauer.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hookany.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "horizonlawncare.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -40810,7 +40654,6 @@ { "name": "kelderwijnen.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kffs.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kimo.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "kinos.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lavoieducoeur.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "liam-is-a-nig.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lieberwirth.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -41062,7 +40905,6 @@ { "name": "aniaimichal.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "antennista.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "anthisis.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "anyquestions.govt.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aopsy.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "apercloud.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "apobot.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -41078,8 +40920,6 @@ { "name": "asenno.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "atmschambly.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "audiotechniker.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "aussiefunadvisor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "aussiestoresonline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aussiewebmarketing.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "authoritysolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "avocadooo.stream", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -41165,8 +41005,6 @@ { "name": "deepaero.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "detski.center", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "deuchnord.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "deutschebusiness.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "deutscheshoponline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "deuxmetrescubes.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dharveydev.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dictzone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -41235,7 +41073,6 @@ { "name": "ftptest.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "fuck-your-false-positive.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "fulltxt.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "funadvisor.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "funadvisorfrance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "furi.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "furrytech.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -41975,7 +41812,6 @@ { "name": "infos-generation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "inkurz.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "inmatefinancial.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ins.to", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "intelly.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ipemcomodoro.com.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "irasandi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -42199,7 +42035,6 @@ { "name": "rubens.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rudewiki.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rummage4property.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "rxight.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "salrosadohimalaia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "samlamac.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "scaffalature.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -43360,7 +43195,6 @@ { "name": "partiwatch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pashminacachemire.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "penslabyrinth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "performancehealth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "perthtrains.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "peters.consulting", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "philippinedroneassociation.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -43403,7 +43237,6 @@ { "name": "riederle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "robertbln.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "robertopazeller.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "roeleveld.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "romantica-hotel.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "romar-bos.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rothe.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -43466,7 +43299,6 @@ { "name": "subsistence.wiki", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "successwithflora.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "succubus.xxx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "suessdeko.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "superaficionados.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "switcheo.exchange", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "switcheo.rocks", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -43637,7 +43469,6 @@ { "name": "bamtoki.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "banter.city", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "baseline.ba", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "bauen-mit-ziegel.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "behoreal.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bentongroup.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bentonweatherstone.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -44488,7 +44319,6 @@ { "name": "dr-marlen-nystroem.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dr-moldovan.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dr-nystroem.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dr-schlamminger.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dr-schmutzer.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dr-stoetter.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "draghive.asia", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -45112,7 +44942,6 @@ { "name": "yeshu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yex.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yex.trade", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "yopuedo.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "your-out.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yukimochi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yukimochi.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -45140,7 +44969,6 @@ { "name": "666668722.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6z3.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "7717a.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "81818app.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "8722.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "8722am.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "8722cn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -45542,7 +45370,6 @@ { "name": "ldjb.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "learningman.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lebendige-heilkunst.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "leter.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "letskick.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "liberdademg.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lightingagoura.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -45574,7 +45401,6 @@ { "name": "malibuexteriorlighting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "malikzinad.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "manfredschafer.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "manonamission.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "manuelahidalgo.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marcel-veronetzki.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "margo.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -45756,7 +45582,6 @@ { "name": "sadev.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "safepay.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sanantoniolocksmithinc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "santensautomatics.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sap-inc.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sbsrv.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "scaffoldhirerandburg.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -45946,7 +45771,6 @@ { "name": "angelicare.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ani-man.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "antarees.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "antirayapmalang.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "apivia.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "apotheek-nl.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "apotheke-ch.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -46138,7 +45962,6 @@ { "name": "needemand.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nemplex.win", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "netrogue.ninja", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "nettacompany.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "netzfabrik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "newcloudwhodis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nginxconfig.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -46386,7 +46209,6 @@ { "name": "brush.ninja", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bryansmith.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bt78.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "bt9.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bt96.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bt995.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bturboo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -46816,7 +46638,6 @@ { "name": "protectoraanimalesalicante.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "provisionircd.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "proxi.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "pukfalkenberg.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "q5118.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "qa-team.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "qiuxian.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -46896,7 +46717,6 @@ { "name": "stargatelrp.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "steakhaus-zumdorfbrunnen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stealingheather.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "stebet.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stge.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stiftemaskinen.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stmaryextra.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -47132,7 +46952,6 @@ { "name": "dissieux.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "drchrislivingston.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dsanraffleshangbai.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "duocircle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dwi-sued.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dziary.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "e-colle.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -47171,7 +46990,6 @@ { "name": "guidebook.co.tz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "happndin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "havetherelationshipyouwant.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "herbhuang.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hotels4teams.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "html.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "humorcaliente.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -47556,7 +47374,6 @@ { "name": "bttc.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "burncorp.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "buycbd.store", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "bztraveler.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "c0rporation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cabineritten.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "calrotaract.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -47599,7 +47416,6 @@ { "name": "cisofy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cispeo.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cjdby.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "cjean.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "clsfoundationrepairandwaterproofing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cobcode.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "codejots.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -47779,7 +47595,6 @@ { "name": "fotokomorkomania.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "foundationspecialisteast.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "foundationspecialistmi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "foxo.blue", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "fracreazioni.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "frankbellamy.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "free.ac.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -47797,7 +47612,6 @@ { "name": "gachimuchi.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gachiyase.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "galanight.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "galilahiskye.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gameplaysforkids.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gametube.website", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gamivo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -47896,7 +47710,6 @@ { "name": "ikedaquotes.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "imhua.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "imwalking.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "imyrs.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "incy.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "indiatrademarkwatch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "indigitalagency.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -48112,7 +47925,6 @@ { "name": "nyansparkle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "obs.group", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "obsessharness.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ocarupo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "olbat.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "oldita.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "oles-hundehaus.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -48222,7 +48034,6 @@ { "name": "rawinfosec.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rbcservicehub-uat.azurewebsites.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "reactpwa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "readytobattle.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "recaptcha-demo.appspot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "refletindosaude.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "reisslittle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -48316,7 +48127,6 @@ { "name": "sight-sound.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sihaizixun.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "simrail.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "sinronet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "siratalmustaqim.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sistemlash.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "skincare-note.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -48453,7 +48263,6 @@ { "name": "universal.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "upholsterydesign.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "upturn.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "urbandance.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "urep.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "urlakite.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "uskaria.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -48762,7 +48571,6 @@ { "name": "hyperstack.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "iaf.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ibodyiq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "idealimplant.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "idratherbequilting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ifxd.bid", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ignat-mag.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -48815,7 +48623,6 @@ { "name": "kvantel.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kwiknews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lappari.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "lara.photography", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "larryli.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ledshop.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lenget.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -48993,7 +48800,6 @@ { "name": "s4media.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "safebasementsofindiana.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "saintmichelqud.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "salemedia.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "salonasymetria.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "salonasymetria.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sammyservers.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -49067,7 +48873,6 @@ { "name": "thedom.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "thefairieswantmedead.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "theflowershopdeddington.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "thegrs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "themobilestuffs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "theproductpoet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "therepublicofliverpool.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -49109,7 +48914,6 @@ { "name": "virtualcommodities.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "visalist.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vitra-showrooms.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "vrij-links.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vwo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "walksfourpaws.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wanlieyan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -49201,7 +49005,6 @@ { "name": "biso.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bitaccelerate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bk-wife.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "blui.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bombe-lacrymogene.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "boyntonobserver.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "brakpanplumber24-7.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -49298,7 +49101,6 @@ { "name": "hagiati.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hatpakha.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "healthcultureexpo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "hexiaohu.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hkr.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hoepli.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hues-in-lee.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -49310,7 +49112,6 @@ { "name": "incert.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "inchidi.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "inff.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "infopuntzorg.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "innobatics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "inscripcionessena.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "isitrest.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -49436,7 +49237,6 @@ { "name": "teslamagician.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "testeveonline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "theadelaideshow.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "theaps.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "thebarneystyle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "thefilmphotography.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "thekovnerfoundation.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -49548,7 +49348,6 @@ { "name": "ae-construction.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aerapass.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "afcompany.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "afcurgentcarelyndhurst.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "affordableenergyadvocates.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "agencyinmotion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "agrajag.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -49737,7 +49536,6 @@ { "name": "diatrofi-ygeia.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "digipitch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "digital-muscle.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "digitaletanker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "digitalfury.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "diozoid.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dixibox.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -50327,7 +50125,6 @@ { "name": "suttacentral.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "swqa.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "syntheticgrassliving.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "tadiranbatteries.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "talentwall.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tam-moon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tannerwilliamson.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -50402,7 +50199,6 @@ { "name": "vidracariaespelhosbh.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "viewey.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vignoblesdeletat.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "vinihk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "visitmaine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vocalik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vogue.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -50608,7 +50404,6 @@ { "name": "bonawehouse.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bongo.cat", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bonux.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "botezdepoveste.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "botsindiscord.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bridgedirectoutreach.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "briffoud.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -51163,7 +50958,6 @@ { "name": "shop4d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "shopperexperts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "shopstasy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "silverswanrecruitment.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "site-helper.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "skk.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "skyscapecanopies.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -51678,7 +51472,6 @@ { "name": "rttss.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ryssl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sainthelenas.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "saintjamestheapostle.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "saintjohn-bocaraton.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "salandalairconditioning.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "salidaswap.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -51831,7 +51624,6 @@ { "name": "arlingtonelectric.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "armeo.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "artificialgrassandlandscaping.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "askcascade.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "atomic.red", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "authenticwoodcraft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "autoproshouston.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -51866,7 +51658,6 @@ { "name": "centennialseptic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cetangarana.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "chaffeyconstruction.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "chancekorte.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "chascrazycreations.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "chenpei.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "choiceautoloan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -52893,7 +52684,6 @@ { "name": "panhandlemenshealth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "panjiva.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "parisackerman.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "passionbyd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pastebin.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "patrickhoefler.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "paulgerberrealtors.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -53109,7 +52899,6 @@ { "name": "tandemexhibits.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "taotuba.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tauschen.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "taxpackagesupport.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tcdww.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "techaulogy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "techglover.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -53164,7 +52953,6 @@ { "name": "travelholicworld.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "travellsell.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "trendsettersre.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "triage.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "triciaree.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "trim21.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "trueduality.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -53248,7 +53036,6 @@ { "name": "wpccu-cdn.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wplistings.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wucke13.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "wxlog.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wyhpartnership.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--dmontaa-9za.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--heilendehnde-ocb.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -53336,7 +53123,6 @@ { "name": "addvalue-renovations.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "addydari.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adlignum.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "admirable.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adonizer.science", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "advanceddisposables.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adventurousway.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -53565,7 +53351,6 @@ { "name": "coworking-luzern.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cpsq.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "crackers4cheese.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "crazybulk.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "creativeimagery.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "creativerezults.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "creditozen.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -53725,7 +53510,6 @@ { "name": "ethiopiannews247.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "etrolleybizstore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "eurheilu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "euwid-energie.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "evrotrust.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "evtscan.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ewhitehat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -53832,7 +53616,6 @@ { "name": "hagier.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hailstorm.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "halledesprix.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "halocredit.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hannasecret.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "haozijing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "happybeerdaytome.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -53855,7 +53638,6 @@ { "name": "hks-projekt.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hm773.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hogarthdavieslloyd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "holadinero.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "holadinero.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "holofox.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hopemeet.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -54127,7 +53909,6 @@ { "name": "minivaro.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "misakacloud.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "misxvenelantro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "moahmo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "modav.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "moenew.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mohr-maschinenservice.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -54242,9 +54023,6 @@ { "name": "pay-online.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pdkrawczyk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pedidosfarma.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "pepgrid.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "pepme.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "pepstaff.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "perfectstreaming.systems", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "periodic-drinking.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "persocloud.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -54263,7 +54041,6 @@ { "name": "pkrank.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "plantekno.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "players2gather.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "plicca.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pnoec.org.do", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "poc.xn--fiqs8s", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "poc060.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -54481,7 +54258,6 @@ { "name": "siamdevsquare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "signrightsigns.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sikecikcomel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "silvesrom.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "simotrescu.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "simplylifetips.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sinusitis-bronchitis.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -54675,7 +54451,6 @@ { "name": "via.blog.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "viablog.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "viajaramsterdam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "victorricemill.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "victoryalliance.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "videojuegos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "videosparatodos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -54918,7 +54693,6 @@ { "name": "itbox.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "itkonsultstockholm.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jajsemjachym.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "jar.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jario.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jaypandit.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jefsweden.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -55159,7 +54933,6 @@ { "name": "3niu8888.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "4lock.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "5219.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "618media.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "758global.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "8xxxxxxx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9jaxtreme.com.ng", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -55265,7 +55038,6 @@ { "name": "canadianatheists.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "canadianatheists.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "canopycleaningmelbourne.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "cantonroadjewelry.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "captainsfarm.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "carmelrise.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "casalborgo.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -55305,7 +55077,6 @@ { "name": "correct.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "correcthorse.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "country-creativ.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "cyberlegal.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dailyroverr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "danielparker.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "darkestproductions.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -55462,7 +55233,6 @@ { "name": "i9s.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ia.cafe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ibps-recruitment.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "iktisatbank.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "iltuogiardino.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "immobiliengutachter-holland.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "indianamoldrepairpros.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -55568,7 +55338,6 @@ { "name": "milakirschner.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "milkameglepetes.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mixmister.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "mizuhobank.co.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mneerup.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "moabpapier.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "moabygg.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -55585,7 +55354,6 @@ { "name": "mypay.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nanogramme.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nayr.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "nca.ink", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ncgt.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "netd.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "newsgroups.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -56504,7 +56272,6 @@ { "name": "irlfp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "isitef.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "itcs.services", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "itfly.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "its420somewhere.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "itseeze.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ivotemahdi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -56688,7 +56455,6 @@ { "name": "michaell.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "michaelloveys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "micsell.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "mihgroup.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mijntelefoonboek.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mikusa.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "milkypond.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -56799,7 +56565,6 @@ { "name": "pagamentosonline.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pagerduty.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pahub.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "paigejulianne.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "palavalbasket.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "palermopride.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "panamatrippin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -56809,7 +56574,6 @@ { "name": "patrykwegrzynek.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pause-canap.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "paxchecker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "pbren.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pearlsonly.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pearlsonly.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pearlsonly.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -57492,7 +57256,6 @@ { "name": "uuid.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v5ray.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vdzn.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "vertigo.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vitalastin-sport.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "warfield.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wasabiwallet.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -57657,7 +57420,6 @@ { "name": "instant-clearance-sale.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "interessengemeinschaft-pregelstrasse.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ionicisere.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "iservicio.com.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jackgreenrealty.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jacksanalytics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jamesedition.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -57775,7 +57537,6 @@ { "name": "sheenveininstitutestl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "shopfinale.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "simplegoodhealth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "siseministeerium.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sitz.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sixnines.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "slowcookingperfected.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -57823,7 +57584,6 @@ { "name": "vipllcnj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "virtus-group.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "virus.pm", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "visadaifu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "waffenversand-klausing.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wc1234.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "web-fox23.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -58212,7 +57972,6 @@ { "name": "wsp-center.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ww-design.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wzilverschoon.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "xavierdmello.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xgwap.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xi.ht", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn-----6kcbjcgl1atjj7aadbkxfxfe7a9yia.xn--p1ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -58230,7 +57989,6 @@ { "name": "zeno-dev.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zhang.ge", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zhina.wiki", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "zistemo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "1236.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "162632.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "1plus-agency.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -58341,7 +58099,6 @@ { "name": "hauora.fyi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hemkoll.nu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "heretic-guild.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "hguandl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "historiasdepueblo.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hktech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "homeland.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -58355,7 +58112,6 @@ { "name": "jaamaa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "janz.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jcvidroseespelhos.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "joelving.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jogjacar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jungidee.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "juyunce.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -58404,7 +58160,6 @@ { "name": "monitoringd.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mpu-ibbi.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mussalains.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "mxdvl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mycamshowhub.to", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mystagic.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "neat-patch.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -58584,7 +58339,6 @@ { "name": "aoe9.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aptumseguros.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "arcobalabs.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "artacadia.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "asemanhotel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "astropaykasa.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "atinylittle.space", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -58764,7 +58518,6 @@ { "name": "lolifamily.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lolifamily.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lolifamily.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "lq.hr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ltlec.services", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "luv.asn.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mahler.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -58797,7 +58550,6 @@ { "name": "mystia.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "netsecma.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "networkofarts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "newdimensioninterlock.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nextiva.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nextos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nicholasruddick.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -58925,7 +58677,6 @@ { "name": "10giant.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "130497.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "133846.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "158306.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "162263.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "163132.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "188198.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -59453,7 +59204,6 @@ { "name": "ibericarmovilsur.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ibericarreicomsa.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ibericartechnik.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "icci.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "icelandicasian.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "idbs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "impactingsports.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -59879,7 +59629,6 @@ { "name": "link9.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lvcshu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "machon.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "magicsms.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "makropa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mara-martinez.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mcjackk77.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -60041,7 +59790,6 @@ { "name": "6boy.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "701135.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "705994.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "716176.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "803001.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aarailfan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "acandroid.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -60098,7 +59846,6 @@ { "name": "cursosdeinglesmexico.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cvazquez.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "daniele.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "davidbrookes.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ddsmatchsouthwest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "deltaservers.blog.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "devinite.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -60814,7 +60561,6 @@ { "name": "drinkgo.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dutyfreeinformation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dzworld.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "earthspundesigns.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "eclectiv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "eiti.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ejelectrical-qld.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -61020,7 +60766,6 @@ { "name": "sohncloud.my-router.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "spot.su", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stagelectrical.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "stakeshare.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "strandbyfysio.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "styletron.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "summiteyekc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -61053,7 +60798,6 @@ { "name": "valentinarosamilia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ventures.lgbt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ventureslgbt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "vicious.space", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "victorcarwasher.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vigilanciaysalud.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vips.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -61075,7 +60819,6 @@ { "name": "yogamayanine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yornik.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yuimarukitchen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "yukimochi.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yukimochi.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zacharyschneider.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zahrowski.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -61273,7 +61016,6 @@ { "name": "braziliex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "breakingvap.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "brenbarnes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "brenbarnes.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "buddycompany.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bunnymud.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "burienergy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -61313,7 +61055,6 @@ { "name": "cloudwallce.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cmoycontracts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "code123.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "codedo.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cogeneration-energy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "coladv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "collegegirlhd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -61609,7 +61350,6 @@ { "name": "koof.win", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "koreaninhd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "korem011-tniad.mil.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "krikorianconstruction.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ksoc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kumpulannamabayi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kunvn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -61660,12 +61400,10 @@ { "name": "mahadulmuneer.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mainquest.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "majorpussycum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "makerdao.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marc-hoffrichter.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marcanhoury.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marcheslep.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marcotics.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "martinhaunschmid.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marvelousdesigners.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mashcape.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mattersource.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -61728,7 +61466,6 @@ { "name": "neuropatia-periferica.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nextcloud.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nextcloud.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "nhakhoangocanh.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nicolas-simond.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "niers.land", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nodeedge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -62072,7 +61809,6 @@ { "name": "tv-sports.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tvquot.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "twist.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "u-grow.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ubiurbe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ugtdigiteldocumentos.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ukr.media", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -62340,7 +62076,6 @@ { "name": "htdcomputer.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "i-voting.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "iglosujemy.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ihearmedical.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "impresa-di-pulizie.milano.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "infohub.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "infrafile.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -62455,14 +62190,12 @@ { "name": "sanikapandit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sanook69.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "seanstaffiery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "sensuality-models.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "seulean.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "seutens.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "seutens.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sevocomm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "shiyouqkl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "silesianus.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "simplifyengineering.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "simulfund.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sloneczni.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "smokeping.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -62496,7 +62229,6 @@ { "name": "uronlinestreams.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "usbcurrent.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v5ray.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "victorpelletmill.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vscodownloader.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "warezoom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wed.pw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -62650,7 +62382,6 @@ { "name": "52051x.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "52051y.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "52051z.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "52067.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "52067a.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "52067b.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "52067c.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -62841,7 +62572,6 @@ { "name": "ecologikashop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ecuadorbienesraices.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "edubase.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "eirik.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "elchamandelaprosperidad.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "electerious.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "elegance-sm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -62940,7 +62670,6 @@ { "name": "kiczela.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kjfaudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "klev.su", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "kolaprestaurant.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kompjoeter.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "koolauwomenshealthcare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kreativbande.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -63005,7 +62734,6 @@ { "name": "myhmz.bid", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mywiwe.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nb10000.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "neev.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "newenglandworkinjury.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "next-server.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nicolaottomano.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -63317,18 +63045,13 @@ { "name": "9397b.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9397c.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9397cc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9397dd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9397e.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9397ee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9397f.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9397ff.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9397h.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9397hb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9397hh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9397i.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9397m.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9397n.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9397nn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9397o.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9397oo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9397p.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -63338,12 +63061,9 @@ { "name": "9397v.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9397ww.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9397y.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9721a.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9721d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9721f.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9721ff.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9721g.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9721gg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9721j.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9721l.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9721ll.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -63416,7 +63136,6 @@ { "name": "a9728.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aa5197.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aa9297.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "aa9397.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aa9728.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "accessibletravelclub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adnexa.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -63499,7 +63218,6 @@ { "name": "dormitengernyikaland.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "e5197.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "e9297.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "e9397.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "e9728.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "easyenrollment.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ecsupplyinc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -63614,7 +63332,6 @@ { "name": "jj5197.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jj9297.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jj9397.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "jj9721.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jj9728.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "johnrosewicz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "julianbroadway.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -63657,7 +63374,6 @@ { "name": "luxurydistribution.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "m5197.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "m9297.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "m9721.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "m9728.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "managedservicesraleighnc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "maorx.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -63780,7 +63496,6 @@ { "name": "rundesign.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "s5197.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "s9297.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "s9397.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "s9721.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "s9728.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "safeacs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -63836,7 +63551,6 @@ { "name": "tsinnosti.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tt5197.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tt9297.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "tt9397.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tt9721.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tt9728.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ttwoee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -63853,7 +63567,6 @@ { "name": "utahhomes-realestate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "uu5197.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "uu9297.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "uu9397.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "uu9728.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "uwmarktspecialist.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v0ctor.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -63976,40 +63689,20 @@ { "name": "11321365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "170686.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "171083.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "22321365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "23436565.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "33321365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "34536565.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "351079.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "36554ll.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "36554mm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "36565123.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "36565234.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "36565345.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "365654321.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "36565456.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "36565567.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "36565678.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "36565789.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "36565b.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "36565f.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "3657654321.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "36587654321.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "365iosapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "44321365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "45636565.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "4iners.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "4obgyne.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "513maximus.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "55321365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "56736565.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "66321365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "67836565.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "695990.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "726217.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "77321365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "78936565.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "88321365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9118.la", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9181182.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9181183.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -64018,7 +63711,6 @@ { "name": "9181186.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9181187.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9181189.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "99321365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "abmackenzie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "academica.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "actorshop.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -64040,22 +63732,12 @@ { "name": "awomansplacenj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "axishw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b00de.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b9999ff.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b9999hh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b9999ii.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b9999jj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b9999ll.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b9999mm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b9999nn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b9999oo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b9999pp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b9999qq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b9999tt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b9999uu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b9999vv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b9999yy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b9999zz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b99iosapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bahana.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "balboa.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "balkenbushmechanical.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -64199,22 +63881,9 @@ { "name": "itsynergy.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "iyc.web.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "j9504.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "j9507.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "j9508.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "j9512.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "j9515.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "j9516.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "j9517.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "j95aa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "j95app.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "j95bb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "j95cc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "j95dd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "j95ee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "j95ios.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "j95ss.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "j95xx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "j95zz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jaiestate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jakewales.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jbeta.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -64679,7 +64348,6 @@ { "name": "sommeilsante.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "southeastradiology.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "starretest.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "statically.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stepbymestudios.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stevenlepen.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stevenpilger.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -64782,7 +64450,6 @@ { "name": "xiumu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xkwy2018.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--80aanbkcescrdedmxzcl4pmc.xn--p1acf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "xpjiosapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yamei99.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yannyann.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yasirworkfolio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -64792,11 +64459,9 @@ { "name": "zingpetfood.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "118btt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "15918.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "168btt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "168btt.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "176f88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "1994.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "218btt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "321666365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "360hosting.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "3oneseven.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -64831,7 +64496,6 @@ { "name": "6729ee.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729f.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729ff.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6729ff.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729g.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729g.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729gg.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -64842,7 +64506,6 @@ { "name": "6729i.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729i.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729ii.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6729ii.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729ipa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729j.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729j.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -64852,11 +64515,9 @@ { "name": "6729k.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729kk.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729l.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6729l.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729ll.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729ll.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729m.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6729m.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729nn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729o.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729o.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -64870,18 +64531,13 @@ { "name": "6729qq.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729qq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729r.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6729r.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729rr.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729rr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729s.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6729s.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729ss.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729ss.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729t.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6729t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729tt.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6729u.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6729v.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729vv.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729w.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729w.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -64890,13 +64546,11 @@ { "name": "6729x.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729x.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729xx.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6729xx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729y.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729yy.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729z.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729z.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729zz.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6729zz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6957a.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6957aa.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6957apk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -64980,7 +64634,6 @@ { "name": "a6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "a88fc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aa6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "aa6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aa6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aaron-russell.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aboutpublishers.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -65042,7 +64695,6 @@ { "name": "caph.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "carls-fallout-4-guide.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cc6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "cc6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cc6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cendata.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "center-elite.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -65068,7 +64720,6 @@ { "name": "d6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "datisstom.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dd6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dd6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "decal-times.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "declarationlocationmeublee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "delphia.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -65161,7 +64812,6 @@ { "name": "heino-peters.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hgw777.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hh6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "hh6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hh6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hidroshoping.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hoofdredacteuren.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -65175,7 +64825,6 @@ { "name": "iamhealthystore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ictbaneninnederland.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "igorandandre.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ii6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ii6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "indigoblack.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "inkopers.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -65183,7 +64832,6 @@ { "name": "innatocol.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "insurancesloans.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "intellimax.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "interviewme.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "investigatore.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "investigazione.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ips-consult.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -65211,7 +64859,6 @@ { "name": "kbc.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kids-world.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kk6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "kk6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kk6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kli.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kupiewszystkieauta.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -65334,7 +64981,6 @@ { "name": "royveenendaal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rpoplus.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rr6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "rr6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rr6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rssl.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "russelljohn.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -65365,7 +65011,6 @@ { "name": "spectrumelectrical-brisbane.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "spedizioni.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sqdll.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ss6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ss6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sspanel.host", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stariders.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -65403,12 +65048,10 @@ { "name": "tt6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tt6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tyree.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "u6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "u6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "udvalgte-ordsprog.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "uplotnitel.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "uu6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "uu6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "uu6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ux-designers.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "uxdesignerjobs.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -65471,7 +65114,6 @@ { "name": "xn----ncfb.ws", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--kl-oja.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xx6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "xx6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xx6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xy6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xy6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -65490,7 +65132,6 @@ { "name": "z6729.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "z6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "z6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "z6957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zer0-day.pw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zety.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zhaoxixiangban.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -65507,7 +65148,6 @@ { "name": "378902.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "670102.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729a.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6729hh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729mm.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729mm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6729n.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -65642,7 +65282,6 @@ { "name": "echo-in.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "eddy-vh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "edvinaspaliskis.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ee6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ee6957.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "eebt.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "electrocardiographe.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -65703,7 +65342,6 @@ { "name": "insuranceonlinenow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "italiansrent.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "itmustbee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "itxn.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "j0rj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "j6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jiretvariedades.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -65812,7 +65450,6 @@ { "name": "reserve-duchenier.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "resilientlives.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rezaaryo.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "rightoncorpus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ripley.red", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "riteway.rocks", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rommelwood.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -65822,7 +65459,6 @@ { "name": "rootie.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rubenbrito.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ruhproject.kz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "s88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "saeder-krupp.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "saityvkaluge.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "samfreaks.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -65897,7 +65533,6 @@ { "name": "zenways.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zhujiceping.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "znakcomstva.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "zz6729.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "071k8.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "077k8.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "109k8.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -66272,7 +65907,6 @@ { "name": "supersena.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "t7ys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tapety-na-pulpit.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "tdyx-china.com.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "techdatapark.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "the-alan-parsons-project.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "theoriginalmarkz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -66526,7 +66160,6 @@ { "name": "kommx.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kriptoworld.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ks009.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ks058.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ks0788.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ks081.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ks086.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -66872,7 +66505,6 @@ { "name": "little-bird-bayreuth.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lnhydy.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lnrsoft.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "logiccircle.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "londontaxipr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "luctam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lueersen.homedns.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -66977,7 +66609,6 @@ { "name": "stuartbell.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "surgenights.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "swedentelugucommunity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "synapsepain.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sys-tm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tadamstudio.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "talis-bs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -67217,7 +66848,6 @@ { "name": "innovomuebles.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "itgm-consultants.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "itisyourmoney.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "j9511.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jaylineko.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jjjj003.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jobs.su", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -67284,7 +66914,6 @@ { "name": "moowdesign.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "murmashi.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "myexams.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "nanshy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "naturalbijou.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "navroopsahdev.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "netdiode.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -67719,7 +67348,6 @@ { "name": "elranchofeliz.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "enigmadjradio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "eos-utvalget.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ermessecurity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "expatfinancial.com.hk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "f886666.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "fayntic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -67884,7 +67512,6 @@ { "name": "saletzki.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "samandej.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "satario.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "seabehind.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sedlex.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sembyotic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sheilagranger.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -68152,7 +67779,6 @@ { "name": "chifumi.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "coachapp-ipass.herokuapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "coachsystem.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "combigo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "complex-news.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "consultorioespecializado.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "copyrightcoins.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -68168,8 +67794,6 @@ { "name": "daysinnaustin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "deedyinc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "delvickokolo.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dizzie.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dizzieforums.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "djdeepstate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dmerkel.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "docmed360.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -68476,7 +68100,6 @@ { "name": "xn--chrysanthemenbltentee-nic.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--cisowcy-pjb5t.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--eebao6b.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "xn--gstehaus-leipzig-vnb.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--heidebltentee-2ob.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--hibiskusbltentee-szb.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--lavendelblten-tee-c3b.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -68511,7 +68134,6 @@ { "name": "000a7.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "000a8.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "000a9.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "000b58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "000x2.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "000x3.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "00b58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -68539,7 +68161,6 @@ { "name": "100pudov.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "100visits.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "10n13.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "111b58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "1120344.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "1190america.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "11b58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -68567,37 +68188,16 @@ { "name": "2033c.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "2033z.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "20n13.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "222b58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "228668.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "22b58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "23454048.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "246773.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "2484811.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848188.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "2484822.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848588.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "24848678.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "24848b.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "24848c.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "24848d.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848e.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848jj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848kk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848ll.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "24848nn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848oo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848pp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848qq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848tt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848uu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848vv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848w.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848ww.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848x.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848xx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848y.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848yy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848z.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "24848zz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "248663.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "25may.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -68607,39 +68207,13 @@ { "name": "2lovebirdsblog.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "30n13.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "317811111.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "317822222.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "31783333.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "317833333.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "31784444.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "317844444.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "317855555.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "317866666.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "3178666666.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "317877777.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "3178888888.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "31789999.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "317899999.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "3178aaa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178b.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178c.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "3178dd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178ddd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178e.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "3178eee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178f.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178fff.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178g.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178h.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178i.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178iii.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178jjj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178l.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178m.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178n.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178p.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178tt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178ww.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178xx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "333b58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "3344985.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "335a.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -68672,7 +68246,6 @@ { "name": "365y00.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "365y11.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "365y2.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "365y22.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "365y3.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "365y33.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "365y5.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -68686,30 +68259,6 @@ { "name": "365zg.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "380111000.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "380111777.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837b.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837c.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837e.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837g.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837h.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837i.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837j.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837k.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837l.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837m.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837n.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837o.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837p.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837q.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837r.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837s.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837u.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837v.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837w.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837x.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837y.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837z.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "38irkutsk.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "3957b.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "3957d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -68750,12 +68299,10 @@ { "name": "4048v.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "408663.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "40n13.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "416365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "418663.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "426773.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "436773.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "438663.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "444b58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "44b58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "451365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "458663.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -68777,12 +68324,9 @@ { "name": "51365dd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "51365ee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "52002c.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "555b58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "5566bet.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "55b58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "55n13.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "59759vip.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "59759z.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "5981844.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "5981h.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "5981m.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -68801,34 +68345,22 @@ { "name": "6396000.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "63960000.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "63961111.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "639611111.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6396222.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "63962222.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "639622222.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6396333.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "63963333.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "639633333.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6396444.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "63964444.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "639644444.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "63965555.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "639655555.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "639666666.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "63967777.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "639677777.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "63968888.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "639688888.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "63969999.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "639699999.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6396aaa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6396bbb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6396ccc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6396ddd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6396eee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6396fff.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6396hhh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6396iii.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6396jjj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "66321aa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "66321bb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "66321cc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -68862,8 +68394,6 @@ { "name": "666777bet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "666888bet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "666999bet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "666b58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "66b58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "677314.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "677340.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "677341.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -68879,7 +68409,6 @@ { "name": "74365365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "755243.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "755a.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "769k.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "7788bet.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "77b58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "78365aa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -68893,7 +68422,6 @@ { "name": "8278eee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "8278jjj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "83365365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "842365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "846773.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "848663.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "8521.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -68912,17 +68440,12 @@ { "name": "90920.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "90n13.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "91d91.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "940365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "946773.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "97736.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "97737.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "97738.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "97739.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "999b58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "99n13.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "a30365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "a365vip2.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "a365vip5.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "a365vip7.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "a6632.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aa7666.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -69083,10 +68606,6 @@ { "name": "b0308.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b3333.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b36512.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b58365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b58app.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b58appb58app.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b58appb58appb58app.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b5909.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b62g.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b6710.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -70324,7 +69843,6 @@ { "name": "q30365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "qdrat.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "qq6396.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "qqq6.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "qqq63.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "quantumfinance.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "qubhockey.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -70726,14 +70244,12 @@ { "name": "ty705.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ty715.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ty716.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ty723.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ty736.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ty737.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ty739.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ty750.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ty756.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ty767.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ty783.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ty785.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ty791.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ty793.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -70745,7 +70261,6 @@ { "name": "ty935.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ty937.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ty953.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ty962.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ty965.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ty980.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tyumen.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -70784,16 +70299,13 @@ { "name": "uzbektumblers.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "uzhas-uzhasny.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v1.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "v10006.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v10008.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "v3025.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v30365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v33v33.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v44v44.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v5075.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v55v55.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v6021.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "v6170.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v6350.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v6506.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v6752.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -70929,12 +70441,9 @@ { "name": "y30365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "y3650.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "y36500.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "y3651.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "y36511.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "y3653.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "y3654.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "y3656.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "y36577.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "y68ah.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "y68gl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "y68jn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -71057,31 +70566,9 @@ { "name": "91d78.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "91d79.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "91d92.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499060.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499066.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499068.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499113.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499115.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499118.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499125.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499151.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499238.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499263.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9499292.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9499293.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499369.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499399.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499403.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499558.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499565.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499568.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499575.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9499588.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499668.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499682.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499855.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499869.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499958.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9499mmmm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9k326.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9k367.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -71458,7 +70945,6 @@ { "name": "fixfm.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "flipmusic.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "flipphotography.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "florausa.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "forex-giants.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "forexcity.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "formalgrammar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -71829,7 +71315,6 @@ { "name": "mixmix.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mmwb.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mobilebooster.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "mobilityworks.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "moda-donna.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "modeldoll.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "modern-gaming.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -72014,7 +71499,6 @@ { "name": "petos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "petrovitch.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "phantomfund.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "phero.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "philippinegreenparty.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "phonenumberfind.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "photographerforwedding.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -72647,7 +72131,6 @@ { "name": "zuitaotu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zwergenfreiheit.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zxfiles.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1000wordsevents.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "166jk.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "1698k.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "197jjj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -72657,16 +72140,8 @@ { "name": "2gether.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "301355.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "30365.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178ppp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178qqq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178rrr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178ttt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178uuu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178vvv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178www.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "3178xxx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "3178yyy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3178zzz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "3344981.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "3344982.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "3344983.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -72741,7 +72216,6 @@ { "name": "52062t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "52062v.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "52062w.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "52067.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "541651.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "55558744.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "56564a.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -72881,7 +72355,6 @@ { "name": "998wns.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "99998744.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "a899365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "achieveinternet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "activeaerogels.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "activespaceautomation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "activespacetech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -72901,7 +72374,6 @@ { "name": "assis.partners", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "astrong.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "audiomaze.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "auf-nach-mallorca.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "automuovifix.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "avocats-fiscal.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "awaygroundguide.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -73251,7 +72723,6 @@ { "name": "yd169.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ydyy99.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yhndnzj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "yl366.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yoba.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yobasystems.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yogadeux.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -73265,12 +72736,7 @@ { "name": "zeusec.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zixin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "0x3bb.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "11335835.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "11445835.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "11555835.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "11665835.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "11775835.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "11885835.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "11995835.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "20191r.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "24hourlocksmithhoustontx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -73477,7 +72943,6 @@ { "name": "lykope.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "macnugget.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "madhyrecords.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "mancrates.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marco-burmeister.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marquesgroup.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "medundmed.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -73551,7 +73016,6 @@ { "name": "psitarz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "psychotherapy-vienna.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "q81818.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "quadron.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "r81818.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "radioheaven.co.kr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rainturtle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -73576,7 +73040,6 @@ { "name": "sebastian-kuhnert.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "securewebcomputing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sellmyphone.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "sh68.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "shelfplanner.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "shopmacher.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "simpleshirts.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -73635,7 +73098,6 @@ { "name": "unionreports.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "upacores.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "urlaubstipps.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "uwe.wtf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "uxtag.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v800g.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "varlex.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -73743,7 +73205,6 @@ { "name": "bithausen.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bkkf.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "blautiefe.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "bllb.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "blm36.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "blueskyinsure.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bongminhtam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -73809,7 +73270,6 @@ { "name": "frasesdodia.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ftnpower.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "fullreggaetonrd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "gamegear.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "getinsuranceanywhere.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gliihc.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "glk.partners", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -74021,7 +73481,6 @@ { "name": "ydiversa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yellowhawk.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yihouse.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "yl369.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yorkieloverdiy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yy369.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "z-cert.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -74212,7 +73671,6 @@ { "name": "lonelypawn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "loverngifts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lz898.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "magicnethosting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "magicvps.md", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marketing-apps.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marvnet.digital", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -74327,7 +73785,6 @@ { "name": "teriyakiweasel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "terselubung.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "theedisoncapital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "theilluminatisociety.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "therudeworkout.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "thierrymazue.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tiochambita.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -74379,7 +73836,6 @@ { "name": "xavita.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xcharge.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xeniox.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "xiaojiyoupin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--nidar-tib.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--prfontaine-c7a.name", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xuehao.net.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -74589,7 +74045,6 @@ { "name": "mbclegal.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "meran.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "miklagard.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "mlathrom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "momocogames.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "monitord.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ms-australia.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -74813,7 +74268,6 @@ { "name": "gavr.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gemsmarketplace.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "genunlimited.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "gheestore.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ghull.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "glamcosmetic.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "goldeneggs.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -75017,7 +74471,6 @@ { "name": "tutorcruncher.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "txlocksmiththewoodlands.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "uj2008.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ultravip.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ultrixus.rocks", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "utrantor.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vaxxwatch.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -75195,7 +74648,6 @@ { "name": "ltcwaterwijk.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "macaos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "magniflood.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "mangabank.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mansora.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marijuanajobscannabiscareers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "martindoe.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -75806,7 +75258,6 @@ { "name": "cacrm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cargoio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "casinosblockchain.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "centre-momboye.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "chaip.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "chupanhcotrang.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cissa.org.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -75926,7 +75377,6 @@ { "name": "jiji.ng", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jjj917.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jjrstudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "jkdhn.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jsh173.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jsh920.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jtl-software.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -76133,7 +75583,6 @@ { "name": "tommihynynen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "toopita.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "toughlife.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "toutelathailande.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "transette.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "travelwithbender.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tumarcafe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -76213,7 +75662,6 @@ { "name": "168365t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "22168365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "2222365t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "222321365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "2288422.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "2288499.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "2299411.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -76238,7 +75686,6 @@ { "name": "396228.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "44168365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "44365t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "444321365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "45365t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "456365t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "5017701.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -76252,7 +75699,6 @@ { "name": "5017804.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "5017805.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "55365t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "555321365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "56365t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "5795111.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "579533.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -76261,14 +75707,7 @@ { "name": "5795885.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "5795886.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "5795887.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6396ooo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6396qqq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6396rrr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6396sss.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6396ttt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6396vvv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6396www.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "6396xxx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6396yyy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6396zzz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "65131b.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -76288,7 +75727,6 @@ { "name": "65131v.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "65131y.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "66168365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "666321365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "666365t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "77168365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "777365t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -76296,7 +75734,6 @@ { "name": "88168365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "88365.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "88365t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "888321365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "88yule3.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "88yule5.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "89365t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -76416,7 +75853,6 @@ { "name": "bet166ww.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bet166xx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bet166yy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "bet819.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bfanis.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bienestarfacial.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "biol.spb.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -76498,7 +75934,6 @@ { "name": "ditec.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "domainevanina.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "donsremovals.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dragowebdesign.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "drapeauxdespays.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dreamhouses.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dtleague.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -76535,7 +75970,6 @@ { "name": "flagpedia.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "flixtube.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "fordtrac.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "forextraders.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "franchisehive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "freedomhk.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "freedomhkg.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -76568,7 +76002,6 @@ { "name": "iosprivacy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "isigmaonline.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "j00228.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "jaimesotelo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jenslody.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jessietessiephptrouble.herokuapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jftw.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -76635,7 +76068,6 @@ { "name": "nccfa.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nemzetizaszlok.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "novonegoc.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "nr-sputnik.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nutrizionista.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nvmo.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "o2oxy.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -76748,8 +76180,6 @@ { "name": "tves.gob.ve", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ucngame.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "uddin.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "uwe-r.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "uwe.training", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v6004.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v700bb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v700cc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -76770,7 +76200,6 @@ { "name": "viveportchina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vlaggen-landen.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vrba.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "vscm888.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vttnordisere.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vtupro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "w00228.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -76791,30 +76220,13 @@ { "name": "wossl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wppeeps.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "x00701.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "x00708.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "x00738.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "x00776.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "x00786.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "x9016.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xinnermedia.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "y68aa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "y68cc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "y68dd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "y68ee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "y68ff.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "y68gg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "y68hh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "y68ii.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "y68jj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "y68ll.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "y68oo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "y68pp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "y68qq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "y68rr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "y68tt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "y68uu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "y68yy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "y68zz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "y70102.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "y70301.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "y70302.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -76869,7 +76281,6 @@ { "name": "86086066.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "86086077.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "86086099.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "8888209.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "889vip2.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "889vip3.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -76912,35 +76323,20 @@ { "name": "b88vip3.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b88vip4.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b88vip5.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b99011.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b99022.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b99033.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b9904.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b99044.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b9905.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b99055.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b99066.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b99077.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b99088.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b99099.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b99118.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b9912.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b99218.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b99318.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b99418.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b9951.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b99518.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b9954.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b9957.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b9961.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b99618.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b9962.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b9970.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b99718.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b9973.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b9976.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b99818.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b99918.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bairuo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "baiurl.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bekolite.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -77008,7 +76404,6 @@ { "name": "dearstackexchange.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "debarras-diogene.paris", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "decarrouseloss.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "delosgaia.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "deltna.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "deped.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "deshobi.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -77420,7 +76815,6 @@ { "name": "abrikos.group", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "accs.org.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ackis.duckdns.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "adminrezo.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "agences-cegee.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aimiastestseries.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aland.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -77544,7 +76938,6 @@ { "name": "gentlent.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "girl.science", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "globemusic.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "gnaucke.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gogs.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gospicers.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gratefullane.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -77998,7 +77391,6 @@ { "name": "dhakawebhost.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "djitsolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "djmox.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dmcw.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dmitry.sh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dontstopcoffee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "doppler.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -78061,7 +77453,6 @@ { "name": "hostallacasamia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hosuronline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hotelevershine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "hotelindraprasth.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hotellerssolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hotellilas.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "houstonendodontics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -78250,7 +77641,6 @@ { "name": "lemonrotools.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "levante.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lexoo.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "lidl-foto.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lidl-fotos.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lidl-fotos.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lindquistnet.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -78419,8 +77809,6 @@ { "name": "zsolti.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "188cn-sb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "1v1.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848918.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848rr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "28365cn-365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "288cn-563.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "2th.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -78452,15 +77840,6 @@ { "name": "878365cn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "915kb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9499137.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499212.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499232.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499278.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499343.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499518.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499676.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499737.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499757.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "9499835.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9499yl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9n1shop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "abcdreamusa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -78667,7 +78046,6 @@ { "name": "jdproofing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jenniwiltz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jensdesmeyter.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "jimmycai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "joaobautista.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "johnrosen.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jonaskarlssonfoto.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -78760,7 +78138,6 @@ { "name": "phpcrudgenerator.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "piataborrachas.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "piatatem.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "picklinik.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pickthestory.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pirateproxy.vc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "piratesbrewcoffee.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -78829,7 +78206,6 @@ { "name": "sitesecurityscan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sixcolors.lu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sjrcommercialfinance.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "skywalkers.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "socialclimb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "softwaresecurityandradefernando.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "softwsabri.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -79126,7 +78502,6 @@ { "name": "greenstreethammers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gtacty.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gute-schulen-porta.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "gw66.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hancocklawfl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hatachan.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hawickvets.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -79192,7 +78567,6 @@ { "name": "ledburyvets.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "libraryofcode.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lida-vets.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "lidl-blumen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lifesavvy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "linksphotograph.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "linnaeusgroup.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -79541,7 +78915,6 @@ { "name": "ahu.la", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "alfratehotelcampiglio.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "alitec.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "altertek.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "amforst-ha.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "amforst.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "anblik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -79685,7 +79058,6 @@ { "name": "fluglektuere.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "foonly.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "frag.works", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "freebsd.la", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "freebsd.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "freebsd.wiki", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "freelancerhub.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -80321,7 +79693,6 @@ { "name": "centraljerseyrcca.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ceverett.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "chabad360.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "chancekorte.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "choservices.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cirvapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "citylift.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -80918,30 +80289,8 @@ { "name": "squareup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "10x.to", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "1117035.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "1234365a.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365b.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365c.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365e.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365f.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365g.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365h.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365i.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365j.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "1234365k.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365l.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365m.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365n.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365o.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365p.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365q.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365s.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365u.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365v.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365vip.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365w.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365x.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "1234365y.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "1cedibet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "2227035.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -80959,32 +80308,6 @@ { "name": "678365app.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "7035.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "7748229.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365a.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365b.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365c.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365e.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365f.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365g.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365h.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365i.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365j.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365k.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365l.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365m.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365o.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365q.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365r.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365s.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365u.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365v.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365vip.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365w.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365x.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365y.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "861365z.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "9997035.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "a3m.gmbh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "a7035.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -81055,7 +80378,6 @@ { "name": "beris.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "berluga.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bern.bz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "bet916.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bethanyhome.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "betolerant.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "betterbladders.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -81449,7 +80771,6 @@ { "name": "pk.wiki", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "placepugs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "planeta-deti.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "planetadeti.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "plastdesign.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "plavdoma.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "playfinder.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -81588,9 +80909,7 @@ { "name": "super-puper.su", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "surthriveak.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "swaenenburg.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "t060.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "t449.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "t49.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "taoaworld.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tatildekirala.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tchealers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -81693,7 +81012,6 @@ { "name": "zklokotskehory.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zof.kh.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zz074.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234365t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "1voz.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "2dua.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "3798.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -81762,7 +81080,6 @@ { "name": "airfocused.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ais.fashion", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ajt.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ajtatum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "albanycountydems.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "allenarchive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "alphamedphysicians.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -81778,7 +81095,6 @@ { "name": "archauthority.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "argrafiche.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ariba.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "arionta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "arkenstone.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "asitanc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "asokan.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -82207,7 +81523,6 @@ { "name": "tokyotimeline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "topanimecharacters.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "torlinnhe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "tornadotwistar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "traditionalturk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "trainoclock.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "treezone.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -82273,7 +81588,6 @@ { "name": "0chanru.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "0kun.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "10xnation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "1234888.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "173jsh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "178jsh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "1minutoomenos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -82361,7 +81675,6 @@ { "name": "barter.vg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "basisbedarf.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "baskibu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "beardedbearthegame.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bebemamae.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "beccaanne.photography", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "beerians.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -82382,7 +81695,6 @@ { "name": "btsmoments.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "burlingtonhs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bushellc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "byket.lviv.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "camilastore.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cantik.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "caprice-holdings.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -82801,7 +82113,6 @@ { "name": "yhanthydech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zeit.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zeit.sh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "zety.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zjy7722.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zum-ziegenhainer.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "0064427.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -83094,7 +82405,6 @@ { "name": "cvj.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cyberdev.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cybershark.space", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "czh999.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dadstersgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "daftarhajiumroh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dailydote.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -83116,7 +82426,6 @@ { "name": "derpibooru.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "desarrollando.web.ve", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "desperate.solutions", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "detki24.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dh7337.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "diamant.family", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "diamant.nyc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -83131,7 +82440,6 @@ { "name": "djmarian.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dleet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dmitriid.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dns-check.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dogma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dogurai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dolciariasimonini.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -83731,11 +83039,9 @@ { "name": "truesplendid.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "truyentranh24.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tszwww.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "tuffmail.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tuffmail.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tyrannize.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tyres-price.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ubiminds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "udiutv.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ukitbs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "umity.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -83755,7 +83061,6 @@ { "name": "vcacursus.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vcanederland.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vdo-webshop.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "vedatkarabacak.av.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "veryhome.com.pe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "veryssl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vezirecenzii.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -83782,7 +83087,6 @@ { "name": "vpnmag.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vrpornmovies.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "waltercedric.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "waltercedric.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "waqood.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wbca.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "webmenedzser.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -83874,22 +83178,12 @@ { "name": "zoisfinefood.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zombie.cam", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "077969.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "11223837.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "11333837.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "11443837.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "11553837.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "11663837.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "11773837.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "11883837.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "11993837.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "1939365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "23456789365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "247naijabuzz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "36533i.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837a.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837app.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837app3837app.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3837app3837app3837app.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "4351365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "4551365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "4562030.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -83898,7 +83192,6 @@ { "name": "4vio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "7th-heaven.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "80630.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "888b58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "918kissinw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "99billionaire.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "a1towgrant.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -84046,7 +83339,6 @@ { "name": "librespeed.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "linafernandez.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "liuqiao.best", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "liuqiao.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "liuqiao.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "loader.to", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "locallhost.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -84135,7 +83427,6 @@ { "name": "spartatowing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "speciale.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sportingpontenova.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ss09.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ss9188.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stacyscbdoil.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stadlwirt.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -84178,7 +83469,6 @@ { "name": "trosinenko.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "turismonochile.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "u51365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ufob.edu.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ulrichs.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ultspo.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vaccinestats.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -84199,7 +83489,6 @@ { "name": "xn--ionunica-29c.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--u9j920h4sbt5ex10f.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xpj090.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "xpj90.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yanjicg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zaprefy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zhainanyouhuo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -84217,13 +83506,10 @@ { "name": "3655053.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "51cls.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "616578.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "616728.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "616758.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "616798.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6upagent.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "878989.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "a1demolitionhauling.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "a66.la", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "a6619.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "a6621.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "a6623.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -84231,18 +83517,6 @@ { "name": "a6631.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "a6651.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "a6652.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "a6657.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "a6659.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "a6671.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "a6672.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "a6673.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "a6675.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "a6682.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "a6683.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "a6687.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "a6691.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "a6692.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "a6695.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aardvarksoep.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "abbtw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "abstimmen.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -84262,10 +83536,8 @@ { "name": "arminsure.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "avgindiantech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b5902.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b5903.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b5906.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b5907.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b5908.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "barkstop.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "basedos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bayer.earth", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -84273,7 +83545,6 @@ { "name": "birsinghdhami.com.np", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bitclusive.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bitcorner.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "bluenailsstudio.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bodagratis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bodasgratis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bodin.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -84306,8 +83577,6 @@ { "name": "datadraugen.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "datumplus.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "davidelstob.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dfagent.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dfc52.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "diamondyacca.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "douzer.earth", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dreamingwolf.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -84475,7 +83744,6 @@ { "name": "qdstationery.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "qliving.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "quiq-url.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "quiq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "radarequation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rany.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rany.int.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -84547,7 +83815,6 @@ { "name": "warupu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "web-wakakusa.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "webaccio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "webclymber.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "webinfotech.com.np", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "willtc.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "willtc.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -84557,22 +83824,17 @@ { "name": "woodbornekitchens.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "woodcat.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wwweb.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "x5901.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "x5902.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "x5903.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "x5904.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "x5905.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "x5906.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "x5907.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "x59088.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "x5910.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "x59288.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "x59388.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "x59488.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "x59588.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "x59688.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "x59788.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "x59888.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "x59988.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xamax.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xemcloud.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -84797,7 +84059,6 @@ { "name": "flfl.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "flipsidevr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "foxycredit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "fracturedperspective.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "free-sex-sites.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "freedomdujour.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "freetext.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -84877,7 +84138,6 @@ { "name": "linkstagr.am", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lunares.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lynxriskmanager.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "maker.to", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "maksoud-karim.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "malibulingerie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "managr.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -84951,7 +84211,6 @@ { "name": "quiche-quic.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rabis.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ramirezpeluqueria.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "redactedmedia.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rennes-bachata.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rennes-danse-africaine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rennes-danses-en-ligne.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -84969,7 +84228,6 @@ { "name": "roed.gg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "roeden.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ronniemossel.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "rosaquest.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rovota.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rubenmamo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rubia.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -85703,7 +84961,6 @@ { "name": "actioncutprint.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "acutehoest.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adamh.website", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "adata.kz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adenos.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adidas-2020-spring.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adn-recrutement.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -85723,7 +84980,6 @@ { "name": "agencybeam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "agripartner.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "airalamo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "akewe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "albalat.cat", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "alcites.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "alfiebarker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -85795,7 +85051,6 @@ { "name": "best-buyessaysonline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "best-photobooth.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bestbuyatvs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "bestcouponvouchercodes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bestseo4u.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bexx-engineering.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "beyondauth.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -85815,7 +85070,6 @@ { "name": "bktrust.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "blairmitchelmore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bliss.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "blogdolago.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bogs.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "boliviasepusodemoda.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "borgoaureo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -86701,7 +85955,6 @@ { "name": "taktransport.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "talkingband.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "teamhinkleyc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "tech-idea.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "technicwaladost.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "techniekutrecht.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "teddywayne.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -86828,7 +86081,6 @@ { "name": "wpjakarta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wpthemearchive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wsb-immobilien.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "xdb.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--c5w032d4vi.xn--fiqs8s", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--j1afcdm4f.xn--p1ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--mgbqq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -86884,7 +86136,6 @@ { "name": "adzalanwp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ae86.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ae86.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ae86.run", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "agari-mj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "agenciaingenium.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "agentur-circumplex.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -87121,7 +86372,6 @@ { "name": "double20.gg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "doyo.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dpress24.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "drasyl.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "drew.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "driveforact.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "driveforartur.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -87735,7 +86985,6 @@ { "name": "survivebox.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "swisslifestyletips.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "switchur.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "swjtu.today", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "symbolic.software", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "synergenxhealth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "synth.style", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -87766,11 +87015,9 @@ { "name": "thecheese.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "thecorianderkitchen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "thefabulouslifestyles.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "theformtool.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "thegingersnapbaker.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "thestable.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "thewebaround.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "thirdman.auction", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tiandixing.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tilid.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tilysthings.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -87825,7 +87072,6 @@ { "name": "us.kg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ut5s.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "utopique.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "uwu.nu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v-bokhorst.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vaccinatiespecialist.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vak-pobeda.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -87890,7 +87136,6 @@ { "name": "xbots.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xetnghiemadndanang.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xford.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "xibilus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--90w996eota.xn--6qq986b3xl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--erdnussl-t4a.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--gu1a.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -87907,9 +87152,6 @@ { "name": "y.gy", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yannyann.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yj4p.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "yjav11.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "yjav8.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "yjav9.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yjsp07.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yjsp17.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yjsp333.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -88373,9 +87615,6 @@ { "name": "22yytt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "22yyxx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "2337365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848966.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848988.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "24848h.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "256ab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "256ac.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "256be.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -88981,23 +88220,7 @@ { "name": "63vo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "63wq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "663365i.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "663365j.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "663365k.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "663365k.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "663365l.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "663365m.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "663365n.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "663365o.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "663365p.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "663365q.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "663365r.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "663365s.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "663365t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "663365v.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "663365w.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "663365x.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "663365y.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "663365z.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "6728365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "672bbb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "673bbb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -89384,7 +88607,6 @@ { "name": "attractiontest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "autonewsreview.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "autostramites.com.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b131000.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b979666.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "badnjar.rs", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "banajanitorialservices.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -89652,7 +88874,6 @@ { "name": "nolz.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "noriskit.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "notecopies.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ntz.im", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nyx.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "obzoroff.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "odxin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -89733,19 +88954,7 @@ { "name": "studentsfirstnb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stzur.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "supplementalconditions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "t8803.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "t8805.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "t8807.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "t8809.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "t8815.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "t8817.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "t8819.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "t8830.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "t88jj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "t88mm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "t88nn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "t88oo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "t88ss.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "t88vip0.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "t88vip1.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "t88vip2.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -89809,7 +89018,6 @@ { "name": "v156.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v167.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v521.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "v5658.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "v839.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "valuesetters.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "venture-ridge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -89829,7 +89037,6 @@ { "name": "x-way.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "x77ee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--80aabn5d9h.xn--90a3ac", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "xn--oj-uu2c9c422w3mh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xybnb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ygopro.in.th", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yigelangzi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -90644,7 +89851,6 @@ { "name": "beryko.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bestlawyernear.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bet365bet2020.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "bet365vip2020.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "beyondthepitch.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bikealways.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bingohalls.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -91195,7 +90401,6 @@ { "name": "lammertbies.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "laube-school.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lazownik.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "lbet365.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lcb1.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ldiesel.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "leblancq.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -91503,7 +90708,6 @@ { "name": "vincehut.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vinumenu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vipkit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "viralcreate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "visitationbvm.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "visualvolta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vitalhealthandbeauty.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -91998,7 +91202,6 @@ { "name": "angelo4ek.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "angelsanctum.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "angelsandairwaves.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "angelsoft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "angelswar.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "angolo.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "angular-js.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -92140,7 +91343,6 @@ { "name": "argentinachat.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "argument.uz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ariag.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ariajourney.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ariashii.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aristokratia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ariston-center.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -92704,7 +91906,6 @@ { "name": "bravelittlesquirrel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bravenboer.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bravewiki.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "brawny.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "breakberlin.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "breakingnewskenya.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "breastenlargement.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -93703,7 +92904,6 @@ { "name": "diterzafra.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dividedstates.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "divo-remont.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dixie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dixiefoodservice.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "diyeta.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dizainkyhni.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -94821,7 +94021,6 @@ { "name": "govnohosting.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gpcs.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gpl25.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "gppro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "graberbooks.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gracia-club.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "graciasmarvin.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -95340,7 +94539,6 @@ { "name": "innogames.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "innovationbranding.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "innovative-trading.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "innoviahome.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "inovasirumahku.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "insaingenieros.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "insanepyro.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -96043,7 +95241,6 @@ { "name": "libertyland.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "libractes.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "libresoft.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "libuni.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "libyanexpert.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lichnyj-astrolog.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lichnyj-astrolog.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -96650,7 +95847,6 @@ { "name": "missthetoro.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "misstress.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "missyjay.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "mitstek.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mittendorff.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mividasecreta.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mix-books.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -97980,7 +97176,6 @@ { "name": "quiescent.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "quiet-downloads.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "quietstudyactivities.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "quiltednorthern.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "quintanadelmonte.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "quintanilla.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "quintobarrio.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -98312,7 +97507,6 @@ { "name": "rotate4u.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rougeetblanc.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rouxh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "rovity.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "royal-life.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "royal858.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "royal869.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -98931,7 +98125,6 @@ { "name": "spanishnow.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "spanner.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "spanpine.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "sparkletowels.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sparta-szczekociny.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "spartamet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "spartanis.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -100033,7 +99226,6 @@ { "name": "vanesaleiro.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vanessaamorosi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vanhelsing.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "vanityfairnapkins.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vapetaclope.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vaporquest.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "varied.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -100079,14 +99271,12 @@ { "name": "venezia.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "venezuelachat.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "venezuelalibre.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "vennaccounts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ventolin-hfa.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vercettipropiedades.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vereshagino.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vergraal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vermageringsdieetpillen.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vermouth.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "veronique-huon-photographe.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vertexlife.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "veselyjpovar.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vestiizhevska.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -100743,7 +99933,6 @@ { "name": "zoogbook.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zornica.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zoske.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "zsbd.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zulaoyun.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zurmas-design.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zuss.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -100752,7 +99941,6 @@ { "name": "zythromax.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zyx3d.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "0x76.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "11b31.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "2cat.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "2ximedia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "3rr0r.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -100768,13 +99956,6 @@ { "name": "889vip8.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "889vip9.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "92ganb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "93644a.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "93644b.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "93644c.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "93644d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "93644x.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "93644y.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "93644z.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "a2censo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "abclyrics.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aboutmoney.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -101135,7 +100316,6 @@ { "name": "justsellmycar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "k3t.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kagawa-net.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "kaisto.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kandr.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "karty.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kerocristais.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -101384,7 +100564,6 @@ { "name": "166zzz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "1fax.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "2fdelivery.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "3commas.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "3niu888.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "4voip.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "50.gy", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -101453,7 +100632,6 @@ { "name": "casvpn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cazadordebuenaonda.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "centraldelbebe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "centreparkhistoricdistrict.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "centurion-meet.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cesarloaiciga.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cetis.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -101495,7 +100673,6 @@ { "name": "dimigo.codes", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ditudo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dj-phil.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dlrg-cux-ohz.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "doctorebonie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dogespeed.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dogespeed.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -101511,7 +100688,6 @@ { "name": "dwell.property", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ecaa.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "edufrog.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "egt.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "elephantstone.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "eletricista.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "eliasfox.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -101559,7 +100735,6 @@ { "name": "glitter-graphics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "glxnet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gmmarine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "godles.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gofobo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "golosinascbd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "golternet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -101783,7 +100958,6 @@ { "name": "seeme.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "serptoolsuite.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "serwis-telewizorow.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "serwistomy.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sexychatakides.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sfiane.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "shanoviyam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -102242,7 +101416,6 @@ { "name": "ragnarokhpg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rallyekrumlov.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rapidxray.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ravijuhend.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rcsscontractors.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rebelsewerservices.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "recoveringfromfaith.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -102458,7 +101631,6 @@ { "name": "apinat.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "archi.net.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "archlinuxcn.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "arselvarol.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "asasesoria.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "astiamministrazioni.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "atenasconservadora.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -102583,7 +101755,6 @@ { "name": "elementalengine.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "elementalengines.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "elementalengines.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "emil-reimann-lieferservice-stuttgart.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "emil-reimann.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "empirehive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "enfinmince.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -102795,7 +101966,6 @@ { "name": "reciplast.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "recruiterbox.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "redcupit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "reformasiluro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "remhomut.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "remifajardo.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "remy.codes", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -102890,7 +102060,6 @@ { "name": "ukpr.group", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "umaywan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "unix.lu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "vaidikapriya.pub", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vampiresdawn.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vandoornmiddenzeeland.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ventahogar.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -102971,7 +102140,6 @@ { "name": "autizmo.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "autoclassics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "babyatacado.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "barnflix.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bauservice-aluminium.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bee-kart.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bekabazar.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -103281,7 +102449,6 @@ { "name": "pornomovies.mobi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pornomovieshd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "potentialunlockedtuition.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "potterish.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "poweranalitica.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "powertop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "poyonok.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -103576,7 +102743,6 @@ { "name": "covidinfo.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "crc32.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "crc64.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "crixto.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "crowdstack.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cryptozoologyguide.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cshive-cdn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -103758,7 +102924,6 @@ { "name": "kinschots.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kisaragihayato.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kjcdaily.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "klappgeschichten.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kleankonshiens.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "knight-broadband.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "koch-wro.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -103906,7 +103071,6 @@ { "name": "rohitpatil.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rostirolla.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rtl.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "rtonin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ry88url.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sandtime.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sanskrit.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -104226,7 +103390,6 @@ { "name": "gravitlauncher.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "guitarristaluisquintero.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "h30019.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "hanabi.fan", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "happyfeet-dordrecht.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hardy.bz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hh30019.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -104295,7 +103458,6 @@ { "name": "ll30019.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "localcryptos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lojasmary.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "longoconsulting.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lost-illusions.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lostserial.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lourencolar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -104303,7 +103465,6 @@ { "name": "lph.saarland", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "luigialtieri.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "luje.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "lynk.hopto.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "maasstaddinerexpres.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "madeconsultingsrl.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "maeprototipi.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -104670,7 +103831,6 @@ { "name": "antidopamine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "arc.run", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "argovpn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "askingmonkey.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "asocedune.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aspenrealestate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aspire-irb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -105064,7 +104224,6 @@ { "name": "stoneoakgs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stoom-stichting.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "subastasnacionales.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "suger.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "t90official.games", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "taibachicken.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "taibafarms.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -105346,7 +104505,6 @@ { "name": "hx-sun.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hyllie.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "i-3c.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ibliss.digital", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ibtba.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "idehvector.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "iexpats.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -105391,7 +104549,6 @@ { "name": "khazarvila.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kickassblogger.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kievantico.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "kinderevents-sehnde.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kingdomcoffee.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kiplelive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kojiishikawa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -105525,7 +104682,6 @@ { "name": "scan.computer", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "scif.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "scphotography.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "seestersmexicancantina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "semillainfinita.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "serverportugal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "seve7.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -105750,7 +104906,6 @@ { "name": "cyklistika24.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "d-solutions.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "d-va.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dancesafe.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dannys.space", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "delta-wings.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "deltaworkssecurity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -105906,7 +105061,6 @@ { "name": "mercadopago.com.ve", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mibeneficio.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "misbalances.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "mksport.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ml-academy.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mnml.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "montagetravel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -105960,7 +105114,6 @@ { "name": "pachinstyle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pasclassic.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pazzmodernist.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "pensan.ge", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "peoplesrights.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "perroon.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "phony.host", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -106402,7 +105555,6 @@ { "name": "notteit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "novi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nya.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "oboivam.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "obs.plus", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ocastrowork.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "office.urown.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -106449,7 +105601,6 @@ { "name": "producciondealimentos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "productive-garden.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "project-scarlett.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "projectarmy.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "promospg.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "proservices-informatique.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "psc.gov.ws", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -106705,7 +105856,6 @@ { "name": "depedcommons.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "deremedioss.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "derguns.town", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dethoi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "detroitlocksmiths.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "devenv.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "devxify.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -106876,7 +106026,6 @@ { "name": "marblenexus.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marijuanamed420.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marketfeed.news", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "martelus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "maschine.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "maschinen.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mastercareplus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -106896,7 +106045,6 @@ { "name": "mineralnibani.bg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "minetrack.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "modulkuhni.by", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "monidenum.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "museodefutbol.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "museumofautism.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "musicbow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -107260,7 +106408,6 @@ { "name": "dice-strategy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "digimoncard.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "digivet.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dispemec.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dnratthee.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "donacarlota.net.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "drivehub.win", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -107286,7 +106433,6 @@ { "name": "fabfrugals.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "facebook-program.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "factsvision.sr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "faktury.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "fapobyte.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "fatvalley.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "fbthirdpartypixel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -107375,7 +106521,6 @@ { "name": "intiveo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "investors.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ireta.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "irmo.hr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ironbarnyc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "isharryworking.today", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "itvia.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -107432,7 +106577,6 @@ { "name": "letrissimas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "levico.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lifehacker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "listing-here.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lloydrogerspencer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "logay.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lojacorbuccieats.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -107479,7 +106623,6 @@ { "name": "nesez.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "newlight.net.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nextalefieldrecording.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "nicklazarov.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nihon-rosoku.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nilpointer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nobasico.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -107641,7 +106784,6 @@ { "name": "1ii.im", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "2isk.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "40vn.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "aawt.net.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "acytec.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "advancedbotoxclinic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adventureboundlife.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -107669,7 +106811,6 @@ { "name": "are-mag.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "armycyberchallenge.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "arquidigital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "artefeitaessencias.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "artgranit.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "artintend.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "arxcs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -107767,7 +106908,6 @@ { "name": "domainproactive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dontlistentoruss.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dppstar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "drgazeto.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "drstevenwarnock.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dundalk.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dundalkskillnet.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -108357,7 +107497,6 @@ { "name": "eclipse4academia-startups.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "egypttimetravel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "enky.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "eperformax.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "eritropoyetina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "escolaisttucano.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "esexchange.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -108538,7 +107677,6 @@ { "name": "neocharge.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "newsarticle.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nhakhoaflora.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "nhanlucnhatban.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nicheosala.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nk-vision.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nkontur.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -108771,7 +107909,6 @@ { "name": "advania.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adventurecorps.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "afishablogs.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "afrohub.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "agenciadigitalbolivia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "agroclefic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ajadmin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -108874,7 +108011,6 @@ { "name": "daymarksi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "decorpol-renovation.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "demxausa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "digicoca.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "digitalcrisis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "digitalimpactlab.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "digitalphoto.group", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -109188,7 +108324,6 @@ { "name": "safestreets.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sakuracommunity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "salati.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "samalova-chata.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sandboxstationchildcare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sandramorrone.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sarah-secret.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -109424,7 +108559,6 @@ { "name": "clickclickmalware.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "clickclickvirus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cloudstoragecompare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "cloudtrics.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cncs.gob.do", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cochem-zell.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "commentjaichangedevie.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -109516,7 +108650,6 @@ { "name": "gaga-debki.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gardencentreshopping.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gartenforsenate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "geekanatomy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "geekyleisure.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gen53.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "generatorkodowkreskowych.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -109648,7 +108781,6 @@ { "name": "mjish.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "modellbahnshop.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mojo.az", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "monoblu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "munakata-cl.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "municipaldroguerias.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "musikhaus-korn.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -109772,7 +108904,6 @@ { "name": "shoes4gentlemen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "shpil.by", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "shpilevsky.name", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "shuang.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "signaturecountertops.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "simdex.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "skautibrno.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -109866,7 +108997,6 @@ { "name": "webnm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wedoeducation.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "werlabs.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "whatevershirt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "whatissflow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "whatsupgold.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "whyfeedthegreed.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -109882,7 +109012,6 @@ { "name": "zananta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zbynekuher.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zerotoone.studio", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "00b31.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "08000113.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "111011.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "18latina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -109930,7 +109059,6 @@ { "name": "azinmahab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b24.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "b3101.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "b3103.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "balashiha-podmoskovie.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ballonella.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "barnjelly.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -109942,8 +109070,6 @@ { "name": "bazarfds.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "behavhealth.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "beko.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "bet531.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "bet631.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bibliogram.art", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bixbasement.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "blanickymanifest.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -110093,7 +109219,6 @@ { "name": "harambo.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hcsoffshore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hcv.ind.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "hdml.kr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "heesenyachts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "heic.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "heijmans.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -110150,7 +109275,6 @@ { "name": "lbjlibrary.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "leisurecooker.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "leisurecooker.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "libremedia.video", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "limpiadordeporos.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "liuwenxuan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "loli.gallery", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -110243,7 +109367,6 @@ { "name": "rbsexshop.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "read.mk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rebeccawilson.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "reception247.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "recordexpressllc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "reenergo.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "relialink.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -110410,7 +109533,6 @@ { "name": "4nikola.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "7it-latam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "805lifeguard.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "808arts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "8duhu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "911ifix.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "abc-kinderbetreuung.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -110651,9 +109773,7 @@ { "name": "inlink.ltd", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "innopharmaeducation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "innoutmarket.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "inrage.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "insidebitcoins.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "internet-israel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "interwebz.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "intrasac.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "intwiff.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -110830,7 +109950,6 @@ { "name": "tebokidsstore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tebothetooth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tech3araby.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "techacad.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "testcu.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "testingben.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "thebrushcreekdistillery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -111025,9 +110144,6 @@ { "name": "evcarbontracker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "everly.market", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "expireddomains.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "fairview.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "fairviewevents.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "fairviewfcss.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "familyclinicstl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ferienwohnunglanger.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ferreteria-soria.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -111062,7 +110178,6 @@ { "name": "grthomes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "guillaumepommier.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hanshosting.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "heartofthepeace.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "helloo.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "helpnet.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hi-res.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -111175,7 +110290,6 @@ { "name": "pension-chevaux.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "persuasionmatters.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "phg-eg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "play-lu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "plexmark.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pmi-install.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pmrockstars.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -111229,7 +110343,6 @@ { "name": "spacehub.in.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "speakeasy.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "spike.sh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "star.my.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sudoash.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sumit.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sunroomsbywoodland.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -111260,7 +110373,6 @@ { "name": "tracknetsports.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "transferagent.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "transparencyinadmissions.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "trepare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tsenv.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tuta.pm", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "unify.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -111760,7 +110872,6 @@ { "name": "therapyglobe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "thermorhythm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "thirstyjourneys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "thisisrapt.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "thisweekinsecurity.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "toplink.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "torrentbd.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -112158,7 +111269,6 @@ { "name": "emigranto.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "emirates247.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "enderandrew.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ensap.gouv.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "entertainmentwrapped.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "erkiss.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "escueladelsabor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -112383,7 +111493,6 @@ { "name": "khachhangvietnam.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "khoxuongchothuegiare.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kickex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "kickscrew.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kingchess.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kingkongxo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kinhtenongthon.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -112588,7 +111697,6 @@ { "name": "pertukaranpemudaasia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pesnyu.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "petrocheminc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "phenq.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "philstar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "phimsexjav.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "phpstan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -112746,7 +111854,6 @@ { "name": "sonurbain.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "soulveda.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "southbaylatherapy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "spacetime.am", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "spatiugratis.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "specialprojectsdesk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "spli.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -112789,7 +111896,6 @@ { "name": "tecno-pack.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "teddax.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "teenmissions.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "teesurprise.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "teknodaim.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "teknozone.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "terrenal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -112850,7 +111956,6 @@ { "name": "uniritter.edu.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "urbanmsp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "urfayazar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "us-10.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "usadf.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "uxpressia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "uzmansorusu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -112939,7 +112044,6 @@ { "name": "acceldigital.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "acnenaturalhealing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "acomerygozar.cam", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "acrhnc2020.dedyn.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "agrobytex.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ahcpr.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ahealthyjourney.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -113137,7 +112241,6 @@ { "name": "kennyparsons.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kevhosting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kiwistreamer.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "knjizevic.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "koala.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kruno.ooo", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lamaisonfantastique.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -113215,7 +112318,6 @@ { "name": "paintballer.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "patel.sh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pavlic.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "pb-trockeneisreinigung.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "perlego.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "permasealbasement.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "permasealbasementsystems.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -113257,7 +112359,6 @@ { "name": "secureinfo.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "senork.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sharpyspawn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "shuftipro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sinkholerepairsflorida.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sky-cargo.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "slashorg.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -113372,7 +112473,6 @@ { "name": "agent-ubezpieczeniowy.com.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "airconfourways.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "airconmidrand.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ajel.sa", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "albaadani.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "alivecast.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "animetosho.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -113660,7 +112760,6 @@ { "name": "rankingubezpieczennazycie.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ravasco-football-team.herokuapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "redcanary.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "remontada.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "reservadecitasonline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "resto-renaissance.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rikaidoshop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -113770,7 +112869,6 @@ { "name": "waiomizik.re", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wdng.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "webdevelop.ninja", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "webmanagement.berlin", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "webo.agency", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "webo.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wefound.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -113996,7 +113094,6 @@ { "name": "ledgy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lepetitkids.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "leshe.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "leshetu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "leskoalasenvoyage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lesportesdelascension.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lestrokeofgenius.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -114012,7 +113109,6 @@ { "name": "m1hax.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "madonnadellafibra.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "magodasredes.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "mandalatantra.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marielinepitre.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "masterpieceitaly.co.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "matras.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -114034,7 +113130,6 @@ { "name": "mindthe5.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mindthe5.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "minka.net.bo", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "misakaloli.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mizrahi-tefahot.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mkbd.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mobincube.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -114141,7 +113236,6 @@ { "name": "sprawdz-nip.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ssasociety.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ssl.pink", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ssl.red", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sslcentral.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stamit.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "strongprorealty.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -114372,7 +113466,6 @@ { "name": "foneapk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "foodlustkitchen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "freshinsport.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "frozentee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "fxe.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gadgetputeh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ganjinedanesh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -114509,7 +113602,6 @@ { "name": "patriotbearingsupply.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pelakefun.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "petiteframes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "phoenixshirt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pisearch.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pitch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pokupaisumom.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -114565,7 +113657,6 @@ { "name": "sylwiasun.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tacticalgearexperts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tajilamagazine.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "taxiservicedenbosch.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "technoledge.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tecnogestionsas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "testapfnxg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -114802,7 +113893,6 @@ { "name": "hackathonjr.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hax.sc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "healthyfoodster.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "healthykitchen33.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hifly.aero", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hipo.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hodor-stage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -114829,7 +113919,6 @@ { "name": "isf.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "isoip.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "izzardink.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "japanduhoc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jasoncs.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jiangwu.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jlbleakley.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -115050,7 +114139,6 @@ { "name": "verius.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "viasyscorp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vicioanimal.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "vidmia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "voetbalindestad.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vxne.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wackys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -115067,7 +114155,6 @@ { "name": "xnopyt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yande.re", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yeltsin.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "yesmsp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yourbookmark.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yurisora.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yushanfang.recipes", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -115153,7 +114240,6 @@ { "name": "chadoisaac.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "chamber.sa", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cheyennelohnen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "christopherpfister.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "chromebookcompare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "clevyr.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cloudandco.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -115688,13 +114774,11 @@ { "name": "bampizza.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bauer-reininghorses.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bcomm.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "beastshirt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "beeldbankgent.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "beemenergy.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "beer-sheva.city", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "behmmjc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bendelllawfirm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "benhoeg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "benjamorphism.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "beonas.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bergtoldtrimcarpentry.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -115777,7 +114861,6 @@ { "name": "cujubimnoticias.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "custompoolsbydesign.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cutter.li", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dabbingtee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "danielwelty.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "danwelty.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "danwelty.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -115786,7 +114869,6 @@ { "name": "darkgrid.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "darkillusion.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "darnashop.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dbs.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dcorporation.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "de.vg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dealbenzbkk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -115863,7 +114945,6 @@ { "name": "emoji.web.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "emotebank.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "emperors.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "englishwithmrsann.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "enlightsec.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "eplayer.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "eplayer.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -115961,7 +115042,6 @@ { "name": "hoeheterobenjij.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hollyworks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "homedecorspecialists.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "housestationlive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "howardhannava.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hsg-lumdatal.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hubanero.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -115997,7 +115077,6 @@ { "name": "jack.fr.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jacobpleiness.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jamesonmelbye.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "janakifoods.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jands.co.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jardinesimperiales.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jci.me.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -116228,7 +115307,6 @@ { "name": "pssjd.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "puur.gent", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "qlares.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "qqqq.plus", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "quantuin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "r-ix.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "r3gi.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -116345,7 +115423,6 @@ { "name": "suomiheraa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "swostik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "synergiedenken.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "synobook.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "syronex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "t-cophony.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tabisuta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -116478,7 +115555,6 @@ { "name": "youiv2.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yourblazeguard.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zahnarzt-backfisch.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "zebratee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zelvar.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zerofogmask.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zerty.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -116536,7 +115612,6 @@ { "name": "auksel.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "australianallnaturalskincare.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "autojur.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "awutar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aykyamultifest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "azulimparcial.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "badkamermarkt.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -116661,7 +115736,6 @@ { "name": "fuzzlemann.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gadaj.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "galtelligence.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "gamerspawn.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gamertelligence.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "geartips.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gesditel.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -116904,7 +115978,6 @@ { "name": "vegornonveg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "velocompany.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "velocompany.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "vicesetcaprices.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "viktor-chin-kon-sung.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "viktor-chin-kon-sung.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "viktor-chin-kon-sung.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -116979,7 +116052,6 @@ { "name": "abdullaha.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "abiertoempleos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "activs.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "actualizarapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adboard.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "advancedob-gyn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aerobatt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -117191,7 +116263,6 @@ { "name": "elpreciosostud.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "eltron.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "emojiteka.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "empleandon0s.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "empleosearch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "enduranceseries.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "energaia.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -117210,7 +116281,6 @@ { "name": "espacosaudesuplementos.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "etury.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "eurogarden.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "europafs.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "evangelise.asia", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "examroll.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "expocomerciovirtual.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -117381,7 +116451,6 @@ { "name": "mechanicweb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mediapuller.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mejorespatineteselectricos.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "mekanova.art", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mellmon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "meslekifikir.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "messenger.md", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -117621,7 +116690,6 @@ { "name": "topo.com.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "toranjchap.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "townshipofthenorthshore.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "trabajoenmx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "trafficticketsnola.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tragicallytrumped.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "transmoni.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -117630,8 +116698,6 @@ { "name": "trianglepwh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "trumptragedy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "trumptragic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "tubuscadordeempleo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "tuempleosolucion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tuinaportugal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "u2b.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ucstrike.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -117823,7 +116889,6 @@ { "name": "ctchosting.net.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cukrinelape.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "curseria.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "cursoalia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cuwebinars.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cwgpllc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "d.nf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -117857,9 +116922,7 @@ { "name": "easydoityourself.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ecogarden.design", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "einreiseanmeldung.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "elrincondeltrabajo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "emunet.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "endondehay.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "energylocals.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "entrepreneuraj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "epcreation.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -117934,7 +116997,6 @@ { "name": "jilworldwide.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jo3-w3b-d3v.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jobgenic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "jobsocity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jossandmain.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "julapalli.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "justor.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -117959,7 +117021,6 @@ { "name": "keller-x.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "keller-x.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "keller-x.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "kesselrun.goip.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kevin-emo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "keykong.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "khanacademy.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -118055,7 +117116,6 @@ { "name": "milesaddict.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "millesime-communication.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mindonmymoney.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "miniaturepets.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "minipc.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "minotauro.com.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "miprudelafi.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -118350,7 +117410,6 @@ { "name": "teacherfrancis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "teacherquinten.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "teamconf.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "tebuscotrabajo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "techstackjournal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "teddie.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tennisapp.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -118483,7 +117542,6 @@ { "name": "ae86t.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ae86tt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ae86y.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ae86yy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ae86zy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aethopy.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "agenciaplanner.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -118665,7 +117723,6 @@ { "name": "cbd-specialty.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cccams.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cecilia-online.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "celebratoday.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cerda-avocats.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "chai-che.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "changan.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -118678,7 +117735,6 @@ { "name": "citazine.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "clare-landmark.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "climatecooperation.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "clinicafollicles.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "clinicarayanelacerda.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cloneprint.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cloudsmart.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -118751,7 +117807,6 @@ { "name": "distri.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "distrilentes.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ditex.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "diveretailing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "diverscott.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dlepavilion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "doctorpluss.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -118776,7 +117831,6 @@ { "name": "eetestingcenter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "efmo.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "egegesh.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "electrodvig.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ellemo.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "enakari.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "endometriu.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -118852,7 +117906,6 @@ { "name": "getanresources.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "getasecondlife.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "getjadedlocal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "getjobtoday.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ghentlichtfestival.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ghwconline.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "giftex.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -118892,7 +117945,6 @@ { "name": "gravelshooters.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "greatpages.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "greenpal.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "greenturtledev.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "greenway-moskva.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "greenyflowers.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "grhhosting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -119082,14 +118134,12 @@ { "name": "lizardsforlife.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lizmccaughey.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lnk.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "localcrew.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "loeklommers.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lolifamily.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lsesteticaavancada.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lucdethier.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "luchshie-experty.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ludivine-viguie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "lunaribes.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "luotbike.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lurishop.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "luxmare.hr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -119255,7 +118305,6 @@ { "name": "openfuture.digital", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "openstorage.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "opinionproduct.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "oppressed.news", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "oumactive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "oumorienteering.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "oumpower.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -119680,7 +118729,6 @@ { "name": "worgtest.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "workers-iran.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "worldclassfriend.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "worldnetone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "writestreak.team", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wtfcripto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wum.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -119697,7 +118745,6 @@ { "name": "xwm.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xxgirl.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xxl.tax", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "xxoo.best", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xyz.blue", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yagliyurt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yoga-bien-etre.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -119948,7 +118995,6 @@ { "name": "annalisefashion.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "annulleret.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "anpigabon.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "anradienstverlening.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "antikvar-i-ya.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "antishell.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "antivirusnet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -121068,7 +120114,6 @@ { "name": "enshin-karate.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ensilencio.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "envaldemoro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "enviarcurriculumvitae.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "enviyatar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "envydesigns.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "envysmile.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -121234,7 +120279,6 @@ { "name": "finanssaati.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "finansy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "fincitegroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "findmytricks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "finnishclothing.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "finom.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "firatofm.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -121702,7 +120746,6 @@ { "name": "impf.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "impfung.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "impfung.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "imrbq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "incrediblez.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "independentadvicefinancial.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "independentfinancial.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -121818,7 +120861,6 @@ { "name": "jerridoswell.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jerrybustillo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jesperandersson.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "jetixclub.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jeugdclubjia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jeugdwmo.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jewelry-directories.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -122220,7 +121262,6 @@ { "name": "malabarismo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "maliciousdeath.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "malimusavirler.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "malsoftware.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mamijaclean.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mammaklader.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mamodsteam.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -123568,7 +122609,6 @@ { "name": "translatorall.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "trappersoutfitters.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "trashcraft.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "traumschwingen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "travellets.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "travelongravel.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "travin.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -124005,7 +123045,6 @@ { "name": "1zavse.si", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "247courierservices.co.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "2b2b.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "2cx.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "2yy.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "300x300.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "360cycling.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -124033,7 +123072,6 @@ { "name": "adson.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adson.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adson.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "adson.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adson.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adson.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adson.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -124488,7 +123526,6 @@ { "name": "evscstudentwifi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ewizmo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "eworkflow.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "excitingbulgaria.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "excontinuum.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "expertestate.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "externalapps.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -124734,7 +123771,6 @@ { "name": "joymaxiptv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jqlin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jsc.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "juef.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "juek3y.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "julia-jones.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "julia-pink.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -125217,7 +124253,6 @@ { "name": "schoolairband.fun", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sciburg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "scjtt.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "scotbirchfield.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "scothauscounseling.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "scoutsdeldesierto.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "scvoet.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -125474,7 +124509,6 @@ { "name": "vatav.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vcsource.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "verakoubova.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "vertichost.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "veryestate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vetputten.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vfr-oc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -125504,7 +124538,6 @@ { "name": "vshop.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vxm.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "w0fw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "walkercountydemocrats.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "waltravis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wanderfost.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wanderinghiker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -126218,7 +125251,6 @@ { "name": "cursorcam.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "customtel.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cutpasteprofit.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "cwgallery.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cyberforge.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cybertron.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "d3d3.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -126493,7 +125525,6 @@ { "name": "fotorecull.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "fowlmanor.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "fpu.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "franggroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "frankdisplaycabinets.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "frankhaarlem.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "freepedia.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -126740,8 +125771,6 @@ { "name": "jonathansomoza.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jordanrey.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jorgvandeven.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "jouleperformance.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "jouleperformance.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "journal84.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "juanrodriguezofficial.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "julianaedouglas.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -126871,7 +125900,6 @@ { "name": "lugaresturisticosdeguatemala.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lungcancerchallenge.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lurkmirror.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "luvitpatna.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "luxanos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lyricsupdater.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "madecenter.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -126945,7 +125973,6 @@ { "name": "nationandfreedom.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nativemusicrecords.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "neferlim.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "neminis.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "neomodern.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "netdox.asia", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "neustate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -127015,7 +126042,6 @@ { "name": "peni.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pens-money.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pepsi.investments", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "perantiguru.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "perfect8.com.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "periosearch.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "petamazing.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -127073,7 +126099,6 @@ { "name": "qadrishattari.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "quickhomedecor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "qulix.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "quoinstudio.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "quoteoftheday300.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "quranvoice.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "radiopranfm.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -127398,7 +126423,6 @@ { "name": "wuergler-consulting.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "x86.co.kr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xdwhat.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "xn--n1aeexs.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xyzzy.earth", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yagotour.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yarahmad.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -127607,7 +126631,6 @@ { "name": "dr-laber.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dreadfulsanity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dresstique.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "duerlundfalkenberg.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dylanwolff.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dynastybreaks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dynhost.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -127675,7 +126698,6 @@ { "name": "galacticbusiness.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gamingaktier.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gatot.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "genderrevealshop.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "georgiosnetworks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "getyeflask.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ghostfam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -127786,7 +126808,6 @@ { "name": "lisasack.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "littlegiants.edu.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lols.gg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "lop12.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lorrainestreatmentroom.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "losfogueteros.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "loudhills.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -127849,7 +126870,6 @@ { "name": "narodowyspispowszechny.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ncrypt.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "netletic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "network.ae", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "newsinfo71.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nieuwsberichten.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nilmaracursos.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -128065,7 +127085,6 @@ { "name": "utahdebtcare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vacatecleaning.melbourne", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vanjeveren.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "varrogepcentrum.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vaultlegal.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vayaprecio.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vejanoticias.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -128562,7 +127581,6 @@ { "name": "jabodent.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "janwern.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jenningsbet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "jeoffrey-sanchez.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jerevise.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jezura.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jf-madalena.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -128867,7 +127885,6 @@ { "name": "thebasementdefender.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "theblackcat.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "thecultureworks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "thehashagency.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "thehoney.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "themlmsuccessnow.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "theyacht.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -128979,7 +127996,6 @@ { "name": "xanny.family", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xenophobia.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xetha-bot.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "xiaomi.com.ge", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn----etbdeb7cgsj4h.xn--p1ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--80ahccom2a2c.xn--p1ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xtianhe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -129328,7 +128344,6 @@ { "name": "bisrockloverclan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bitchesabroad.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bitcoinbot.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "bitcoinfax.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bitton.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bitwardit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bitwardsdev.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -129567,7 +128582,6 @@ { "name": "csgodatabase.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cshm-schm.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "csp-tohoku.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ctmportal.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cuidade.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "curioustea.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "curvyjessi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -129651,7 +128665,6 @@ { "name": "dmc030.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dmlaser.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dobramagia.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "docertify.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "docsity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "doegirls.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dogech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -129817,7 +128830,6 @@ { "name": "flapperistic.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "flawlessweddings.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "fldsmdfr.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "flexitanq.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "flightdiary.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "flightdiary.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "floatifnghotel.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -130006,7 +129018,6 @@ { "name": "hesama.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hesbayefrost.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hexatech.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "heymoney.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hhpsummit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "highperformance.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "highsky.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -130102,7 +129113,6 @@ { "name": "innmed.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "innowire.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "inrilan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "inspireaanmerking.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "inspreeveryone.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "insta-viewer.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "installation-of-xenon.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -130118,7 +129128,6 @@ { "name": "inthechileanwoods.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "investgold.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "invisionary.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ionicshop.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "iop.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "iptv.ge", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "iqteksolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -130234,7 +129243,6 @@ { "name": "kettererholmes.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kevinn.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "key-content.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "keyngon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "keyscore.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "khakim.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "khdestiny.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -130414,7 +129422,6 @@ { "name": "manial4d2.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "manuelperujo.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "manyzero.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "marcceleiro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marchingnorth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mariaangelamacario.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marilower.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -130488,7 +129495,6 @@ { "name": "mobilize-auto-register.herokuapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mobtop.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mocksvillenc.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "moddescargas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mojakursumlija.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mokaumuseum.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "moleestudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -130613,7 +129619,6 @@ { "name": "nukeiso.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nuooly.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nursingconsultant.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "nwspecialists.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nyahururu.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nycctp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "o-touch.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -131435,7 +130440,6 @@ { "name": "trusted-medications.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tscfoods.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tstech.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "tstlr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tsuki.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tsumugu2021.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tuck2000.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -131469,7 +130473,6 @@ { "name": "unionlacalera.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "uniquedollz.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "univ-monteescalier.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "unmutegreetings.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "unrepentant.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "uperne.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "upgradeit.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -131619,7 +130622,6 @@ { "name": "zendev.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zenride.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zesty.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "zhangjet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zhodino.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zhuziyy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zij-aan-zij.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -132153,7 +131155,6 @@ { "name": "galeriesimple.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gallanzaro.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gambipedia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "gametriot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gamingdose.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gate109.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "geistlib.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -132434,7 +131435,6 @@ { "name": "megin.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "meinvergleich.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mejor-broker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "menno.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "merklin.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "meticore.promo", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mezzomusicschool.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -132464,7 +131464,6 @@ { "name": "mosaicinsurance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mpsi1.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mride.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "msetalk.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "msmae-ou.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "multipotential-labo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "muntstuk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -132527,7 +131526,6 @@ { "name": "pacisof.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pakonshorelng.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "palotahaz.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "parfumstore.kz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "partscov.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "patin.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pattyboobs.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -132654,7 +131652,6 @@ { "name": "seo-promox.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "seo-smo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "seoforyou.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "serukan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sethcurry.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sevenfoureight.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sgplay.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -132695,7 +131692,6 @@ { "name": "sportcenter.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sportvision.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sportwetten-anbieter.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "spotpetins.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "spreadgoodenergy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sroma.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ssnab.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -132747,7 +131743,6 @@ { "name": "teamroom.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tecbeto.icu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "teiron.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "teknofara.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tf2pickup.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "thalikkunushivatemple.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "that.host", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -132889,7 +131884,6 @@ { "name": "9vdy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "a699.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "abonemnet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "abri29.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "acaciawellbeing.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "acadianteas.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "acarotheca.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -132913,7 +131907,6 @@ { "name": "amelierose.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "americancasinoguide.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "amerikasepetim.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "amped4ski.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "andonivr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "andreas-kurtz.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "angiology.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -132936,7 +131929,6 @@ { "name": "assistancepaws.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "atriballi.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aurelie-valognes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "automodulegods.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "auturoa.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "avai.la", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "avakore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -133262,7 +132254,6 @@ { "name": "curiosoando.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cursoderecepcionistadehotel.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cyber-resear.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "cyberelements.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dachdeckermeister-moeller.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "datacentresupport.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "datapathology.ma", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -133692,7 +132683,6 @@ { "name": "lucrebem.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ludovicfernez.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lustrecloud.art", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "luyungterd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "macarthuradr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "magenkompass.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "magnum-sadoshima.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -133703,7 +132693,6 @@ { "name": "malaysiatxt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "malkalni.lv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marketsosyali.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "marlboroughchamber.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marshmallowchallenge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "martex.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "marykirsch.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -133718,7 +132707,6 @@ { "name": "mejorfiltrodeagua.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "melbournehousesitters.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "meli-deluxe.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "mendelsphotography.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "miekesandersuitvaart.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "milano-web.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "minamassimo.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -133851,7 +132839,6 @@ { "name": "robinsoncontracting.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "romanovamakeup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "royal73.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "rpo97.fm", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rsreinvest.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rssalvino.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "runwaybpo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -133871,14 +132858,12 @@ { "name": "savesomegreen.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "scaffoldingsandton.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "schatderer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "scholar.pk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "schumacher-at-home.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "schworak.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "scloud.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "scommessenonaams.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "scootermalagarental.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "scor.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "scrawn.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "secureqbplugin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "seitanic-cookbook.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sexyleni.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -133919,7 +132904,6 @@ { "name": "soundslike.gent", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "southtoowoombahawks.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "spa-et-sauna.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "sparklyfairy.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sparrowwallet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "spbot.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "specialfeetforce.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -133941,7 +132925,6 @@ { "name": "stories-event.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stovokzal.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "strawpoll.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "stroitelstvopro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "studentinaneta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "studiweb.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stunningautos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -133995,7 +132978,6 @@ { "name": "todosquerem.uno", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tokiomarine.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "toldosecoberturasbh.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "tonebuildingsupplies.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tonimorena.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "topppinfo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "travelpearl.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -134094,7 +133076,6 @@ { "name": "zebraonegallery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zerobelow.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zerobelow.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "zerogeworkshop.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zoom-eco.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zootsys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zsi.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -135729,7 +134710,6 @@ { "name": "organicappraisalers.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "organictanningest.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "organisation-mariage.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "organise.earth", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "orido.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ortemis.host", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "orthodealsers.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -136227,7 +135207,6 @@ { "name": "trustedpropertymanagement.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "trustreview.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tskimwagner.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "turysochi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "twitok.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "u.pe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "udinetoday.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -136330,7 +135309,6 @@ { "name": "amaxautomotive.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "amelia.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "amnion.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "an0ns.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "angem.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "anilom.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "animal-world.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -136845,7 +135823,6 @@ { "name": "kabir.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kalisilat.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kalnet.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "kalolina.farm", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kangchunxia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kardia-bordeauxdoggen.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "karikatur.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -137482,7 +136459,6 @@ { "name": "besttimesfinancial.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bethulietourism.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bg2kuj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "biorev.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bitfortune.fund", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bitloco.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "blanzastore.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -137495,7 +136471,6 @@ { "name": "campstuffs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "canormanyaran.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cavallochiropractic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "cby.im", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cf-connect.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "chateau-patris.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "christiangaro.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -137677,7 +136652,6 @@ { "name": "mitensaadatoita.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mitensaadatyota.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mixfix.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "mobintestserver.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "modelstore.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "modint.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "monkeyttack.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -138085,7 +137059,6 @@ { "name": "devastacion.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "devo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "digisecmalta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dima.pm", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dimatokar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dimatx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "distraction.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -138718,7 +137691,6 @@ { "name": "workathomeideas.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "workathomeopportunities.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wuppertaler-frettchensitterin.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "wurm-sb.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wzutti.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xenoscopic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xmdhs.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -139070,7 +138042,6 @@ { "name": "fake.creditcard", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "falcn.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "famousstages.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "famousstageshouston.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "farizstore.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "fatosmilitares.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "federation.gov.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -140871,7 +139842,6 @@ { "name": "helebce.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "helene-conway.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "helpc.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "helpsysadmin.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "henryalanbrown.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "herald.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "heritagetea.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -141696,7 +140666,6 @@ { "name": "partscov.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pasatiempos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "patris-querre.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "pawafuru.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "paydepot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pc-center.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pc-remont.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -143132,7 +142101,6 @@ { "name": "latefeeking.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lavanderia.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lealuestern.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "legaltile.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "leism.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "leo-boutique.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lesconfiseriesdaleth.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -143379,7 +142347,6 @@ { "name": "sortirentrenous.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "soszoro.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sparvagn.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "sprout24.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sritbeauty.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sritbrazil.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stan.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -143502,7 +142469,6 @@ { "name": "wsrc.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wuya.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wvpbs.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "wwboe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn-----elcblfoyosbv5mwb.xn--p1ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xn--alcaiz-zwa.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xuancommagere.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -143580,7 +142546,6 @@ { "name": "andrea18.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "anisotomatikkapi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "antielectoral.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "anyval.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aolcollege.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "apacher.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "appliedmaths.lk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -143967,7 +142932,6 @@ { "name": "errored.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "esasite.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "espacoalkhimia.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "eta.st", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ethicoin.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "euclidian.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "eurocontrol.lu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -144065,7 +143029,6 @@ { "name": "infolaga.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "inscom.events", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "insurepays.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "interealtycanaryislands.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "investisseur-nomade.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "irenemarinabarbe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "istanbulsmilecenter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -144184,7 +143147,6 @@ { "name": "mixingnight.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "miyase-eiji.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mizuhofutures.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "mmonlineshop.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mob2con.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "monkey47.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "monkey47.events", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -144383,7 +143345,6 @@ { "name": "shk8.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sigvik.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "silverstyle.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "simocar.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sinarkabar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sincityfan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sinterklaasnet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -144590,7 +143551,6 @@ { "name": "acovadamoura.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "actieplaza.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "activegateball.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "admxj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adnsolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adoucishop.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adreaminsteel.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -144980,7 +143940,6 @@ { "name": "bruidstaarten.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "brunella.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bryanley.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "bsconnect.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bushingsandbars.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "busty-milf.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cafeserramineira.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -145032,7 +143991,6 @@ { "name": "contucara.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cosmeticenter.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cosyden.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "cpa-ea.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "crimeappeal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "crioestaminal.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "curlie.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -145449,7 +144407,6 @@ { "name": "omniaintranet.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "omniaintranet.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "omniaintranet.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "oncologynote.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "onporn.fun", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "opticsexplorer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "optpra.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -145557,8 +144514,6 @@ { "name": "sallyjo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "salmonde.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sanctio.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "sarkariresultupdate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "saskafood.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "savannahsidewalktours.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "saynotofloc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sbgcred.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -145623,7 +144578,6 @@ { "name": "symbolnodes.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "talentoday.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "taler-systems.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "talleresluse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tantejulia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tattoocorina.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "taxly.kr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -145746,7 +144700,6 @@ { "name": "zuriatpromil.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zurich.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "7sisters.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "8gaming.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aboutajax.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "abroadcafe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adsq.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -148127,7 +147080,6 @@ { "name": "yakimoshi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yakisakana.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yamabara.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "yaoibank.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yarracitta.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yemekfirmalari.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yemekfirmasi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -148173,7 +147125,6 @@ { "name": "abcprodutosvirtuais.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "acculongrange.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adamcarbonell.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "adel.lol", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adigolifestyle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adriennekiss.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "adviesgv.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -148282,7 +147233,6 @@ { "name": "chirality.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "chrisogedengbe.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "christian-garo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "chun.si", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cinco-ind.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cinicostudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cjaconsultoria.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -148372,7 +147322,6 @@ { "name": "findahero.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "finehomesource.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "fitbase.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "flyly.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "folife.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "foma.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "format.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -148398,7 +147347,6 @@ { "name": "getidee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "giaydepvnn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gillsco.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "gillscompany.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ginabae.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "girlandhermoon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "glamluxestudios.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -148438,7 +147386,6 @@ { "name": "ikbenrichie.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "immanuelos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "impressao3d.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "inantrantung.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "indiangamingreport.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "intelligroup360.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "irbisweb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -148505,7 +147452,6 @@ { "name": "levimarvin.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lifamily.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lightning.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "lilov.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "limenotlemon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "litterfreeriversandstreams.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "littleson.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -148525,7 +147471,6 @@ { "name": "managed-it.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mansfield.id.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mariadelcastillo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "marico.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "markmetcalfe.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "markterweele.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "maruconsultoria.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -148586,7 +147531,6 @@ { "name": "ngplus.name", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nhance.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nimnadasl.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "nio.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nlib.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nobz.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nordico.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -149033,7 +147977,6 @@ { "name": "eroticmassagevegas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "erscharter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "etudes.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "evanstonnow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "eve.tax", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "everydayback.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "exploreeurope.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -149516,7 +148459,6 @@ { "name": "besonders-s.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "betterlifekidsclub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bf2042.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "bgmsquad.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bighouse-events.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bigskyhomebuyers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bigsmallhosting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -149740,7 +148682,6 @@ { "name": "gulfadvocates.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gwtg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hapvider.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "healthactive.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hearingthecall.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "heartfolder.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hechno.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -149761,7 +148702,6 @@ { "name": "houghtonhouse.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "howdo.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hunhun.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "iboe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ict-oldehove.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "iframefinancement.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ikhwanfillah.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -149942,7 +148882,6 @@ { "name": "oyantec.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "p.sb", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "pacenterforhearingandbalance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "panthertee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "paslc.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "patrickod.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "paysoft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -150037,7 +148976,6 @@ { "name": "schwimmschulen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sdphoto.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "secwatch.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "seg27.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "selectedbym.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "semtelco.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "seoapi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -150112,7 +149050,6 @@ { "name": "teablr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tecnologiahdv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "teddit.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "teesonic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "terapeuticaenalza.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "terra.bio", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "terranimo.re", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -150180,7 +149117,6 @@ { "name": "voneus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vsure.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vyomoverseas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "w66.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "warfighters.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "warringtonsownbuses.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wayscript.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -150212,7 +149148,6 @@ { "name": "youronly.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yoursfunny.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ytprivate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "yuh.im", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yuh.li", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zajsoft.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zav-hub.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -150264,7 +149199,6 @@ { "name": "bcaf.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "beachlife4life.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "beecambio.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "beesha.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bentwingwebsolutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "best-games.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bestdicas.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -150277,7 +149211,6 @@ { "name": "bnct.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bolsasbellagio.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "botoks.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "boxofficeessentials.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bracelet-chakras.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "brentfieldschools.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "brockenhurstonline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -150713,7 +149646,6 @@ { "name": "yeetix.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "youearnedit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "yourhomeloanapprovals.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "yuan.idv.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "z.md", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zancompute.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zasudili.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -150803,7 +149735,6 @@ { "name": "bnuuy.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "boonlapo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bordoeurope.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "bosfor.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "boutiqueinove.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bouwbedrijfjstam.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "boxmail.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -151013,7 +149944,6 @@ { "name": "jdlt.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jeanbruenn.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jennifermorrisonart.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "jiami.dog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jimbosprint.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "jll.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "joellev.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -151219,7 +150149,6 @@ { "name": "sarasotaplasticsurgery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "saskiadhont.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sassyme.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "schegloff.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sdgrait.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sehatpoin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "semcensurabrag.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -151250,7 +150179,6 @@ { "name": "syned.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tarotgratis.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tchncs.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "teamnewamerican.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tekstenzo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "testservice.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tex-izol.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -151471,7 +150399,6 @@ { "name": "dcrautogroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ddinox.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "defiskills.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "defisolutions.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "delavega.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "denet.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "designeco.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -151479,7 +150406,6 @@ { "name": "dichvuchuyentien247.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dietitiansidehustle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "disenador-web.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "diviflash.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "docmode.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dogshowstuff.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dogtrainersreno.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -151496,7 +150422,6 @@ { "name": "emergingindustryassociation.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "emergingindustryprofessionals.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "envirhom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "envisionmedicalgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "esw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "evangoemer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "everydaylifeinsurance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -151745,7 +150670,6 @@ { "name": "thegeriatricdietitian.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "thegoodveggie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "themealpantry.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "theweddingsociety.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tiremoni.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tirodirecto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "toddvbanks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -151775,7 +150699,6 @@ { "name": "villapads.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "voetreflexberty.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wbphed.gov.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "weare.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "webdesigner4u.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "webdesignsorange.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "whatsinmyjar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -151963,10 +150886,8 @@ { "name": "coeminna.edu.ng", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cognitivehealthintl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "coharushika.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "communistmanifesto.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "compassivaimoveis.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "conclusion.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "coolio.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "corneranimal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cradleaccounting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "crmplace.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -151978,7 +150899,6 @@ { "name": "csharp.love", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "culturestraveled.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cweagans.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "czl.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "daniel-beilharz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "danskgummi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dartergroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -152083,7 +151003,6 @@ { "name": "geniusmarka.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gethownow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gettheworldmoving.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "giaibaitaphay.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "giftfocus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "girisimkaravani.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "glanzodergarnicht.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -152203,7 +151122,6 @@ { "name": "lain-wired.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lanefinder.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lapesbaldai.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "lbi-pg.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lebv.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lefucine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "legacyumc.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -152256,7 +151174,6 @@ { "name": "meowtech.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mercadobitcoin.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mfxm.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "mha.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mhm-creative.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "michalchomo.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "michelbenita.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -152300,7 +151217,6 @@ { "name": "newonlineroad.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nicholaslazzerini.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nlcpakistan.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "nobounce.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nomadistatravel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nordbusinessaccount.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "northboot.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -152453,7 +151369,6 @@ { "name": "swag.pw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "swahili-dictionary.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sysnet.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "systems.fail", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "szpet.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tabby.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "takepicturesleavefootprints.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -152540,7 +151455,6 @@ { "name": "webark.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "webdushowcase.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "winegadgets.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "wintersport.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "winvio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "witajmaluszku.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "womenwhorunit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -152616,7 +151530,6 @@ { "name": "allegrettowines.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "allesmartphonehoesjes.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "allintellect.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "allupfront.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "alphatam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "altovalemarmoraria.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "altruismeefficacefrance.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -152676,14 +151589,11 @@ { "name": "backrestored.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "badkamerconcurrent.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "badkamerconcurrent.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "baerkarrer.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "bak.my.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bananatrunkingprotocol.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bandhayoga.paris", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "basaveshwaraborewells.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "batirenover.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "batiwebgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "bbg.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bbqmaster.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bbqmaster.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "bchi.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -152742,14 +151652,12 @@ { "name": "cacao-gang.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cadconcrete.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cadillacfairview.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "cafetalks.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "calmer-cloud.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "camping.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "capitalnativenations.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "carelancerportfolio.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "carsreborn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "casametrica.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "cascadeshow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "casinospesialisten.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "casinotopplistan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "casinotopplisten.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -152875,7 +151783,6 @@ { "name": "eaofirving.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "eaoftarrantcounty.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "easternandallied.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "ebooktoan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ebrununkasnagi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ecofoolad.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "econoaruba.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -153011,7 +151918,6 @@ { "name": "hilelipc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hkvi.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hobbyvogue.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "hocgiai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hokuin.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hongo-ganka.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hoos.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -153025,7 +151931,6 @@ { "name": "hr-tech.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hrk.aero", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "hse-reglementaire.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "hungthinh-topenland.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "iab-diva.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ibomma.asia", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ibomma.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -153172,7 +152077,6 @@ { "name": "monirtalks.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "montoan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mos-upak.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "mostickers.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mujer.gob.do", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mukli.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mxtm.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -153182,7 +152086,6 @@ { "name": "mykirklanddentist.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mykitchen.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mysourceofhealth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "nadiaka.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nadir.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nagpurinstar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nakthongkham.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -153199,7 +152102,6 @@ { "name": "networksec.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "neue-energien.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "newsliner.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "nguyendanghung.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nicolas-hoizey.photo", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nightscout.host", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nihestudentpad.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -153323,7 +152225,6 @@ { "name": "renedekoeijer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "residence-topaz.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "restorativeandimplantdentistry.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "reviewfy.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "revistamatg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rightsizingcalculator.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "riomi.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -153432,7 +152333,6 @@ { "name": "tanacebu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tanigo.work", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tanigo.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "tarotya.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tasline.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "taxibudapest.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tbgtools.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -153499,7 +152399,6 @@ { "name": "undigo.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "unimex.edu.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "unimexver.edu.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "union.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "upar.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "upflow.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "upgraid.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -153594,7 +152493,6 @@ { "name": "zhbot.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zhouzanxi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zkbitcoin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "zlatopil.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "znakomstvo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zonecloud.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zook.pw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -153762,7 +152660,6 @@ { "name": "cuducu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "culaoxi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cursosdeturismoonline.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "customerware.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "customfoodtruckgraphics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cutme.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "cuttingedgeoptronics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -153806,7 +152703,6 @@ { "name": "elektrilevi.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "elektroepilation-stuttgart.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "elifo.com.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "elliteshop.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "elotec-lichtenfels.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "elplugins.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "emacitylife.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -153819,7 +152715,6 @@ { "name": "enefix.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "enisys.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "eons.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "erikrji.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "esignering.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "estudiarhosteleria.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "estudiarorganizaciondeeventos.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -153903,7 +152798,6 @@ { "name": "green-smart.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gregory.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gruppa-kino.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "gufengmh9.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "guidedesventes.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "guoda.art", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "haar-trifft-medizin.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -153985,7 +152879,6 @@ { "name": "killbot.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kinkyexplorer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kiwiz.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "kk2020.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "kleins-hutorok.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "knowjoe.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "konectbus.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -154025,7 +152918,6 @@ { "name": "masterenbigdata.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "masterengestionsanitaria.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "masterennutriciononline.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "masterkroy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "masterwang.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "masuclub.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "masuclub.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -154088,7 +152980,6 @@ { "name": "nedapflux.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nekk.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "neljaenergia.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "neosey.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "neuteleers.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ngontinhtruyen.com.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nicsys.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -154104,7 +152995,6 @@ { "name": "oakhillseniors.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ocealy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ode-cosmetiques.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "offermagnet.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "oncore-eurofins.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "oneupchocolatebars.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "onfireonboarding.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -154189,7 +153079,6 @@ { "name": "reviewku.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rhinobase.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rhrli.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "rikkamoe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "risedigitalvision.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ritos.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rivision.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -154258,7 +153147,6 @@ { "name": "socialist-alliance.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "societatis.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "soellc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "soenkem.ddnss.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "solista.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "soloprivacidad.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sov-teh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -154276,7 +153164,6 @@ { "name": "subscription-list.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sumkunado.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "suncoastdisplays.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "survivalcrew.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "svarmax.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "swilabible.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sxjjt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -154350,10 +153237,8 @@ { "name": "try2services.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "trytivi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ttpwned.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "tuguiabolivia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tuparticular.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tuxamca.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "tydige.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tyjuxin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "udmddn.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "uhnwarfarinedu.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -154367,7 +153252,6 @@ { "name": "unufoundation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "us-films.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "utahonlinedivorce.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "valens.si", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vanheede.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "variance.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "vasectomie-pierre-boucher.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -154408,7 +153292,6 @@ { "name": "wpduta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wpify.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wpspeedcare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "wtb.agency", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wz.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xcucu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xess.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -154518,7 +153401,6 @@ { "name": "armyofflyingmonkeys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ars.gg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "arsalba.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "artuu.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "as211960.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "asenaru.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "asherosborne.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -154686,7 +153568,6 @@ { "name": "dijibot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dijispin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dildolivecams.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dindludovic.design", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "directorioempresarial.com.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "disisto-schiesser.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "disisto.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -154703,7 +153584,6 @@ { "name": "drjoesimmigration.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "drsoul.band", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "duckmob.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "dufving-beckmann-architekten.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dumbcryptopunks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dumbmeta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "dunassyn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -154740,7 +153620,6 @@ { "name": "excelnutritional.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "exhpo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "exoweb.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "experiusledsigns.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "f-code.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "f88vip120.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "f88vip51.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -154766,7 +153645,6 @@ { "name": "fijisharkcount.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "findcep.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "fishport.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "fishport.cyou", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "fleki.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "floridaledtruck.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "flux.today", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -154788,7 +153666,6 @@ { "name": "gamerant.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gazobeton-don.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gbp.com.ph", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "gdit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gdxware.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "gengoulf.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "geschenkly.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -154946,7 +153823,6 @@ { "name": "lukaszczyk.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "lunastrail.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "luxuryhous.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "maana.lv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "macappstudioprojects.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "macsonuclari.mobi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "magazinmeydani.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -154995,7 +153871,6 @@ { "name": "misalacuna.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "miteltest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "miteltest.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "mjbeventspr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mkrecek.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mlvbphotography.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "moec.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -155164,7 +154039,6 @@ { "name": "rib-ims.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rib-ims.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ribims.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "riceonline.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "risky.services", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rmupasswordstudy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "robertrenoir.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -155183,7 +154057,6 @@ { "name": "saintsrowmods.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "samarpanfurniture.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "santiyede.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "saranasuryaasih.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sarioglumetal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sayheymike.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "scanigma.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -155228,7 +154101,6 @@ { "name": "smmpanelbul.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "smstorems.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "snowcalmth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "sogudo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "solucioneswebbc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "sosyalat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "soulpetrol.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -155333,7 +154205,6 @@ { "name": "tyroola.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tyroola.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "tzki.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "uab.media", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ubaid.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "udla.edu.ec", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ugurnakliyat.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -155457,7 +154328,6 @@ { "name": "alchosting.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aldervets.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "alex.net.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "alexnguyen.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "aliceinfoodland.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "alista.design", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "altcoinfiyatlari.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -155717,7 +154587,6 @@ { "name": "molodechno-mk.by", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mon-habitation.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "montroseflorida.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "moonmolds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mosquito-code.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "mptenders.gov.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "myessaydoc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -155737,7 +154606,6 @@ { "name": "nipponkaigi.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nirex.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nodownload.games", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "normity.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "noveoo.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "nqesh.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ntuchinesesociety.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -155753,7 +154621,6 @@ { "name": "oursportscentral.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "oxizonia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "panamasportsfactory.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "pantherprotective.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "paven.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "paycaptain.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "paylocal.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -155790,7 +154657,6 @@ { "name": "rem-cond.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "remcond.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "remissionclinic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "renesteiper.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "revealcellcamtracker.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rhode-island-sexcams.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "rhwonline.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -155825,7 +154691,6 @@ { "name": "srealmoreno.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "starrosesandplants.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "statscrew.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "steerthrough.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stepin.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "stjh.org.sg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "strivebenefits.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -155897,7 +154762,6 @@ { "name": "willzahra.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "windows101tricks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "withlovelv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, - { "name": "wpjzb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "wrnmb.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "xiix.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "ximg.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, @@ -156516,6 +155380,5404 @@ { "name": "zvrottal.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zwemschooldezwaantjes.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, { "name": "zywave.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "0-0.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "007.rip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "01110000011100110111001001100111.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "02349898.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "0cdn.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "0ii0.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "0system.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "0verener.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "0x0f.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "10086.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "100refer.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "1024.kr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "1079fm.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "10marifet.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "1126.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "112madgamer.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "11academianetworks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "122474487139.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "123.chat", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "123greeting.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "1517.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "18street.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "1999.rs", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "1ae86.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "1ago.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "1bps.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "1meditat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "1password.community", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "21-school.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "21done.ph", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "230.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "233356.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "24-7.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "24din7.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "25refer.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "2ae86.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "2ba.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "2kinds.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "2milebridge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "3.sb", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "333capital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "3ae86.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "3dprintedobjects.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "3einfrastructure.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "3g-bandet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "3gibi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "3marilynthemedia.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "3mind-solutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "3niu901.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "3niu922.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "3niuurls.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "419sport.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "41southbar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "425degree.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "48hr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "491mhz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "4ae86.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "4child.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "4everdosti.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "4ourbest.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "50refer.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "515188.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "51xiongmao.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "5escorts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "6688.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "6700.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "6x6project.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "730.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "75refer.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "7mu.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "800perkins.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "808hao.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "80motorsclub.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "88178.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "88566.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "8daysaweek.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "9.lviv.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "9021.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "91tvg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "9points.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "9zlatan9.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "a-dish.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "a-pools.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "a11ywatch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aachen-quiz.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aalborgoutdoor.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aarhusinside.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ab-west.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "abandoned-zone.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "abbotkinneys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "abdsirketim.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "abdulazizgolca.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "abduramshad.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "abecon.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "abigailmacfuck.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "abiturient-test.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "abolfazlsalmani.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "abormez.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "abovethefirehouse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "absolab.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "absolutecare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "abun-motorsport.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "academyof.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "accademiacimarosa.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "accedia-distribution.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "access-token.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "accionesyreacciones.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "accordius.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "accubitsdemo.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ace-strix.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "acebeam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aceycity.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "achlochan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aclhire.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "acls13.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "actionsandreactions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "activators.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "acuarios.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "acvilnius.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ad5001.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "adarshthapa.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "add-image.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "addmarketing.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "adfconsumer.gov.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "adg-devochtspecialist.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "adgh.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "adkwinefest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "adlabz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "admin.academy", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "adnscript.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "adopting.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "adoption.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "adpesp.org.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "adrienfelsmann.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "adubosvidere.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "adultmalecontent.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "adventuresofmo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "adviceprime.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "advisorperspectives.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "advokatmorgunov.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ae86a.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ae86j.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aerialawesome.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aeropostale.com.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aesra.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aethereal.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "afafootball.co.th", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "affilatura.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "affiliatep.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "africaclassifieds.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "africangazda.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "afrijet.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "afrogospel.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "afroludi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "afterhoursglass.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aftonbladet.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "agama-stroi.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "agavesurgery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "agaviria.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "agendavalencia.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aggressionpvp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "agnconnect.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "agriresearch.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "agullo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "agusik.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ahmadfathy.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aikido.ae", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aipregnancy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aipregnant.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aircraft-database.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "airlineoil.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "airsofthub.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "airterms.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "airzox.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aiwadubai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ajaxworld.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ajedrezbolivia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ak85.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "akaxaka.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "akhbareldesh.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "akillitelefon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "akitacyber.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "akpp1.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "akura.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alacatim.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alaskadentalcare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alchemist-heaven.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alcoclinica.moscow", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alcoclinica.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alea-prevention.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aleksanderkilinski.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aleromtrowbank.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alescan.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alessandraoliva.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alessandrolapiana.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aletheia.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alexada.ms", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alexander-net.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alexander.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alexisquero.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alexistexaspornstar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alexnewson.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alfapack.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alfavipambulans.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alienclicker.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alignedtoachieve.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alimanaka-rabesata.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aliud.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alkel.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "all-bikes.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "allas.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "allbooks.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "allboymodeling.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "allcompanycorp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "allentherapeuticmassage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "allesoverhondentraining.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "allexpress.su", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "allfur.love", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "allnutritionrd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "allriteseptic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "almanea.family", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "almanea.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "almeerajtour.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alopocos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alpahandling.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alpenrose.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alphacorp.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alphimedia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "altria.wang", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "altur.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alturiak.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "altview.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alvaro-smith.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "alvinhu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "always28.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "amadispa.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "amandamaedesign.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "amanohina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "amateurprospog.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "amazarbeit.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "amazing-cars98.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ambulanza.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ambulanza.milano.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ameknow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "amigatraktor.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "amitywebsitedesign.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "amministratoredicondominio.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "amnepal.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "amoraquatropatas.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "amorfestival.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "amrun-verlag.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "amundi-ca-assurances.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "amundi-ee.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "amundi-tc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "amzinfotech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "anachronaeon.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "analytics-media.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "anandsah.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "anarchie-in-lippe.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ancardukids.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "andfaraway.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "andrasnagy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "andrasnagy.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "andrasnagy.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "andreashartmann.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "andreaskloebl.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "andreasxp.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "andrespr.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "andrewsfasteners.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "andythomsonbooks.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "anfadern.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "anfr.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "angeladietrich.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "angelawhitepornstar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "angelcreations.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "angelesdelabismo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "angelsdecay.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "angeltechone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "anglerrecordswytworniamuzyczna.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "anhii.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aniabuduje.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "animacionclub.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "animalpetblog.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "animalpetgroup.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "animazul.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "animehomeworld.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "animelatino.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "animequest.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "animeslayer.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "animeslayer.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "animestash.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "animesun.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ankaramotosikletyedekparca.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "annemarielaponder.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "annonces-immobilier.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "annonseringonline.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "anon-net.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "anon-ways.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "anonmega.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "anonofficial.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "anonwonders.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "answeraddiction.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "antagonist1.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "antenaweb.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "anthonydegrande.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "anthonytutorials.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "antifa-bernau.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "antifabus.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "antize.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "antoniamaria.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "anugerahfuneral.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "anwarulislam.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "anyone.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "apaniwebsite.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "apecservices.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "apiris.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "apk-world.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "apkguruji.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aplausse.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "apollogames.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "app-taittinger.hidora.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "apparelmusic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "applaus-kornwestheim.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "applesaph.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "appleseedcontent.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "apppage.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aprende.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "apretender.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "apteka-kitaya.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aptekarski.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aquaconcepts.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aquaplays.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aquapool.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aquascaping.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aquaworld.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arab-romance.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arabicbayan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arabigolestan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arabstreamsystem.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arabtones.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arbaoui.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arcana-noctis.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "architect-cassiman.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "architectphd.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "architekt.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "archivistas.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arcticfoxes.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arealsultan.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aref.academy", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aretemusic.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arfycat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ari.gg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aritworld.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arks.cards", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "armahackers.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "armchairgames.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "armculturaltv.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "armenia.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arne.cool", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arnested.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aroablog.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aromatherapy.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arphotography.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arrazola.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arsenal-of-wisdom.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arsmedika.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "art-vida.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "artcravers.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "artel.od.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "artepinas.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "artetbalade.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "artinfo.ge", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "artisanportrait.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "artomili.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "artuu.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arul.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arunchullikkal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arunyaresidenceklnorth.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arxarios.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "arzaval.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "as.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "asapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ascultaonlineradio.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "asesecours.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "asesinosdeltarot.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ashraful-islam.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ashtech.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "asiadirect.co.th", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "asian.school", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "asiangroceronline.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "askana.my.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "askfree.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aslanadam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aspietechygamer.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "asrtechnology.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "assanti.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "assets.schwarz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "assist-team.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "asthowen.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "asthowen.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "asthowen.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "asthowen.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "asthowen.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "astqx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "astralgifts.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "astrategicedgecoaching.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "astro-com.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "at2-architecten.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "atacado.com.vc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "atcg.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "atcworldaviation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "atentadocumbiero.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "athena-project.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "atlantismd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "atlastesisat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "atomicecho.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "atomtechexport.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "atp-autoteile.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "attahiyatsaffron.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "atyourscreen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "atyourscreen.events", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "au.zj.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "audienciapublicacerrado.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "audios.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "augmedix.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aukhygiene.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "auricom.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "auristelasaavedra.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aurumautomaton.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ausat.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "australiantranslationservices.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "authress.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "auto-profy.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "auto365haiphong.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "autobuseros4ever.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "autobutter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "autocirkel.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "automobiliteit.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "automotiveonline.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "automotiveuk.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "autonome-treinen.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "autonomic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "autoschadevdberg.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "autotradedubai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "auviewpoint.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "avanpatel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "avarom.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "avasu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "avtransformation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "awakening-guild.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "awladistore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "awlonline.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "awtomator.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ax.mk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "axe.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "axessgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "axioinvest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "axmedmessi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aylesbury.church", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "aysima.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "azimps.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "azonicinfotech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "azquality.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "azurpedia.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "b-institute.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "b.nf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "b1aster.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "b30media.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "baby-doll.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "babyandmoms.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "babyfights.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "babylonclub.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bache-barre.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bache-bulle.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bache-de-piscine.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bache-ete-piscine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bache-hiver-piscine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bache-hivernage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "backstreetbrasil.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "backyardaddict.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "baddog.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "badeurlaub.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bagnichimici.veneto.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bagu.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bagu.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bahrainmarina.bh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bakcor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bakira.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "baku.news", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bakyap.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "balador.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "baldolinitraslochiroma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "balikesireftotoekspertiz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "balloon.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "baltialcoholicos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bambuk.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "banco.bradesco", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bandmentor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bando.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bangkokflightservices.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bank-backend-app.herokuapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bankowy-leasing.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "banktatigebon.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "barbara-bertagnolli.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "barbarareynoldsphotography.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "barbarasymmons.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "barer.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "barge-o-shop.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "barinasknot.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "basbugmucevher.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "base64-encode-decode.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bashari.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "basicskillstest.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "basitplan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "basket-ballworld.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "basket-sint-truiden.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "basteltips.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "battle-arena.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "batulicin.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bauchtanz.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "baxir.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bayareamustangs.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bayernwaage.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bayuu.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "baywatbemacom.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bazdidaval.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bazendefter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bbpnas.win", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bcccremeno.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bdgstore.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bdix.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bdragon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bdt001.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "be-nice.digital", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "be-wear.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "beachmonster.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "beast-books.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "beatday.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "beatrizmartinez.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "beautifulplaces.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "beauty77.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "beautyindistress.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "beautyschool.od.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bebekyap.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "becker.wales", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "beclick.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "becomewebdeveloper.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bedavainternetmi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "beecdn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "beijing.bj", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bejago.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bejbi.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "belfastjujitsu.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "belgian-investor.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "belgianwaffleironstore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "belidi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "beltbuckle.pw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bemmequerenxovais.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "beq.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "berge.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bergside.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "berlin-hotel.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bermatrix.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bernoldi.com.ar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "berserk.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "besikta.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "best-survival-bag.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "besta.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bestcorner.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bestcriminallawyerinsingapore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "betfair.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "betondrew.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "betterhome.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "betweenthesheets.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "beuty-flowers.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "beyer-on-it.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "beyond-destiny.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "beyond.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "beyonds.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bezdomny.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bfsasia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bgmontaggi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bgoandoholdings.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bhwgranteemeeting.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "biaform.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bibliotecasantaoliva.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bicestore.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "big-brother.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bigbangco.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bigbeautysecrets.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bigcitylife.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bikesiliconvalley.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bilhos.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bilisimdanismani.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "billigflug.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "billusherwood.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bilmecelerim.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "binarycom.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bioenergie-eferding.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "biohof-paas.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "biomarket24.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "biopro-st.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "biraktim.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "birdist.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "birthdayapp.today", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bisq.chat", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bitcoin-newsbiz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bitcoin-only.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bitcoinstandard.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bitcoinstock.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bitcointask.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bitcointv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bitllion.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bitsimnow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bitsimnow.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bitwarden.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "biyouclub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bizdemevcut.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bkhonnun.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "blaasmuziek-laarbeek.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "blackassassins.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "blackcastle.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "blackenedsoil.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "blackgoat.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "blackmagick-candles.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "blackportal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "blackwot.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "blagger.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "blastertag.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "blazeweb.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bleta.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "blissfulhomeng.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "blog-erotyczny.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "blog-trawnikowy.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bloggermobile.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bloggermoney.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bloggiamgia.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bloginformatique.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bloodandhonourcentral.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bloodhaven.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bluamoeba.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bludiode.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bluecosmetics.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bluedivision.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "blui.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "blumenbasteln.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bluware.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "blv38.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bnc.sh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bnext.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bnicapital.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bnicapital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bnnuy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bo2projects.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "boards.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bobbyoriginal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bocabeats.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bodyblockarcade.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "boerglas.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bogtom.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bogus.ltd", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "boiliai.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bojoproductions.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bokhaldari.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bokkun.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bolloch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bomenzoeker.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bonaselect.lv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bong--brothers.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bongbongmarcos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bonitaslecturas.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bonsai-uk.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "boogboi.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "book-excursion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bookgeek.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "boomtheme.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "boostermachine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "borafalardeguito.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bosconation.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bossefors.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bossurl.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "botija.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bougepourtoi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bougharios.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "boulevard-ruijschenbergh.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "boundladies.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bouwbedrijfdesmet.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bouwbedrijfkorstanje.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "boygirl.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bpinvest.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "br0up.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bradturveyofficial.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "brain-storm.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "brallog.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bramptonaikikai.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "brands-polo.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "brands-polo.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "brasas.ec", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "brassbandwarmond.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "breakingtech.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "breezehouse.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "brett.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "brhanhaki.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "briankanode.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "brickdose.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "britishpropoliss.my.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "brittas-world.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "broansunited.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "brogramo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "brokencityllc.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "brollopsfotografkalmar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bronco-atodogalope.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "brookeblogt.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "brovary-eda.kiev.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "browse-china.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "browselog.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "brunobattaglia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bryllup.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bsharptech.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "btclients.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "btraviswrightmps.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "buddhas.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "buddypayment.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "budexim.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "buffalo-ny-gay-chat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "buffalohomerepairs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bugalert.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bugfest.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bugrayildiz.av.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bulbagram.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bulledart.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bulli.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bulpros.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bulutdonusumu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bunburydad.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "burakurer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bureau86.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "burmalin.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "burritosband.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bursaexit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "busesurbanoschile.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "business4beginners.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "businesscards4free.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "businessdevelopmentagency.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "businessdevelopmentnews.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "businessdevelopmentsystem.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "businessinaustin.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "businessincolumbus.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "businessindallas.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "businessindenver.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "businessindetroit.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "businessinelpaso.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "businessinfortworth.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "businessinsurancemanagement.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "businesslistingd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "businesslite.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "businessnetworks.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "businessweek.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "businesszachod.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bussinesconsulting.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bussinesinsurance.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bussinesman.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bussinesnews.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bussinessofware.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "butekno.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "buter-petersen.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "butlercountyogs.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "butter.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "butunoyunlar.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "buurtbusboskoop.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "buvik.gov.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "buyeba.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "buyonmov.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "buyru.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "buzzpost.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "buzztalk.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bwmlaser.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "byanabelen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "byebyemylove.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "bytemethod.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "byteofdev.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "c0mplicated.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "c4me.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "c543.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ca-els.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cablemadrid.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "caddyshackersmv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cadeaux-anniversaires.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cadworkflowdentistry.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cafecentraal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cafecliche.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cafethrive.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "caffeinebookly.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "caffepiccolo.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cairnsmobilewillsandprobate.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "caixiange.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "caixideal-serralharia.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cajas.zone", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cakedeliver.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cakelaces.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cakelovesme.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "calcsoft.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "calendly.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "caliber.to", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "californiahealth.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "callychat.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "calmamity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "camarotezetti.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cambopost.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "camdenpaws.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "camelexcursions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "camerata.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cameronwince.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cammamam.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "campuskota.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "canadapropertyexpert.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "canceraid.coach", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "canceraid.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "canceraid.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cancomputers.hn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "candyboulevard.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "candybouquet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "candysailing.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "canile.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cannabistraininguniversity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cannedcyberlabs.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "caos.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "capitalise.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "capitaltruepartner.hk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "capitaltruepartnertechnology.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "carballeira.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "carbonopuro.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "carcatron.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cardiffjobs.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cardiology.academy", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "carescorp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "carlansell.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "carlosgago.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "carnageheart.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "carnavalinrothem.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "carolinaharboe.baby", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "carroseletricosbh.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "carsonmorrow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "carteles.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cartoradio.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "casinocrit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "castlevaniaspain.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "catalogingpro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "catchup-enschede.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "catrybayart.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "catsofcapetown.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cattellar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cattiau.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "catto.win", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cauquenes.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cbmc.store", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cbnegocial.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ccaag.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ceda-fi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ceilimoss.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "celebi-forest.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "celebslovebrand.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "celenkburada.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "celineitalia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "center-surgery.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "centeragro.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "centipedegraphics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "centriqo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "centrodefisioterapia.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "centrum.church", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ceptamircisi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ceremonybydesign.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "certready.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "certum.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cervellomorto.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cesarteixeiraimoveis.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cesurteknikservis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cgaro-amerstd.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cgbf.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cgise.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chakanaherb.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chaletapartmentrentals.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chaletverzekeringen.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chamberlinfamilyphilanthropy.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chantero.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chaoticevil.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chaowan.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chapel.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chapleau.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "charity.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "charlageneral.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "charlieharbourtattoos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "charliez0sp.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "charliez0sp.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "charliez0sp.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "charliez0sp.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "charliez0sp.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "charmingarsehole.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "charmsburguer.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chasse-au-tresor.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chasse-au-tresor.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chatreplay.stream", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chattogether.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cheatengine.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "checkccnumber.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "checkdithuis.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "checkfresh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "checklistbuilder.herokuapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cheese-storeroom.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chefsuccess.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chellescourt.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cherkassy.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cheryltweedy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cheshirex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chiaseek.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chicas.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chickencentral.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chicki.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chienluoc.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chile.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chimaira.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chinabgj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chiquian.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chirotestelt.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "choisirmoneau.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "choloforo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chouse.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "christianimweb.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "christinarosenvinge.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "christineleedy.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "christopherfuchs.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "chronik-kramsach.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cineglitzz.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cinegore.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cinematriz.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cioudways.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cioudways.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "circonus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cjlinks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ckeke.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cl-automotive.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clak.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clan-doom.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clanmacbran.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clara-solis.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "class66.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "classichits.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cleancarbon24.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clearbrand.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cleargage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cleargoals.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cleo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clever-reisen.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cleverbots.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clickcell.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clicks24.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clicksengage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clickstart.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "climatizzatoriprezzi.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clinicatorino.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clique8.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clixz.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clockworkct.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clok.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clokdways.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cloud-glaeser.dedyn.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cloud-lines.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cloud-org.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cloudads.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cloudeways.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cloudfield.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cloudfilecomputer.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cloudfinders.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cloudmagz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cloudwajs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cloudwayc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cloudwayds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cloudwaye.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cloudwayq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cloudways.cm", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cloudways.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cloudwxys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clouglobal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clouvways.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clouwways.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "club-soul.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "club1.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clubbers-comtois.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clubetravel.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clubfactory.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clubtravel.com.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "clubvwgolf.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cmp.eu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cnocsp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "coach-enligne.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "coastnews.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "coboxviagens.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cocobrother.ddnss.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "coconuts-fashion.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "code-de-la-route-gratuit.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "codegirl.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "coderoute-enligne.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "codeslaw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "codewaifu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "codingale.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "coenjutte.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "coffeehousewriters.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cognigennetwork.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "coinmarketturkiye.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "colaborame.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "colinasdog.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "collectiverecyclers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "collegeeducation.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "collegematchmaking.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "coloniae.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "colorline.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "colourtohtml.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "combustion.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "comfitsweets.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "commongoodit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "commvnion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "compagnidimerenda.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "companydi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "compareleasedlines.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "comparesextoys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "compareshow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "completeanon.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "completeprivacy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "compliment.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "compliq.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "comprando.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "computingessentials.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "conall.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "concursocultural.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "condonline.app.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "conectada.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "conejicos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "coneo.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "conferencemonkey.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "conformitykills.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "congresso.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "coniglione.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "connectedandsmart.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "connectivityparty.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "connectnedcommunity.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "connectnow.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "conpsy.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "consideratio.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "consideratio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "consideratio.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "consideratio.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "consolezone.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "constellationinternational.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "contermis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "contextogestaoempresarial.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "contralabel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "contratderatisation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "coolblockschool.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cope.finance", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "copilotgps.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "copilotpro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "corefy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "corepacks.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cornerperk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cors-proxy.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cortestesisat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cortestesisat.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "corvuscorax.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cosasnuevas.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cosmeticosfuerth.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cosmicnetworks.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "costel.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "costelino.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cougargrades.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "counter-strike.net.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "county10.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "couponsavingcodes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "course-net.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "couverture-barre.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "covenantbattle.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "covergarage.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "covidconsult.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "covidtests.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cow-ims.herokuapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cowleysexeter.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cozanne.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cqfuchen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cradio.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "craftmeow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "crashcomputer.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "crashpaint.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "crazy-cake.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "crc.net.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "creastic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "createbeauty.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "creatix.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "creators.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "creditkarma.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "creditreport.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cricketarena.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "crictechs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "crigler-najjar.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "criglernajjarday.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cris2006.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cristinafigueroa.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cristomisina.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "criteriaproducciones.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cromavista.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "crossfitblau.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "crown-trading.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cryptingup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "crypto-ads.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cryptolot.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cryptotabworks.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cryptowhitelists.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cryptpad.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "crystalsdollz.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "csb-consultancy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "csgo.ac.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cstevens.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "csupe.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cube.guide", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cubebik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cubestudio.website", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cubiclands.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cuckoldjungle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "culturaeuropea.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "culturahack.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cumbigtitsuwu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cungnhauhoctap.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cupabonita.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "curiocity.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "curiosidadeanimal.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "curiozitate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "currenge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cursedpine.studio", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cute-urls.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cuteboibutt.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cuthe.re", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cyber-anon.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cyber-article.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cyber-swiat.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cyber-tarot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cyber72.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cyberdynesystems.servebeer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cyberlocos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cybern.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cyberpro.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cyberspot-ci.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cybertoolbank.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cylex-italia.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cynchealth.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cyrilmurphy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cyrokx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cythereapornstar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "cznburak.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "czuladyscyplina.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "d1gital.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "d2i06m35fc7thi.cloudfront.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "d2toledo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "d724.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dafuq.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dailyfootballpredictions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dajaschoonheidsinstituut.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dajaskincare.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "daleworley.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dalilu.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dallastexas.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dalsin.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dame.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dametis.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dangranger.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "danielgil.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "daniellespringer.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "danielportfolio.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dansemacabre.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "danwin1210.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "danya.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "darix.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dark.direct", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "darkbin.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "darkinvasion.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "darkkeepers.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "darkness-and-light.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "darkotip.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "darkrain.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "darkspike.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dartpoints.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "darya.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "das-efx.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dasabomobil.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dashhelpme.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dasler.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "data-privacy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "datamarket.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "datenretter.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "datingbedrog.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "datomize.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "datorhjalpen.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dausendschoen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "daviddietrich.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "davidfuentes.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "davidkatz.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "davidlemler.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "davidson-berquist.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "davidsonberquist.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "davidsun.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "davidsun.name", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "day-of-battlecats.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dayesh.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dayslater.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dazzleabaya.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dbsinergy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dbvideo55.icu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dcoremassagechairs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "deathmarch.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "debacker.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "debesteaedwinkel.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "debewaker.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "deblender.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "deborahkaty.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "debtsy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "debugging.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "decorluxmuebles.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "deeded.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "deep-core.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "deep6.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "deeperblue.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "deerlycke.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "defiscan.live", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "degisimkuaforr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "deko-helden.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "delcampomercado.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "delicaclubphils.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "delitefully.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "delkomrockdrill.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dellamorte.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dema.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "demish.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dengisam.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "denieuwenederlandsevlag.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "denizkutan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dennyhousewbg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dentalelegance.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dentalsupportuk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "denver.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "denverautoinsurancecompany.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "depressionadvice.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "depthsofdepravity.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "der-andere-film.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "deratisation-prix.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "deratisation.paris", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "derhaeuptling.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "descargapormega.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "desenfans.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "desertofoldies.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "deshiread.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "desinfectionfrance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "desirememory.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "desktopsolos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "despoina-vandi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "destinytemplates.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "desvan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "deurwaarderhelmond.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "devanstavern.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "developed-sd.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "developpeur-web2.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "devoted-atheist.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "devs-from.asia", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "devstarops.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "devsurveyorcloud.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dgli.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dgmutual.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dgpro.click", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dhanushtechno.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dhdmdkd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "diabline.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "diana-und-aaron.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dianaundaaron.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "diccionarioperu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dice.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "diebasis-box.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "diegocastagna.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dieselndust.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dietitianmeetsmom.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dievturi.lv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "difuzevox.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "digicomtel.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "digimax.dental", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "digisign.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "digital24.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "digitaldruck.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "digitale-bibliothek.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "digitalinberlin.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "digitalmarketingnetic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "digitalproductivity.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "digitalsolutionsonline.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "digitalsupporter.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "digitalymas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "digithub.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dinerolibre.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "diogofmedeiros.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dionmirrors.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dios.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "direc-tory.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "directholidaysuae.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "directorwebseo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "directoryg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "directstreet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dirt-street.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dirtymusic.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "disassemble.website", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "discord.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "discountisolatie.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "discountsales.ae", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "discoverucg.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "disidencia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "disinfestazionezanzare.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "distance-learning-courses.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "distempered.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "distractors.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "disturbedwarriors.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "divertidores.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dividendosfiis.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "divizja.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "divorce.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dixiepest.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dizkofloor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "django.cyou", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "djangowebstudio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "djanneli.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "djbardhi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "djdan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "djduckie.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "djeanepersonalorganizer.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "djmafia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "djnash.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "djoos.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "djpippoalpar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "djpyerr.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "djsetitalia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dmdata.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dmi.gov.lb", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dmma.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dnrt-esports.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dnssecunsigned.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "doctorlab.am", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "doctorpage.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dogdav.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "doloresvictoria.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "domainics.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "domainsearchindia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "domainservice.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "domaintm.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "domenick-lieneweg.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "domenico.lviv.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "domp.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "donghua-europe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "doorwinnews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dorfkultur.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dornikaweb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dorpsoverlegboskoop.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dosdiasenlavida.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dosevue.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dotatic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dotheevolution.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "doublefriverranch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "doubleupgaming.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "doughstory.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "downloadapkpure.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "downloadcounter-strike16.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "downtownpdx.dog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dralexisdmd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "drata.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "draw-bonus.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dreadfully.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dreamofice.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dreamstarter.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "drica.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dricka.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "driftkikker.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "drikaartesanato.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "drjaensch.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "droom.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dsimonitor.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dskrecords.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dubai-fashions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dubaicartraders.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dubaicourses.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dubaiendeavor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dubaifastfoods.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dubaigrandsale.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dubairanking.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dubairecipes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dubaishoppingcity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dubaitraveltours.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dunkelmann.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dunningtonaudio.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "duo-tauceti.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "duolife.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "durakinesis.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "durhamfences.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "duvessa.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dv.ms", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dvam.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dw-software.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dykebaby.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dysgucymraeg.cymru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dyve.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "dziura.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "e-arteria.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "e-cut.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "e-house.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "e-ideamagazine.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "e-medycyna.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "e-mieszkania.org.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "e-quip.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "e-random.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "e-rober.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "e-siver.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "e-sklep.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "e-walks.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "e-wish.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eajglobal.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "earthcore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eastcottvets.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "easternsalesinc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eastgreenwichnews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "easyretro.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "easytfa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eat-that.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eauto-cash.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eban.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ebarer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ebiznespro.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ecetiner.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "echoteam.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eclipseinspectionservices.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ecolive.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "economie2.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ecotrade-disinfestazioni.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eczanemimarlik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ederasrl.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "edging.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "edilondon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "edithouse.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "edlib.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "edlib.pics", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "edmundy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "edpgassu.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "educasis.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "educatie.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "education4paper.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "educationstudent.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "educationtrust.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "educheck.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eduhublisbon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "edumanage.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eevpn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "effectpointphotography.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "effic.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eftotoekspertizbalikesir.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "egais.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "egc.ink", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "egekenthastanesi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "egins.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "egyptianhak.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ehbdefendersblog.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eileen.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eimeko.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eintoepfe-bruchsal.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eirikyrolae.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ekaceluller.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ekozercy.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ekspertemerytalny.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ela-n.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elama.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elandador.com.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elariannews.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elasten.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elazafran.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elba-elba.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elba-hotel.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elbrifin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elbwiese.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elearningi.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elecbuz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "electra.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "electrafk.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "electricgatemotorshillcrest.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "electrofreakz.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "electrohelp.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elegantfamilyhotelsandresorts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elevelo.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eliasfgabriel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elimit.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elina.pp.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elinternadolagunanegra.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eliquid-manufaktur.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elite-enc.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elite.memorial", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elitenovice.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eljuzgado.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elledecor.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elliottgaming.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ellodave.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elmejordance.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elmion.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eloiseponnau.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elsvanmerhaeghe.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elsweb.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eluancm.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elvea.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "elvendrim.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "emboque.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "emchat.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "emdep.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "emergencyportal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "emilianomaccaferri.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "emiliopj.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "emilstahl.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "emilywillispornstar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "emissionsgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "employeradmin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "emptysmile.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "emreust.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "en2nube.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "enchantedcottage.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "encuentra-todo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "endless.pet", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "enefitgreen.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "enefitgreen.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "enefitgreen.lv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "enefitrenewables.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "energetica.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "energeticafemenina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "energieberater-keil.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "energieberatung-keil.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "energrun.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "energyhybrid.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "enigmavault.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "enka-soudure.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "enlasnubes.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "enotrosmundos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "enriquezdomenech.ninja", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "enrouleur-bache.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "entranceinfo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "entropytcg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "entserv.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "enverid.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "enzo-laurence.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eol-team.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eoncandles.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "epasjans.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "epharma.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "epicentre-amsterdam.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "epiclegends.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "epicqater.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "episails.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "epoch-film.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eprint-grimsby.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eprom.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "equalto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "equilibrium.med.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "equine-dentistry-endoscope.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "equine-dentistry-scope.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "equip.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "erdekesseg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eregma.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ergoseo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eric-masters.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eric.jetzt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ericacastano.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ericccheng.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ericsilva.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ericvantijn.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eriksen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "error.tools", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "es-ramonage.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "es.gratis", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "escspain.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "escuda.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "escueladeministerioytecnologia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "espairecer.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "espass.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "espressodokter.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "espressonews.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "esspackaging.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "estanciasgauchas.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "estuarystudent.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "estudionale.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "estudiovillaran.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eternitdesio.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "etersec.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ethan-hanlon.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "etherium.design", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "etiketten.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "etre-belle.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ettip.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eugeneorourke.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eugenioruberto.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eurobattle.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eurococos.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eurodontic.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eurohouse.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "euskalstakepool.win", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eustaquio.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "evacs.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "evacs.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "evaluer2.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "evanescenceisfallen.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "evelienuitvaartverzorging.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "everythingfree.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "evesan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "evetech.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "evilolive.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "evlilikarayanlar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "evolution-x.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "evonys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "evulka.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ewigetrauringe.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "examresulthub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "excaliburmatrix.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "excellence-redefined.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "exchangeview.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "excursiones.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "exeunt.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "exiletower.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "exotical.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "expandacatering.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "expandor.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "experimentoscongaseosa.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "expertpensions.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "experts-united.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "expungement.law", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "extensibleweb.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "exudestudios.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "eyeniyasam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ezinezone.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ezpb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f-sulzmann.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f1pr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88hot18.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88hot28.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88hot38.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88hot58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88hot68.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88hot88.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88vip56.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88vip61.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88vip66.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88vip712.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88vip732.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88vip743.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88vip764.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88vip781.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88vip782.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88vip804.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88vip851.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88vip878.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "f88vip895.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fabilnatural.co.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "facenews.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "faculty.my", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fahnenmasten.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fairmates.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "faithfully.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fame.news", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "familietandarts.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "famousandfaded.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fanaticosdehectorlavoeenperu.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fanjingbo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fans-darkangel.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fantasypartyrental.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fantasysports.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fapzone.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "farescan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "farexpress.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "farlezz.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "farmaceuticainternazionale.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "farmasimahaganesha.ac.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "farmersgirlkitchen.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fashionagent.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fashioncourses.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fashionforward.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fashionhome.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fashioninitaly.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fashionstylenews.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fashionsummer.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fashionworlds.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fastamundi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fastandtuning.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fastbuilder.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fasterci.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fastpaper.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fatinsl.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "favarica.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "favourperfect.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "faymartin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fccaracciolo-solution.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fegunlock.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "feldgut.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "felis.cat", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "felis.com.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "felixschuermeyer.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fenatrigo.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fenix-zone.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ferienwohnung-ruegen.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ferio-fuu.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fernandomorientes-zone.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ferrets.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fertilaqua.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "festivaldecinedemallorca.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fetanbus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fettings.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fhome.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fifadimensions.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "figaroparrucchiere.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "figma.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fihclawgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fikirtasarim.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "filmbabasi.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "filmnet.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "filtromag.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "finaktiv.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "finalashes.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "financialopticshq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "finchkeeper.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "finqk.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "finulo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fionahengartner.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fiore31.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "firealarms.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "firestarter.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fisherstonelaw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fishmv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fiskenco.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fitgirlsdiary.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "five-wyches-farm.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fixedfeeplacements.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fixi.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fixodent-fr-fr-swapper.azurewebsites.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fixodent.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fiyatinedir.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fizjo-strefa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fizjoprogram.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fjallbackacamping.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fjant.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flaggrimsby.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flamingoroute.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flasheschile.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flashuk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flat-cdn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flat-embed.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flatpackcreative.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flauschig.social", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flechatec.net.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fleurdelune.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flexingpro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flexopus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flicks2click.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flip-flop.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flipperkast.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flirtline.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flokinet.social", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flooddoctorva.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "florianstroeger.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "florida-estetica.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flortal.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flothost.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flowerpictures.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fluctuante.lat", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flyantvirtual.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flyawayart.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flypuntoazul.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "flyseasons.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fmpuertomadero.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fnka.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fob-china-moscow.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "focusbet.space", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "foerderverein-horrheim.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "folk.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fondoslinux.art", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "foodlicious.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "foodlover.restaurant", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "foodtruck.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "foot2rue.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "forbairt.com.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "force-shadow.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "formador.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "forotrabajo.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fortabletoys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fortunebazar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "forum-finansowo.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "forumhsbm.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "forumix.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "forumjogos.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "forumsearch.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "forza-milan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fosteringconsultant.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fosters.ky", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fosterwiki.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "foto-huwi.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fotografessa.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fotokurskalmar.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fototjansterkalmar.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fotowand.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fpliq-backend.herokuapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fps168.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fpsturk.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fr-fotopage.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "francaispornofilm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "france-cartouches.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "francescorandazzo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "francofunghi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fransebulldog-cadeaushop.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fraor.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "frasys.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "frasys.group", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "frasys.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "frasys.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "frauenaerztin-wedel.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "frauenarztin-wedel.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "frazi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "frc.us.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "frcdr.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "freak-zone.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fred26.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "freddyjs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "frederickari.website", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "free4allsw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "freeclubpenguin.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "freecryptoairdrop.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "freeflarum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "freespeech.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "freesteam.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "freesunday.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "freewebh0st.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "freezaworld.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "frekans.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "french.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "frequenttraveller.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "freshseafood.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fridaybot.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "friendick.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "friends.cafe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "friendsoftheravines.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "friesvredesplatform.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "frissenootjes.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "frlcnews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "frontlinepolicies.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "frontrangetowing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "frostal.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "frostwolf.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fs1.hopto.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fstpn.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fstpn.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fstpn.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fstpn.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fstpn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fstpn.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fstpn.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fstpn.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fstpn.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fstpn.media", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fstpn.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fstpn.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fstpn.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fstpn.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fstpn.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fuckthesacklers.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fucktory.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fuegoenlasangre.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fuelingfilms.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fullbulla.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fullfillery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fullmoonhentai.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fullsizefordclub.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fully-covered.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fumonegliocchi.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fun-day.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fundedschools.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "funenhobby.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "funeralforafriend.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fungosdemexico.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "funkysims.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "funmobiles.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "funnymetals.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "funnypromotions.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "funshemale.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "funshirts.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "funsmsmailing.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "furiacelesteiquique.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "furkot.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "furnacemybuddytheplumber.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "furniteco.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "furnitureforlife.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "furnitureforlifeboulder.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fursho.ws", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "furshows.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fusionfactory.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fusionpatrol.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fuso.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "futurefund.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "futuresinmarketing.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "futurity.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fuzion.co.th", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "fzxx.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ga-digitazion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gabrielcury.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gabrielevico.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gadget-hat.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gadgetmaniac.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gafrecomex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gainingadvantage.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "galax.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "galgamer.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "galim.org.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gamblerspick.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "game-in.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gameoveronline.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gamerepository.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gamestand.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gamesunited.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gaming-club.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gamingboard.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gaminghost.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ganjefiroozeh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gapmechanical.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "garagemdeprojetos.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "garagerogge.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gargantuan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "garona.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "garudam.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gastroalianza.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gauravgo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gavinbrown.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gayadultwebmasterresources.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gbatroid.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gbcomm.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gbcreative.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gccfoodstuff.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gcolomboart.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gcrm.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gd1214b.icu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "geafworks.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gebeliktakibim.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "geben.digital", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gecredit.solutions", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gedichtensite.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "geekattitude.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "geekium.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "geekzspawnhere.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "geertjanvanhest.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "geko.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "geldmaat.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gelecekvaatedenkriptoparalar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gemahui.su", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gemilangdaily.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gemplast.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gemwerx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "generalliabilityinsure.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gengcerita.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "genties.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "genzdx.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "geo-files.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "geon.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "georgegachara.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "georgiawrestling.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "georgiedann.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "georgiedann.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "georgiedann.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "geoserves.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "geostems.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gerbil.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gerstner.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gertrudeco.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gestion-de-contact.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gestus.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "getawaycab.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gethere.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "getlabs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "getontop.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "getoxley.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "getready2dance.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "getsmartlook.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "getsocreative.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gettoknowdata.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gezinsbondgeraardsbergen.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gfc.scot", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ghostarmy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ghostcarve.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ghostpi.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "giannakis.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gicasport.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gifhelittlestars.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gifsonline.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gift4ever.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "giftcardstarz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gigagaaf.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gil.gg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gilacms.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gill-cote-bistro.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gill-temptation.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "giocheriamagic.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "giorgiosite.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "giuseppebuccheri.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gkq.co.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "glamorously-built.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "glaserceramics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "glashandelwolf.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "global-share.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "global-trance.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "globalbusinessinfonews.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "globalgrowth.group", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "globalsecuritydatabase.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "globedx.exchange", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "glorystar.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "glossar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gmundner.africa", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gmz.cx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gnomen.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "go-cqhttp.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "goatlord.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gobetweenfilms.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gobig.gg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gocleanandsafe.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "godoter.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "goeddesoundandlight.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "goedkope-bestelautoverzekeringen.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "goedkope-scooterverzekeringen.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "goflix.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gofundhourly.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gogoanime.blue", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gokkastenstip.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "goldenravengifts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "goldentip.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "goliathnft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "golosbots.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gonce.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "good4good.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "goodhopemedical.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "goodmailing.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "google-lunettes.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "google-opinie.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "googleseo.pw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "goreto.edu.np", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "goslot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gospeldesign.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gospelzone.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gossiptimes.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gotnet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gotoken.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gotzg.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "govape.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gpasas.mobi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gracedonors.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "graceradio.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gradgreenhouse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "graficoywebvalencia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "granalacant.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "grandcanyon.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "grande-rock.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "grandeurgifts.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "grandkids-toys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "grandpachy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "grangette.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "granica.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "granotamaniacos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "grasrijk.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gratispornox.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "grattecenne.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gravedad-zero.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gravitco.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gravitysupplychain.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "grayarrow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "great-ajax.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "greenfever.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "greenplanet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "greentherapyplants.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gresrewop.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "greyline.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "griffithobservatory.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "grimsby.ac.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "grimsbydns.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gripvol.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "griyadenature.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "grondwerkencooreman.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "grooveguard.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "groovie.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "grosircod.my.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "groundlabs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "groupcollect.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "groupe-accedia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "groupsgyani.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "groupsite.blue", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "growatiopex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "growthlytics.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "grsglaciere13.asso.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gruppe-casablanca.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "grupposiciliaviola.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gruznet.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gsp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gtalenders.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "guamhome.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "guarever.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gubea.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gudostudio.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gugli3d.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "guidefox.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "guildnet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "guille.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "guillouxinformatique.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gujarat.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gul.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gulizaroztemel.av.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gunisifiyatlari.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gunturnovizal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gursesgazetesi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gutenbier.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gutierrezvidal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "guykokken.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gvip.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gwen-lovecoach.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gymvilla.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "gzitech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "h-gen.to", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ha.gl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "haar.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "habilcondominios.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hable.kr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hack-net.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hackablestuff.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hackdown.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hackernewsuk.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hadopi.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hady.boutique", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "haifaworld.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hailogroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hailstormproject.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hajajaam.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hajajaam.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "haker24.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "halberstadt.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "halfreal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hamburgerbiker.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hammergroup.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hammerhead.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hamoominim.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hands.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "handy-fun.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hangardasaves.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hanspaulske-cteni.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "haosq123.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hap-horecamakelaardij.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "happydays.cat", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "harald-nyborg.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hardatack.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hardmetal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "harleydavidsonobuv.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "harshani.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hartmutschnepel.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hartstart.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "harunafilez.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hasbara.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hastati.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hasyour.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hatematerial.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "havasuopenhouse.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "haverland.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hawk.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hawler.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hayatmurat.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hayden.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hbpro.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hcc-s.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hcc-server.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "headsmackskatepark.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "health.mil", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "health4all.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healthawareness.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healthcareinfonews.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healthlesson.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healthmagazines.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healthmotivation.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healthnutritioninfonews.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healthnweight.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healthoptions.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healthpriority.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healthstudy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healthtimes.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healthtips4you.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healthvision.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healthyalaska.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healthychoices.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healthyclinic.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healthycolorado.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healthyyou.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healtmainwp.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "healtyersworld.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "heartbomb.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "heccubus.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hectorama.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hedgedoc.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hedgehogs.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "heiaheia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "heidiwoodgate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "heinonen.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "helenakmiec.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "helenvalsj.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "helion.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hellblade.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hellhammer.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hellocentral.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "helloindia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hellojapan.asia", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hellopandaphoto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "helpcrm.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "helplightning.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hemato.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hemauto.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "henrymintzberg.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "henzy.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "herizon.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hernikgames.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "herp.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "herus.net.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hervormdweeshuiszwolle.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "heshamselim.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hetoefenpunt.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hetun555.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hetveurtheater.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "heureka.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hexalinq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hexane.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "heyfordpark.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hh-ri.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hideo54.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "highlandbargains.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "highpointglobal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "highskytourism.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "highway71autoparts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "highworldnet.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hiking-site.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hilarymundial.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hilllodgingcompany.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "himawari-scanlator.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hino.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hipecompany.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hiringlift.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hiringrise.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hiyuki2578.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hizakura.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hjbw-sterken.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hlstory.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hltv.org.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hm.seg.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hmcc.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hmsplatform.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hockinghills.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hof-dreisprung.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hoffmannresearch.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hoga.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hogamail.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hogeslagolst.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "holderbekebvba.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "holdingbnb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "home-design.bg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homebar.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homebrewworm.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homedesignarlington.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homedesignbabbitt.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homedesigncasagrande.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homedesignchattanooga.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homedesigncorpuschristi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homedesignellsworth.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homedesignfayetteville.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homedesignfresno.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homedesigngeorgetown.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homedesignhartsville.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homedesignjonesboro.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homedesignknoxville.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homedesignmadison.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homedesignnightmute.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homeideasanddesigns.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homeinspired.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homeinvasion.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homejapanese.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homeofbeer.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homeshow.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homestuck.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homesweethouse.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hometown.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homeunion.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "homeview.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hondudiario.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hongnguyen.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hookah-uae.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hopepartnershipproject.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hopi.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "horionimoveis.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "horncastleanglingcentre.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "horoscopo.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "horseridingdurban.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hoshino-naika.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hospiceconnect.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hospitalorto.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hostalk.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hostdns.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hostingdirect.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hostinghaus.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hostingsolutions.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hostwithcrypto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hostwithcrypto.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hostwithcrypto.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hot-games.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hot-sex-photos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hotdogwheel.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hotelesterobeach.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hotelnagarkotparadise.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hotelsrejber.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hotelv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hotlab.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hottie.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hourlyearning.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "housebar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "houseroxrecords.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "houstoncenterforvaluedliving.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "houstonhughes.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "how2b.studio", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "howlonghaswilliambeenwaitingforhislicence.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "howoldistheinter.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "howtopreventvulnerabilities.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hrajme.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hrejterzy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hrtechnologypro.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hs-hire.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hsbc-zertifikate.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hselectricalservices.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hstsbadnosniff.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "htcclan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "html-builder.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "http.dog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "httpheaders.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "huacos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "huanvm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hublaagram.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "huecomundo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "huelgajusticiaextremadura.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hugheshandymanservices.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hugochilemme.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "huidapotheek.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "huisartsenpraktijkzwalm.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hulpertechsite.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "humanhealth.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "humanistgruppen.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "humbermaritimecollege.ac.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "humbermaritimecollege.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hund.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hundedekken.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hupoyunlar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hurra-blog.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hushescorts.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "huwshepheard.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hwinfo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hygienet.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hypnotechs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "hyze.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "i2itherapy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "i5i5i58.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iboat.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "icddd.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iceboxstudio.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "icemoto.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "icerockproperties.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "icetechworld.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ichibot.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "icpa.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "icreativo.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ictkaisha.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "idahomushroomclub.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "idcrushermachine.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iddaatahmin6.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iddaatahminleri.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iddent.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "idealdedetizadorabh.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "idealidm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "idealserralheriabh.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "identity-project.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "identityflashmob.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ideologiaycultura-ap.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "idiomasdominados.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iepanywhere.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ieti.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ignitewellnessva.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iguru.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ijmuiderstrand.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ijsselglas.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ika.monster", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ikiteker.org.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iklan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iklanbaris.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ilearned.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ilovewallpaper.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "im-internet-geld-verdienen.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "imaginethefloor.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "imagingstudio.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "imajavm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "imediabay.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "imgen.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "imgs.dog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "imlbp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "imlbp.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "immartin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "imobiliariarealdream.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "imogarbe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "impact-lyon.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "imperials.family", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "impiantofotovoltaico.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "importeria.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "importsem.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "improvetoyourself.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "imranhossen.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "imsofucking.gay", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "imusionforum.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "in-flame-team.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "incomewithdraw.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "incomfinance.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inculate.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "indianbeauty.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "indianmasala4u.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "indiatourhelp.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "indiatravel.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "indoetis-surneli.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "indojavamuliawisata.co.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inductionjam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inevo.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inf-it.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "infelix.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "infinifit.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "infiniteautomation.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "infinityname.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inflanev.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inflx.space", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "infobanca.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "infoblogs.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "infoiptv.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "infomeddnews.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inforakyat.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inforeviews.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "informacionmadrid.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "informasidumay.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "infoternet.com.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ingenieriaclinica.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inglesjuridicotatianabueno.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ingridvanderveen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "injuryclinics.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inkblot.art", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inker.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inlineskates.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inmemoria.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inmuseworld.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "innerdarkside.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "innermindpsychology.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "innotec.security", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "innovativesportsurfacing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ino.blue", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inomics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inpertekshop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "insideview.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inspired-builds.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inspiredelements.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "insurgent.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "intechweekbcp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "intelius.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "interactivetheatrecollective.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "interblink.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "interdescargas.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "interet-citoyen.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "interitus.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "internaldisfunction.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "internationalfm.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "intershades.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "intheblackwoods.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "intihalprogrami.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "intimidad.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "intron.pw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inventions-home.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "investa.ph", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "investigations-nbi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "investpsp.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "investpsp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "invisiblehat.ventures", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "invisiblejiujitsu.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "invodx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "inzite.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ioga.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iogm-official.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ip.gs", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ipaddr.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iphonebatarya.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iptvfriend.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ipview.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iranjob.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iraqmartialarts.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "irasingh.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "irentcar.com.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iresineworld.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "irisfansite.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "irmonline.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iron-infos.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "irzumshafiq.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "isabelle-delannoy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "isbpanel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iskin.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "islam-net.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "islam-penzberg.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "islamfirst.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "islamparafriendsclub.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "island-cruises.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "islandinthenet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "islandsofgreenturtles.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ismail-biber.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "isn.education", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iso27001.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "istimdead.today", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "istitutoricci.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "it-biznes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "it-cooking.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "it-ip-rudnick.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "it76.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "it9.bar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "italianhelper.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "italianweddingmusicians.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "italianweddingvideographers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "italyisbeautiful.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "itc-lucke.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "itcider.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "itfix.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "itoezichtprotocol.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "its0x7.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "its950.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "itsbananas.life", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "itsecrnd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "itsmeaxel.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "itworks.agency", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "itwozi.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "itwozi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iuminventory.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iv4khd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ivan-popov.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ivana-models-escorts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ivana-models-escortservice.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ivana-models-escortservice.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ivf114.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ivifashion.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ivioschool.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ivo-ouwerkerk.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ivs-tech.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iwantyoutocomment.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iwismer.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iyspanel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "iyume.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "izana.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "izleorg2.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "izmirprotestan.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "j3dmodding.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jacareiexpoagro.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jacov.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jad.so", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jadehairstyle.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jaehyeon.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jaehyeonit.ltd", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jagogame.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jahidhasanmurad.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jake.rodeo", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jakobczyk.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jallenfabric.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jalse.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jamb2022.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jamdro.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jamesmurphy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jana-rambusch.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "janenwouter.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "janescottceramics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "janfennell.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jannick-nielsen.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "january.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "japanese-tantra-escort.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "japanesemusic.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "japanesephotosite.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jaresourcehub.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jarods.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jasch.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "javabahia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "javapost.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "javierbarrio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "javierfalcon.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jaypeeonline.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jbhdf.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jcwebtechnologies.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jealousy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jeffhoy.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jeffhoyphotography.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jendela360.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jennahazepornstar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jepcraft.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jeroened.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jerometejano.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jesolo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jessejanepornstar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jetaninchina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jetsome.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jfhr.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jfmdevelopment.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jgonzalezhomes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jgsbrickwork.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jillvirus.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jimisfanvan.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jimmydomingo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jkts.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jl-picard.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jlqwer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jmetric.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jmetric.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jmetric.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jmetric.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jmp.chat", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jmsquall.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jmy.fyi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jnko.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jnmusicgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "job-acasa.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "job-jobs.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "job-listing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jobs.gov.scot", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jobsinwales.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jobsmarthasvineyard.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jobtools.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jochem.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "joekarlsson.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "joelpogar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jofogas.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "johntrujillomd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "joinet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jointworks.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jolliffeinstitute.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jonin2.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jony.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "joppies.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jordan-collector.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jordanhamilton.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jordanmetal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jordjord.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jounress.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jouwsongteksten.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "joyce.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "joystickblog.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jpanetta.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jpgtopdfc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jr-signalisation.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jsemonjr.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jskier.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jskmm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jsonvalidator.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "juanjomontecinos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "juansebastianveron.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jubelmart.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "judi-online.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "juice.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jukebox-manuals.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "julienmotheron.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "junco.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "junkyardtuning.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jusham.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "justneworleans.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "justsa.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "justshare.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "justweather.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "juwelier-schmuck.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jwds.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "jzagorulko.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "k-45.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "k-unity.co.ke", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "k8vsy.radio", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "k9bhh.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kabeldiertje.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kabir.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kabuka.jp.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kadinbilgiler.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kadinsaglikhaber.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kadr.lviv.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kagata-kids.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kahvakiekkotalkoot.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kaibinyang.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kaimassagechairs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kaion.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kaitocl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kajasafe.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kakan.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kakeru.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kakgevkusno.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kalimat.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kalyangupta.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kamazuri.art", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kampungcyber.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kampusku.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kapsouro-ksimeromata.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "karamanev.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "karliekloss.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "karmadanismanlik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "karorally.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kashmirartquest.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "katartika.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "katriito.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "katsifos.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kavitech.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kaydenkrosspornstar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kdays.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "keatsandchapman.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "keeg.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "keingeldbezahlt.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "keka.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kellyswordshop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kenhgiamgia.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kennonhvac.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kentradioaeromodelers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kenttasimacilik.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kepppi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "keridos.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kerimusta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "keshankang.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "keshav.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kesifasya.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kestbrook.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kettsy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "keuze.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kevo.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "keyoxide.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kfw-confluence.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kgs-neviges.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kharris.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ki6rbv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kicksecure.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kids360pediatrics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kidscraftbook.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kidsgoga.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kidsplanner.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kieranpotts.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kieutruong.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "killer-fashion.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "killergreen.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "killtv.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kimerald.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kinencoin-tv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kinfule.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kingdommuzic.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kingsolomoncages.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kinky-books.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kintera.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kinto.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kirana.studio", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kitconcept.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kitconcept.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kittybp2.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kiwings.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kiyowoshop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kizetroniko.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kjkesklinna.edu.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "klart.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "klavarog.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kletsenenproeven.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kmaslo.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kmdarkmaster.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kmdevelop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kmk.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kmpropertyfunds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "knittingstory.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "knowledgesuccess.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "knoxlively.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kobayashi-lung.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "koberl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kobet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "koch.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kochrezepte.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kod5.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kofc7449.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "koika.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kolmeya.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "komakogemus.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kon.cat", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "konkanitv.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "konsultation.nu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "konus.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kornera.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "korstanjebouw.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kose.edu.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "koseven.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kosovitolinks.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kotok.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kotthaus-bs.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kotzepipes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kougeihin.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "koyou-nara.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kozarac.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kozitsyn.name", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kozune.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kpk.edu.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kpssdersnotlari.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kqh.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kraz.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kre8tiv.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kristinakar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kroczynski.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "krona.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "krtl.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kruidenboeket.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ks-niceman.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ksg.edu.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kshpage.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ktty.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kuaforumden.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kubilaykiraz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kuboma.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kubota.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kuboweb.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kumlucatup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kumo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kuncrypto.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kundesjekk.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kunst-na-arbeid.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kurdishcommunityofottawa.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kurimasu.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kurs-fotowoltaika.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kurs-wordpress.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kursy-sep.com.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kurzurlaub.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kushwanthreddy.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kusmuhendisi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kuudere.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kuwaitmegadeals.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kuzh.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kuzovkin.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kvalitetskatalog.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kvitlyr.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "kwakkelglas.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "l33roy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "laakevahinko.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "labayru.eus", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "labostech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lacaverna.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lacfm.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lackawannanypolicecorruption.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "laclecmoi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lacuartaorden.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ladascaffolddesign.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ladinvestment.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "laeva.edu.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lafattoriadiclotilde.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lafleur-salon.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lafuriadelguardiancelta.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lagunadiosdalmatians.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lajetlingerie.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lalibella.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lamblogs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lan.re", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lancashirebeekeepers.org.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "langir.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "languageeducation.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lanourotteguiry.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lao.dog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lara-eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "larskuschdesign.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "larsl.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "las7verticales.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "laserpunch.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lasofertas.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lasoffitta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lateraltrust.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "latestnewsonworld.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "latestsonglyrics.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "latherjacket.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "latifahijab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "latifolia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "latinwomen.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "laupapk.edu.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "laurenceandumehltd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "laurenleesmith.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lauretta.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lauxincost.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lavaggio.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "laveg.edu.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lawcancer.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lazarusalliance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lazosargentina.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lazzo.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lcaonline.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lcrehlingen.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lddr.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ldlcorrentes.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ldwiki.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "leadfrp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "leadmusic.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "leaftracker.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "leakcontroltherapy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "leanrtech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "learncalisthenics.fit", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "learncoding.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "learntamil.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "learntofly.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "learnwelsh.cymru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "leavealink.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "leben-pflegen.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lebenpflegen-march.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lebenpflegen.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lechaletduplanbois.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lechocolatier.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "leefbaargijzegem.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "legacyofkain.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "legacysoft.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "legalpro.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "legendtourism.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "legentic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "legitcorp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "legitedeprecy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "leicesterastronomicalsociety.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "leismann.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lel.lol", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lemitti.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lemler.family", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lemonpic.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lemonsociety.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lemonwater.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "leojweda.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "leomarcou.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "leonardocontreras.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "leosopenmind.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ler3.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "les-best-of.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lesdeuxfilles.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lettrefrancophile.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "level37.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lexmondcommunications.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lfn.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "liargentino.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lib.pm", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "libeedo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "liberatupotencial.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "libertino.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "libertyga.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "liblogo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "licaoz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lichtplatformnsvv.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "liewyongxin.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lifelock.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lifemalayalam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lifesoccer.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ligacontrachetos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ligaro.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "light.law", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lightvpn.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lightworks.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ligiptv.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "liji.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "likebot.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lilith-magic-molds.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "limatolavvocati.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lindoors.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "linea-nova.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lingualinx.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "linholiver.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "link26.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "link2u.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "linkbot1.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "linkinpark4ever.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lino.cooking", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "linuxlatbot.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "linuxnews.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "liquiditeit.wiki", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lisaloves.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lisaschubert.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lissabon.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lissongallery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "list1.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "listlockr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "litorallimpo.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "littlecrochetbytabea.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "littlefiredragon.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "littlehacker.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "littlehoop.edu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "littleorchardpreschool.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "liverkids.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "livero.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "livewireos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "livinglocalapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "liziba.cg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ljsport.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lmlm.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "loadhourly.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "loadover.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "localseo.ltd", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "loe.lviv.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "loecsen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "loekkoopmans.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "logfinish.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "loipinelplus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lojadesomautomotivo.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lolchat.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lolifamilies.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lolifamilies.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lolifamilies.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lolifamilies.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "londonsoccer.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "londonvetspecialists.vet", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lonewolftech.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "longest.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "longflexing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "longlanearchitects.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "longwoodwrestling.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "loonindex.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "loopingz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lorcamadrid.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lord-voldemort.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lordar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lordfutbol.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lordofthecraft.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "losbandidosdelahoya.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "losbunkerschile.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "losespiritus.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "loshalcones.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lospadrinosmagicos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lospegotes.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lostandfoundsoftware.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lostarkstats.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lostcork.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lostinside.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "losttv.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "loud-dragon.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "louderfaster.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "loursaint.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "love4taylor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lovemaker.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lovereligion.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lovethatmakeup.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lovinator.space", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "loving-house.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lowendpay.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lower-level.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lower.nu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lowriderz.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lpnm.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lsxteam.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ltt-europe.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lubosabo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lucasbastos.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lucasg.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lucksh.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lucksh.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lucksh.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lucky13strategies.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "luckydoglodge.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ludogogy.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lufa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "luijten.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "luisfreire.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lukasba.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lukastesar.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lukeandjesse.wedding", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lukestert.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lunadea.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lusosider.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lusson.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "luxsat.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "luxurydress.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "luxuryfashion.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "luxuryhomerebuild.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "luxusy.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lvdgroup-innov8.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lvdr.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lwd-temp.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lxn.re", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lxnchan.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lynx.co.th", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lyrex.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lyricsforyou.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "lyxel-staging.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "m-em.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "m-producties.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "m2onlinecasino.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "m5industries.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "maarja.edu.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "macchinetedesche.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "machaaltricks.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "macsonuclari.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mad-in-love.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mad2moi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "madintouch.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "madonnamedia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "madresdelacruz.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "madskill.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "madspeed-performance.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mafelojo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "magazinhaberi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "magesy.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "magicorange.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "magicthecreation.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "magnet.pub", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "magnit-akciya.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "magnumopus.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "magnusdemant.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "magnusfulton.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "magnusj.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "maiateam.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mail-signatures.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mailbywire.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mailstation.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mainstortho.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "maj.ac", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "majavucic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "majestas.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "makalepark.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "makatlaelectronics.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "makeuppleasure.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "makuquina.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "malavida.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "malavirgen.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "malebooks.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "malego.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "malletsheetmetal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mallettsheetmetal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mallinmaquinas.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "malouf.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "malvernhottubs.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mamanetplus.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mamtastationers.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "managedcontractors.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "manawa.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mangaplay.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mangelot-hosting.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "maniasoft.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "manueldelgadohomes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "maorilandfilm.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "maoshuai.men", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "maoshuai.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "maowushi.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mapleholland.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "maproaguas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "maralclock.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "marcopolonetwork.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "marcosnavarro.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "marcsferraripage.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "margaretgel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "maria-sharapova.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mariusschulz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "marjanne.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "marketingdominante.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "marketingfacile.space", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "markfisherauthor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "markrussellwebservice.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "markusmani.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "maroochydorecitycentre.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "maroochydorecitycentre.net.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "marquesalcantara.adv.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "marronniergate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "martialgym.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "martinhal.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "martinhal.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "martinhalfamilyblog.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "martinhalholiday.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "martinhalliving.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "martinhalpropertysales.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "martinhalsagres.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "martinschurdak.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "martyrium.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "marunouchi-hotel.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "masafarms.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "maskstyle.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "masla7tk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "massage-californien.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "massage-chair-relief.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "massagik.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "masterdistillers.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mastersplace.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "masterstation.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mastertutoriales.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "matchlive.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mathieu-marteau.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mati.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "matomari.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "matomo.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "matrix-team.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mattcorallo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "matteozinnia.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mattsavin.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mattsvensson.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "max-anime.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "maximumcontrol.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "maxroganov.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mazda-mps.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mcalestergrazing.company", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mcpe.computer", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mcpepc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mcpepc.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mcsfikirsanat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "md-events.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mddetails.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "meals.lv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mebanroxx.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mebehliyetsinavsorulari.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mechafightclub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mechinfinity.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "med-ics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "medecinesalternatives-developpementspirituelcreatif.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mediaagility.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mediaboxfree.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "medicaldispute.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "medilogistics.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "medinetz-halle.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "medousaclinique.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "medportalmd.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "medsovet.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "megalonomia.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "megatom.net.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "megauniverso.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "meima.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "meister-wuttke.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "meiyouad.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mekker.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "melaodealmeirim.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "melectronics-ostschweiz.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "melhorconsorcio.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "melissasmith4mt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "melkoghonning.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mellonexia.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "melodybiz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "melofile.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mempool.chat", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mendonca.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "menlo.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mensajeurbano.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "menschocolat.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mensconvoy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mentalevolution.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mentes-inquietas.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mercadopago.com.ec", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "merchstudio.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mercurysquad.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "merenbach.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "meripohi.edu.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mesdagh.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mesologie-soesterberg.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mesotheliomalawfirm-worldwide.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "messen.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "meta.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "metabo-center.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "metaclays.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "metalcity.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "metallrecycling.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "metastasys.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "meteosat.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "metex.exchange", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "metisphere.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "meveydesign.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mevissenpsychotrauma.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mews-demo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "meypell.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mglightning.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mgsmfg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mhdaily.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mhk.edu.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mianfei.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "micanetic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "micha.xn--qxam", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "michael-hess.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "michaelkiske.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "michel-cloud.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "michelangelo1978.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "michielskleding.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "michielwalrave.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "michiganacousticneuroma.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mickbluepornstar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "micronotfound.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "midos.house", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mightyfive.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "migrinfo.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mijnonesie.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mijnzusenik.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mikeschaffnerphotography.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mikhail-youzhny.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "miki.community", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mikodojo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mikrokosmos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "milejesurum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mileonapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "milesconsulting.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "millant.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "millenn.photos", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "miluneetsens.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "min-forsyning.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "minecraftforever.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "minervaaschools.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "minitaq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "minquipo.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "minul.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "minutepunchline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "miradordelcondado.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mirage-project.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mirkomainardi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mirotakampus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "misexam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "misreflexiones.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "misslollipop.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "misteryrip.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mistilteinn.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mistress-lucia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "miswonline.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mitokashi.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mixerfestival.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mixon.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mjjshow.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mjzdaman.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mkedziora.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mkmaster.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ml.tax", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mm-sol.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mmwtrademarks.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moba-automation.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mobikasa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mobilecasas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mobilgaraj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mobilityworld.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mobilyaka.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mockers.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "modaltraining.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "modeldanielle.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "modelsmall.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "modernindia.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moderntech.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "modgamer.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "modirhp.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "modisarkar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "modlimit.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moehl.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moenjodaro.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moensnatuursteen.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moeslinger-gehmayr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mohaanation.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mohamedsherif.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mohammed.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mohister.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mohot.com.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moisesbarrio.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mojodentallaboratory.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mojtabagol.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mokaszinhaz.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "molkerei-ammerland.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "molsonmail.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mondzorgparkzicht.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moneymint.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "monibu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "monicadurr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "monitor365.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "monitorga.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "monkeys.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "monoxoro.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "monstl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moondoor.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moonsmanagement.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moonssif.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moonsy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moontaj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mopar1973man.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moreopen.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "morinomiyako-a.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "morishoji-english-school.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mosa.guru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mosharof-hossain.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moshcore.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mosmirmebeli.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mosst.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mossylog.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mothersmediaonline.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "motionory.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "motochileneta.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "motovaruosad.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mounimaharaj.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moussa-ibrahim.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "movefi.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "movementhub.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "movetotasmania.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moveyourass.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "movies-diploma.fun", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moz.idv.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "moztime.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mr-brown.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mragro.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mrpcap.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mrpluss.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mrtieungao.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mrzonk.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mstridde.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mthd.link", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mtn-media.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mu-venezuela.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mu3e.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mueller.works", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "muenzenforum.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "muhammadlukman.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "muhammadmunif.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mukasa.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mulderfamilie.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mulroymediation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "multiconsumos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mundobizarro.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mundodalua.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "munnezza.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "muratboyla.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "muratec.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "murer-specialisten.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "murl.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "musafir-aceh.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "musavirsahan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "musicfreakz.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "musicmasala.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "musicsmoke.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "musicsrv.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "musik-reitemann.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mussonstrading.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "musulmanesnuevos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "muv.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "muyinternetsante.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "muzenzacrianca.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mv-spital.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mvib.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mvvacation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mx-solutions.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "my-clubpenguin.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "my-phone.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "myahmed.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "myalarm.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "myalarm.eu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "myalpine.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "myandre.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "myarticlelibrary.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "myblueprints.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mybreakwatertower.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mydisabilitymatters.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mydisabilitymatters.org.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mydisco.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mydogispolite.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "myeasycopy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "myfirstchessclub.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "myfitnesscare.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "myhouse.rocks", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "myjordantrip.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mykill.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mylastchapter.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mylisting.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mylittlewallpaper.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mymagazines.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mymartinhalchiado.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mymoneycoin.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "myoutdooragent.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mypeace.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "myposters.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mypowerserg.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mypowersergca.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "myshowbiz.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mysticrealm.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mythiqueamerique.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mytimer.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "mytroc.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "myworkfromhome.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "myworldbbs.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "myyoutubepage.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "n3rd.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "n87pedia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nagya.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nagya.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nagya.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nagyandras.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nagyandras.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nagyandras.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "naika.clinic", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "naim.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nakthongkham.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nalogomania.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nameserver.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nametalent.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nanhuibz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nanhuigmp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nanhuimed.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nanhuisoft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nanhuistory.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nanhuitech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nanhuitop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nanofate.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nanomusic.co.kr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nanoprogress.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nanospheres.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "napi.edu.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "narco-center.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "narcoticsanonymous.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "narkocenter116.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "narutolimits.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nasimsabz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nasirrezazi.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nasvyazi.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "natedoss.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nathalieschaos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nation.net.pk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nationalemployertraining.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "natreningu.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "natum.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "naturabuy.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "natureandculture.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "natureisland.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nauticlink.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nauticlux.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nawabarzoo.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nazo.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ndxinfo.eti.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "neb.li", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nebix.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "neero.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "neetflix.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "neguzelsozler.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nej.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nejsvetla.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nekomanten.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "neonigma.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nephelae.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nephelae.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nepomuk-ev.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nerdgebastel.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nerdsonline.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nerfcity.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nespim.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nestas.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "netbird.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "netcd.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "netfreedom.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "netmedia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "netrecruituk.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nettecltd.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "networkingwithfish.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "neuland.technology", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "neurologie-leutkirch.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "neuroticpoets.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "neutrino.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "neverasquemola.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nevergonnatouchit.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "neverness.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "new-zone.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "newamericanpartner.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "newcurve.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "newengineer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "newhope.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "news-and-blogs.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "newscenter.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "newstargeted.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "newterritorialclaims.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "newzvilla.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nexscience.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nextgen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nextitstep.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nharper.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nibblehole.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nicheosala.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nichetest.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nicholsonkring.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nichtkunst.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nicknamez.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nicktamin.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nickwatton.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nicolettevandervalk.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nicopretzl.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nidosinu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "niedlaechelt.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nien.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nieruchomosci-wroclaw-24.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nigdeescort.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nigglipads.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nikolaipribylski.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nimbbl.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nimblecamper.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ninohaslach.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nippon-tour.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nippynet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nirvananirvana.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "niwtech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nixie.fashion", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "njuftp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nnlm.gov", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "noacore.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "noadi-pixels.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nobellc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nobsmc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nocyclopedia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nodkimrecord.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nodmarcrecord.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nodotulum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "noiseboyz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "noithatkimthanhvn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nojihata.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nomwoning.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nontonanimeid.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "noordbikers.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nopropaganda.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "norbit.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "northbendface.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "northcarolinahealth.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "northkenthypnotherapy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nostalgie.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nosurfinbrighton.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "notebooksbilliger.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "noti.tg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "notific.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "notimundodbs.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "notomalayan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "novelly.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "novip.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "novy.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "noyweb.tools", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "npaf.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nqeshreviewer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nrac.or.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nsikakimoh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nskarate.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ntokens.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ntokens.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ntr.ac.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nu.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nuage365.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nuexfitness.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nulo.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nuovaguardia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nursunity.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nuvabridge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nwtoys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nxstudios.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nyawau.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nygbcomicguide.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nygbtourguide.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nyiaarhus.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nyla.life", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "nytvattat.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "o9solutions.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "oakslim.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "oatlandsdentalweybridge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "obalawebsolutions.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "objectcomp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "objectcomp.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "objectcomp.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "objectcomp.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "oblak.host", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "occupy4elephants.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "oceanaway.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "oceanno.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ocsbl.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ocsbl.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ocsbl.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ocsbl.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ocsbl.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ocsbl.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ocsbl.consulting", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ocsbl.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ocsbl.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ocsbl.group", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ocsbl.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ocsbl.media", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ocsbl.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ocsbl.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ocsbl.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ocsbl.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ocsbl.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "octarine.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "odbtomsk.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "oddscasino.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "odij.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "odisseo.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "odyssey.photos", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ofertasdetrabajoen.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "offgrid.lv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "office-basilique.notaires.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "officerjones.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "officialdubaidev.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "officialnewcapital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "officialniledevelopments.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "officialpyramids.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "officialtajmisr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "offspringmexico.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "offspringzero.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ofis.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ogolnotematyczny.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ohtoy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ohverynice.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ohydne.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "oilfieldnow.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "oiwe.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "parlamentum.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "partsinstock.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pascalgames.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "passky.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "passthrough.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "patagosfm.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "patriciadelamora.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "paulahot.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "paulanet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "paulbaily.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "paulinaschubert.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pawspetwear.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pawtraitcaptures.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "paycore.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "paysomeonetodomyonlineclasses.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pc-porady.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pc-stuff.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pcsx2.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "peachesandchampagne.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "peakersoperations.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pearlharbordrydockeisopenhouse.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pedodontie.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pemasalem.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "people2hire.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "peoplefinders.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "portfolioplus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "portobellomarina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "portonfus.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "portugal-a-programar.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "poseidonworld.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "positivastudios.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "positivegeek.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "post.tf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "postechbamboo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "posteo.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "potatolighting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "potatosouprecipe.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pothuarivu.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "powerfiler.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "powerserg.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "powerserg.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "powersergconsulting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "powersergpki.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "powersergsystems.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "powersergsystems.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "powertrike.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "prabhasakshi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pracowniamebli.mazury.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pragrimsby.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pratelloshop.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pratikorganizasyon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "praxis-sorg-sam.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "preciomedicamentos.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "precisiondentistrynj.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "precisiontechcorp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "predatoria.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "predilife.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "premierchef.co.th", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "premiumimmoneuf.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "prensaalterna.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "preventacapo.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pri.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "prima-informatique.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "primanota.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "primedesigns.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "primeprime.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "primrosenyagwaya.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "princewen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "print.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "printerem.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "priorshalldental.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "prisma.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "priv.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "privacy-works.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "privacy.ac.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "privacyguides.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "privatemailme.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "prodaft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "productled.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "profbioresearch.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "profchristophergoh.com.sg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "profitdouble.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "progresion.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "projectcares.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "projectloaded.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "projectweb.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "promenics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "promoteroute.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "propertylondon.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "propertyofthepeople.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "propertyroad.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "prosolucionmexico.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "protonpartnersglobal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "proxy-bay.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "proxyhub.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "proyectoarq.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pry.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pshar.ma", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "psicomagia.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "psicorevista.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "psihocentrala.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "psreturn.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pssschristchurch.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "psy-web.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "psychiatrie-leutkirch.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ptcit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pttimewithtim.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "puccakir.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "puka.edu.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pula-site.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pulacosmetics.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "puliziacantine.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pulizie.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pullman.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pulsadanvoucher.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pulsagolden.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pumpen-blum.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "punaise-de-lit-paris.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "punk-jazz.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "puntaires.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "puppy.actor", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pur-institut.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "puravidaquiropractica.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "purchaserprotect.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pvlrmnnk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pvp.edu.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pvz.tools", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pwclean.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "py.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "pythonblog.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "q.to", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "qatarmegadeals.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "qianglie.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "qianglie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "qoyyim.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "qqsvip.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "qqsvip.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "qqsvip9.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "qt.ax", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "quad9.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "quaestor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "qualitytitlepaducah.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "quantum5.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "quatern.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "quatuor-courtage.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "quaydental.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "quebeccat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "quebeccats.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "queirozmiotto.adv.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "queirozmiotto.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "quetzal.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "quizlets.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "quokit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "qwq.icu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "qzlyrics.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rabattkoll.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "raccoltarifiuti.milano.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "racemanager.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "racetraq.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "racingteameelde.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "radiatorendiscounter.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "radio-beer.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "radioarzua.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "radiomixer.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "radiosilver.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "radoman.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rafaelangelfg.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rafaelortiz.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rafaprialv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ragebin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "raikko.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "railsmaintenance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rajeshkumar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ramonguilherme.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rampiva.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rants.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rashodkin.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ratingscoop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ravalement-facade.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ravenrealms.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ravinala-airports.aero", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rawb0ts.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "raytonne.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "raytonne.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rbt.rs", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rccars.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rcphiphop.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rcru.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rdo-compendium.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rdo.gg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "re-arranged.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "readnow.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "readyfiction.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "realdomdom.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "realestateblogs.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "realestatekanada.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "realestatemaryland.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "realestatetennessee.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "realestatewebnews.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "realhelpcompany.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "realityrecoverycollective.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "realmadridoffice.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "realqunb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "reapandsowmarketing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rebase.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rebel-owl.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rebelchick.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rebelstudio.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rebschool.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rec5.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "recevoirlatnt.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "recordati.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "recouvrement-jmconseil.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "recreatiewoningverzekeringen.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "recursosilimitados.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "red-official.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "redacteur-web.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "redeortoestetica.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "redid.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "redtela.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "redwood.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "referencement-local.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "refinedinspectionservices.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "regency.com.pa", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "reiseziele.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "reisspecialistdevalk.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "remedi.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "remesal.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "remon.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "remonto.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "remove.run", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "removebg.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "remyphotography.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rena.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "renderferma-cash.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "reneploetz.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "reneschroeter.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "renovera.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rentm.media", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "renusson.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "repairland.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "resellerprogram.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "resmim.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "resort-nuvola.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "respectonsleau.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "restaurant-naan.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "restbygait.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "restlesslegs.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "resurgent.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "retinaconsultantstexas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "retrophoto.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "retropixel.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rettungsdienst-friesland.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "reverse1999.wiki", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "reviewheaven.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "revisore.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "revista-atalaya.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "revivewellnessofoxford.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rextomanawato4.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rfasafedrop.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rfn.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rgservice.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rheimsandcohen.ltd", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "richlogic.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "richtabak.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rickyips.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "riedl-shk.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rightfulowner.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rightschool.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rikels-slaapexperts.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rileysteelepornstar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rincondelsonido.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ringmybell.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rino.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rinskeshomepage.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ripcurl.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ripetizioni.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ririro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "riskiq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "risonanzamagnetica.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ristrutturazione.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ritirocalcinacci.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rm2brothers.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "roadtripaustralia.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "robert-adam.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "robinb0s.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "robinbos.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "robinsremembered.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "robintimmers.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "robkish.life", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "robloxenthusiasts.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "robocorp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "roboonline.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "roc-taiwan.su", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "roc-tw.tw", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rock-zottegem.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rockabilly-sinners.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rockriver.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rodrigonask.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rogerstone.wales", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rohal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rokade.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rokuk.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "romancerecipes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "romasko.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "roodo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "roofonline.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "roorda-schilders.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rootnician.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "roozbeh.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rosevalleyfolk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rosoft.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rotas-turisticas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rotasturisticas.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rotasturisticas.com.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rotasturisticas.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rotasturisticas.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rotasturisticas.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "route51.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "route64.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "routemates.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "roxia.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rp-idskenhuizen.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rrteam.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rsmedic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rss3.bio", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rss3.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rssicons.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rt-praxis-barbara-scheibel.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rte.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ruber.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ruddr.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ruhrdurst.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ruiduntrading.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ruinone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ruixin.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rul.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rultek.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rumah-tanah-dijual.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rumdulhospital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rumeli.edu.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "runcodefor.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ruseartgallery.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ruud-online.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rwhapdentalservicesreport.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rwp7.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rx-base.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ryananeff.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ryanonfire.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "rydeful.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "s4media.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "saaricraft.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sabahome.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sacred-destinee.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sacwellness.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "saf.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "saferinternetday.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "safesecuretrusted.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "safesecurevital.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "safetygoodsfair.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sahararun.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "saharazik.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sahpa.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sailarmada.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "saily.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "saimedia.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sainttheresahome.org.sg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sairadio.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "saisandesh.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sakac.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sake.my", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sakellariadis.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "salasanakone.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "salduero.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "saleem.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "salerno-on-line.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "salesdesign.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "salesoptimize.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "salier-realschule.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "salinetherapy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "salon-magnolie.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "saloniestate.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "saltedge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "saltwrap.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "salvalartesicilia.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "samabest.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "samuels-graphics.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sanalikaforum.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sanapaino.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sanctskin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sandro.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sandsclan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sanjoweb.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sanktannae-advokater.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sansdict.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sanstyles.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "santacruzstudio.com.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "santamariaretreats.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "santamariaretreats.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "santasofiastereo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "santibz.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "santosdecordoba.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sarahkempphotography.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sargar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sarkazam.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sarkchat.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sarkvideos.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sartoria.milano.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sashaclothing.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "satja-juga.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "satlantis.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "satselect.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "satta-company.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "saturnjump.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "saudimegadeals.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "saudinews.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "saue.edu.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sauerwetter.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "savanna.vn.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "savannapro.vn.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "saveonadventures.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "savingtails.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "saxynele.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sberanalytics.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sbercity.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "scanprice.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "scarboroughtec.ac.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "schauergroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "schilderennummers.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "schlopolis.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "schlossanger.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "schluesseldienst-haymov.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "schooluniform.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "schoonheidssalon-annelies-santpoort.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "schroederdennis.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "scihome.furniture", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "scks.site", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "scoebg.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "scontomio.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "scootarama.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "scott.today", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "scrubcorpo.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "scvilareal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sdarot.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sdlsj.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "se-center.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "seagulls-luebeck.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "search-net.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "searx-private-search.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sebastiandarhoi.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "secondorder.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "secondtreasuresmv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "secret.garden", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sectigostore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "secunit.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "secure.wang", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "secureapplicationaccess.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "securepanel.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "securesite.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "securetown.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "securimail.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "seedbox.hosting", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "seetv.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "segamastersystem.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sellcar.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sellhouseflat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "selltothousandhills.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "senderosdelavida.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "senkals.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sentor.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sentorsecurity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "seodelhi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "seoproof.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "seowind.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sep-online.com.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sep.bydgoszcz.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sep.jgora.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sep.rzeszow.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sep.tarnobrzeg.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sepetibostan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "septodont.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "septodont.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "septodont.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "septodont.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "septodont.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "septodont.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "septodont.com.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "septodont.com.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "septodont.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "septodont.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "septodont.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "septodont.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "septodont.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "septodont.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "septodont.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "septodontaucanada.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "septodontchina.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "septodontusa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "seputarfinansial.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "serecoponsillo.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sergiocv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "serkanyigit.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "servatmandi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "serveistic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "serviceflow.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "serviceland.am", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "servisin.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "servivum.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "serx.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "setpooshtehransar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "seymourfanclub.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sfbaytransit.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sfcardio.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sferalakiera.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sfumusic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sgoossens.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shaftofdarkness.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shaheedirfani.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shaheednawazirfani.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shahriar.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shahriar.email", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shahriar.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shanghaimineral.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sharenotes.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shareworks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sharine.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sharix.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sharkblog.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sharko.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sharkpaint.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sharynlongca.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shawnz.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sheetengine.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shield.my.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shiftleft.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shiggles.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shiggles.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shikaku-test.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shinodadc-nakano.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shipaik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shirleydentalpractice.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shivenjoshi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shiwa-shop.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shoe.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shoekeys.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shokaran.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shootsame.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shopping-cart-migration.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shoppingonline.ie", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shoppyout.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shorifhussain.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shortwave.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shota.pictures", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shou.si", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "shouldiclick.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "showmethescore.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sich.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sidomulyo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sidsdock.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "signature.sh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "signcreative.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "siimustilak.edu.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "silalesa.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "silverdroid.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "silverscreenindia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "simcity-cafe.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "simghep.com.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "simplehome.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "simplerv.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "simplevat.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "simplybloomfloral.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "simplyirfan.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sinn-frei.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sinner-rider.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sinsitio.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sinsolucion.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sinuasi.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "siptv101.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sirena.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "siriusatelier.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sisal7937977.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sisman.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sisqualwfm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sistemista.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sistrade.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sitiweb-wp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "situm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sitypro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sivaexports.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "siver-instrument.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sixyy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skbilisim.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skegnesstec.ac.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sketchmonk.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sketchy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ski-outdoor-shop.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skill-x.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skinnation.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skinplaybeauty.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skinrender.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skky.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sklep-proekologia.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sklepsnowboardowy.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skmsport.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skpark.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skrillex.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skvele-cesko.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sky-os.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skyblockmc.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skyblockmc.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skyfall.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skyint.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skyint.codes", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skylandanalytics.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skylinehouse.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skypark.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skyrosconsulting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "skysplash.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "slaam.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "slack-gov.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "slagerijvanguilik.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "slb.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "slcdn.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sleep4beginners.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sleepshop.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "slim.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "slimer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "slivkadesigns.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "slm-sla.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sloeproeienalmere.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "slogancreator.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "slogix.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sloudways.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sludge.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sluitsnel.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "small-king.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smalldeveloper.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smarriti.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smartcluster.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smartertowing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smartfixmarburg.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smartlist.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smartlook.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smartmessages.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smartmeterfraud.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smartphonefixen.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smartplus.ae", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smartrecruiters.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smartvitaal.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smashcooper.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smashingconf.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smashingmagazine.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smgl.cm", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smilecliniq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smilephi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smkbpj.edu.my", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smkmusaga.sch.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smm.lu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smokedrhymez.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "smolbotbot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "snabbacash.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "snakeoils.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "snapaffiliate.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "snazzbox.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "snippet.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "snitchnet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "snooker.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "snuz.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "soapsspoilers.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sobuj.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "soccerquarters.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "soccorsostradale.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "socialfreak.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "socialhp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "socialprotection.gov.bd", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "socotratrip.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sodependable.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "soengen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "softekontrack.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "softtester.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "softwaresolved.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "soissons-technopole.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "soju-delivery.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "soko.reisen", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sokretirement.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "solar-electric-propulsion.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "solarium.milano.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "solarstats.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "solidpurenonsense.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "soliujing.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "solliv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "solmate.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "soloreti.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "solosesso.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "solutionplumber.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "somaar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "somautomotivobr.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "something-blue.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "somnium.click", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sonarweb.ir", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "soniclink.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sonicshop.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sonixpro.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sonnendeal.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sonnendeal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sonnyland.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "soonkingye.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sorgulamauzmani.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sorubak.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sorveglianza.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sosessaimabeilles.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "souravbhor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sources.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sournews.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sourraundweb.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "southerncrossbeauty.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "southernlights.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "southphoenixair.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "southwestpremierurology.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "souvian.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sovereign.bounceme.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sovetmkd34ru.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sozoom.kz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "spacedogs.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "spacerocksmc.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "spacewinner.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "spamtuning.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sparkandglass.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "speakerlauncher.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "spectrumcontrols.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "speechlesshairstyles.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "speeddating.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "speedynews.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sperformance.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "spetskabel.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "spiele-gewinnspiele.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "spielgeld.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "spillbasen.no", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "spindle45.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "spintracer.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "spiritedengineers.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "spiritualpsychologyofacting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "split.apartments", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "spn-it.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "spolekatelier.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sporq.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sportfits.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sportfits.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sportfits.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sportsdans.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sportwetten-anbieter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sprucingupmamahood.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "spyequipmentuk.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sqrl.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "squareeye.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "squid.gay", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sscnic.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sslgram.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ssmd.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ssmwebportal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "staaldart.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stadasverige.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "staging-scholar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stakedate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stand.gg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "startlgvtraining.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "starttoact.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "staticfour.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stavgp2.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stbcg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stealth-ip.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stealth-ip.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "steamcn.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "steelzone.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stefandesign.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stelling.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stepplanning.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stevebanks.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stevinson.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sticksandstonescomic.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stikkyikkys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stoicus.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stoketalent.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stonecore.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stopmetbellen.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stoprat.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "storyark.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "storymalayalam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stpatricksmapleridge.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "straightlinediscgolf.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "strail-english.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stratinator.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "straubs.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "strauss.eu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "strauss.tirol", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "street-clic.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "streetvendors.africa", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stressdown.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "strive.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "strona-na-medal.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "strongholdinc.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "strongmind.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stroylandiya.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "structrz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "struktura.lv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stuartalexander.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "studio54.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "studioamai.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "studioelo.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "studytour.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "stwcforum.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "suamaytinhdienthoai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "subsoft.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "subtituleros.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sukirastore.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "summitcountyrealestate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sun-lounge.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sunhills23.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sunrisedonate.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sunsetweb.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sunshadeseyewear.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "superalem.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "supercorp.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "superdeals.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "superform-staging.herokuapp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "supersecuresite.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "superseguros.gob.do", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "supersocial.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "supervasan.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "supplychainriskmanagement.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "supremacrypt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "surebets.bet", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "surfsm2.ddns.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "susumulus.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "suziepachecoart.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "svtv.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "swami-krishnananda.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "swarovskijewelry.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "swilagod.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "swot-digital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "syaeful12ips.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sydsray.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "sylphix.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "synconlinemedia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "syncsci.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "synda.nu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "syndicate.vip", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "synonimluksusu.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "syntric.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "system-design.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "szih.org.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "szkolenie-wordpress.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "szmidtinwest.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "t-fischer.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "t-op1.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "t-opcs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "t-opcs.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "t-rink.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "t7tech.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "t8software.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "t8software.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "taapk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tabe.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tabe.com.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tackn.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "taeluxuriant.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "taifun-software.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tainiesonline.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tajmisreg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tajtowereg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "takeiteasyy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "takosuke.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "takysoft.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "taleatherworks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "talentsearchpeople.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "talkbitz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "talkeducation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "talks.run", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tallcraft.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tallulahbernard.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tamarasoft.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tami.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tamimmalik.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tammiku.edu.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tankservice.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tanphu.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tanzania-chameleon.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tappezziere.roma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "targeteffect.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tarjetondigital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tarkhisi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tashicell.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "taskrunnr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tastebudsmarketing.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tasvideos.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tattoopiercing-wien.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "taverns.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tawzea.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tazita.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tda-werbetechnik.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tda.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tdtf.hk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tdtf.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "teachingtoday.education", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "teaeggss.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "teainside.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "team-aaa.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "team-royal.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "teamawesome.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "teamcodeorange.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "teamsignia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "teamto.do", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tech506.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "techieidiots.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "techlandgg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "techlore.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "techmatter.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "techmayosi.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "technodevelopmentera.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "techreek.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "techreportforall.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "techrevolution.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "techsaviours.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "techvel.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "techvoice.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "techwallet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "techzant.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "teclys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tecpartnership.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tecsar.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "teczero.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tedankara.k12.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tedyst.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "teengamingnights.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "teestore.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tegus.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tehnomagija.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tekcan.av.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "teknik-sipil.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tekno-dream.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "telegashop.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "telekomiker.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tellaresdo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tellingua.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "temaflex.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tematonline.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tennis-agesc.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "teplovizor.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "terma.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "terme.milano.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "termoidraulico.milano.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "terumoindia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tesharp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tesla-fire.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "test4pro.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "testkolik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tethys.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "texaport.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "teztarama.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thaihong.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thamara.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thantra.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "the-glitch.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "the-lfb.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "the-small-dick-club.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "the-tg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "the-wolf-pack.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "the-word-smith.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thealtcointoken.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "theathletic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "theaustinbulldog.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thebiz.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thecheapairlinetickets.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "theclarke.wedding", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thecrypt.game", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thecybergenie.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thedailybloon.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thedarksidesoftwaresecurity.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thedefiled.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thedotcom.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thedriftuniversity.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "theeverydayprepper.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thefashiondistrict.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thegallery-restaurant.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thegeekguy.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thegiantsdream.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thegildedthistle.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thegraduatesalon.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thehadicks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "theindiemood.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "theislandwellness.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thekapi.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thelocxresearch.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "themexx.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "themodernalchemist.bar", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "themusicofchrisbulman.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thenewoil.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "theninjasedge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "theo546.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "theo546.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "theopaczek.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "theoriginalcandid.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "theosforum.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "theoverground.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "theparkwoodmanor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thepaul.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thepeak.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thepennyjar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thephantomstail.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thepuppetdolls.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "theradiojudge.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "therapyservices.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "therealcomp.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "therealestatesolutionsguy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "theretro.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thesagresapartments.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thesatriantoshow.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "theserver.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thesilentplanet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thesissurvey.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thesissurvey.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thesiterank.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thesoundproofwindows.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thetechdude.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thetipo.rocks", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thevalleybucketeers.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thevegcat.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thewarehousefellowship.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thewhizkids.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thisisarecording.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thisisreno.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thoenesfamilierecht.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thok.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thongtinthethao.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thoughtspot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatcon.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatcon.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatcon.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatcon.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatcon.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatcon.media", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatcon.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatcon.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatcon.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatcon.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatcon.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.cloud", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.cy", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.group", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.lu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.media", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.pt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "threatint.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thterrain.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thuthuatmac.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "thutm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tiavoo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tictacmessage.vn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tidecommunity.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tidimension.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tiederavintola.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tigerupload.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tiler-costablanca.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tilers-world.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tillydesign.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "timecarrot.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "timeprison.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "timesamui.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "timetastic.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "timetravelforum.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "timo-viveen.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "timonline.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tineb.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tinint.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tinky.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tintiger.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tipi.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tipsfitness.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tisph.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tjsky.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tk-its.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tm-sports.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tmn.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tnpds.org.in", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "toabr.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "toddcrawshaw.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "todoinfo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "toeverynation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tolibanana.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tollywood.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tomashejatko.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tombclan.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tommytran.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tonazo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "toners.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tons-cafe.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tontonan.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tony-morelli.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "toofab.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "toon.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "top-maigrir.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "top10list.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "topa.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "topacademy.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "topbusiness.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "topclan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "topfood.club", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "topgevelbekleding.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "topnews.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "topsexik.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tor.taxi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "torb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "torg-ug.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "torgyug.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "torocatala.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "torsdammen.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tosbourn.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "toshiroz.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "totlan.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "touchmark.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tourisme-dordogne-paysfoyen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "toyonut.co.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "toyventure.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tpedu.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tpedu.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tpeducation.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tpf.hk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tpsw.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trachtenwolf.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tradeplotter.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tradet.fi", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "traegerbox.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "traghetti.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trailrighttraining.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "traitement-punaise.paris", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "transglobelogistiques.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trashpanda.website", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "traslochi.napoli.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "traumtrauringe.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trave.africa", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "travelchannel.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "travelclube.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "travelingthevortex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "travelni.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "travelove.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "travelvacancy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "travianbattleplanner.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trayinc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trend-calendar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trendingstory.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trendpanel.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trendpara.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trianglewaverecords.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trieuvy.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trigueros.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trihard.space", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "triperapp.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "triperapp.com.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "triplapalma.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tripoffice.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tripoffice.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "triptravels.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tritonshowers.co.nz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "triumc.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trobinson.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trolla.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trongkhanh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tronxh.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trouvez.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truckcord.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truckersdatabase.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trucksdirect.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truenet.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartner.academy", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartner.capital", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartner.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartner.education", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartner.fund", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartner.hk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartner.software", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartner.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartner.technology", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartner.university", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartneradvisor.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartneradvisor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartneradvisor.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartnercapital.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartnercapital.hk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartnercapital.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartnercapital.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartnercapital.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartnercapital.us", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartnercapitaladvisor.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartneredu.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartnereducation.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartnereducation.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartnerfund.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartnerfund.hk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartnerfund.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartnertech.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truepartnertechnology.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truewinter.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trureg.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trust-ted.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "trutrip.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "truyen-hentai.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tryexp.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tryrebooting.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ts-projects.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tseng.dedyn.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tsumishima.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ttill.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ttsteel.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tubuscador.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tuespr.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tuhoctainha.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tuinenhullebroek.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tulsa.tech", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "turikslab.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "turisbrasil.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "turisbrasil.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "turismoeviagens.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "turkdevs.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "turkeymistress.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "turkeysforlife.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "turkhacks.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "turkiye.ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "turkru.pro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "turktree.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "turyserra.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tuz-es-munkavedelem.hu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tv-hot.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tvdenevar.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tvindia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tvkaren.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tweaky.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tweedagenextravakantie.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tweemaster.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "twhc.org.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "twitch-radio.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "twopipes.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "twopipes.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "twopipes.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tylerobrien.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tyrael.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "tzortzis.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "u2co.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "uabc.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "uaemegadeals.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "uberstrategist.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ubill.ge", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ucg-international.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ufos.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "uitvaartgoessens.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "uklawfirm.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "uknews.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ukseafood.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ultrasbet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "umkomaaslodge-aliwalshoal.co.za", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "unblockit.how", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "unchile.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "uncuut.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "underdogsklj.live", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "underground-england.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "underground.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "uneaimages.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "unicornsoft.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "unique-local-ipv6.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "uniquemode.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "uniquequilts.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "unitysavannah.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "universalecology.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "universalwebcommunity.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "universen.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "universitycentre.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "unknowntrailsrider.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "unmask.earth", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "unnamed.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "uno-express.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "unply.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "untitled-home-storage.cyou", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "unwishingmoon.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "upcwifikeys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "upestudios.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "uphold-15-party.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "uplab.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "upnetwork.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "uprawnienia-sep.com.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "uptimeuno.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "upviews.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "urbanized.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "urbanizedrecords.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "urbanspitz.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "url.ht", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "urlauthority.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "urlauthority.blog", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "urlauthority.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "urlauthority.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "urlauthority.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "urlauthority.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "urlauthority.info", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "urlauthority.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "urlauthority.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "urlauthority.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "urlauthority.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "usa10.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "uselys.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "usenethd.li", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "usor.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "usvisallc.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "utahmotors.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "utterman.se", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "uubb.top", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "uykuilaci.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vailrealestate.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vakantiehuisverzekeringen.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "valariejenkins.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "valemusicfest.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "valentin-weibel.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "valkoi-konyvtar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vancouverdriveband.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vandenheuvelzwembaden.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vanessaglendagarcia.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vanivi.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vanlierdezottegem.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vapebuddy.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vapoteuse.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "varaani.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "varalaval.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vardakeio.gov.gr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "variatesonline.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vases.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vaststellingsovereenkomst-advocaat.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vatman.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vcare.group", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vcloudways.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "veebiveski.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vegan-essen.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vegetablegrowing.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vegetarianfastfood.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "veinaestheticstampa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "veldadvies.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "veliavidela.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "velmorra.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vendeproductos.online", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vendomicasaenserena.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "veracruzti.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "verhave.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "verindra.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "verkeersschoolvanhouten.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vermont.builders", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "verndale.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "verse.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "versus-hair.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vertichost.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "verticweb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "verwarring.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "verygoodmarketing.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vesen.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vestal.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vetantumapu.cl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "viaeth.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vibeonline.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vibratefashion.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vibrolandia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vichovska-vyhlidka.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "viciousracing.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vicoeo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "videopediablogs.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "videopokerez.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "videosengracado.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vietconghackz.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vietforum.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vietnamvisa.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vietnamvisa.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "villafrancis.org.sg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "villagevet.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "villahistoria.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "villakiralik.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vilvoordelaan.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vimbom.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vineyard-wash.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vinhoscortem.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vinizia.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vinylbasement.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "viphost.web.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vipus.gq", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "viralcharcha.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "virtasktic.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "virtualpavilion.co", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "virtubroker.com.mx", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "virtueturkey.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "virty.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "virusmousepads.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "visacolombianaparaextranjeros.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "visatitans.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "visitcamden.com.au", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "visitezlesenegal.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vitamixromania.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vivas.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vivekselvakumar.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "viveoriginals.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vivianlms.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vivid.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vizecounselor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vizzarragrup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vklikers.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vkustradicii.com.ua", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vladcash.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vladreview.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vleague.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vma.community", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vmahome.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vmahome.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vmzone.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "volantinaggioaroma.it", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "volgar.name", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "volkstuinwaregem.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vollenberg.ca", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vonnu.edu.ee", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "voorde.lol", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vox.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "voxelcat.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vrchat.community", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vrdennis.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vulnerar.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vygo.network", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vygo.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "vyvozhlama24.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "w40faktory.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "w4g-security.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "w4ngo.tv", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "w88soikeo.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "waif.uz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "walentynki.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wallhack.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "walter-foerster.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wangpedersen.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wannabfit.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wapchan.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wapro.biz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "warcraft2016.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "warcraftwikicz.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "waren.one", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "warrenfisher.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "was.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "watchesallure.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "watersidemarket.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wauzaji.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wearefestival.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "web-is-amigo.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "web-log.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "web-privacy.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "web-redactor.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "web-redactor.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "web-view.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "web50aqui.es", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "webaam.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "webal.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "webcreative.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "webdesigncompanyindia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "webdoxclm.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "webeck-information-systems.at", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "weblightnovel.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "weblocus.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "webpkgcache.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "webradio-maroc.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "webrats.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "webserverindia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "webstar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "webtech.shop", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "webtorrent.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "webwweb.com.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wecareplatform.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wedcha.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wedelrahill.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wedot.co.uk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "weisskircher.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wekan.hopto.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "welcoop-logistique.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wendy-david.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wenlopleidingen.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wereldschool.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wesleyarcher.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wesselius.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "westie.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "westonreed.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wftbasis.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "whatsitsname.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "whatthequok.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wherecaniwatchanime.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "whil.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "whistleblowerordning.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "whodiduexpect.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wholesaleroaches.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "whtop.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wibu.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wigan.ovh", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wikicat.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wildsense.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wileyconference.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "williammcgill.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "willys.zone", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wilmothgroup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wilypumpkin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "win11.ren", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "windowsindonesia.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "winechapter.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "winterdetective.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "winterlandbeverages.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wipayfinancial.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wirelesscctv.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wirethrone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wiretoss.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wiris.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wisewellusa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wishmenia.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "withdati.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wizardkami.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wk-tk.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wlozku.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "woadzs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wojart.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "woocommerce.academy", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "woodcraftcompany.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "woonverkoop.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wordpress-crm-plugin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wordpress-crm.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "workonit.cf", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "workreap.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "worldhomedecoration.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "worldmetaverso.com.br", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "worldsweet.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "worldviews-debattieren.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wouterkobes.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wp-freemium.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wp-in.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wp-ninja.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wpetri.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wpocs.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wpsecured.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wptoolset.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wpturnedup.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "writeaword.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wsdeboer.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wsrv.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wuaffiliate.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wuevahosting.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wuzhuiso.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wwlc.ch", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "www.ki", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "www.tl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wwwebtime.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "wyndhamcapital.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "x-team.co.il", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "x3m.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "x3x.tc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "x4k.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xajh.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xcloudways.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xd.gd.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xeggex.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xevnet.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xiaolt.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xinyazhang.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xjysilicone.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xm1s.life", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xmanshow.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xmanyz.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn----ylba7abgd9bnh0e.xn--qxa6a", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--230ap0xpa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--80adjmbjd1avp5b4a.xn--p1ai", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--938h.st", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--9kq.eu.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--andre-is--yz4h8t9azf9596c4rigl8h.moe", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--bognsroad-j3a.dk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--c5w032d4vi.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--e1tx9l9xc.xn--6qq986b3xl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--frauenrztin-wedel-vqb.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--m6t22d1b026i1odr9k.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--m6ty4dmx2a7ki.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--muozabogados-bhb.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--n8jvax6b.xyz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--nied-lchelt-q8a.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--niedlchelt-u5a.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--rih.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--sxwp99e.xn--j6w193g", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--ug8h.st", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--ukys-f6a.lt", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--uxqy9syyb.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xn--y8j0b0a9exb.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xpetit.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xrdd.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xsait.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xwt888.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xxx-fiction.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xxx-gays.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "xylos.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "y-chung.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yamaguchi-eq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yaraab.my.id", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yardtower.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yaseen.ae", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yasmeencreative.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yasmin-apartments.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yavar.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yazilim.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yba-lier.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yepu.cc", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yepu.ga", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yessirgear.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yestoseo.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yfeer.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yiguan.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yjz.hk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ylromania.ro", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ympifa.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yobify.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yohannes.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yonetilenhizmetler.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yosh.is", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yosm.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "youiv10.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "youiv20.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "your-computer-is-a-hero.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yourbusiness.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yourenergy.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yourfin.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yoyojobs.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yrausquin.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "ysmedia.jp", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yukitty-yukitty.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yunibalance.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yuugi.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yuzulia.work", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yvonix.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "yzyweb.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "z0.pm", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zacharysherman.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zaffittv.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zagerijstraat51.be", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zahnarzt-neudecker.de", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zakarpattya.fun", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zankevich.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zankevich.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zanreal.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zaparoh.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zarabotai-doma.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zarabotok24stavki.ru", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zarezerwuj-nocleg.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zdraveziti.eu", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zdravshop.sk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zdxiaoda.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zebel.io", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zegels-danst.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zeilschoolneptunus.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zeynepkam.com.tr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zfid.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zga.me", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zhibo166.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zhivoe.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zhodani.space", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zigoomar.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zijingbt.cn", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zijingbt.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zijingbt.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zionaesthetics.com.sg", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zippie.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zivotsdietou.cz", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zmydlona.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zoftko.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zonaquimica.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zonecheck.org", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zorgkey.nl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zorzorfm.ml", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zsaqwq.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zsombor.net", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zukong.party", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zulfumehmet.tk", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zweikern.com", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zyciegwiazd24.pl", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, + { "name": "zythom.fr", "policy": "bulk-1-year", "mode": "force-https", "include_subdomains": true }, // END OF 1-YEAR BULK HSTS ENTRIES // Only eTLD+1 domains can be submitted automatically to hstspreload.org,
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc index 8e20b8d..090668e9 100644 --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc
@@ -915,12 +915,13 @@ CookieAccessResult(returned_status)); continue; } - + CookieAccessResult cookie_access_result(returned_status); cookie_store->SetCanonicalCookieAsync( std::move(cookie), request_->url(), options, base::BindOnce(&URLRequestHttpJob::OnSetCookieResult, weak_factory_.GetWeakPtr(), options, cookie_to_return, - cookie_string)); + cookie_string), + &cookie_access_result); } // Removing the 1 that |num_cookie_lines_left| started with, signifing that // loop has been exited.
diff --git a/pdf/pdf_view_web_plugin.cc b/pdf/pdf_view_web_plugin.cc index a6b47af..34af3f2 100644 --- a/pdf/pdf_view_web_plugin.cc +++ b/pdf/pdf_view_web_plugin.cc
@@ -50,6 +50,7 @@ #include "third_party/blink/public/common/input/web_keyboard_event.h" #include "third_party/blink/public/common/metrics/document_update_reason.h" #include "third_party/blink/public/mojom/input/focus_type.mojom-shared.h" +#include "third_party/blink/public/platform/platform.h" #include "third_party/blink/public/platform/web_input_event_result.h" #include "third_party/blink/public/platform/web_security_origin.h" #include "third_party/blink/public/platform/web_string.h" @@ -357,9 +358,19 @@ /*full_frame=*/params->full_frame, /*background_color=*/params->background_color, /*has_edits=*/params->has_edits); + + SendSetSmoothScrolling(); return true; } +void PdfViewWebPlugin::SendSetSmoothScrolling() { + base::Value message(base::Value::Type::DICTIONARY); + message.SetStringKey("type", "setSmoothScrolling"); + message.SetBoolKey("smoothScrolling", + blink::Platform::Current()->IsScrollAnimatorEnabled()); + SendMessage(std::move(message)); +} + void PdfViewWebPlugin::Destroy() { if (container_wrapper_) { // Explicitly destroy the PDFEngine during destruction as it may call back
diff --git a/pdf/pdf_view_web_plugin.h b/pdf/pdf_view_web_plugin.h index b4879fd..4eb0e68 100644 --- a/pdf/pdf_view_web_plugin.h +++ b/pdf/pdf_view_web_plugin.h
@@ -327,6 +327,9 @@ bool InitializeCommon(std::unique_ptr<ContainerWrapper> container_wrapper, std::unique_ptr<PDFiumEngine> engine); + // Sends whether to do smooth scrolling. + void SendSetSmoothScrolling(); + // Recalculates values that depend on scale factors. void UpdateScaledValues();
diff --git a/printing/printing_features.h b/printing/printing_features.h index e0e32de..9003dab 100644 --- a/printing/printing_features.h +++ b/printing/printing_features.h
@@ -7,6 +7,7 @@ #include "base/component_export.h" #include "base/feature_list.h" +#include "base/metrics/field_trial_params.h" #include "build/build_config.h" #include "printing/buildflags/buildflags.h"
diff --git a/services/network/cors/cors_url_loader.cc b/services/network/cors/cors_url_loader.cc index b895c1f..c6c26e4 100644 --- a/services/network/cors/cors_url_loader.cc +++ b/services/network/cors/cors_url_loader.cc
@@ -500,6 +500,16 @@ DCHECK(forwarding_client_); DCHECK(!deferred_redirect_url_); + // When a redirect is received, we should not expect the IP address space of + // the target server to stay the same. The new target server's IP address + // space will be recomputed and Private Network Access checks will apply anew. + // + // This only affects redirects where a new request is initiated at this layer + // instead of being handled in `network::URLLoader`. + // + // See also: https://crbug.com/1293891 + request_.target_ip_address_space = mojom::IPAddressSpace::kUnknown; + // If `CORS flag` is set and a CORS check for `request` and `response` returns // failure, then return a network error. if (fetch_cors_flag_ && IsCorsEnabledRequestMode(request_.mode)) {
diff --git a/services/network/network_context.cc b/services/network/network_context.cc index c84a5ab..f34778c7 100644 --- a/services/network/network_context.cc +++ b/services/network/network_context.cc
@@ -525,7 +525,7 @@ } sct_auditing_handler_ = std::make_unique<SCTAuditingHandler>(this, sct_auditing_path); - sct_auditing_handler()->SetEnabled(params_->enable_sct_auditing); + sct_auditing_handler()->SetMode(params_->sct_auditing_mode); #endif #if BUILDFLAG(IS_ANDROID) @@ -1476,8 +1476,8 @@ signed_certificate_timestamps); } -void NetworkContext::SetSCTAuditingEnabled(bool enabled) { - sct_auditing_handler()->SetEnabled(enabled); +void NetworkContext::SetSCTAuditingMode(mojom::SCTAuditingMode mode) { + sct_auditing_handler()->SetMode(mode); } void NetworkContext::OnCTLogListUpdated(
diff --git a/services/network/network_context.h b/services/network/network_context.h index b180447..b5055ac 100644 --- a/services/network/network_context.h +++ b/services/network/network_context.h
@@ -302,7 +302,7 @@ const net::X509Certificate* validated_certificate_chain, const net::SignedCertificateTimestampAndStatusList& signed_certificate_timestamps); - void SetSCTAuditingEnabled(bool enabled) override; + void SetSCTAuditingMode(mojom::SCTAuditingMode mode) override; void OnCTLogListUpdated( const std::vector<network::mojom::CTLogInfoPtr>& log_list, base::Time update_time);
diff --git a/services/network/network_context_unittest.cc b/services/network/network_context_unittest.cc index d941f6d7c..73335f1 100644 --- a/services/network/network_context_unittest.cc +++ b/services/network/network_context_unittest.cc
@@ -7471,7 +7471,9 @@ base::HistogramTester histograms; mojom::NetworkContextParamsPtr params = CreateNetworkContextParamsForTesting(); - params->enable_sct_auditing = enabled; + params->sct_auditing_mode = + enabled ? mojom::SCTAuditingMode::kEnhancedSafeBrowsingReporting + : mojom::SCTAuditingMode::kDisabled; std::unique_ptr<NetworkContext> network_context = CreateContextWithParams(std::move(params)); network_context->MaybeEnqueueSCTReport(kHostPortPair, chain.get(),
diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom index 92abe20..4e48be6 100644 --- a/services/network/public/mojom/network_context.mojom +++ b/services/network/public/mojom/network_context.mojom
@@ -419,13 +419,11 @@ [EnableIf=is_ct_supported] bool enable_expect_ct_reporting = false; - // Enables SCT auditing, which sends reports for SCTs found in connections - // made by this network context. Can also be dynamically configured via - // NetworkContext::SetSCTAuditingEnabled(). This must be set to true and - // auditing must be enabled and configured globally via - // NetworkService::ConfigureSCTAuditing(). + // The SCT auditing mode. SCT auditing sends reports for SCTs found in + // connections made by this network context. Can also be dynamically + // configured via NetworkContext::SetSCTAuditingMode(). [EnableIf=is_ct_supported] - bool enable_sct_auditing = false; + SCTAuditingMode sct_auditing_mode = SCTAuditingMode.kDisabled; // The initial CT policy to be used for requests. See // NetworkContext.SetCTPolicy() for more. @@ -602,6 +600,20 @@ kPotentiallyPermit, }; +[EnableIf=is_ct_supported] +enum SCTAuditingMode { + // SCT auditing is completely disabled. + kDisabled, + + // The user has opted-in to ESBR, so sampled SCTs are sent to Google. + kEnhancedSafeBrowsingReporting, + + // The user is not opted-in to ESBR, and hashdance auditing is enabled. + // Perform a k-anonymous prefix query for sampled SCTs, and upload only if the + // SCT is not present in a log. + kHashdance, +}; + struct URLLoaderFactoryParams { // Process that will be using the URLLoaderFactory to initiate HTTP requests. // (This is *not* necessarily the same process that creates the factory, @@ -1416,9 +1428,9 @@ GetOriginPolicyManager( pending_receiver<OriginPolicyManager> origin_policy_manager); - // Set whether SCT auditing is enabled for this NetworkContext. + // Set the SCT auditing mode for this NetworkContext. [EnableIf=is_ct_supported] - SetSCTAuditingEnabled(bool enabled); + SetSCTAuditingMode(SCTAuditingMode mode); // Adds an observer that will receive Reporting Service callbacks. Generates // events for Reporting API reports currently stored in the reporting service.
diff --git a/services/network/sct_auditing/sct_auditing_cache_unittest.cc b/services/network/sct_auditing/sct_auditing_cache_unittest.cc index 4336e87c..867260e9 100644 --- a/services/network/sct_auditing/sct_auditing_cache_unittest.cc +++ b/services/network/sct_auditing/sct_auditing_cache_unittest.cc
@@ -63,7 +63,8 @@ // these unittests don't need to test CertVerifier behavior. context_params->cert_verifier_params = FakeTestCertVerifierParamsFactory::GetCertVerifierParams(); - context_params->enable_sct_auditing = true; + context_params->sct_auditing_mode = + mojom::SCTAuditingMode::kEnhancedSafeBrowsingReporting; network_context_ = std::make_unique<NetworkContext>( network_service_.get(),
diff --git a/services/network/sct_auditing/sct_auditing_handler.cc b/services/network/sct_auditing/sct_auditing_handler.cc index 860b4e4..c322b44 100644 --- a/services/network/sct_auditing/sct_auditing_handler.cc +++ b/services/network/sct_auditing/sct_auditing_handler.cc
@@ -196,7 +196,8 @@ std::unique_ptr<sct_auditing::SCTClientReport> report, std::unique_ptr<net::BackoffEntry> backoff_entry) { DCHECK(foreground_runner_->RunsTasksInCurrentSequence()); - if (!enabled_) { + // For now, only report in ESBR mode. + if (mode_ != mojom::SCTAuditingMode::kEnhancedSafeBrowsingReporting) { return; } @@ -255,14 +256,14 @@ } } -void SCTAuditingHandler::SetEnabled(bool enabled) { - enabled_ = enabled; +void SCTAuditingHandler::SetMode(mojom::SCTAuditingMode mode) { + mode_ = mode; // High-water-mark metrics get logged hourly (rather than once-per-session at // shutdown, as Network Service shutdown is not consistent and non-browser // processes can fail to report metrics during shutdown). The timer should // only be running if SCT auditing is enabled. - if (enabled) { + if (mode != mojom::SCTAuditingMode::kDisabled) { histogram_timer_.Start(FROM_HERE, base::Hours(1), this, &SCTAuditingHandler::ReportHWMMetrics); } else { @@ -299,7 +300,7 @@ } void SCTAuditingHandler::ReportHWMMetrics() { - if (!enabled_) { + if (mode_ == mojom::SCTAuditingMode::kDisabled) { return; } base::UmaHistogramCounts1000("Security.SCTAuditing.OptIn.ReportersHWM",
diff --git a/services/network/sct_auditing/sct_auditing_handler.h b/services/network/sct_auditing/sct_auditing_handler.h index 188eab13..0fea2a3 100644 --- a/services/network/sct_auditing/sct_auditing_handler.h +++ b/services/network/sct_auditing/sct_auditing_handler.h
@@ -15,6 +15,7 @@ #include "mojo/public/cpp/bindings/remote.h" #include "net/base/backoff_entry.h" #include "net/base/hash_value.h" +#include "services/network/public/mojom/network_context.mojom-shared.h" #include "services/network/public/mojom/url_loader_factory.mojom.h" #include "url/gurl.h" @@ -95,8 +96,10 @@ return &pending_reporters_; } - void SetEnabled(bool enabled); - bool is_enabled() { return enabled_; } + void SetMode(mojom::SCTAuditingMode mode); + bool is_enabled() { + return mode_ == mojom::SCTAuditingMode::kEnhancedSafeBrowsingReporting; + } void SetURLLoaderFactoryForTesting( mojo::PendingRemote<mojom::URLLoaderFactory> factory) { @@ -112,7 +115,7 @@ void OnReporterStateUpdated(); void OnReporterFinished(net::HashValue reporter_key); void ReportHWMMetrics(); - network::mojom::URLLoaderFactory* GetURLLoaderFactory(); + mojom::URLLoaderFactory* GetURLLoaderFactory(); // The NetworkContext which owns this SCTAuditingHandler. NetworkContext* owner_network_context_; @@ -127,7 +130,7 @@ // Tracks high-water-mark of `pending_reporters_.size()`. size_t pending_reporters_size_hwm_ = 0; - bool enabled_ = false; + mojom::SCTAuditingMode mode_ = mojom::SCTAuditingMode::kDisabled; base::RepeatingTimer histogram_timer_; // Helper for safely writing data to disk.
diff --git a/services/network/sct_auditing/sct_auditing_handler_unittest.cc b/services/network/sct_auditing/sct_auditing_handler_unittest.cc index 0869934a..fa73b2b 100644 --- a/services/network/sct_auditing/sct_auditing_handler_unittest.cc +++ b/services/network/sct_auditing/sct_auditing_handler_unittest.cc
@@ -52,7 +52,8 @@ CreateNetworkContextParamsForTesting(); context_params->cert_verifier_params = FakeTestCertVerifierParamsFactory::GetCertVerifierParams(); - context_params->enable_sct_auditing = true; + context_params->sct_auditing_mode = + mojom::SCTAuditingMode::kEnhancedSafeBrowsingReporting; network_context_ = std::make_unique<NetworkContext>( network_service_.get(), network_context_remote_.BindNewPipeAndPassReceiver(), @@ -137,7 +138,7 @@ url_loader_factory_.Clone(factory_remote.InitWithNewPipeAndPassReceiver()); SCTAuditingHandler handler(network_context_.get(), persistence_path_); - handler.SetEnabled(true); + handler.SetMode(mojom::SCTAuditingMode::kEnhancedSafeBrowsingReporting); handler.SetURLLoaderFactoryForTesting(std::move(factory_remote)); // `file_writer` should not be created for this handler. @@ -158,7 +159,7 @@ // Set up a Handler with an empty `persistence_path`. SCTAuditingHandler handler(network_context_.get(), base::FilePath()); - handler.SetEnabled(true); + handler.SetMode(mojom::SCTAuditingMode::kEnhancedSafeBrowsingReporting); handler.SetURLLoaderFactoryForTesting(std::move(factory_remote)); // `file_writer` should not be created for this handler. @@ -178,7 +179,7 @@ url_loader_factory_.Clone(factory_remote.InitWithNewPipeAndPassReceiver()); SCTAuditingHandler handler(network_context_.get(), persistence_path_); - handler.SetEnabled(true); + handler.SetMode(mojom::SCTAuditingMode::kEnhancedSafeBrowsingReporting); handler.SetURLLoaderFactoryForTesting(std::move(factory_remote)); auto* file_writer = handler.GetFileWriterForTesting(); @@ -238,7 +239,7 @@ // Create a Handler, add a reporter, and wait for it to get persisted. { SCTAuditingHandler handler(network_context_.get(), persistence_path_); - handler.SetEnabled(true); + handler.SetMode(mojom::SCTAuditingMode::kEnhancedSafeBrowsingReporting); mojo::PendingRemote<network::mojom::URLLoaderFactory> factory_remote; url_loader_factory_.Clone(factory_remote.InitWithNewPipeAndPassReceiver()); handler.SetURLLoaderFactoryForTesting(std::move(factory_remote)); @@ -274,7 +275,7 @@ // the same data. { SCTAuditingHandler handler(network_context_.get(), persistence_path_); - handler.SetEnabled(true); + handler.SetMode(mojom::SCTAuditingMode::kEnhancedSafeBrowsingReporting); mojo::PendingRemote<network::mojom::URLLoaderFactory> factory_remote; url_loader_factory_.Clone(factory_remote.InitWithNewPipeAndPassReceiver()); handler.SetURLLoaderFactoryForTesting(std::move(factory_remote)); @@ -360,7 +361,7 @@ url_loader_factory_.Clone(factory_remote.InitWithNewPipeAndPassReceiver()); SCTAuditingHandler handler(network_context_.get(), persistence_path_); - handler.SetEnabled(true); + handler.SetMode(mojom::SCTAuditingMode::kEnhancedSafeBrowsingReporting); handler.SetURLLoaderFactoryForTesting(std::move(factory_remote)); auto* file_writer = handler.GetFileWriterForTesting(); @@ -417,7 +418,7 @@ url_loader_factory_.Clone(factory_remote.InitWithNewPipeAndPassReceiver()); SCTAuditingHandler handler(network_context_.get(), persistence_path_); - handler.SetEnabled(true); + handler.SetMode(mojom::SCTAuditingMode::kEnhancedSafeBrowsingReporting); handler.SetURLLoaderFactoryForTesting(std::move(factory_remote)); auto* file_writer = handler.GetFileWriterForTesting(); @@ -478,7 +479,7 @@ url_loader_factory_.Clone(factory_remote.InitWithNewPipeAndPassReceiver()); SCTAuditingHandler handler(network_context_.get(), persistence_path_); - handler.SetEnabled(true); + handler.SetMode(mojom::SCTAuditingMode::kEnhancedSafeBrowsingReporting); handler.SetURLLoaderFactoryForTesting(std::move(factory_remote)); auto* file_writer = handler.GetFileWriterForTesting();
diff --git a/services/network/test/test_network_context.h b/services/network/test/test_network_context.h index 5ab0163c..778c5fa 100644 --- a/services/network/test/test_network_context.h +++ b/services/network/test/test_network_context.h
@@ -154,7 +154,7 @@ void GetExpectCTState(const std::string& domain, const net::NetworkIsolationKey& network_isolation_key, GetExpectCTStateCallback callback) override {} - void SetSCTAuditingEnabled(bool enabled) override {} + void SetSCTAuditingMode(mojom::SCTAuditingMode mode) override {} #endif // BUILDFLAG(IS_CT_SUPPORTED) void CreateUDPSocket( mojo::PendingReceiver<mojom::UDPSocket> receiver,
diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc index 95e231c9..be3e91a3 100644 --- a/services/network/url_loader.cc +++ b/services/network/url_loader.cc
@@ -1265,6 +1265,24 @@ &redirect_info.new_url, *factory_params_, origin_access_list_); + // The target IP address space is no longer relevant, it only applied to the + // URL before the redirect. Consider the following scenario: + // + // 1. `https://public.example` fetches `http://localhost/foo` + // 2. `OnConnected()` notices that the remote endpoint's IP address space is + // `kLocal`, fails the request with + // `CorsError::UnexpectedPrivateNetworkAccess`. + // 3. A preflight request is sent with `target_ip_address_space_` set to + // `kLocal`, succeeds. + // 4. `http://localhost/foo` redirects the GET request to + // `https://public2.example/bar`. + // + // The target IP address space `kLocal` should not be applied to the new + // connection obtained to `https://public2.example`. + // + // See also: https://crbug.com/1293891 + target_ip_address_space_ = mojom::IPAddressSpace::kUnknown; + DCHECK_EQ(emitted_devtools_raw_request_, emitted_devtools_raw_response_); response->emitted_extra_info = emitted_devtools_raw_request_; url_loader_client_.Get()->OnReceiveRedirect(redirect_info,
diff --git a/services/tracing/BUILD.gn b/services/tracing/BUILD.gn index 2a5939e..16658e60 100644 --- a/services/tracing/BUILD.gn +++ b/services/tracing/BUILD.gn
@@ -117,6 +117,7 @@ ":privacy_check", ":test_utils", "//base", + "//base:base_stack_sampling_profiler_test_util", "//base/test:test_support", "//build:chromeos_buildflags", "//mojo/public/cpp/bindings",
diff --git a/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler_unittest.cc b/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler_unittest.cc index 6554b1f..50dbae1 100644 --- a/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler_unittest.cc +++ b/services/tracing/public/cpp/stack_sampling/tracing_sampler_profiler_unittest.cc
@@ -9,6 +9,8 @@ #include "base/at_exit.h" #include "base/bind.h" #include "base/json/json_reader.h" +#include "base/profiler/module_cache.h" +#include "base/profiler/stack_sampling_profiler_test_util.h" #include "base/run_loop.h" #include "base/threading/thread.h" #include "base/trace_event/trace_buffer.h" @@ -166,25 +168,6 @@ #endif }; -// Stub module for testing. -class TestModule : public base::ModuleCache::Module { - public: - TestModule() = default; - - TestModule(const TestModule&) = delete; - TestModule& operator=(const TestModule&) = delete; - - void set_id(const std::string& id) { id_ = id; } - uintptr_t GetBaseAddress() const override { return 0; } - std::string GetId() const override { return id_; } - base::FilePath GetDebugBasename() const override { return base::FilePath(); } - size_t GetSize() const override { return 0; } - bool IsNative() const override { return true; } - - private: - std::string id_; -}; - bool ShouldSkipTestForMacOS11() { #if BUILDFLAG(IS_MAC) // The sampling profiler does not work on macOS 11 and is disabled. @@ -453,7 +436,7 @@ }; TEST_F(TracingProfileBuilderTest, ValidModule) { - TestModule module; + base::TestModule module; TracingSamplerProfiler::TracingProfileBuilder profile_builder( base::PlatformThreadId(), std::make_unique<TestTraceWriter>(producer()), false); @@ -471,7 +454,7 @@ #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) TEST_F(TracingProfileBuilderTest, MangleELFModuleID) { - TestModule module; + base::TestModule module; // See explanation for the module_id mangling in // TracingSamplerProfiler::TracingProfileBuilder::GetCallstackIDAndMaybeEmit. module.set_id("7F0715C286F8B16C10E4AD349CDA3B9B56C7A773");
diff --git a/sql/sandboxed_vfs_file.cc b/sql/sandboxed_vfs_file.cc index 73f874e..0291198 100644 --- a/sql/sandboxed_vfs_file.cc +++ b/sql/sandboxed_vfs_file.cc
@@ -165,18 +165,18 @@ if (bytes_read == size) return SQLITE_OK; - // SQLite first reads the database header without locking the file. On - // Windows, this read will fail if there is an exclusive lock on the file, - // even if the current process owns that lock. - if (sqlite_lock_mode_ == SQLITE_LOCK_NONE) { - // The unlocked read is considered an optimization. SQLite can continue even - // if the read fails, as long as failure is communicated by zeroing out the - // output buffer. - std::memset(data, 0, size); - return SQLITE_OK; - } - if (bytes_read < 0) { + // SQLite first reads the database header without locking the file. On + // Windows, this read will fail if there is an exclusive lock on the file, + // even if the current process owns that lock. + if (sqlite_lock_mode_ == SQLITE_LOCK_NONE) { + // The unlocked read is considered an optimization. SQLite can continue + // even if the read fails, as long as failure is communicated by zeroing + // out the output buffer. + std::memset(data, 0, size); + return SQLITE_OK; + } + vfs_->SetLastError(base::File::GetLastFileError()); return SQLITE_IOERR_READ; }
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json index 662259d..68f94ab 100644 --- a/testing/buildbot/chromium.android.fyi.json +++ b/testing/buildbot/chromium.android.fyi.json
@@ -6078,7 +6078,7 @@ ] }, "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 32 + "shards": 18 }, "test_id_prefix": "ninja://weblayer/shell/android:weblayer_shell_wpt/" }
diff --git a/testing/buildbot/chromium.fyi.json b/testing/buildbot/chromium.fyi.json index 8b1ef05..686e091 100644 --- a/testing/buildbot/chromium.fyi.json +++ b/testing/buildbot/chromium.fyi.json
@@ -27703,7 +27703,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -27715,7 +27715,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "absl_hardening_tests_iPhone 6s 14.5", + "name": "absl_hardening_tests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -27741,8 +27741,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -27805,7 +27805,7 @@ "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -27817,7 +27817,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "base_unittests_iPad Air 2 14.5", + "name": "base_unittests_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -27843,8 +27843,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -27907,7 +27907,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -27919,7 +27919,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "base_unittests_iPhone 6s 14.5", + "name": "base_unittests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -27945,8 +27945,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -28009,7 +28009,7 @@ "--platform", "iPhone 6s Plus", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -28021,7 +28021,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "base_unittests_iPhone 6s Plus 14.5", + "name": "base_unittests_iPhone 6s Plus 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -28047,8 +28047,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -28111,7 +28111,7 @@ "--platform", "iPhone SE (1st generation)", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -28123,7 +28123,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "base_unittests_iPhone SE (1st generation) 14.5", + "name": "base_unittests_iPhone SE (1st generation) 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -28149,8 +28149,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -28213,7 +28213,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -28225,7 +28225,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "boringssl_crypto_tests_iPhone 6s 14.5", + "name": "boringssl_crypto_tests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -28251,8 +28251,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -28315,7 +28315,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -28327,7 +28327,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "boringssl_ssl_tests_iPhone 6s 14.5", + "name": "boringssl_ssl_tests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -28353,8 +28353,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -28417,7 +28417,7 @@ "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -28429,7 +28429,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "components_unittests_iPad Air 2 14.5", + "name": "components_unittests_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -28455,8 +28455,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -28519,7 +28519,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -28531,7 +28531,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "components_unittests_iPhone 6s 14.5", + "name": "components_unittests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -28557,8 +28557,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -28621,7 +28621,7 @@ "--platform", "iPhone 6s Plus", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -28633,7 +28633,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "components_unittests_iPhone 6s Plus 14.5", + "name": "components_unittests_iPhone 6s Plus 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -28659,8 +28659,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -28723,7 +28723,7 @@ "--platform", "iPhone SE (1st generation)", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -28735,7 +28735,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "components_unittests_iPhone SE (1st generation) 14.5", + "name": "components_unittests_iPhone SE (1st generation) 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -28761,8 +28761,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -28825,109 +28825,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", - "--out-dir", - "${ISOLATED_OUTDIR}", - "--xcode-build-version", - "13a233", - "--xctest" - ], - "isolate_name": "crashpad_tests", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "crashpad_tests_iPhone 6s 14.5", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "swarming": { - "can_use_on_swarming_builders": true, - "cipd_packages": [ - { - "cipd_package": "infra/tools/mac_toolchain/${platform}", - "location": ".", - "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1" - } - ], - "dimension_sets": [ - { - "cpu": "x86-64", - "os": "Mac-11|Mac-10.16" - } - ], - "named_caches": [ - { - "name": "xcode_ios_13a233", - "path": "Xcode.app" - }, - { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://third_party/crashpad/crashpad:crashpad_tests/" - }, - { - "args": [ - "--platform", - "iPhone 6s", - "--version", - "15.0", - "--out-dir", - "${ISOLATED_OUTDIR}", - "--xcode-build-version", - "13a233", - "--xctest" - ], - "isolate_name": "crashpad_tests", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "crashpad_tests_iPhone 6s 15.0", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "swarming": { - "can_use_on_swarming_builders": true, - "cipd_packages": [ - { - "cipd_package": "infra/tools/mac_toolchain/${platform}", - "location": ".", - "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1" - } - ], - "dimension_sets": [ - { - "cpu": "x86-64", - "os": "Mac-11|Mac-10.16" - } - ], - "named_caches": [ - { - "name": "xcode_ios_13a233", - "path": "Xcode.app" - }, - { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://third_party/crashpad/crashpad:crashpad_tests/" - }, - { - "args": [ - "--platform", - "iPhone 6s", - "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -28939,7 +28837,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "crypto_unittests_iPhone 6s 14.5", + "name": "crypto_unittests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -28965,8 +28863,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -29029,7 +28927,7 @@ "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -29041,7 +28939,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "gfx_unittests_iPad Air 2 14.5", + "name": "gfx_unittests_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -29067,8 +28965,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -29131,7 +29029,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -29143,7 +29041,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "gfx_unittests_iPhone 6s 14.5", + "name": "gfx_unittests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -29169,8 +29067,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -29233,7 +29131,7 @@ "--platform", "iPhone 6s Plus", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -29245,7 +29143,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "gfx_unittests_iPhone 6s Plus 14.5", + "name": "gfx_unittests_iPhone 6s Plus 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -29271,8 +29169,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -29335,7 +29233,7 @@ "--platform", "iPhone SE (1st generation)", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -29347,7 +29245,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "gfx_unittests_iPhone SE (1st generation) 14.5", + "name": "gfx_unittests_iPhone SE (1st generation) 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -29373,8 +29271,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -29437,7 +29335,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -29449,7 +29347,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "google_apis_unittests_iPhone 6s 14.5", + "name": "google_apis_unittests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -29475,8 +29373,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -29539,7 +29437,7 @@ "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -29552,7 +29450,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air 2 14.5", + "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -29578,8 +29476,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -29643,7 +29541,7 @@ "--platform", "iPhone 7", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -29656,7 +29554,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 7 14.5", + "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 7 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -29682,8 +29580,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -29747,7 +29645,7 @@ "--platform", "iPhone X", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -29760,7 +29658,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 14.5", + "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -29786,8 +29684,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -29851,7 +29749,7 @@ "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -29864,7 +29762,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 14.5", + "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -29890,8 +29788,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -29955,9 +29853,9 @@ { "args": [ "--platform", - "iPhone 7", + "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -29970,7 +29868,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_integration_eg2tests_module_iPhone 7 14.5", + "name": "ios_chrome_integration_eg2tests_module_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -29996,8 +29894,114 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 4 + }, + "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module/" + }, + { + "args": [ + "--platform", + "iPhone 6s", + "--version", + "15.0", + "--out-dir", + "${ISOLATED_OUTDIR}", + "--xcode-build-version", + "13a233", + "--xctest", + "--xcode-parallelization" + ], + "isolate_name": "ios_chrome_integration_eg2tests_module", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_integration_eg2tests_module_iPhone 6s 15.0", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1" + } + ], + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Mac-11|Mac-10.16" + } + ], + "named_caches": [ + { + "name": "xcode_ios_13a233", + "path": "Xcode.app" + }, + { + "name": "runtime_ios_15_0", + "path": "Runtime-ios-15.0" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 4 + }, + "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module/" + }, + { + "args": [ + "--platform", + "iPhone 7", + "--version", + "14.4", + "--out-dir", + "${ISOLATED_OUTDIR}", + "--xcode-build-version", + "13a233", + "--xctest", + "--xcode-parallelization" + ], + "isolate_name": "ios_chrome_integration_eg2tests_module", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_integration_eg2tests_module_iPhone 7 14.4", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1" + } + ], + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Mac-11|Mac-10.16" + } + ], + "named_caches": [ + { + "name": "xcode_ios_13a233", + "path": "Xcode.app" + }, + { + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -30061,115 +30065,9 @@ { "args": [ "--platform", - "iPhone X", - "--version", - "14.5", - "--out-dir", - "${ISOLATED_OUTDIR}", - "--xcode-build-version", - "13a233", - "--xctest", - "--xcode-parallelization" - ], - "isolate_name": "ios_chrome_integration_eg2tests_module", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "ios_chrome_integration_eg2tests_module_iPhone X 14.5", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "swarming": { - "can_use_on_swarming_builders": true, - "cipd_packages": [ - { - "cipd_package": "infra/tools/mac_toolchain/${platform}", - "location": ".", - "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1" - } - ], - "dimension_sets": [ - { - "cpu": "x86-64", - "os": "Mac-11|Mac-10.16" - } - ], - "named_caches": [ - { - "name": "xcode_ios_13a233", - "path": "Xcode.app" - }, - { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 4 - }, - "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module/" - }, - { - "args": [ - "--platform", - "iPhone X", - "--version", - "15.0", - "--out-dir", - "${ISOLATED_OUTDIR}", - "--xcode-build-version", - "13a233", - "--xctest", - "--xcode-parallelization" - ], - "isolate_name": "ios_chrome_integration_eg2tests_module", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "ios_chrome_integration_eg2tests_module_iPhone X 15.0", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "swarming": { - "can_use_on_swarming_builders": true, - "cipd_packages": [ - { - "cipd_package": "infra/tools/mac_toolchain/${platform}", - "location": ".", - "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1" - } - ], - "dimension_sets": [ - { - "cpu": "x86-64", - "os": "Mac-11|Mac-10.16" - } - ], - "named_caches": [ - { - "name": "xcode_ios_13a233", - "path": "Xcode.app" - }, - { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 4 - }, - "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_integration_eg2tests_module/" - }, - { - "args": [ - "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -30182,7 +30080,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_settings_eg2tests_module_iPad Air 2 14.5", + "name": "ios_chrome_settings_eg2tests_module_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -30208,8 +30106,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -30275,7 +30173,7 @@ "--platform", "iPhone 7", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -30288,7 +30186,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_settings_eg2tests_module_iPhone 7 14.5", + "name": "ios_chrome_settings_eg2tests_module_iPhone 7 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -30314,8 +30212,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -30381,7 +30279,7 @@ "--platform", "iPhone X", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -30394,7 +30292,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_settings_eg2tests_module_iPhone X 14.5", + "name": "ios_chrome_settings_eg2tests_module_iPhone X 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -30420,8 +30318,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -30487,7 +30385,7 @@ "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -30500,7 +30398,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 14.5", + "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -30526,8 +30424,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -30589,9 +30487,9 @@ { "args": [ "--platform", - "iPhone 7", + "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -30604,7 +30502,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_signin_eg2tests_module_iPhone 7 14.5", + "name": "ios_chrome_signin_eg2tests_module_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -30630,8 +30528,112 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module/" + }, + { + "args": [ + "--platform", + "iPhone 6s", + "--version", + "15.0", + "--out-dir", + "${ISOLATED_OUTDIR}", + "--xcode-build-version", + "13a233", + "--xctest", + "--xcode-parallelization" + ], + "isolate_name": "ios_chrome_signin_eg2tests_module", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_signin_eg2tests_module_iPhone 6s 15.0", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1" + } + ], + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Mac-11|Mac-10.16" + } + ], + "named_caches": [ + { + "name": "xcode_ios_13a233", + "path": "Xcode.app" + }, + { + "name": "runtime_ios_15_0", + "path": "Runtime-ios-15.0" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module/" + }, + { + "args": [ + "--platform", + "iPhone 7", + "--version", + "14.4", + "--out-dir", + "${ISOLATED_OUTDIR}", + "--xcode-build-version", + "13a233", + "--xctest", + "--xcode-parallelization" + ], + "isolate_name": "ios_chrome_signin_eg2tests_module", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_signin_eg2tests_module_iPhone 7 14.4", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1" + } + ], + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Mac-11|Mac-10.16" + } + ], + "named_caches": [ + { + "name": "xcode_ios_13a233", + "path": "Xcode.app" + }, + { + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -30693,113 +30695,9 @@ { "args": [ "--platform", - "iPhone X", - "--version", - "14.5", - "--out-dir", - "${ISOLATED_OUTDIR}", - "--xcode-build-version", - "13a233", - "--xctest", - "--xcode-parallelization" - ], - "isolate_name": "ios_chrome_signin_eg2tests_module", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "ios_chrome_signin_eg2tests_module_iPhone X 14.5", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "swarming": { - "can_use_on_swarming_builders": true, - "cipd_packages": [ - { - "cipd_package": "infra/tools/mac_toolchain/${platform}", - "location": ".", - "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1" - } - ], - "dimension_sets": [ - { - "cpu": "x86-64", - "os": "Mac-11|Mac-10.16" - } - ], - "named_caches": [ - { - "name": "xcode_ios_13a233", - "path": "Xcode.app" - }, - { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module/" - }, - { - "args": [ - "--platform", - "iPhone X", - "--version", - "15.0", - "--out-dir", - "${ISOLATED_OUTDIR}", - "--xcode-build-version", - "13a233", - "--xctest", - "--xcode-parallelization" - ], - "isolate_name": "ios_chrome_signin_eg2tests_module", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "ios_chrome_signin_eg2tests_module_iPhone X 15.0", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "swarming": { - "can_use_on_swarming_builders": true, - "cipd_packages": [ - { - "cipd_package": "infra/tools/mac_toolchain/${platform}", - "location": ".", - "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1" - } - ], - "dimension_sets": [ - { - "cpu": "x86-64", - "os": "Mac-11|Mac-10.16" - } - ], - "named_caches": [ - { - "name": "xcode_ios_13a233", - "path": "Xcode.app" - }, - { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_signin_eg2tests_module/" - }, - { - "args": [ - "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -30812,7 +30710,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_smoke_eg2tests_module_iPad Air 2 14.5", + "name": "ios_chrome_smoke_eg2tests_module_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -30838,8 +30736,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -30903,7 +30801,7 @@ "--platform", "iPhone 7", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -30916,7 +30814,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_smoke_eg2tests_module_iPhone 7 14.5", + "name": "ios_chrome_smoke_eg2tests_module_iPhone 7 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -30942,8 +30840,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -31007,7 +30905,7 @@ "--platform", "iPhone X", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -31020,7 +30918,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_smoke_eg2tests_module_iPhone X 14.5", + "name": "ios_chrome_smoke_eg2tests_module_iPhone X 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -31046,8 +30944,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -31111,7 +31009,7 @@ "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -31124,7 +31022,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 14.5", + "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -31150,8 +31048,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -31215,9 +31113,9 @@ { "args": [ "--platform", - "iPhone 7", + "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -31230,7 +31128,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_ui_eg2tests_module_iPhone 7 14.5", + "name": "ios_chrome_ui_eg2tests_module_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -31256,8 +31154,114 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 6 + }, + "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module/" + }, + { + "args": [ + "--platform", + "iPhone 6s", + "--version", + "15.0", + "--out-dir", + "${ISOLATED_OUTDIR}", + "--xcode-build-version", + "13a233", + "--xctest", + "--xcode-parallelization" + ], + "isolate_name": "ios_chrome_ui_eg2tests_module", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_ui_eg2tests_module_iPhone 6s 15.0", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1" + } + ], + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Mac-11|Mac-10.16" + } + ], + "named_caches": [ + { + "name": "xcode_ios_13a233", + "path": "Xcode.app" + }, + { + "name": "runtime_ios_15_0", + "path": "Runtime-ios-15.0" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", + "shards": 6 + }, + "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module/" + }, + { + "args": [ + "--platform", + "iPhone 7", + "--version", + "14.4", + "--out-dir", + "${ISOLATED_OUTDIR}", + "--xcode-build-version", + "13a233", + "--xctest", + "--xcode-parallelization" + ], + "isolate_name": "ios_chrome_ui_eg2tests_module", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_chrome_ui_eg2tests_module_iPhone 7 14.4", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1" + } + ], + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Mac-11|Mac-10.16" + } + ], + "named_caches": [ + { + "name": "xcode_ios_13a233", + "path": "Xcode.app" + }, + { + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -31321,115 +31325,9 @@ { "args": [ "--platform", - "iPhone X", - "--version", - "14.5", - "--out-dir", - "${ISOLATED_OUTDIR}", - "--xcode-build-version", - "13a233", - "--xctest", - "--xcode-parallelization" - ], - "isolate_name": "ios_chrome_ui_eg2tests_module", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "ios_chrome_ui_eg2tests_module_iPhone X 14.5", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "swarming": { - "can_use_on_swarming_builders": true, - "cipd_packages": [ - { - "cipd_package": "infra/tools/mac_toolchain/${platform}", - "location": ".", - "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1" - } - ], - "dimension_sets": [ - { - "cpu": "x86-64", - "os": "Mac-11|Mac-10.16" - } - ], - "named_caches": [ - { - "name": "xcode_ios_13a233", - "path": "Xcode.app" - }, - { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 6 - }, - "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module/" - }, - { - "args": [ - "--platform", - "iPhone X", - "--version", - "15.0", - "--out-dir", - "${ISOLATED_OUTDIR}", - "--xcode-build-version", - "13a233", - "--xctest", - "--xcode-parallelization" - ], - "isolate_name": "ios_chrome_ui_eg2tests_module", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "ios_chrome_ui_eg2tests_module_iPhone X 15.0", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "swarming": { - "can_use_on_swarming_builders": true, - "cipd_packages": [ - { - "cipd_package": "infra/tools/mac_toolchain/${platform}", - "location": ".", - "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1" - } - ], - "dimension_sets": [ - { - "cpu": "x86-64", - "os": "Mac-11|Mac-10.16" - } - ], - "named_caches": [ - { - "name": "xcode_ios_13a233", - "path": "Xcode.app" - }, - { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", - "shards": 6 - }, - "test_id_prefix": "ninja://ios/chrome/test/earl_grey2:ios_chrome_ui_eg2tests_module/" - }, - { - "args": [ - "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -31441,7 +31339,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_unittests_iPad Air 2 14.5", + "name": "ios_chrome_unittests_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -31467,8 +31365,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -31531,7 +31429,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -31543,7 +31441,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_unittests_iPhone 6s 14.5", + "name": "ios_chrome_unittests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -31569,8 +31467,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -31633,7 +31531,7 @@ "--platform", "iPhone 6s Plus", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -31645,7 +31543,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_unittests_iPhone 6s Plus 14.5", + "name": "ios_chrome_unittests_iPhone 6s Plus 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -31671,8 +31569,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -31735,7 +31633,7 @@ "--platform", "iPhone SE (1st generation)", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -31747,7 +31645,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_unittests_iPhone SE (1st generation) 14.5", + "name": "ios_chrome_unittests_iPhone SE (1st generation) 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -31773,8 +31671,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -31837,7 +31735,7 @@ "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -31850,7 +31748,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_web_eg2tests_module_iPad Air 2 14.5", + "name": "ios_chrome_web_eg2tests_module_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -31876,8 +31774,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -31941,7 +31839,7 @@ "--platform", "iPhone 7", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -31954,7 +31852,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_web_eg2tests_module_iPhone 7 14.5", + "name": "ios_chrome_web_eg2tests_module_iPhone 7 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -31980,8 +31878,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -32045,7 +31943,7 @@ "--platform", "iPhone X", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -32058,7 +31956,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_web_eg2tests_module_iPhone X 14.5", + "name": "ios_chrome_web_eg2tests_module_iPhone X 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -32084,8 +31982,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -32149,7 +32047,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -32161,7 +32059,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_components_unittests_iPhone 6s 14.5", + "name": "ios_components_unittests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -32187,8 +32085,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -32251,7 +32149,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -32263,7 +32161,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_net_unittests_iPhone 6s 14.5", + "name": "ios_net_unittests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -32289,8 +32187,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -32353,7 +32251,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -32365,7 +32263,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_remoting_unittests_iPhone 6s 14.5", + "name": "ios_remoting_unittests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -32391,8 +32289,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -32455,7 +32353,7 @@ "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -32468,7 +32366,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_showcase_eg2tests_module_iPad Air 2 14.5", + "name": "ios_showcase_eg2tests_module_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -32494,8 +32392,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -32559,7 +32457,7 @@ "--platform", "iPhone 7", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -32572,7 +32470,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_showcase_eg2tests_module_iPhone 7 14.5", + "name": "ios_showcase_eg2tests_module_iPhone 7 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -32598,8 +32496,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -32663,7 +32561,7 @@ "--platform", "iPhone X", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -32676,7 +32574,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_showcase_eg2tests_module_iPhone X 14.5", + "name": "ios_showcase_eg2tests_module_iPhone X 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -32702,8 +32600,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -32767,7 +32665,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -32779,7 +32677,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_testing_unittests_iPhone 6s 14.5", + "name": "ios_testing_unittests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -32805,8 +32703,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -32869,7 +32767,7 @@ "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -32881,7 +32779,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_inttests_iPad Air 2 14.5", + "name": "ios_web_inttests_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -32907,8 +32805,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -32971,7 +32869,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -32983,7 +32881,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_inttests_iPhone 6s 14.5", + "name": "ios_web_inttests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -33009,8 +32907,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -33073,7 +32971,7 @@ "--platform", "iPhone 6s Plus", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -33085,7 +32983,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_inttests_iPhone 6s Plus 14.5", + "name": "ios_web_inttests_iPhone 6s Plus 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -33111,8 +33009,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -33175,7 +33073,7 @@ "--platform", "iPhone SE (1st generation)", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -33187,7 +33085,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_inttests_iPhone SE (1st generation) 14.5", + "name": "ios_web_inttests_iPhone SE (1st generation) 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -33213,8 +33111,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -33277,7 +33175,7 @@ "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -33290,7 +33188,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_shell_eg2tests_module_iPad Air 2 14.5", + "name": "ios_web_shell_eg2tests_module_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -33316,8 +33214,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -33379,9 +33277,9 @@ { "args": [ "--platform", - "iPhone 7", + "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -33394,7 +33292,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_shell_eg2tests_module_iPhone 7 14.5", + "name": "ios_web_shell_eg2tests_module_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -33420,8 +33318,112 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://ios/web/shell/test:ios_web_shell_eg2tests_module/" + }, + { + "args": [ + "--platform", + "iPhone 6s", + "--version", + "15.0", + "--out-dir", + "${ISOLATED_OUTDIR}", + "--xcode-build-version", + "13a233", + "--xctest", + "--xcode-parallelization" + ], + "isolate_name": "ios_web_shell_eg2tests_module", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_shell_eg2tests_module_iPhone 6s 15.0", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1" + } + ], + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Mac-11|Mac-10.16" + } + ], + "named_caches": [ + { + "name": "xcode_ios_13a233", + "path": "Xcode.app" + }, + { + "name": "runtime_ios_15_0", + "path": "Runtime-ios-15.0" + } + ], + "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" + }, + "test_id_prefix": "ninja://ios/web/shell/test:ios_web_shell_eg2tests_module/" + }, + { + "args": [ + "--platform", + "iPhone 7", + "--version", + "14.4", + "--out-dir", + "${ISOLATED_OUTDIR}", + "--xcode-build-version", + "13a233", + "--xctest", + "--xcode-parallelization" + ], + "isolate_name": "ios_web_shell_eg2tests_module", + "merge": { + "args": [], + "script": "//testing/merge_scripts/standard_isolated_script_merge.py" + }, + "name": "ios_web_shell_eg2tests_module_iPhone 7 14.4", + "resultdb": { + "enable": true, + "has_native_resultdb_integration": true + }, + "swarming": { + "can_use_on_swarming_builders": true, + "cipd_packages": [ + { + "cipd_package": "infra/tools/mac_toolchain/${platform}", + "location": ".", + "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1" + } + ], + "dimension_sets": [ + { + "cpu": "x86-64", + "os": "Mac-11|Mac-10.16" + } + ], + "named_caches": [ + { + "name": "xcode_ios_13a233", + "path": "Xcode.app" + }, + { + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -33483,113 +33485,9 @@ { "args": [ "--platform", - "iPhone X", - "--version", - "14.5", - "--out-dir", - "${ISOLATED_OUTDIR}", - "--xcode-build-version", - "13a233", - "--xctest", - "--xcode-parallelization" - ], - "isolate_name": "ios_web_shell_eg2tests_module", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "ios_web_shell_eg2tests_module_iPhone X 14.5", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "swarming": { - "can_use_on_swarming_builders": true, - "cipd_packages": [ - { - "cipd_package": "infra/tools/mac_toolchain/${platform}", - "location": ".", - "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1" - } - ], - "dimension_sets": [ - { - "cpu": "x86-64", - "os": "Mac-11|Mac-10.16" - } - ], - "named_caches": [ - { - "name": "xcode_ios_13a233", - "path": "Xcode.app" - }, - { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://ios/web/shell/test:ios_web_shell_eg2tests_module/" - }, - { - "args": [ - "--platform", - "iPhone X", - "--version", - "15.0", - "--out-dir", - "${ISOLATED_OUTDIR}", - "--xcode-build-version", - "13a233", - "--xctest", - "--xcode-parallelization" - ], - "isolate_name": "ios_web_shell_eg2tests_module", - "merge": { - "args": [], - "script": "//testing/merge_scripts/standard_isolated_script_merge.py" - }, - "name": "ios_web_shell_eg2tests_module_iPhone X 15.0", - "resultdb": { - "enable": true, - "has_native_resultdb_integration": true - }, - "swarming": { - "can_use_on_swarming_builders": true, - "cipd_packages": [ - { - "cipd_package": "infra/tools/mac_toolchain/${platform}", - "location": ".", - "revision": "git_revision:723fc1a6c8cdf2631a57851f5610e598db0c1de1" - } - ], - "dimension_sets": [ - { - "cpu": "x86-64", - "os": "Mac-11|Mac-10.16" - } - ], - "named_caches": [ - { - "name": "xcode_ios_13a233", - "path": "Xcode.app" - }, - { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" - } - ], - "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" - }, - "test_id_prefix": "ninja://ios/web/shell/test:ios_web_shell_eg2tests_module/" - }, - { - "args": [ - "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -33601,7 +33499,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_unittests_iPad Air 2 14.5", + "name": "ios_web_unittests_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -33627,8 +33525,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -33691,7 +33589,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -33703,7 +33601,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_unittests_iPhone 6s 14.5", + "name": "ios_web_unittests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -33729,8 +33627,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -33793,7 +33691,7 @@ "--platform", "iPhone 6s Plus", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -33805,7 +33703,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_unittests_iPhone 6s Plus 14.5", + "name": "ios_web_unittests_iPhone 6s Plus 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -33831,8 +33729,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -33895,7 +33793,7 @@ "--platform", "iPhone SE (1st generation)", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -33907,7 +33805,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_unittests_iPhone SE (1st generation) 14.5", + "name": "ios_web_unittests_iPhone SE (1st generation) 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -33933,8 +33831,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -33997,7 +33895,7 @@ "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -34009,7 +33907,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_inttests_iPad Air 2 14.5", + "name": "ios_web_view_inttests_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -34035,8 +33933,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -34099,7 +33997,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -34111,7 +34009,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_inttests_iPhone 6s 14.5", + "name": "ios_web_view_inttests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -34137,8 +34035,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -34201,7 +34099,7 @@ "--platform", "iPhone 6s Plus", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -34213,7 +34111,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_inttests_iPhone 6s Plus 14.5", + "name": "ios_web_view_inttests_iPhone 6s Plus 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -34239,8 +34137,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -34303,7 +34201,7 @@ "--platform", "iPhone SE (1st generation)", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -34315,7 +34213,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_inttests_iPhone SE (1st generation) 14.5", + "name": "ios_web_view_inttests_iPhone SE (1st generation) 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -34341,8 +34239,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -34405,7 +34303,7 @@ "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -34417,7 +34315,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_unittests_iPad Air 2 14.5", + "name": "ios_web_view_unittests_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -34443,8 +34341,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -34507,7 +34405,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -34519,7 +34417,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_unittests_iPhone 6s 14.5", + "name": "ios_web_view_unittests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -34545,8 +34443,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -34609,7 +34507,7 @@ "--platform", "iPhone 6s Plus", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -34621,7 +34519,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_unittests_iPhone 6s Plus 14.5", + "name": "ios_web_view_unittests_iPhone 6s Plus 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -34647,8 +34545,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -34711,7 +34609,7 @@ "--platform", "iPhone SE (1st generation)", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -34723,7 +34621,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_unittests_iPhone SE (1st generation) 14.5", + "name": "ios_web_view_unittests_iPhone SE (1st generation) 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -34749,8 +34647,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -34813,7 +34711,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -34825,7 +34723,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "net_unittests_iPhone 6s 14.5", + "name": "net_unittests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -34851,8 +34749,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -34915,7 +34813,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -34927,7 +34825,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "services_unittests_iPhone 6s 14.5", + "name": "services_unittests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -34953,8 +34851,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -35017,7 +34915,7 @@ "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -35029,7 +34927,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "skia_unittests_iPad Air 2 14.5", + "name": "skia_unittests_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -35055,8 +34953,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -35119,7 +35017,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -35131,7 +35029,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "skia_unittests_iPhone 6s 14.5", + "name": "skia_unittests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -35157,8 +35055,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -35221,7 +35119,7 @@ "--platform", "iPhone 6s Plus", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -35233,7 +35131,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "skia_unittests_iPhone 6s Plus 14.5", + "name": "skia_unittests_iPhone 6s Plus 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -35259,8 +35157,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -35323,7 +35221,7 @@ "--platform", "iPhone SE (1st generation)", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -35335,7 +35233,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "skia_unittests_iPhone SE (1st generation) 14.5", + "name": "skia_unittests_iPhone SE (1st generation) 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -35361,8 +35259,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -35425,7 +35323,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -35437,7 +35335,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "sql_unittests_iPhone 6s 14.5", + "name": "sql_unittests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -35463,8 +35361,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -35527,7 +35425,7 @@ "--platform", "iPad Air 2", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -35539,7 +35437,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ui_base_unittests_iPad Air 2 14.5", + "name": "ui_base_unittests_iPad Air 2 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -35565,8 +35463,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -35629,7 +35527,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -35641,7 +35539,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ui_base_unittests_iPhone 6s 14.5", + "name": "ui_base_unittests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -35667,8 +35565,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -35731,7 +35629,7 @@ "--platform", "iPhone 6s Plus", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -35743,7 +35641,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ui_base_unittests_iPhone 6s Plus 14.5", + "name": "ui_base_unittests_iPhone 6s Plus 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -35769,8 +35667,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -35833,7 +35731,7 @@ "--platform", "iPhone SE (1st generation)", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -35845,7 +35743,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ui_base_unittests_iPhone SE (1st generation) 14.5", + "name": "ui_base_unittests_iPhone SE (1st generation) 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -35871,8 +35769,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -35935,7 +35833,7 @@ "--platform", "iPhone 6s", "--version", - "14.5", + "14.4", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", @@ -35947,7 +35845,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "url_unittests_iPhone 6s 14.5", + "name": "url_unittests_iPhone 6s 14.4", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -35973,8 +35871,8 @@ "path": "Xcode.app" }, { - "name": "runtime_ios_14_5", - "path": "Runtime-ios-14.5" + "name": "runtime_ios_14_4", + "path": "Runtime-ios-14.4" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -58196,7 +58094,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "absl_hardening_tests", @@ -58226,7 +58124,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -58243,11 +58141,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "absl_hardening_tests", @@ -58255,7 +58153,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "absl_hardening_tests_iPhone 6s 15.0", + "name": "absl_hardening_tests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -58277,12 +58175,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -58298,7 +58196,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "base_unittests", @@ -58328,7 +58226,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -58345,11 +58243,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "base_unittests", @@ -58357,7 +58255,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "base_unittests_iPad Air 2 15.0", + "name": "base_unittests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -58379,12 +58277,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -58400,7 +58298,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "base_unittests", @@ -58430,7 +58328,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -58447,11 +58345,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "base_unittests", @@ -58459,7 +58357,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "base_unittests_iPhone 6s 15.0", + "name": "base_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -58481,12 +58379,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -58502,7 +58400,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "base_unittests", @@ -58532,7 +58430,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -58549,11 +58447,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "base_unittests", @@ -58561,7 +58459,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "base_unittests_iPhone 6s Plus 15.0", + "name": "base_unittests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -58583,12 +58481,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -58604,7 +58502,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "base_unittests", @@ -58634,7 +58532,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -58651,11 +58549,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "base_unittests", @@ -58663,7 +58561,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "base_unittests_iPhone SE (1st generation) 15.0", + "name": "base_unittests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -58685,12 +58583,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -58706,7 +58604,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "boringssl_crypto_tests", @@ -58736,7 +58634,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -58753,11 +58651,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "boringssl_crypto_tests", @@ -58765,7 +58663,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "boringssl_crypto_tests_iPhone 6s 15.0", + "name": "boringssl_crypto_tests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -58787,12 +58685,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -58808,7 +58706,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "boringssl_ssl_tests", @@ -58838,7 +58736,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -58855,11 +58753,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "boringssl_ssl_tests", @@ -58867,7 +58765,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "boringssl_ssl_tests_iPhone 6s 15.0", + "name": "boringssl_ssl_tests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -58889,12 +58787,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -58910,7 +58808,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "components_unittests", @@ -58940,7 +58838,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -58957,11 +58855,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "components_unittests", @@ -58969,7 +58867,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "components_unittests_iPad Air 2 15.0", + "name": "components_unittests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -58991,12 +58889,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -59012,7 +58910,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "components_unittests", @@ -59042,7 +58940,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -59059,11 +58957,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "components_unittests", @@ -59071,7 +58969,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "components_unittests_iPhone 6s 15.0", + "name": "components_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -59093,12 +58991,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -59114,7 +59012,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "components_unittests", @@ -59144,7 +59042,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -59161,11 +59059,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "components_unittests", @@ -59173,7 +59071,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "components_unittests_iPhone 6s Plus 15.0", + "name": "components_unittests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -59195,12 +59093,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -59216,7 +59114,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "components_unittests", @@ -59246,7 +59144,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -59263,11 +59161,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "components_unittests", @@ -59275,7 +59173,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "components_unittests_iPhone SE (1st generation) 15.0", + "name": "components_unittests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -59297,12 +59195,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -59318,7 +59216,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "crashpad_tests", @@ -59348,7 +59246,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -59365,11 +59263,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "crashpad_tests", @@ -59377,7 +59275,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "crashpad_tests_iPhone 6s 15.0", + "name": "crashpad_tests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -59399,12 +59297,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -59420,7 +59318,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "crypto_unittests", @@ -59450,7 +59348,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -59467,11 +59365,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "crypto_unittests", @@ -59479,7 +59377,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "crypto_unittests_iPhone 6s 15.0", + "name": "crypto_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -59501,12 +59399,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -59522,7 +59420,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "gfx_unittests", @@ -59552,7 +59450,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -59569,11 +59467,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "gfx_unittests", @@ -59581,7 +59479,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "gfx_unittests_iPad Air 2 15.0", + "name": "gfx_unittests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -59603,12 +59501,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -59624,7 +59522,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "gfx_unittests", @@ -59654,7 +59552,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -59671,11 +59569,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "gfx_unittests", @@ -59683,7 +59581,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "gfx_unittests_iPhone 6s 15.0", + "name": "gfx_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -59705,12 +59603,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -59726,7 +59624,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "gfx_unittests", @@ -59756,7 +59654,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -59773,11 +59671,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "gfx_unittests", @@ -59785,7 +59683,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "gfx_unittests_iPhone 6s Plus 15.0", + "name": "gfx_unittests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -59807,12 +59705,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -59828,7 +59726,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "gfx_unittests", @@ -59858,7 +59756,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -59875,11 +59773,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "gfx_unittests", @@ -59887,7 +59785,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "gfx_unittests_iPhone SE (1st generation) 15.0", + "name": "gfx_unittests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -59909,12 +59807,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -59930,7 +59828,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "google_apis_unittests", @@ -59960,7 +59858,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -59977,11 +59875,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "google_apis_unittests", @@ -59989,7 +59887,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "google_apis_unittests_iPhone 6s 15.0", + "name": "google_apis_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -60011,12 +59909,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -60032,7 +59930,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -60063,7 +59961,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -60080,11 +59978,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -60093,7 +59991,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air 2 15.0", + "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -60115,12 +60013,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -60136,7 +60034,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -60167,7 +60065,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -60184,11 +60082,11 @@ "--platform", "iPhone 7", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -60197,7 +60095,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 7 15.0", + "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 7 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -60219,12 +60117,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -60240,7 +60138,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -60271,7 +60169,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -60288,11 +60186,11 @@ "--platform", "iPhone X", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -60301,7 +60199,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 15.0", + "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -60323,12 +60221,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -60344,7 +60242,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -60375,7 +60273,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -60393,11 +60291,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -60406,7 +60304,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 15.0", + "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -60428,12 +60326,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -60450,7 +60348,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -60481,7 +60379,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -60499,11 +60397,11 @@ "--platform", "iPhone 7", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -60512,7 +60410,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_integration_eg2tests_module_iPhone 7 15.0", + "name": "ios_chrome_integration_eg2tests_module_iPhone 7 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -60534,12 +60432,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -60556,7 +60454,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -60587,7 +60485,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -60605,11 +60503,11 @@ "--platform", "iPhone X", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -60618,7 +60516,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_integration_eg2tests_module_iPhone X 15.0", + "name": "ios_chrome_integration_eg2tests_module_iPhone X 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -60640,12 +60538,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -60662,7 +60560,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -60693,7 +60591,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -60711,11 +60609,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -60724,7 +60622,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_settings_eg2tests_module_iPad Air 2 15.0", + "name": "ios_chrome_settings_eg2tests_module_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -60746,12 +60644,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -60768,7 +60666,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -60799,7 +60697,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -60817,11 +60715,11 @@ "--platform", "iPhone 7", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -60830,7 +60728,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_settings_eg2tests_module_iPhone 7 15.0", + "name": "ios_chrome_settings_eg2tests_module_iPhone 7 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -60852,12 +60750,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -60874,7 +60772,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -60905,7 +60803,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -60923,11 +60821,11 @@ "--platform", "iPhone X", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -60936,7 +60834,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_settings_eg2tests_module_iPhone X 15.0", + "name": "ios_chrome_settings_eg2tests_module_iPhone X 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -60958,12 +60856,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -60980,7 +60878,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -61011,7 +60909,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -61028,11 +60926,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -61041,7 +60939,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 15.0", + "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -61063,12 +60961,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -61084,7 +60982,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -61115,7 +61013,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -61132,11 +61030,11 @@ "--platform", "iPhone 7", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -61145,7 +61043,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_signin_eg2tests_module_iPhone 7 15.0", + "name": "ios_chrome_signin_eg2tests_module_iPhone 7 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -61167,12 +61065,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -61188,7 +61086,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -61219,7 +61117,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -61236,11 +61134,11 @@ "--platform", "iPhone X", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -61249,7 +61147,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_signin_eg2tests_module_iPhone X 15.0", + "name": "ios_chrome_signin_eg2tests_module_iPhone X 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -61271,12 +61169,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -61292,7 +61190,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -61323,7 +61221,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -61340,11 +61238,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -61353,7 +61251,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_smoke_eg2tests_module_iPad Air 2 15.0", + "name": "ios_chrome_smoke_eg2tests_module_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -61375,12 +61273,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -61396,7 +61294,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -61427,7 +61325,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -61444,11 +61342,11 @@ "--platform", "iPhone 7", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -61457,7 +61355,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_smoke_eg2tests_module_iPhone 7 15.0", + "name": "ios_chrome_smoke_eg2tests_module_iPhone 7 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -61479,12 +61377,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -61500,7 +61398,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -61531,7 +61429,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -61548,11 +61446,11 @@ "--platform", "iPhone X", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -61561,7 +61459,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_smoke_eg2tests_module_iPhone X 15.0", + "name": "ios_chrome_smoke_eg2tests_module_iPhone X 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -61583,12 +61481,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -61604,7 +61502,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -61635,7 +61533,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -61653,11 +61551,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -61666,7 +61564,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 15.0", + "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -61688,12 +61586,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -61710,7 +61608,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -61741,7 +61639,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -61759,11 +61657,11 @@ "--platform", "iPhone 7", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -61772,7 +61670,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_ui_eg2tests_module_iPhone 7 15.0", + "name": "ios_chrome_ui_eg2tests_module_iPhone 7 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -61794,12 +61692,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -61816,7 +61714,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -61847,7 +61745,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -61865,11 +61763,11 @@ "--platform", "iPhone X", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -61878,7 +61776,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_ui_eg2tests_module_iPhone X 15.0", + "name": "ios_chrome_ui_eg2tests_module_iPhone X 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -61900,12 +61798,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -61922,7 +61820,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -61952,7 +61850,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -61969,11 +61867,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -61981,7 +61879,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_unittests_iPad Air 2 15.0", + "name": "ios_chrome_unittests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -62003,12 +61901,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -62024,7 +61922,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -62054,7 +61952,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -62071,11 +61969,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -62083,7 +61981,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_unittests_iPhone 6s 15.0", + "name": "ios_chrome_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -62105,12 +62003,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -62126,7 +62024,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -62156,7 +62054,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -62173,11 +62071,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -62185,7 +62083,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_unittests_iPhone 6s Plus 15.0", + "name": "ios_chrome_unittests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -62207,12 +62105,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -62228,7 +62126,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -62258,7 +62156,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -62275,11 +62173,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -62287,7 +62185,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_unittests_iPhone SE (1st generation) 15.0", + "name": "ios_chrome_unittests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -62309,12 +62207,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -62330,7 +62228,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -62361,7 +62259,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -62378,11 +62276,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -62391,7 +62289,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_web_eg2tests_module_iPad Air 2 15.0", + "name": "ios_chrome_web_eg2tests_module_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -62413,12 +62311,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -62434,7 +62332,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -62465,7 +62363,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -62482,11 +62380,11 @@ "--platform", "iPhone 7", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -62495,7 +62393,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_web_eg2tests_module_iPhone 7 15.0", + "name": "ios_chrome_web_eg2tests_module_iPhone 7 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -62517,12 +62415,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -62538,7 +62436,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -62569,7 +62467,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -62586,11 +62484,11 @@ "--platform", "iPhone X", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -62599,7 +62497,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_web_eg2tests_module_iPhone X 15.0", + "name": "ios_chrome_web_eg2tests_module_iPhone X 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -62621,12 +62519,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -62642,7 +62540,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_components_unittests", @@ -62672,7 +62570,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -62689,11 +62587,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_components_unittests", @@ -62701,7 +62599,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_components_unittests_iPhone 6s 15.0", + "name": "ios_components_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -62723,12 +62621,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -62744,7 +62642,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_net_unittests", @@ -62774,7 +62672,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -62791,11 +62689,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_net_unittests", @@ -62803,7 +62701,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_net_unittests_iPhone 6s 15.0", + "name": "ios_net_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -62825,12 +62723,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -62846,7 +62744,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_remoting_unittests", @@ -62876,7 +62774,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -62893,11 +62791,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_remoting_unittests", @@ -62905,7 +62803,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_remoting_unittests_iPhone 6s 15.0", + "name": "ios_remoting_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -62927,12 +62825,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -62948,7 +62846,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -62979,7 +62877,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -62996,11 +62894,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -63009,7 +62907,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_showcase_eg2tests_module_iPad Air 2 15.0", + "name": "ios_showcase_eg2tests_module_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -63031,12 +62929,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -63052,7 +62950,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -63083,7 +62981,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -63100,11 +62998,11 @@ "--platform", "iPhone 7", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -63113,7 +63011,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_showcase_eg2tests_module_iPhone 7 15.0", + "name": "ios_showcase_eg2tests_module_iPhone 7 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -63135,12 +63033,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -63156,7 +63054,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -63187,7 +63085,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -63204,11 +63102,11 @@ "--platform", "iPhone X", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -63217,7 +63115,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_showcase_eg2tests_module_iPhone X 15.0", + "name": "ios_showcase_eg2tests_module_iPhone X 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -63239,12 +63137,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -63260,7 +63158,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_testing_unittests", @@ -63290,7 +63188,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -63307,11 +63205,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_testing_unittests", @@ -63319,7 +63217,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_testing_unittests_iPhone 6s 15.0", + "name": "ios_testing_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -63341,12 +63239,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -63362,7 +63260,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -63392,7 +63290,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -63409,11 +63307,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -63421,7 +63319,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_inttests_iPad Air 2 15.0", + "name": "ios_web_inttests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -63443,12 +63341,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -63464,7 +63362,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -63494,7 +63392,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -63511,11 +63409,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -63523,7 +63421,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_inttests_iPhone 6s 15.0", + "name": "ios_web_inttests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -63545,12 +63443,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -63566,7 +63464,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -63596,7 +63494,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -63613,11 +63511,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -63625,7 +63523,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_inttests_iPhone 6s Plus 15.0", + "name": "ios_web_inttests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -63647,12 +63545,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -63668,7 +63566,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -63698,7 +63596,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -63715,11 +63613,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -63727,7 +63625,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_inttests_iPhone SE (1st generation) 15.0", + "name": "ios_web_inttests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -63749,12 +63647,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -63770,7 +63668,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -63801,7 +63699,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -63818,11 +63716,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -63831,7 +63729,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_shell_eg2tests_module_iPad Air 2 15.0", + "name": "ios_web_shell_eg2tests_module_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -63853,12 +63751,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -63874,7 +63772,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -63905,7 +63803,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -63922,11 +63820,11 @@ "--platform", "iPhone 7", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -63935,7 +63833,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_shell_eg2tests_module_iPhone 7 15.0", + "name": "ios_web_shell_eg2tests_module_iPhone 7 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -63957,12 +63855,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -63978,7 +63876,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -64009,7 +63907,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -64026,11 +63924,11 @@ "--platform", "iPhone X", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -64039,7 +63937,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_shell_eg2tests_module_iPhone X 15.0", + "name": "ios_web_shell_eg2tests_module_iPhone X 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -64061,12 +63959,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -64082,7 +63980,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -64112,7 +64010,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -64129,11 +64027,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -64141,7 +64039,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_unittests_iPad Air 2 15.0", + "name": "ios_web_unittests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -64163,12 +64061,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -64184,7 +64082,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -64214,7 +64112,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -64231,11 +64129,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -64243,7 +64141,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_unittests_iPhone 6s 15.0", + "name": "ios_web_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -64265,12 +64163,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -64286,7 +64184,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -64316,7 +64214,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -64333,11 +64231,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -64345,7 +64243,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_unittests_iPhone 6s Plus 15.0", + "name": "ios_web_unittests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -64367,12 +64265,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -64388,7 +64286,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -64418,7 +64316,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -64435,11 +64333,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -64447,7 +64345,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_unittests_iPhone SE (1st generation) 15.0", + "name": "ios_web_unittests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -64469,12 +64367,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -64490,7 +64388,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -64520,7 +64418,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -64537,11 +64435,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -64549,7 +64447,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_inttests_iPad Air 2 15.0", + "name": "ios_web_view_inttests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -64571,12 +64469,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -64592,7 +64490,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -64622,7 +64520,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -64639,11 +64537,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -64651,7 +64549,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_inttests_iPhone 6s 15.0", + "name": "ios_web_view_inttests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -64673,12 +64571,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -64694,7 +64592,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -64724,7 +64622,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -64741,11 +64639,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -64753,7 +64651,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_inttests_iPhone 6s Plus 15.0", + "name": "ios_web_view_inttests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -64775,12 +64673,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -64796,7 +64694,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -64826,7 +64724,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -64843,11 +64741,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -64855,7 +64753,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_inttests_iPhone SE (1st generation) 15.0", + "name": "ios_web_view_inttests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -64877,12 +64775,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -64898,7 +64796,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -64928,7 +64826,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -64945,11 +64843,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -64957,7 +64855,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_unittests_iPad Air 2 15.0", + "name": "ios_web_view_unittests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -64979,12 +64877,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -65000,7 +64898,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -65030,7 +64928,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -65047,11 +64945,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -65059,7 +64957,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_unittests_iPhone 6s 15.0", + "name": "ios_web_view_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -65081,12 +64979,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -65102,7 +65000,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -65132,7 +65030,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -65149,11 +65047,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -65161,7 +65059,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_unittests_iPhone 6s Plus 15.0", + "name": "ios_web_view_unittests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -65183,12 +65081,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -65204,7 +65102,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -65234,7 +65132,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -65251,11 +65149,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -65263,7 +65161,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_unittests_iPhone SE (1st generation) 15.0", + "name": "ios_web_view_unittests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -65285,12 +65183,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -65306,7 +65204,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "net_unittests", @@ -65336,7 +65234,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -65353,11 +65251,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "net_unittests", @@ -65365,7 +65263,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "net_unittests_iPhone 6s 15.0", + "name": "net_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -65387,12 +65285,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -65408,7 +65306,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "services_unittests", @@ -65438,7 +65336,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -65455,11 +65353,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "services_unittests", @@ -65467,7 +65365,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "services_unittests_iPhone 6s 15.0", + "name": "services_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -65489,12 +65387,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -65510,7 +65408,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "skia_unittests", @@ -65540,7 +65438,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -65557,11 +65455,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "skia_unittests", @@ -65569,7 +65467,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "skia_unittests_iPad Air 2 15.0", + "name": "skia_unittests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -65591,12 +65489,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -65612,7 +65510,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "skia_unittests", @@ -65642,7 +65540,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -65659,11 +65557,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "skia_unittests", @@ -65671,7 +65569,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "skia_unittests_iPhone 6s 15.0", + "name": "skia_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -65693,12 +65591,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -65714,7 +65612,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "skia_unittests", @@ -65744,7 +65642,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -65761,11 +65659,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "skia_unittests", @@ -65773,7 +65671,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "skia_unittests_iPhone 6s Plus 15.0", + "name": "skia_unittests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -65795,12 +65693,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -65816,7 +65714,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "skia_unittests", @@ -65846,7 +65744,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -65863,11 +65761,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "skia_unittests", @@ -65875,7 +65773,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "skia_unittests_iPhone SE (1st generation) 15.0", + "name": "skia_unittests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -65897,12 +65795,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -65918,7 +65816,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "sql_unittests", @@ -65948,7 +65846,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -65965,11 +65863,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "sql_unittests", @@ -65977,7 +65875,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "sql_unittests_iPhone 6s 15.0", + "name": "sql_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -65999,12 +65897,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -66020,7 +65918,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -66050,7 +65948,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -66067,11 +65965,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -66079,7 +65977,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ui_base_unittests_iPad Air 2 15.0", + "name": "ui_base_unittests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -66101,12 +65999,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -66122,7 +66020,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -66152,7 +66050,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -66169,11 +66067,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -66181,7 +66079,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ui_base_unittests_iPhone 6s 15.0", + "name": "ui_base_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -66203,12 +66101,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -66224,7 +66122,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -66254,7 +66152,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -66271,11 +66169,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -66283,7 +66181,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ui_base_unittests_iPhone 6s Plus 15.0", + "name": "ui_base_unittests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -66305,12 +66203,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -66326,7 +66224,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -66356,7 +66254,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -66373,11 +66271,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -66385,7 +66283,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ui_base_unittests_iPhone SE (1st generation) 15.0", + "name": "ui_base_unittests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -66407,12 +66305,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -66428,7 +66326,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "url_unittests", @@ -66458,7 +66356,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -66475,11 +66373,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "url_unittests", @@ -66487,7 +66385,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "url_unittests_iPhone 6s 15.0", + "name": "url_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -66509,12 +66407,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -66542,7 +66440,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "absl_hardening_tests", @@ -66572,7 +66470,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -66589,11 +66487,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "absl_hardening_tests", @@ -66601,7 +66499,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "absl_hardening_tests_iPhone 6s 15.0", + "name": "absl_hardening_tests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -66623,12 +66521,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -66644,7 +66542,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "base_unittests", @@ -66674,7 +66572,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -66691,11 +66589,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "base_unittests", @@ -66703,7 +66601,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "base_unittests_iPad Air 2 15.0", + "name": "base_unittests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -66725,12 +66623,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -66746,7 +66644,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "base_unittests", @@ -66776,7 +66674,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -66793,11 +66691,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "base_unittests", @@ -66805,7 +66703,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "base_unittests_iPhone 6s 15.0", + "name": "base_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -66827,12 +66725,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -66848,7 +66746,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "base_unittests", @@ -66878,7 +66776,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -66895,11 +66793,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "base_unittests", @@ -66907,7 +66805,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "base_unittests_iPhone 6s Plus 15.0", + "name": "base_unittests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -66929,12 +66827,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -66950,7 +66848,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "base_unittests", @@ -66980,7 +66878,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -66997,11 +66895,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "base_unittests", @@ -67009,7 +66907,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "base_unittests_iPhone SE (1st generation) 15.0", + "name": "base_unittests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -67031,12 +66929,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -67052,7 +66950,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "boringssl_crypto_tests", @@ -67082,7 +66980,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -67099,11 +66997,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "boringssl_crypto_tests", @@ -67111,7 +67009,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "boringssl_crypto_tests_iPhone 6s 15.0", + "name": "boringssl_crypto_tests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -67133,12 +67031,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -67154,7 +67052,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "boringssl_ssl_tests", @@ -67184,7 +67082,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -67201,11 +67099,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "boringssl_ssl_tests", @@ -67213,7 +67111,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "boringssl_ssl_tests_iPhone 6s 15.0", + "name": "boringssl_ssl_tests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -67235,12 +67133,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -67256,7 +67154,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "components_unittests", @@ -67286,7 +67184,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -67303,11 +67201,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "components_unittests", @@ -67315,7 +67213,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "components_unittests_iPad Air 2 15.0", + "name": "components_unittests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -67337,12 +67235,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -67358,7 +67256,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "components_unittests", @@ -67388,7 +67286,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -67405,11 +67303,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "components_unittests", @@ -67417,7 +67315,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "components_unittests_iPhone 6s 15.0", + "name": "components_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -67439,12 +67337,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -67460,7 +67358,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "components_unittests", @@ -67490,7 +67388,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -67507,11 +67405,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "components_unittests", @@ -67519,7 +67417,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "components_unittests_iPhone 6s Plus 15.0", + "name": "components_unittests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -67541,12 +67439,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -67562,7 +67460,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "components_unittests", @@ -67592,7 +67490,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -67609,11 +67507,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "components_unittests", @@ -67621,7 +67519,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "components_unittests_iPhone SE (1st generation) 15.0", + "name": "components_unittests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -67643,12 +67541,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -67664,7 +67562,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "crashpad_tests", @@ -67694,7 +67592,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -67711,11 +67609,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "crashpad_tests", @@ -67723,7 +67621,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "crashpad_tests_iPhone 6s 15.0", + "name": "crashpad_tests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -67745,12 +67643,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -67766,7 +67664,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "crypto_unittests", @@ -67796,7 +67694,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -67813,11 +67711,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "crypto_unittests", @@ -67825,7 +67723,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "crypto_unittests_iPhone 6s 15.0", + "name": "crypto_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -67847,12 +67745,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -67868,7 +67766,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "gfx_unittests", @@ -67898,7 +67796,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -67915,11 +67813,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "gfx_unittests", @@ -67927,7 +67825,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "gfx_unittests_iPad Air 2 15.0", + "name": "gfx_unittests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -67949,12 +67847,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -67970,7 +67868,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "gfx_unittests", @@ -68000,7 +67898,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -68017,11 +67915,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "gfx_unittests", @@ -68029,7 +67927,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "gfx_unittests_iPhone 6s 15.0", + "name": "gfx_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -68051,12 +67949,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -68072,7 +67970,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "gfx_unittests", @@ -68102,7 +68000,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -68119,11 +68017,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "gfx_unittests", @@ -68131,7 +68029,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "gfx_unittests_iPhone 6s Plus 15.0", + "name": "gfx_unittests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -68153,12 +68051,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -68174,7 +68072,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "gfx_unittests", @@ -68204,7 +68102,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -68221,11 +68119,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "gfx_unittests", @@ -68233,7 +68131,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "gfx_unittests_iPhone SE (1st generation) 15.0", + "name": "gfx_unittests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -68255,12 +68153,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -68276,7 +68174,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "google_apis_unittests", @@ -68306,7 +68204,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -68323,11 +68221,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "google_apis_unittests", @@ -68335,7 +68233,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "google_apis_unittests_iPhone 6s 15.0", + "name": "google_apis_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -68357,12 +68255,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -68378,7 +68276,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -68409,7 +68307,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -68426,11 +68324,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -68439,7 +68337,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air 2 15.0", + "name": "ios_chrome_bookmarks_eg2tests_module_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -68461,12 +68359,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -68482,7 +68380,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -68513,7 +68411,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -68530,11 +68428,11 @@ "--platform", "iPhone 7", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -68543,7 +68441,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 7 15.0", + "name": "ios_chrome_bookmarks_eg2tests_module_iPhone 7 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -68565,12 +68463,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -68586,7 +68484,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -68617,7 +68515,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -68634,11 +68532,11 @@ "--platform", "iPhone X", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -68647,7 +68545,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 15.0", + "name": "ios_chrome_bookmarks_eg2tests_module_iPhone X 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -68669,12 +68567,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -68690,7 +68588,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -68721,7 +68619,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -68739,11 +68637,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -68752,7 +68650,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 15.0", + "name": "ios_chrome_integration_eg2tests_module_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -68774,12 +68672,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -68796,7 +68694,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -68827,7 +68725,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -68845,11 +68743,11 @@ "--platform", "iPhone 7", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -68858,7 +68756,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_integration_eg2tests_module_iPhone 7 15.0", + "name": "ios_chrome_integration_eg2tests_module_iPhone 7 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -68880,12 +68778,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -68902,7 +68800,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -68933,7 +68831,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -68951,11 +68849,11 @@ "--platform", "iPhone X", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -68964,7 +68862,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_integration_eg2tests_module_iPhone X 15.0", + "name": "ios_chrome_integration_eg2tests_module_iPhone X 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -68986,12 +68884,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -69008,7 +68906,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69039,7 +68937,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -69057,11 +68955,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69070,7 +68968,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_settings_eg2tests_module_iPad Air 2 15.0", + "name": "ios_chrome_settings_eg2tests_module_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -69092,12 +68990,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -69114,7 +69012,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69145,7 +69043,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -69163,11 +69061,11 @@ "--platform", "iPhone 7", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69176,7 +69074,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_settings_eg2tests_module_iPhone 7 15.0", + "name": "ios_chrome_settings_eg2tests_module_iPhone 7 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -69198,12 +69096,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -69220,7 +69118,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69251,7 +69149,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -69269,11 +69167,11 @@ "--platform", "iPhone X", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69282,7 +69180,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_settings_eg2tests_module_iPhone X 15.0", + "name": "ios_chrome_settings_eg2tests_module_iPhone X 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -69304,12 +69202,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -69326,7 +69224,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69357,7 +69255,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -69374,11 +69272,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69387,7 +69285,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 15.0", + "name": "ios_chrome_signin_eg2tests_module_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -69409,12 +69307,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -69430,7 +69328,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69461,7 +69359,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -69478,11 +69376,11 @@ "--platform", "iPhone 7", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69491,7 +69389,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_signin_eg2tests_module_iPhone 7 15.0", + "name": "ios_chrome_signin_eg2tests_module_iPhone 7 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -69513,12 +69411,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -69534,7 +69432,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69565,7 +69463,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -69582,11 +69480,11 @@ "--platform", "iPhone X", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69595,7 +69493,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_signin_eg2tests_module_iPhone X 15.0", + "name": "ios_chrome_signin_eg2tests_module_iPhone X 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -69617,12 +69515,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -69638,7 +69536,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69669,7 +69567,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -69686,11 +69584,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69699,7 +69597,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_smoke_eg2tests_module_iPad Air 2 15.0", + "name": "ios_chrome_smoke_eg2tests_module_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -69721,12 +69619,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -69742,7 +69640,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69773,7 +69671,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -69790,11 +69688,11 @@ "--platform", "iPhone 7", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69803,7 +69701,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_smoke_eg2tests_module_iPhone 7 15.0", + "name": "ios_chrome_smoke_eg2tests_module_iPhone 7 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -69825,12 +69723,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -69846,7 +69744,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69877,7 +69775,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -69894,11 +69792,11 @@ "--platform", "iPhone X", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69907,7 +69805,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_smoke_eg2tests_module_iPhone X 15.0", + "name": "ios_chrome_smoke_eg2tests_module_iPhone X 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -69929,12 +69827,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -69950,7 +69848,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -69981,7 +69879,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -69999,11 +69897,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -70012,7 +69910,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 15.0", + "name": "ios_chrome_ui_eg2tests_module_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -70034,12 +69932,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -70056,7 +69954,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -70087,7 +69985,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -70105,11 +70003,11 @@ "--platform", "iPhone 7", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -70118,7 +70016,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_ui_eg2tests_module_iPhone 7 15.0", + "name": "ios_chrome_ui_eg2tests_module_iPhone 7 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -70140,12 +70038,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -70162,7 +70060,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -70193,7 +70091,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -70211,11 +70109,11 @@ "--platform", "iPhone X", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -70224,7 +70122,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_ui_eg2tests_module_iPhone X 15.0", + "name": "ios_chrome_ui_eg2tests_module_iPhone X 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -70246,12 +70144,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com", @@ -70268,7 +70166,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -70298,7 +70196,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -70315,11 +70213,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -70327,7 +70225,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_unittests_iPad Air 2 15.0", + "name": "ios_chrome_unittests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -70349,12 +70247,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -70370,7 +70268,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -70400,7 +70298,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -70417,11 +70315,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -70429,7 +70327,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_unittests_iPhone 6s 15.0", + "name": "ios_chrome_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -70451,12 +70349,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -70472,7 +70370,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -70502,7 +70400,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -70519,11 +70417,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -70531,7 +70429,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_unittests_iPhone 6s Plus 15.0", + "name": "ios_chrome_unittests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -70553,12 +70451,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -70574,7 +70472,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -70604,7 +70502,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -70621,11 +70519,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_chrome_unittests", @@ -70633,7 +70531,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_unittests_iPhone SE (1st generation) 15.0", + "name": "ios_chrome_unittests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -70655,12 +70553,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -70676,7 +70574,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -70707,7 +70605,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -70724,11 +70622,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -70737,7 +70635,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_web_eg2tests_module_iPad Air 2 15.0", + "name": "ios_chrome_web_eg2tests_module_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -70759,12 +70657,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -70780,7 +70678,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -70811,7 +70709,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -70828,11 +70726,11 @@ "--platform", "iPhone 7", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -70841,7 +70739,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_web_eg2tests_module_iPhone 7 15.0", + "name": "ios_chrome_web_eg2tests_module_iPhone 7 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -70863,12 +70761,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -70884,7 +70782,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -70915,7 +70813,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -70932,11 +70830,11 @@ "--platform", "iPhone X", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -70945,7 +70843,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_chrome_web_eg2tests_module_iPhone X 15.0", + "name": "ios_chrome_web_eg2tests_module_iPhone X 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -70967,12 +70865,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -70988,7 +70886,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_components_unittests", @@ -71018,7 +70916,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -71035,11 +70933,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_components_unittests", @@ -71047,7 +70945,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_components_unittests_iPhone 6s 15.0", + "name": "ios_components_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -71069,12 +70967,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -71090,7 +70988,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_net_unittests", @@ -71120,7 +71018,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -71137,11 +71035,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_net_unittests", @@ -71149,7 +71047,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_net_unittests_iPhone 6s 15.0", + "name": "ios_net_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -71171,12 +71069,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -71192,7 +71090,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_remoting_unittests", @@ -71222,7 +71120,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -71239,11 +71137,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_remoting_unittests", @@ -71251,7 +71149,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_remoting_unittests_iPhone 6s 15.0", + "name": "ios_remoting_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -71273,12 +71171,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -71294,7 +71192,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -71325,7 +71223,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -71342,11 +71240,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -71355,7 +71253,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_showcase_eg2tests_module_iPad Air 2 15.0", + "name": "ios_showcase_eg2tests_module_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -71377,12 +71275,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -71398,7 +71296,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -71429,7 +71327,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -71446,11 +71344,11 @@ "--platform", "iPhone 7", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -71459,7 +71357,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_showcase_eg2tests_module_iPhone 7 15.0", + "name": "ios_showcase_eg2tests_module_iPhone 7 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -71481,12 +71379,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -71502,7 +71400,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -71533,7 +71431,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -71550,11 +71448,11 @@ "--platform", "iPhone X", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -71563,7 +71461,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_showcase_eg2tests_module_iPhone X 15.0", + "name": "ios_showcase_eg2tests_module_iPhone X 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -71585,12 +71483,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -71606,7 +71504,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_testing_unittests", @@ -71636,7 +71534,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -71653,11 +71551,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_testing_unittests", @@ -71665,7 +71563,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_testing_unittests_iPhone 6s 15.0", + "name": "ios_testing_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -71687,12 +71585,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -71708,7 +71606,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -71738,7 +71636,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -71755,11 +71653,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -71767,7 +71665,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_inttests_iPad Air 2 15.0", + "name": "ios_web_inttests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -71789,12 +71687,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -71810,7 +71708,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -71840,7 +71738,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -71857,11 +71755,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -71869,7 +71767,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_inttests_iPhone 6s 15.0", + "name": "ios_web_inttests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -71891,12 +71789,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -71912,7 +71810,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -71942,7 +71840,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -71959,11 +71857,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -71971,7 +71869,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_inttests_iPhone 6s Plus 15.0", + "name": "ios_web_inttests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -71993,12 +71891,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -72014,7 +71912,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -72044,7 +71942,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -72061,11 +71959,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_inttests", @@ -72073,7 +71971,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_inttests_iPhone SE (1st generation) 15.0", + "name": "ios_web_inttests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -72095,12 +71993,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -72116,7 +72014,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -72147,7 +72045,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -72164,11 +72062,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -72177,7 +72075,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_shell_eg2tests_module_iPad Air 2 15.0", + "name": "ios_web_shell_eg2tests_module_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -72199,12 +72097,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -72220,7 +72118,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -72251,7 +72149,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -72268,11 +72166,11 @@ "--platform", "iPhone 7", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -72281,7 +72179,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_shell_eg2tests_module_iPhone 7 15.0", + "name": "ios_web_shell_eg2tests_module_iPhone 7 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -72303,12 +72201,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -72324,7 +72222,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -72355,7 +72253,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -72372,11 +72270,11 @@ "--platform", "iPhone X", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest", "--xcode-parallelization" ], @@ -72385,7 +72283,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_shell_eg2tests_module_iPhone X 15.0", + "name": "ios_web_shell_eg2tests_module_iPhone X 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -72407,12 +72305,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -72428,7 +72326,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -72458,7 +72356,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -72475,11 +72373,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -72487,7 +72385,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_unittests_iPad Air 2 15.0", + "name": "ios_web_unittests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -72509,12 +72407,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -72530,7 +72428,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -72560,7 +72458,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -72577,11 +72475,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -72589,7 +72487,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_unittests_iPhone 6s 15.0", + "name": "ios_web_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -72611,12 +72509,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -72632,7 +72530,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -72662,7 +72560,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -72679,11 +72577,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -72691,7 +72589,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_unittests_iPhone 6s Plus 15.0", + "name": "ios_web_unittests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -72713,12 +72611,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -72734,7 +72632,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -72764,7 +72662,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -72781,11 +72679,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_unittests", @@ -72793,7 +72691,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_unittests_iPhone SE (1st generation) 15.0", + "name": "ios_web_unittests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -72815,12 +72713,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -72836,7 +72734,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -72866,7 +72764,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -72883,11 +72781,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -72895,7 +72793,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_inttests_iPad Air 2 15.0", + "name": "ios_web_view_inttests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -72917,12 +72815,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -72938,7 +72836,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -72968,7 +72866,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -72985,11 +72883,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -72997,7 +72895,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_inttests_iPhone 6s 15.0", + "name": "ios_web_view_inttests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -73019,12 +72917,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -73040,7 +72938,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -73070,7 +72968,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -73087,11 +72985,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -73099,7 +72997,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_inttests_iPhone 6s Plus 15.0", + "name": "ios_web_view_inttests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -73121,12 +73019,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -73142,7 +73040,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -73172,7 +73070,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -73189,11 +73087,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_inttests", @@ -73201,7 +73099,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_inttests_iPhone SE (1st generation) 15.0", + "name": "ios_web_view_inttests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -73223,12 +73121,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -73244,7 +73142,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -73274,7 +73172,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -73291,11 +73189,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -73303,7 +73201,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_unittests_iPad Air 2 15.0", + "name": "ios_web_view_unittests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -73325,12 +73223,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -73346,7 +73244,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -73376,7 +73274,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -73393,11 +73291,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -73405,7 +73303,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_unittests_iPhone 6s 15.0", + "name": "ios_web_view_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -73427,12 +73325,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -73448,7 +73346,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -73478,7 +73376,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -73495,11 +73393,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -73507,7 +73405,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_unittests_iPhone 6s Plus 15.0", + "name": "ios_web_view_unittests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -73529,12 +73427,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -73550,7 +73448,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -73580,7 +73478,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -73597,11 +73495,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ios_web_view_unittests", @@ -73609,7 +73507,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ios_web_view_unittests_iPhone SE (1st generation) 15.0", + "name": "ios_web_view_unittests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -73631,12 +73529,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -73652,7 +73550,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "net_unittests", @@ -73682,7 +73580,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -73699,11 +73597,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "net_unittests", @@ -73711,7 +73609,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "net_unittests_iPhone 6s 15.0", + "name": "net_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -73733,12 +73631,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -73754,7 +73652,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "services_unittests", @@ -73784,7 +73682,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -73801,11 +73699,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "services_unittests", @@ -73813,7 +73711,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "services_unittests_iPhone 6s 15.0", + "name": "services_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -73835,12 +73733,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -73856,7 +73754,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "skia_unittests", @@ -73886,7 +73784,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -73903,11 +73801,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "skia_unittests", @@ -73915,7 +73813,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "skia_unittests_iPad Air 2 15.0", + "name": "skia_unittests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -73937,12 +73835,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -73958,7 +73856,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "skia_unittests", @@ -73988,7 +73886,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -74005,11 +73903,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "skia_unittests", @@ -74017,7 +73915,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "skia_unittests_iPhone 6s 15.0", + "name": "skia_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -74039,12 +73937,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -74060,7 +73958,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "skia_unittests", @@ -74090,7 +73988,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -74107,11 +74005,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "skia_unittests", @@ -74119,7 +74017,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "skia_unittests_iPhone 6s Plus 15.0", + "name": "skia_unittests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -74141,12 +74039,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -74162,7 +74060,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "skia_unittests", @@ -74192,7 +74090,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -74209,11 +74107,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "skia_unittests", @@ -74221,7 +74119,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "skia_unittests_iPhone SE (1st generation) 15.0", + "name": "skia_unittests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -74243,12 +74141,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -74264,7 +74162,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "sql_unittests", @@ -74294,7 +74192,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -74311,11 +74209,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "sql_unittests", @@ -74323,7 +74221,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "sql_unittests_iPhone 6s 15.0", + "name": "sql_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -74345,12 +74243,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -74366,7 +74264,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -74396,7 +74294,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -74413,11 +74311,11 @@ "--platform", "iPad Air 2", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -74425,7 +74323,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ui_base_unittests_iPad Air 2 15.0", + "name": "ui_base_unittests_iPad Air 2 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -74447,12 +74345,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -74468,7 +74366,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -74498,7 +74396,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -74515,11 +74413,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -74527,7 +74425,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ui_base_unittests_iPhone 6s 15.0", + "name": "ui_base_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -74549,12 +74447,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -74570,7 +74468,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -74600,7 +74498,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -74617,11 +74515,11 @@ "--platform", "iPhone 6s Plus", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -74629,7 +74527,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ui_base_unittests_iPhone 6s Plus 15.0", + "name": "ui_base_unittests_iPhone 6s Plus 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -74651,12 +74549,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -74672,7 +74570,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -74702,7 +74600,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -74719,11 +74617,11 @@ "--platform", "iPhone SE (1st generation)", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "ui_base_unittests", @@ -74731,7 +74629,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "ui_base_unittests_iPhone SE (1st generation) 15.0", + "name": "ui_base_unittests_iPhone SE (1st generation) 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -74753,12 +74651,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com" @@ -74774,7 +74672,7 @@ "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "url_unittests", @@ -74804,7 +74702,7 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { @@ -74821,11 +74719,11 @@ "--platform", "iPhone 6s", "--version", - "15.0", + "15.2", "--out-dir", "${ISOLATED_OUTDIR}", "--xcode-build-version", - "13a233", + "13c100", "--xctest" ], "isolate_name": "url_unittests", @@ -74833,7 +74731,7 @@ "args": [], "script": "//testing/merge_scripts/standard_isolated_script_merge.py" }, - "name": "url_unittests_iPhone 6s 15.0", + "name": "url_unittests_iPhone 6s 15.2", "resultdb": { "enable": true, "has_native_resultdb_integration": true @@ -74855,12 +74753,12 @@ ], "named_caches": [ { - "name": "xcode_ios_13a233", + "name": "xcode_ios_13c100", "path": "Xcode.app" }, { - "name": "runtime_ios_15_0", - "path": "Runtime-ios-15.0" + "name": "runtime_ios_15_2", + "path": "Runtime-ios-15.2" } ], "service_account": "chromium-tester@chops-service-accounts.iam.gserviceaccount.com"
diff --git a/testing/buildbot/filters/fuchsia.debug.snapshot_unittests.filter b/testing/buildbot/filters/fuchsia.debug.snapshot_unittests.filter index 9f51c5d..fdbf43c 100644 --- a/testing/buildbot/filters/fuchsia.debug.snapshot_unittests.filter +++ b/testing/buildbot/filters/fuchsia.debug.snapshot_unittests.filter
@@ -1,2 +1,2 @@ # https://crbug.com/1241502 --All/SnapshotAuraTest.* +-SnapshotAuraTest.*
diff --git a/testing/buildbot/mixins.pyl b/testing/buildbot/mixins.pyl index 87fe500b..3499bcdc 100644 --- a/testing/buildbot/mixins.pyl +++ b/testing/buildbot/mixins.pyl
@@ -439,7 +439,7 @@ '--device=aemu', ], }, - }, + }, 'fuchsia_logs': { '$mixin_append': { 'args': [ @@ -539,6 +539,18 @@ }, }, }, + 'ios_runtime_cache_15_2': { + '$mixin_append': { + 'swarming': { + 'named_caches': [ + { + 'name': 'runtime_ios_15_2', + 'path': 'Runtime-ios-15.2', + }, + ], + }, + }, + }, 'isolate_profile_data': { 'isolate_profile_data': True, }, @@ -1181,7 +1193,7 @@ }, }, }, - # (default in Chromium iOS) xcode 12.4 gm seed + # xcode 12.4 gm seed 'xcode_12d4e': { '$mixin_append': { 'args': [ @@ -1216,17 +1228,18 @@ }, }, }, - 'xcode_13_latest_beta': { + # Xcode 13 used on beta bots. + 'xcode_13_beta_bots': { '$mixin_append': { 'args': [ '--xcode-build-version', - '13a233' + '13c100' ], }, 'swarming': { 'named_caches': [ { - 'name': 'xcode_ios_13a233', + 'name': 'xcode_ios_13c100', 'path': 'Xcode.app', }, ],
diff --git a/testing/buildbot/test_suites.pyl b/testing/buildbot/test_suites.pyl index a8e43d09..93f03c5 100644 --- a/testing/buildbot/test_suites.pyl +++ b/testing/buildbot/test_suites.pyl
@@ -5094,7 +5094,7 @@ 'weblayer_shell_wpt': { 'weblayer_shell_wpt': { 'swarming': { - 'shards': 32, + 'shards': 18, 'expiration': 18000, 'hard_timeout': 14400, }, @@ -6848,22 +6848,22 @@ 'ios15_beta_simulator_tests': { 'ios_common_tests': { 'variants': [ - 'SIM_IPHONE_6S_15_0', + 'SIM_IPHONE_6S_15_2', 'SIM_IPHONE_6S_14_5', ], }, 'ios_crash_unittests': { 'variants': [ - 'SIM_IPHONE_6S_15_0', + 'SIM_IPHONE_6S_15_2', 'SIM_IPHONE_6S_14_5', ], }, 'ios_eg2_tests': { 'mixins': ['xcode_parallelization'], 'variants': [ - 'SIM_IPHONE_7_15_0', - 'SIM_IPAD_AIR_2_15_0', - 'SIM_IPHONE_X_15_0', + 'SIM_IPHONE_7_15_2', + 'SIM_IPAD_AIR_2_15_2', + 'SIM_IPHONE_X_15_2', 'SIM_IPHONE_7_14_5', 'SIM_IPAD_AIR_2_14_5', 'SIM_IPHONE_X_14_5', @@ -6872,9 +6872,9 @@ 'ios_eg2_cq_tests': { 'mixins': ['xcode_parallelization'], 'variants': [ - 'SIM_IPHONE_7_15_0', - 'SIM_IPAD_AIR_2_15_0', - 'SIM_IPHONE_X_15_0', + 'SIM_IPHONE_7_15_2', + 'SIM_IPAD_AIR_2_15_2', + 'SIM_IPHONE_X_15_2', 'SIM_IPHONE_7_14_5', 'SIM_IPAD_AIR_2_14_5', 'SIM_IPHONE_X_14_5', @@ -6886,10 +6886,10 @@ 'SIM_IPHONE_6S_14_5', 'SIM_IPHONE_SE_1ST_GEN_14_5', 'SIM_IPAD_AIR_2_14_5', - 'SIM_IPHONE_6S_PLUS_15_0', - 'SIM_IPHONE_6S_15_0', - 'SIM_IPHONE_SE_1ST_GEN_15_0', - 'SIM_IPAD_AIR_2_15_0', + 'SIM_IPHONE_6S_PLUS_15_2', + 'SIM_IPHONE_6S_15_2', + 'SIM_IPHONE_SE_1ST_GEN_15_2', + 'SIM_IPAD_AIR_2_15_2', ], }, }, @@ -6897,22 +6897,22 @@ 'ios15_sdk_simulator_tests': { 'ios_common_tests': { 'variants': [ - 'SIM_IPHONE_6S_15_0', + 'SIM_IPHONE_6S_15_2', 'SIM_IPHONE_6S_14_5', ], }, 'ios_crash_unittests': { 'variants': [ - 'SIM_IPHONE_6S_15_0', + 'SIM_IPHONE_6S_15_2', 'SIM_IPHONE_6S_14_5', ], }, 'ios_eg2_tests': { 'mixins': ['xcode_parallelization'], 'variants': [ - 'SIM_IPHONE_7_15_0', - 'SIM_IPAD_AIR_2_15_0', - 'SIM_IPHONE_X_15_0', + 'SIM_IPHONE_7_15_2', + 'SIM_IPAD_AIR_2_15_2', + 'SIM_IPHONE_X_15_2', 'SIM_IPHONE_7_14_5', 'SIM_IPAD_AIR_2_14_5', 'SIM_IPHONE_X_14_5', @@ -6921,9 +6921,9 @@ 'ios_eg2_cq_tests': { 'mixins': ['xcode_parallelization'], 'variants': [ - 'SIM_IPHONE_7_15_0', - 'SIM_IPAD_AIR_2_15_0', - 'SIM_IPHONE_X_15_0', + 'SIM_IPHONE_7_15_2', + 'SIM_IPAD_AIR_2_15_2', + 'SIM_IPHONE_X_15_2', 'SIM_IPHONE_7_14_5', 'SIM_IPAD_AIR_2_14_5', 'SIM_IPHONE_X_14_5', @@ -6935,10 +6935,10 @@ 'SIM_IPHONE_6S_14_5', 'SIM_IPHONE_SE_1ST_GEN_14_5', 'SIM_IPAD_AIR_2_14_5', - 'SIM_IPHONE_6S_PLUS_15_0', - 'SIM_IPHONE_6S_15_0', - 'SIM_IPHONE_SE_1ST_GEN_15_0', - 'SIM_IPAD_AIR_2_15_0', + 'SIM_IPHONE_6S_PLUS_15_2', + 'SIM_IPHONE_6S_15_2', + 'SIM_IPHONE_SE_1ST_GEN_15_2', + 'SIM_IPAD_AIR_2_15_2', ], }, },
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index b1b53e0..9a276e4 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl
@@ -126,6 +126,18 @@ 'ios_runtime_cache_15_0', ], }, + 'SIM_IPAD_AIR_2_15_2': { + 'args': [ + '--platform', + 'iPad Air 2', + '--version', + '15.2' + ], + 'identifier': 'iPad Air 2 15.2', + 'mixins': [ + 'ios_runtime_cache_15_2', + ], + }, 'SIM_IPAD_AIR_3RD_GEN_14_5': { 'args': [ '--platform', @@ -200,6 +212,18 @@ 'ios_runtime_cache_15_0', ], }, + 'SIM_IPHONE_6S_15_2': { + 'args': [ + '--platform', + 'iPhone 6s', + '--version', + '15.2' + ], + 'identifier': 'iPhone 6s 15.2', + 'mixins': [ + 'ios_runtime_cache_15_2', + ], + }, 'SIM_IPHONE_6S_PLUS_14_4': { 'args': [ '--platform', @@ -236,6 +260,18 @@ 'ios_runtime_cache_15_0', ], }, + 'SIM_IPHONE_6S_PLUS_15_2': { + 'args': [ + '--platform', + 'iPhone 6s Plus', + '--version', + '15.2', + ], + 'identifier': 'iPhone 6s Plus 15.2', + 'mixins': [ + 'ios_runtime_cache_15_2', + ], + }, 'SIM_IPHONE_7_14_4': { 'args': [ '--platform', @@ -272,6 +308,18 @@ 'ios_runtime_cache_15_0', ], }, + 'SIM_IPHONE_7_15_2': { + 'args': [ + '--platform', + 'iPhone 7', + '--version', + '15.2' + ], + 'identifier': 'iPhone 7 15.2', + 'mixins': [ + 'ios_runtime_cache_15_2', + ], + }, 'SIM_IPHONE_SE_1ST_GEN_14_4': { 'args': [ '--platform', @@ -308,6 +356,18 @@ 'ios_runtime_cache_15_0', ], }, + 'SIM_IPHONE_SE_1ST_GEN_15_2': { + 'args': [ + '--platform', + 'iPhone SE (1st generation)', + '--version', + '15.2', + ], + 'identifier': 'iPhone SE (1st generation) 15.2', + 'mixins': [ + 'ios_runtime_cache_15_2', + ], + }, 'SIM_IPHONE_X_14_4': { 'args': [ '--platform', @@ -344,6 +404,18 @@ 'ios_runtime_cache_15_0', ], }, + 'SIM_IPHONE_X_15_2': { + 'args': [ + '--platform', + 'iPhone X', + '--version', + '15.2' + ], + 'identifier': 'iPhone X 15.2', + 'mixins': [ + 'ios_runtime_cache_15_2', + ], + }, 'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MILESTONE': { 'args': [ '--webview-apk-path=apks/AOSP_SystemWebView.apk',
diff --git a/testing/buildbot/waterfalls.pyl b/testing/buildbot/waterfalls.pyl index 5f988fd..5757172 100644 --- a/testing/buildbot/waterfalls.pyl +++ b/testing/buildbot/waterfalls.pyl
@@ -2968,7 +2968,7 @@ 'xctest', ], 'test_suites': { - 'isolated_scripts': 'ios15_sdk_simulator_tests' + 'isolated_scripts': 'ios_code_coverage_tests' } }, 'ios-simulator-code-coverage': { @@ -3071,7 +3071,7 @@ 'mac_11_x64', 'mac_toolchain', 'out_dir_arg', - 'xcode_13_latest_beta', + 'xcode_13_beta_bots', 'xctest', ], 'test_suites': { @@ -3092,7 +3092,7 @@ 'mac_11_x64', 'mac_toolchain', 'out_dir_arg', - 'xcode_13_latest_beta', + 'xcode_13_beta_bots', 'xctest', ], 'test_suites': {
diff --git a/testing/scripts/wpt_android_lib.py b/testing/scripts/wpt_android_lib.py index 0082bdc..e5954f8 100644 --- a/testing/scripts/wpt_android_lib.py +++ b/testing/scripts/wpt_android_lib.py
@@ -318,6 +318,7 @@ @property def rest_args(self): args = super(WPTWeblayerAdapter, self).rest_args + args.append('--test-type=testharness') args.append(ANDROID_WEBLAYER) return args
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index b12c558..9d44f58 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -172,21 +172,6 @@ ] } ], - "AndroidMessagesAdsBlocked": [ - { - "platforms": [ - "android" - ], - "experiments": [ - { - "name": "Enabled_2021-09-24", - "enable_features": [ - "MessagesForAndroidAdsBlocked" - ] - } - ] - } - ], "AndroidMessagesPWAInstall": [ { "platforms": [ @@ -2483,31 +2468,6 @@ ] } ], - "DesktopReadingListEntryPointIPH": [ - { - "platforms": [ - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "ReadingListEntryPointIPH", - "params": { - "availability": ">14", - "event_trigger": "name:reading_list_entry_point_iph_triggered;comparator:==0;window:365;storage:365", - "event_used": "name:bookmark_star_menu_opened;comparator:==0;window:365;storage:365", - "session_rate": "<3" - }, - "enable_features": [ - "IPH_ReadingListEntryPoint" - ] - } - ] - } - ], "DesktopTabGroupsUserEducation": [ { "platforms": [ @@ -3166,24 +3126,6 @@ ] } ], - "GlobalMediaControlsForChromeOS": [ - { - "platforms": [ - "chromeos" - ], - "experiments": [ - { - "name": "EnabledWithDefaultPinnedv1", - "params": { - "CrosGlobalMediaControlsPinParam": "default-pinned" - }, - "enable_features": [ - "GlobalMediaControlsForChromeOS" - ] - } - ] - } - ], "GoogleLensDesktopContextMenuSearch": [ { "platforms": [ @@ -4023,6 +3965,21 @@ ] } ], + "MigrateAlwaysTranslateLanguagesFix": [ + { + "platforms": [ + "ios" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "MigrateAlwaysTranslateLanguagesFix" + ] + } + ] + } + ], "MigrateDefaultChromeAppToWebAppsGSuite": [ { "platforms": [
diff --git a/third_party/android_platform/development/scripts/stack.py b/third_party/android_platform/development/scripts/stack.py index 64204067..6e562b4 100755 --- a/third_party/android_platform/development/scripts/stack.py +++ b/third_party/android_platform/development/scripts/stack.py
@@ -46,8 +46,18 @@ def PrintUsage(): """Print usage and exit with error.""" + print("Usage: " + sys.argv[0] + " [options] [FILE]") print() - print(" usage: " + sys.argv[0] + " [options] [FILE]") + print("Find all parts in FILE belonging to stack traces and symbolize") + print("them: copy to stdout augmenting with source file names and line") + print("numbers.") + print() + print("Not providing FILE or setting it to '-' implies reading from stdin.") + print() + print(" -p, --pass-through") + print(" Copy all lines from stdin to stdout in addition to") + print(" symbolizing relevant lines. This way ADB logcat can") + print(" be piped through the tool to symbolize on the fly.") print() print(" --symbols-dir=path") print(" path to the Android OS symbols dir, such as") @@ -90,13 +100,6 @@ print(" --verbose") print(" enable extra logging, particularly for debugging failed") print(" symbolization") - print() - print(" FILE should contain a stack trace in it somewhere") - print(" the tool will find that and re-print it with") - print(" source files and line numbers. If you don't") - print(" pass FILE, or if file is -, it reads from") - print(" stdin.") - print() sys.exit(1) def UnzipSymbols(symbolfile, symdir=None): @@ -143,14 +146,15 @@ def main(argv, test_symbolizer=None): try: - options, arguments = getopt.getopt(argv, "", [ - "more-info", "less-info", "chrome-symbols-dir=", "output-directory=", - "apks-directory=", "symbols-dir=", "symbols-zip=", "arch=", - "fallback-monochrome", "verbose", "quiet", "help", + options, arguments = getopt.getopt(argv, "p", [ + "pass-through", "more-info", "less-info", "chrome-symbols-dir=", + "output-directory=", "apks-directory=", "symbols-dir=", "symbols-zip=", + "arch=", "fallback-monochrome", "verbose", "quiet", "help", ]) except getopt.GetoptError: PrintUsage() + pass_through = False zip_arg = None more_info = False fallback_monochrome = False @@ -160,6 +164,10 @@ for option, value in options: if option == "--help": PrintUsage() + elif option == "--pass-through": + pass_through = True + elif option == "-p": + pass_through = True elif option == "--symbols-dir": symbol.SYMBOLS_DIR = os.path.abspath(os.path.expanduser(value)) elif option == "--symbols-zip": @@ -202,17 +210,21 @@ if zip_arg: rootdir, symbol.SYMBOLS_DIR = UnzipSymbols(zip_arg) - if not arguments or arguments[0] == "-": + if not arguments or arguments[0] == '-': logging.info('Reading native crash info from stdin (symbolization starts ' 'on the first unrelated line or EOF)') with llvm_symbolizer.LLVMSymbolizer() as symbolizer: stack_core.StreamingConvertTrace(sys.stdin, {}, more_info, fallback_monochrome, arch_defined, - symbolizer, apks_directory) + symbolizer, apks_directory, pass_through) else: logging.info('Searching for native crashes in: %s', os.path.realpath(arguments[0])) - f = open(arguments[0], "r") + if pass_through: + logging.error('Processing files in --pass-through mode is not supported') + return 1 + + f = open(arguments[0], 'r') lines = f.readlines() f.close() @@ -235,6 +247,8 @@ logging.info('cleaning up (%s)', cmd) os.system(cmd) + return 0 + if __name__ == "__main__": sys.exit(main(sys.argv[1:]))
diff --git a/third_party/android_platform/development/scripts/stack_core.py b/third_party/android_platform/development/scripts/stack_core.py index b0937db..0d04f16 100755 --- a/third_party/android_platform/development/scripts/stack_core.py +++ b/third_party/android_platform/development/scripts/stack_core.py
@@ -143,6 +143,7 @@ print(' ') print(l) + def PrintOutput(trace_lines, value_lines, java_lines, more_info): if trace_lines: PrintTraceLines(trace_lines) @@ -157,13 +158,15 @@ if java_lines: PrintJavaLines(java_lines) + def PrintDivider(): print() print('-----------------------------------------------------\n') def StreamingConvertTrace(_, load_vaddrs, more_info, fallback_monochrome, - arch_defined, llvm_symbolizer, apks_directory): + arch_defined, llvm_symbolizer, apks_directory, + pass_through): """Symbolize stacks on the fly as they are read from an input stream.""" if fallback_monochrome: @@ -188,6 +191,8 @@ for line in iter(sys.stdin.readline, b''): if not line: # EOF break + if pass_through: + sys.stdout.write(line) maybe_line, maybe_so_dir = preprocessor([line]) useful_lines.extend(maybe_line) so_dirs.extend(maybe_so_dir)
diff --git a/third_party/blink/renderer/core/dom/static_range.cc b/third_party/blink/renderer/core/dom/static_range.cc index f31ed4b..9034f40 100644 --- a/third_party/blink/renderer/core/dom/static_range.cc +++ b/third_party/blink/renderer/core/dom/static_range.cc
@@ -57,34 +57,6 @@ static_range_init->endOffset()); } -namespace { - -// Returns the lowest ancestor of |node| in the tree that has a containment set. -Node* GetLowestContainAncestor(const Node* node) { - for (Node& ancestor : NodeTraversal::InclusiveAncestorsOf(*node)) { - if (LayoutObject* node_layout_object = ancestor.GetLayoutObject()) { - if (node_layout_object->ShouldApplyAnyContainment()) { - return &ancestor; - } - } - } - return nullptr; -} - -} // namespace - -// Returns true if the range crosses any css-contain subtree boundary. -bool StaticRange::CrossesContainBoundary() const { - if (style_version_for_crosses_contain_boundary_ == - owner_document_->StyleVersion()) - return crosses_contain_boundary_; - style_version_for_crosses_contain_boundary_ = owner_document_->StyleVersion(); - - crosses_contain_boundary_ = GetLowestContainAncestor(start_container_) != - GetLowestContainAncestor(end_container_); - return crosses_contain_boundary_; -} - bool StaticRange::IsValid() const { if (dom_tree_version_for_is_valid_ == owner_document_->DomTreeVersion()) return is_valid_;
diff --git a/third_party/blink/renderer/core/dom/static_range.h b/third_party/blink/renderer/core/dom/static_range.h index 71523882..e47e2aa 100644 --- a/third_party/blink/renderer/core/dom/static_range.h +++ b/third_party/blink/renderer/core/dom/static_range.h
@@ -51,7 +51,6 @@ Range* toRange(ExceptionState& = ASSERT_NO_EXCEPTION) const; bool IsValid() const; - bool CrossesContainBoundary() const; bool IsStaticRange() const override { return true; } Document& OwnerDocument() const override { return *owner_document_.Get(); } @@ -64,10 +63,7 @@ Member<Node> end_container_; unsigned end_offset_ = 0; mutable bool is_valid_ = false; - mutable bool crosses_contain_boundary_ = false; mutable uint64_t dom_tree_version_for_is_valid_ = 0; - mutable uint64_t style_version_for_crosses_contain_boundary_ = - static_cast<uint64_t>(-1); }; using StaticRangeVector = HeapVector<Member<StaticRange>>;
diff --git a/third_party/blink/renderer/core/frame/visual_viewport.cc b/third_party/blink/renderer/core/frame/visual_viewport.cc index 4d63c50..107eede 100644 --- a/third_party/blink/renderer/core/frame/visual_viewport.cc +++ b/third_party/blink/renderer/core/frame/visual_viewport.cc
@@ -32,6 +32,7 @@ #include <memory> +#include "base/metrics/field_trial_params.h" #include "base/metrics/histogram_functions.h" #include "build/build_config.h" #include "cc/input/main_thread_scrolling_reason.h"
diff --git a/third_party/blink/renderer/core/highlight/highlight_registry.cc b/third_party/blink/renderer/core/highlight/highlight_registry.cc index 870a2c1..e442e70 100644 --- a/third_party/blink/renderer/core/highlight/highlight_registry.cc +++ b/third_party/blink/renderer/core/highlight/highlight_registry.cc
@@ -69,8 +69,7 @@ if (abstract_range->OwnerDocument() == document && !abstract_range->collapsed()) { auto* static_range = DynamicTo<StaticRange>(*abstract_range); - if (static_range && (!static_range->IsValid() || - static_range->CrossesContainBoundary())) + if (static_range && !static_range->IsValid()) continue; EphemeralRange eph_range(abstract_range);
diff --git a/third_party/blink/renderer/core/layout/layout_multi_column_flow_thread_test.cc b/third_party/blink/renderer/core/layout/layout_multi_column_flow_thread_test.cc index bc61290f..61b41df 100644 --- a/third_party/blink/renderer/core/layout/layout_multi_column_flow_thread_test.cc +++ b/third_party/blink/renderer/core/layout/layout_multi_column_flow_thread_test.cc
@@ -1723,6 +1723,42 @@ ToSimpleLayoutTree(*multicol->GetLayoutObject())); } +TEST_F(MultiColumnRenderingTest, LegacyMulticolWithTHeadContainingNGFixedpos) { + // Disable LayoutNGBlockFragmentation, so that multicol uses legacy layout. + ScopedLayoutNGBlockFragmentationForTest layout_ng_block_fragmentation(false); + + // Enable MathML, which forces LayoutNG even in legacy multicol. + ScopedMathMLCoreForTest mathml_core(true); + ScopedLayoutNGForTest layout_ng(true); + + // The table-header-group is a LayoutTableSection and contains position:fixed + // due to transform. But LayoutTableSection is not a LayoutBlock, so the + // ContainingBlock() of the fixed element is the anonymous LayoutTable. + // This combination should not crash. + SetBodyContent( + "<div style='column-count: 1'>" + "<div style='display: table-header-group; transform: scale(1)'>" + "<math style='position: absolute'>" + "<mtext style='position: fixed'></mtext>" + "</math>" + "</div>" + "</div>"); + + Element* multicol = GetDocument().QuerySelector("div"); + EXPECT_EQ(R"DUMP( +LayoutBlockFlow DIV style="column-count: 1" + +--LayoutMultiColumnFlowThread (anonymous) + | +--LayoutTable (anonymous) + | | +--LayoutTableSection DIV style="display: table-header-group; transform: scale(1)" + | | | +--LayoutTableRow (anonymous) + | | | | +--LayoutTableCell (anonymous) + | | | | | +--LayoutNGMathMLBlock math style="position: absolute" + | | | | | | +--LayoutNGMathMLBlockFlow mtext style="position: fixed" + +--LayoutMultiColumnSet (anonymous) +)DUMP", + ToSimpleLayoutTree(*multicol->GetLayoutObject())); +} + } // anonymous namespace } // namespace blink
diff --git a/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.cc b/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.cc index a2d02fa..277d664 100644 --- a/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.cc +++ b/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.cc
@@ -357,15 +357,18 @@ .Run(/* only_layout */ this); scoped_refptr<const NGLayoutResult> result = container_builder.ToBoxFragment(); - // These are the unpositioned OOF descendants of the current OOF block. - for (const auto& descendant : - result->PhysicalFragment().OutOfFlowPositionedDescendants()) { - descendant.Node().InsertIntoLegacyPositionedObjectsOf( - To<LayoutBlock>(container)); - } const auto& fragment = result->PhysicalFragment(); DCHECK_GT(fragment.Children().size(), 0u); + + // Handle the unpositioned OOF descendants of the current OOF block. + if (fragment.HasOutOfFlowPositionedDescendants()) { + LayoutBlock* oof_container = + LayoutObject::FindNonAnonymousContainingBlock(container); + for (const auto& descendant : fragment.OutOfFlowPositionedDescendants()) + descendant.Node().InsertIntoLegacyPositionedObjectsOf(oof_container); + } + // Copy sizes of all child fragments to Legacy. // There could be multiple fragments, when this node has descendants whose // container is this node's container.
diff --git a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc index a37f987a..7b09df7 100644 --- a/third_party/blink/renderer/modules/accessibility/ax_node_object.cc +++ b/third_party/blink/renderer/modules/accessibility/ax_node_object.cc
@@ -3495,6 +3495,10 @@ if (!input) return false; + if (!input->GetLayoutObject() || + input->GetLayoutObject()->Style()->Visibility() != EVisibility::kVisible) + return false; + if (!input->IsCheckable()) return false;
diff --git a/third_party/blink/renderer/modules/peerconnection/DEPS b/third_party/blink/renderer/modules/peerconnection/DEPS index 5f0c5c4..78bfa70 100644 --- a/third_party/blink/renderer/modules/peerconnection/DEPS +++ b/third_party/blink/renderer/modules/peerconnection/DEPS
@@ -40,6 +40,8 @@ specific_include_rules = { ".*test.*": [ + # TODO(crbug.com/1294176): Remove when no longer needed. + "+base/cfi_buildflags.h", "+base/run_loop.h", "+base/test/scoped_run_loop_timeout.h", "+base/test/test_timeouts.h",
diff --git a/third_party/blink/renderer/modules/peerconnection/webrtc_audio_renderer_test.cc b/third_party/blink/renderer/modules/peerconnection/webrtc_audio_renderer_test.cc index 4cf2942..6c80a30 100644 --- a/third_party/blink/renderer/modules/peerconnection/webrtc_audio_renderer_test.cc +++ b/third_party/blink/renderer/modules/peerconnection/webrtc_audio_renderer_test.cc
@@ -9,6 +9,7 @@ #include <vector> #include "base/bind.h" +#include "base/cfi_buildflags.h" #include "base/run_loop.h" #include "build/build_config.h" #include "media/audio/audio_sink_parameters.h" @@ -116,7 +117,8 @@ } // namespace // Flaky on TSAN. See https://crbug.com/1127211 -#if defined(THREAD_SANITIZER) +// Flaky with CFI. See https://crbug.com/1294176 +#if defined(THREAD_SANITIZER) || BUILDFLAG(CFI_CAST_CHECK) #define MAYBE_WebRtcAudioRendererTest DISABLED_WebRtcAudioRendererTest #else #define MAYBE_WebRtcAudioRendererTest WebRtcAudioRendererTest
diff --git a/third_party/blink/renderer/platform/scheduler/common/web_thread_scheduler.cc b/third_party/blink/renderer/platform/scheduler/common/web_thread_scheduler.cc index 614b8a2..85dcc950 100644 --- a/third_party/blink/renderer/platform/scheduler/common/web_thread_scheduler.cc +++ b/third_party/blink/renderer/platform/scheduler/common/web_thread_scheduler.cc
@@ -38,8 +38,7 @@ std::move(message_pump), std::move(settings)) : base::sequence_manager::CreateSequenceManagerOnCurrentThread( std::move(settings)); - return std::make_unique<MainThreadSchedulerImpl>(std::move(sequence_manager), - absl::nullopt); + return std::make_unique<MainThreadSchedulerImpl>(std::move(sequence_manager)); } // static
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl_unittest.cc b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl_unittest.cc index d28c447..3d6fff7 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl_unittest.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/frame_scheduler_impl_unittest.cc
@@ -219,8 +219,7 @@ scheduler_ = std::make_unique<MainThreadSchedulerImpl>( base::sequence_manager::SequenceManagerForTest::Create( nullptr, task_environment_.GetMainThreadTaskRunner(), - task_environment_.GetMockTickClock()), - absl::nullopt); + task_environment_.GetMockTickClock())); agent_group_scheduler_ = scheduler_->CreateAgentGroupScheduler(); page_scheduler_ = CreatePageScheduler(nullptr, scheduler_.get(), *agent_group_scheduler_); @@ -2921,8 +2920,7 @@ base::sequence_manager::SequenceManagerForTest::Create( nullptr, task_environment.GetMainThreadTaskRunner(), - task_environment.GetMockTickClock()), - absl::nullopt) {} + task_environment.GetMockTickClock())) {} MOCK_METHOD(void, OnMainFramePaint, ()); };
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller_unittest.cc b/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller_unittest.cc index 3a31764..d239bf3 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller_unittest.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/frame_task_queue_controller_unittest.cc
@@ -48,8 +48,7 @@ scheduler_ = std::make_unique<MainThreadSchedulerImpl>( base::sequence_manager::SequenceManagerForTest::Create( nullptr, task_environment_.GetMainThreadTaskRunner(), - task_environment_.GetMockTickClock()), - absl::nullopt); + task_environment_.GetMockTickClock())); agent_group_scheduler_ = scheduler_->CreateAgentGroupScheduler(); page_scheduler_ = agent_group_scheduler_->AsAgentGroupScheduler().CreatePageScheduler(
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper_unittest.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper_unittest.cc index ad51f194..a6988a1 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper_unittest.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_metrics_helper_unittest.cc
@@ -27,19 +27,6 @@ namespace blink { namespace scheduler { -namespace { -class MainThreadSchedulerImplForTest : public MainThreadSchedulerImpl { - public: - MainThreadSchedulerImplForTest( - std::unique_ptr<base::sequence_manager::SequenceManager> sequence_manager, - absl::optional<base::Time> initial_virtual_time) - : MainThreadSchedulerImpl(std::move(sequence_manager), - initial_virtual_time) {} - - using MainThreadSchedulerImpl::SetCurrentUseCaseForTest; -}; -} // namespace - using QueueType = MainThreadTaskQueue::QueueType; using base::Bucket; using testing::ElementsAre; @@ -63,11 +50,10 @@ {features:: kPurgeRendererMemoryWhenBackgrounded} /* disabled_features */); histogram_tester_ = std::make_unique<base::HistogramTester>(); - scheduler_ = std::make_unique<MainThreadSchedulerImplForTest>( + scheduler_ = std::make_unique<MainThreadSchedulerImpl>( base::sequence_manager::SequenceManagerForTest::Create( nullptr, task_environment_.GetMainThreadTaskRunner(), - task_environment_.GetMockTickClock()), - absl::nullopt); + task_environment_.GetMockTickClock())); metrics_helper_ = &scheduler_->main_thread_only().metrics_helper; } @@ -236,7 +222,7 @@ base::test::ScopedFeatureList scoped_feature_list_; base::test::TaskEnvironment task_environment_; - std::unique_ptr<MainThreadSchedulerImplForTest> scheduler_; + std::unique_ptr<MainThreadSchedulerImpl> scheduler_; MainThreadMetricsHelper* metrics_helper_; // NOT OWNED std::unique_ptr<base::HistogramTester> histogram_tester_; std::unique_ptr<FakePageScheduler> playing_view_ =
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_perftest.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_perftest.cc index 50178bab..f46e134 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_perftest.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_perftest.cc
@@ -37,8 +37,7 @@ base::sequence_manager::CreateSequenceManagerOnCurrentThreadWithPump( base::MessagePump::Create(base::MessagePumpType::DEFAULT), base::sequence_manager::SequenceManager::Settings::Builder() - .Build()), - absl::nullopt); + .Build())); scheduler_overrider_ = std::make_unique<ScopedSchedulerOverrider>(scheduler_.get()); }
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 9209b68..f44b124 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
@@ -205,8 +205,7 @@ } // namespace MainThreadSchedulerImpl::MainThreadSchedulerImpl( - std::unique_ptr<base::sequence_manager::SequenceManager> sequence_manager, - absl::optional<base::Time> initial_virtual_time) + std::unique_ptr<base::sequence_manager::SequenceManager> sequence_manager) : sequence_manager_(std::move(sequence_manager)), helper_(sequence_manager_.get(), this), idle_helper_queue_(helper_.NewTaskQueue( @@ -301,16 +300,6 @@ internal::ProcessState::Get()->is_process_backgrounded = main_thread_only().renderer_backgrounded.get(); - if (initial_virtual_time) { - main_thread_only().initial_virtual_time = *initial_virtual_time; - // The real uptime of the machine is irrelevant if we're using virtual time - // we choose an arbitrary initial offset. - main_thread_only().initial_virtual_time_ticks = - base::TimeTicks() + base::Seconds(10); - EnableVirtualTime(); - SetVirtualTimePolicy(VirtualTimePolicy::kPause); - } - main_thread_only().current_policy.find_in_page_priority() = find_in_page_budget_pool_controller_->CurrentTaskPriority();
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 096423c..6390d94 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
@@ -152,12 +152,9 @@ static const char* VirtualTimePolicyToString( PageScheduler::VirtualTimePolicy); - // If |initial_virtual_time| is specified then the scheduler will be created - // with virtual time enabled and paused with base::Time will be overridden to - // start at |initial_virtual_time|. - MainThreadSchedulerImpl( - std::unique_ptr<base::sequence_manager::SequenceManager> sequence_manager, - absl::optional<base::Time> initial_virtual_time); + explicit MainThreadSchedulerImpl( + std::unique_ptr<base::sequence_manager::SequenceManager> + sequence_manager); MainThreadSchedulerImpl(const MainThreadSchedulerImpl&) = delete; MainThreadSchedulerImpl& operator=(const MainThreadSchedulerImpl&) = delete;
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc index 84205ec..b09c04b 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_scheduler_impl_unittest.cc
@@ -342,11 +342,9 @@ using MainThreadSchedulerImpl::V8TaskQueue; using MainThreadSchedulerImpl::VirtualTimeControlTaskQueue; - MainThreadSchedulerImplForTest( - std::unique_ptr<base::sequence_manager::SequenceManager> manager, - absl::optional<base::Time> initial_virtual_time) - : MainThreadSchedulerImpl(std::move(manager), initial_virtual_time), - update_policy_count_(0) {} + explicit MainThreadSchedulerImplForTest( + std::unique_ptr<base::sequence_manager::SequenceManager> manager) + : MainThreadSchedulerImpl(std::move(manager)), update_policy_count_(0) {} void UpdatePolicyLocked(UpdateType update_type) override { update_policy_count_++; @@ -422,8 +420,7 @@ nullptr, test_task_runner_, test_task_runner_->GetMockTickClock(), base::sequence_manager::SequenceManager::Settings::Builder() .SetRandomisedSamplingEnabled(true) - .Build()), - absl::nullopt)); + .Build()))); if (initially_ensure_usecase_none_) EnsureUseCaseNone(); } @@ -3393,13 +3390,20 @@ public: void SetUp() override { CreateTestTaskRunner(); - Initialize(std::make_unique<MainThreadSchedulerImplForTest>( - base::sequence_manager::SequenceManagerForTest::Create( - nullptr, test_task_runner_, test_task_runner_->GetMockTickClock(), - base::sequence_manager::SequenceManager::Settings::Builder() - .SetRandomisedSamplingEnabled(true) - .Build()), - base::Time::FromJsTime(1000000.0))); + auto main_thread_scheduler = + std::make_unique<MainThreadSchedulerImplForTest>( + base::sequence_manager::SequenceManagerForTest::Create( + nullptr, test_task_runner_, + test_task_runner_->GetMockTickClock(), + base::sequence_manager::SequenceManager::Settings::Builder() + .SetRandomisedSamplingEnabled(true) + .Build())); + main_thread_scheduler->SetInitialVirtualTime( + base::Time::FromJsTime(1000000.0)); + main_thread_scheduler->EnableVirtualTime(); + main_thread_scheduler->SetVirtualTimePolicy( + PageScheduler::VirtualTimePolicy::kPause); + Initialize(std::move(main_thread_scheduler)); } };
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_unittest.cc b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_unittest.cc index a656e3f70..3558719 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_unittest.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/main_thread_unittest.cc
@@ -57,8 +57,7 @@ base::MessagePump::Create(base::MessagePumpType::DEFAULT), base::sequence_manager::SequenceManager::Settings::Builder() .SetTickClock(&clock_) - .Build()), - absl::nullopt); + .Build())); scheduler_overrider_ = std::make_unique<ScopedSchedulerOverrider>(scheduler_.get()); thread_ = Thread::Current();
diff --git a/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl_unittest.cc b/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl_unittest.cc index 2efe25f1..12862e9 100644 --- a/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl_unittest.cc +++ b/third_party/blink/renderer/platform/scheduler/main_thread/page_scheduler_impl_unittest.cc
@@ -113,8 +113,7 @@ test_task_runner_->AdvanceMockTickClock(base::Milliseconds(5)); scheduler_ = std::make_unique<MainThreadSchedulerImpl>( base::sequence_manager::SequenceManagerForTest::Create( - nullptr, test_task_runner_, test_task_runner_->GetMockTickClock()), - absl::nullopt); + nullptr, test_task_runner_, test_task_runner_->GetMockTickClock())); agent_group_scheduler_ = scheduler_->CreateAgentGroupScheduler(); page_scheduler_delegate_ = std::make_unique<MockPageSchedulerDelegate>(); page_scheduler_ =
diff --git a/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_proxy_unittest.cc b/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_proxy_unittest.cc index 7d0c6ddf..8b08c30 100644 --- a/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_proxy_unittest.cc +++ b/third_party/blink/renderer/platform/scheduler/worker/worker_scheduler_proxy_unittest.cc
@@ -127,8 +127,7 @@ base::sequence_manager::SequenceManagerForTest::Create( nullptr, task_environment_.GetMainThreadTaskRunner(), - task_environment_.GetMockTickClock()), - absl::nullopt)), + task_environment_.GetMockTickClock()))), agent_group_scheduler_( main_thread_scheduler_->CreateAgentGroupScheduler()), page_scheduler_(
diff --git a/third_party/blink/renderer/platform/testing/testing_platform_support_with_mock_scheduler.cc b/third_party/blink/renderer/platform/testing/testing_platform_support_with_mock_scheduler.cc index 26be6993..e9fd28b 100644 --- a/third_party/blink/renderer/platform/testing/testing_platform_support_with_mock_scheduler.cc +++ b/third_party/blink/renderer/platform/testing/testing_platform_support_with_mock_scheduler.cc
@@ -24,7 +24,7 @@ sequence_manager_ = sequence_manager.get(); scheduler_ = std::make_unique<scheduler::MainThreadSchedulerImpl>( - std::move(sequence_manager), absl::nullopt); + std::move(sequence_manager)); main_thread_overrider_ = std::make_unique<ScopedMainThreadOverrider>( scheduler_->CreateMainThread()); // Set the work batch size to one so TakePendingTasks behaves as expected.
diff --git a/third_party/blink/web_tests/external/Version b/third_party/blink/web_tests/external/Version index 7847c10e..b4feb17 100644 --- a/third_party/blink/web_tests/external/Version +++ b/third_party/blink/web_tests/external/Version
@@ -1 +1 @@ -Version: cb51bc2824893e1dbddbe0fa4a4d02a7a7d49166 +Version: 9ed88e9fa342a2320491d435bd5d91a5f546e00e
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json index 5d5f49f..3aeb586f 100644 --- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json +++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -70070,12 +70070,12 @@ ] ], "mix-blend-mode-plus-lighter-svg-basic.html": [ - "4762389ca9257440a1297a3e246af0eddd78bf22", + "c7c3ae9b97747081a0f7880bea6b4b312b19bc01", [ null, [ [ - "/css/compositing/mix-blend-mode/reference/mix-blend-mode-plus-lighter-svg-ref.html", + "/css/compositing/mix-blend-mode/reference/mix-blend-mode-plus-lighter-svg-basic-ref.html", "==" ] ], @@ -241255,7 +241255,7 @@ ], "support": { "plus-lighter.js": [ - "cadefa57282360af0910e9616671f1103c5f4c5d", + "a5d1a34d7ff9afc19a4bdc2bde26a0c794a01cd5", [] ], "utils.js": [ @@ -297382,7 +297382,7 @@ }, "form-submission-0": { "enctypes-helper.js": [ - "53b76b019545a5fc84f011bd7c53910bec44272f", + "0f0d68163da4f32393445439a91f6f0fc5680f3a", [] ], "form-data-set-usv-form.html": [ @@ -455343,7 +455343,7 @@ ] ], "multipart-formdata.window.js": [ - "f26c0723dba4bff046f54d9b0214c75f59d032e9", + "d21eec9eeb0d39a13893cd2dd02032d3eb4ad2b3", [ "html/semantics/forms/form-submission-0/multipart-formdata.window.html", { @@ -455401,7 +455401,7 @@ ] ], "text-plain.window.js": [ - "54bca9e169c0623827fc0e0760eea7f1e5afdd7c", + "508f9884bfdec17adc462731bfcc500fbfd1ac14", [ "html/semantics/forms/form-submission-0/text-plain.window.html", { @@ -455422,7 +455422,7 @@ ] ], "urlencoded2.window.js": [ - "df86abb093dc569b1c6d8eac3bff1533837810fe", + "503391dd6bb687fecb1604363cf166aeedf156b1", [ "html/semantics/forms/form-submission-0/urlencoded2.window.html", {
diff --git a/third_party/blink/web_tests/external/wpt/IndexedDB/idb-partitioned-basic.tentative.sub-expected.txt b/third_party/blink/web_tests/external/wpt/IndexedDB/idb-partitioned-basic.tentative.sub-expected.txt new file mode 100644 index 0000000..f34c47c --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/IndexedDB/idb-partitioned-basic.tentative.sub-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL Simple test for partitioned IndexedDB assert_false: The cross-site iframe should not see the same-site database expected false got true +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/external/wpt/IndexedDB/idb-partitioned-basic.tentative.sub.html b/third_party/blink/web_tests/external/wpt/IndexedDB/idb-partitioned-basic.tentative.sub.html new file mode 100644 index 0000000..326d1f4 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/IndexedDB/idb-partitioned-basic.tentative.sub.html
@@ -0,0 +1,55 @@ +<!doctype html> +<meta charset=utf-8> +<title>IndexedDB: partitioned storage test</title> +<meta name=help href="https://privacycg.github.io/storage-partitioning/"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<iframe id="shared-iframe" src="http://{{host}}:{{ports[http][0]}}/IndexedDB/resources/idb-partitioned-iframe.tentative.html"></iframe> +<body> +<script> +// Here's the set-up for this test: +// Step 1. (window) set up listeners for main window. +// Step 2. (same-site iframe) loads, creates a database, and sends "same-site iframe loaded" message. +// Step 3. (window) receives "same-site iframe loaded" message and opens cross-site window. +// Step 4. (cross-site iframe) loads, checks if database exists, and sends "cross-site iframe loaded" message. +// Step 5. (window) receives "cross-site iframe loaded" message, asserts that database should not exist, sends "delete database" message. +// Step 6. (same-site iframe) receives "delete database" message, deletes the database, sends "database deleted" message. +// Step 7. (window) receives the "database deleted" and then exits. +const altOrigin = "http://{{hosts[alt][]}}:{{ports[http][0]}}"; + +async_test(t => { + const iframe = document.getElementById("shared-iframe"); + + // Step 1 + window.addEventListener("message", t.step_func(e => { + + // Step 3 + if (e.data.message === "same-site iframe loaded") { + if (location.origin !== altOrigin) { + const crossSiteWindow = window.open(`${altOrigin}/IndexedDB/idb-partitioned-basic.tentative.sub.html`, "", "noopener=false"); + t.add_cleanup(() => crossSiteWindow.close()); + } + } + + // Step 5 + if (e.data.message === "cross-site iframe loaded") { + t.step(() => { + assert_false( + e.data.doesDatabaseExist, + "The cross-site iframe should not see the same-site database", + ); + }); + iframe.contentWindow.postMessage( + {message: "delete database"}, + iframe.contentWindow.origin, + ); + }; + + // Step 7 + if (e.data.message === "database deleted") { + t.done(); + }; + })); +}, "Simple test for partitioned IndexedDB"); +</script> +</body>
diff --git a/third_party/blink/web_tests/external/wpt/IndexedDB/resources/idb-partitioned-iframe.tentative.html b/third_party/blink/web_tests/external/wpt/IndexedDB/resources/idb-partitioned-iframe.tentative.html new file mode 100644 index 0000000..ed6bbf27 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/IndexedDB/resources/idb-partitioned-iframe.tentative.html
@@ -0,0 +1,80 @@ +<!doctype html> +<meta charset="utf-8"> +<script> +const dbName = "users"; + +// Create the database at v1 and detect success via `onsuccess`. +function createDatabase() { + return new Promise((resolve, reject) => { + var dbRequest = window.indexedDB.open(dbName, 1); + dbRequest.onblocked = () => reject(); + dbRequest.onerror = () => reject(); + dbRequest.onsuccess = (e) => { + e.target.result.close(); + resolve(); + } + }); +} + +// Open the database at v2 and detect existance via `onupgradeneeded`. +function doesDatabaseExist() { + let didExist = false; + return new Promise((resolve, reject) => { + var dbRequest = window.indexedDB.open(dbName, 2); + dbRequest.onblocked = () => reject(); + dbRequest.onerror = () => reject(); + dbRequest.onsuccess = (e) => { + e.target.result.close(); + deleteDatabase().then(() => resolve(didExist)); + }; + dbRequest.onupgradeneeded = (e) => { + didExist = e.oldVersion != 0; + }; + }); +} + +// Delete the database and detect success via `onsuccess`. +function deleteDatabase() { + return new Promise((resolve, reject) => { + var dbRequest = window.indexedDB.deleteDatabase(dbName); + dbRequest.onblocked = () => reject(); + dbRequest.onerror = () => reject(); + dbRequest.onsuccess = () => resolve(); + }); +} + +window.addEventListener("load", () => { + if (!parent.opener) { + // Step 2 + createDatabase().then(() => { + parent.postMessage( + {message: "same-site iframe loaded"}, + parent.origin, + ); + }); + } else { + // Step 4 + doesDatabaseExist().then((result) => { + parent.opener.postMessage( + { + message: "cross-site iframe loaded", + doesDatabaseExist: result, + }, + parent.opener.origin, + ); + }); + } +}); + +// Step 6 +window.addEventListener("message", (e) => { + if (e.data.message == "delete database") { + deleteDatabase().then(() => { + e.source.postMessage( + {message: "database deleted"}, + e.source.origin, + ); + }); + } +}); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-018.html b/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-018.html new file mode 100644 index 0000000..95bef09 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-018.html
@@ -0,0 +1,22 @@ +<!DOCTYPE html> +<meta charset="UTF-8"> +<title>CSS Highlight API Test: Range across contain boundary is painted</title> +<link rel="help" href="https://drafts.csswg.org/css-highlight-api-1/"> +<link rel="match" href="custom-highlight-painting-001-ref.html"> +<meta name="assert" value="Highlight should be painted even though a Range that crosses a css-contain boundary is a part of it"> +<style> + ::highlight(example-highlight) { + background-color: yellow; + color: blue; + } + #target { + contain: paint; + } +</style> +<body><span>One </span><span id="target"><span>two </span><span>three…</span></span> +<script> + let r = new Range(); + r.setStart(document.body, 0); + r.setEnd(document.querySelector("#target"), 1); + CSS.highlights.set("example-highlight", new Highlight(r)); +</script> \ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-001.html b/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-001.html index 8b116c6..ee81bb8 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-001.html +++ b/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-001.html
@@ -1,17 +1,14 @@ <!DOCTYPE html> <meta charset="UTF-8"> -<title>CSS Highlight API Test: </title> +<title>CSS Highlight API Test: Invalid StaticRanges are not painted</title> <link rel="help" href="https://drafts.csswg.org/css-highlight-api-1/"> <link rel="match" href="custom-highlight-painting-staticrange-001-ref.html"> -<meta name="assert" value="StaticRanges that are invalid, collapsed or that cross only one boundary of a css-contain node should not be painted when they're in a Highlight"> +<meta name="assert" value="StaticRanges that are invalid or collapsed should not be painted when they're in a Highlight"> <style> ::highlight(example-highlight) { background-color: yellow; color: blue; } - #second { - contain: style; - } </style> <body><span id="first">One </span><span id="second">two </span><span id="third">three…</span> <script> @@ -21,7 +18,5 @@ h.add(new StaticRange({startContainer: document.body, startOffset: 1, endContainer: document.body, endOffset: 100})); h.add(new StaticRange({startContainer: document, startOffset: 0, endContainer: document, endOffset: 1})); h.add(new StaticRange({startContainer: document.querySelector("#third").firstChild, startOffset: 1, endContainer: document.querySelector("#first").firstChild, endOffset: 2})); - h.add(new StaticRange({startContainer: document.querySelector("#first").firstChild, startOffset: 1, endContainer: document.querySelector("#second").firstChild, endOffset: 2})); - h.add(new StaticRange({startContainer: document.querySelector("#second").firstChild, startOffset: 1, endContainer: document.querySelector("#third").firstChild, endOffset: 2})); CSS.highlights.set("example-highlight", h); </script> \ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-002.html b/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-002.html index be42809..43a0b06 100644 --- a/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-002.html +++ b/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-002.html
@@ -1,21 +1,21 @@ <!DOCTYPE html> <meta charset="UTF-8"> -<title>CSS Highlight API Test: </title> +<title>CSS Highlight API Test: StaticRange across contain boundary is painted</title> <link rel="help" href="https://drafts.csswg.org/css-highlight-api-1/"> <link rel="match" href="custom-highlight-painting-001-ref.html"> -<meta name="assert" value="StaticRanges crossing both boundaries of a css-contain (i.e. containing it entirely) should be painted"> +<meta name="assert" value="A StaticRange crossing a contain boundary should be painted"> <style> ::highlight(example-highlight) { background-color: yellow; color: blue; } #contained { - contain: style; + contain: paint; } </style> <body><span>One <span id="contained">two </span>three…</span> <script> let h = new Highlight(); - h.add(new StaticRange({startContainer: document.body.firstChild.childNodes[0], startOffset: 0, endContainer: document.body.firstChild.childNodes[2], endOffset: 0})); + h.add(new StaticRange({startContainer: document.body.firstChild.childNodes[0], startOffset: 0, endContainer: document.body.firstChild.childNodes[1], endOffset: 1})); CSS.highlights.set("example-highlight", h); </script> \ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-004.html b/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-004.html deleted file mode 100644 index 14e9766..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-004.html +++ /dev/null
@@ -1,30 +0,0 @@ -<!DOCTYPE html> -<html class="reftest-wait"> -<meta charset="UTF-8"> -<title>CSS Highlight API Test: </title> -<link rel="help" href="https://drafts.csswg.org/css-highlight-api-1/"> -<link rel="match" href="custom-highlight-painting-staticrange-001-ref.html"> -<meta name="assert" value="Highlight is repainted correctly after a node crossed by a StaticRange becomes a containment (so the range is not painted anymore)"> -<script src="resources/run-after-layout-and-paint.js"></script> -<style> - ::highlight(example-highlight) { - background-color: yellow; - color: blue; - } - #contained { - contain: style; - } -</style> -<body><span>One </span><span id="target"><span>two </span><span>three…</span></span> -<script> - let r = new StaticRange({startContainer: document.body, startOffset: 0, endContainer: document.querySelector("#target"), endOffset: 1}); - CSS.highlights.set("example-highlight", new Highlight(r)); - - const targetSpan = document.querySelector("#target"); - // Force frame paint before changing targetSpan's id. - runAfterLayoutAndPaint(()=>{ - targetSpan.id = "contained"; - document.documentElement.removeAttribute("class"); - }); -</script> -</html> \ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-005.html b/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-005.html deleted file mode 100644 index b955b0fc..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-005.html +++ /dev/null
@@ -1,30 +0,0 @@ -<!DOCTYPE html> -<html class="reftest-wait"> -<meta charset="UTF-8"> -<title>CSS Highlight API Test: </title> -<link rel="help" href="https://drafts.csswg.org/css-highlight-api-1/"> -<link rel="match" href="custom-highlight-painting-001-ref.html"> -<meta name="assert" value="Highlight is repainted correctly after a node crossed by a StaticRange is not a containment anymore (so the range should be painted now)"> -<script src="resources/run-after-layout-and-paint.js"></script> -<style> - ::highlight(example-highlight) { - background-color: yellow; - color: blue; - } - #contained { - contain: style; - } -</style> -<body><span>One </span><span id="contained"><span>two </span><span>three…</span></span> -<script> - let r = new StaticRange({startContainer: document.body, startOffset: 0, endContainer: document.querySelector("#contained"), endOffset: 1}); - CSS.highlights.set("example-highlight", new Highlight(r)); - - const targetSpan = document.querySelector("#contained"); - // Force frame paint before changing targetSpan's id. - runAfterLayoutAndPaint(()=>{ - targetSpan.id = "not-contained"; - document.documentElement.removeAttribute("class"); - }); -</script> -</html> \ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-006.html b/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-006.html deleted file mode 100644 index 84361022..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-006.html +++ /dev/null
@@ -1,29 +0,0 @@ -<!DOCTYPE html> -<html class="reftest-wait"> -<meta charset="UTF-8"> -<title>CSS Highlight API Test: </title> -<link rel="help" href="https://drafts.csswg.org/css-highlight-api-1/"> -<link rel="match" href="custom-highlight-painting-staticrange-001-ref.html"> -<meta name="assert" value="Highlight is repainted correctly after a node crossed by a StaticRange becomes a containment because of a CSSStyleSheet change (so the range should be painted now)"> -<script src="resources/run-after-layout-and-paint.js"></script> -<style> - ::highlight(example-highlight) { - background-color: yellow; - color: blue; - } -</style> -<body><span>One </span><span id="target"><span>two </span><span>three…</span></span> -<script> - let r = new StaticRange({startContainer: document.body, startOffset: 0, endContainer: document.querySelector("#target"), endOffset: 1}); - CSS.highlights.set("example-highlight", new Highlight(r)); - - let styles = new CSSStyleSheet(); - document.adoptedStyleSheets = [styles]; - - // Force frame paint before changing the style sheet. - runAfterLayoutAndPaint(()=>{ - styles.replaceSync(`#target { contain: style; }`); - document.documentElement.removeAttribute("class"); - }); -</script> -</html>
diff --git a/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-007.html b/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-007.html deleted file mode 100644 index 03a7ee6..0000000 --- a/third_party/blink/web_tests/external/wpt/css/css-highlight-api/painting/custom-highlight-painting-staticrange-007.html +++ /dev/null
@@ -1,29 +0,0 @@ -<!DOCTYPE html> -<html class="reftest-wait"> -<meta charset="UTF-8"> -<title>CSS Highlight API Test: </title> -<link rel="help" href="https://drafts.csswg.org/css-highlight-api-1/"> -<link rel="match" href="custom-highlight-painting-001-ref.html"> -<meta name="assert" value="Highlight is repainted correctly after a node crossed by a StaticRange is not a containment anymore because of a CSSStyleSheet change (so the range should be painted now)"> -<script src="resources/run-after-layout-and-paint.js"></script> -<style> - ::highlight(example-highlight) { - background-color: yellow; - color: blue; - } -</style> -<body><span>One </span><span id="target"><span>two </span><span>three…</span></span> -<script> - let r = new StaticRange({startContainer: document.body, startOffset: 0, endContainer: document.querySelector("#target"), endOffset: 1}); - let styles = new CSSStyleSheet(); - styles.replaceSync(`#target { contain: style; }`); - document.adoptedStyleSheets = [styles]; - CSS.highlights.set("example-highlight", new Highlight(r)); - - // Force frame paint before changing the style sheet. - runAfterLayoutAndPaint(()=>{ - styles.replaceSync(`#target {}`); - document.documentElement.removeAttribute("class"); - }); -</script> -</html> \ No newline at end of file
diff --git a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/redirect.https.window.js b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/redirect.https.window.js new file mode 100644 index 0000000..fe004d92 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/redirect.https.window.js
@@ -0,0 +1,232 @@ +// META: script=/common/utils.js +// META: script=resources/support.sub.js +// +// Spec: https://wicg.github.io/private-network-access/#integration-fetch +// +// This test verifies that Private Network Access checks are applied to all +// the endpoints in a redirect chain, relative to the same client context. + +// local -> private -> public +// +// Request 1 (local -> private): no preflight. +// Request 2 (local -> public): no preflight. + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_LOCAL }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + response: ResponseBehavior.allowCrossOrigin(), + redirect: preflightUrl({ + server: Server.HTTPS_PUBLIC, + behavior: { response: ResponseBehavior.allowCrossOrigin() }, + }), + } + }, + expected: FetchTestResult.SUCCESS, +}), "local to private to public: success."); + +// local -> private -> local +// +// Request 1 (local -> private): no preflight. +// Request 2 (local -> local): no preflight. +// +// This checks that the client for the second request is still the initial +// context, not the redirector. + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_LOCAL }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + response: ResponseBehavior.allowCrossOrigin(), + redirect: preflightUrl({ + server: Server.HTTPS_LOCAL, + behavior: { response: ResponseBehavior.allowCrossOrigin() }, + }), + } + }, + expected: FetchTestResult.SUCCESS, +}), "local to private to local: success."); + +// private -> private -> local +// +// Request 1 (private -> private): no preflight. +// Request 2 (private -> local): preflight required. +// +// This verifies that PNA checks are applied after redirects. + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PRIVATE }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + redirect: preflightUrl({ + server: Server.HTTPS_LOCAL, + behavior: { response: ResponseBehavior.allowCrossOrigin() }, + }), + } + }, + expected: FetchTestResult.FAILURE, +}), "private to private to local: failed preflight."); + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PRIVATE }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + redirect: preflightUrl({ + server: Server.HTTPS_LOCAL, + behavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + }, + }), + } + }, + expected: FetchTestResult.SUCCESS, +}), "private to private to local: success."); + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PRIVATE }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + redirect: preflightUrl({ + server: Server.HTTPS_LOCAL, + behavior: { preflight: PreflightBehavior.success(token()) }, + }), + } + }, + fetchOptions: { mode: "no-cors" }, + expected: FetchTestResult.OPAQUE, +}), "private to private to local: no-cors success."); + +// private -> local -> private +// +// Request 1 (private -> local): preflight required. +// Request 2 (private -> private): no preflight. +// +// This verifies that PNA checks are applied independently to every step in a +// redirect chain. + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PRIVATE }, + target: { + server: Server.HTTPS_LOCAL, + behavior: { + response: ResponseBehavior.allowCrossOrigin(), + redirect: preflightUrl({ + server: Server.HTTPS_PRIVATE, + }), + } + }, + expected: FetchTestResult.FAILURE, +}), "private to local to private: failed preflight."); + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PRIVATE }, + target: { + server: Server.HTTPS_LOCAL, + behavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + redirect: preflightUrl({ + server: Server.HTTPS_PRIVATE, + behavior: { response: ResponseBehavior.allowCrossOrigin() }, + }), + } + }, + expected: FetchTestResult.SUCCESS, +}), "private to local to private: success."); + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PRIVATE }, + target: { + server: Server.HTTPS_LOCAL, + behavior: { + preflight: PreflightBehavior.success(token()), + redirect: preflightUrl({ server: Server.HTTPS_PRIVATE }), + } + }, + fetchOptions: { mode: "no-cors" }, + expected: FetchTestResult.OPAQUE, +}), "private to local to private: no-cors success."); + +// public -> private -> local +// +// Request 1 (public -> private): preflight required. +// Request 2 (public -> local): preflight required. +// +// This verifies that PNA checks are applied to every step in a redirect chain. + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PUBLIC }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + response: ResponseBehavior.allowCrossOrigin(), + redirect: preflightUrl({ + server: Server.HTTPS_LOCAL, + behavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + }, + }), + } + }, + expected: FetchTestResult.FAILURE, +}), "public to private to local: failed first preflight."); + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PUBLIC }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + redirect: preflightUrl({ + server: Server.HTTPS_LOCAL, + behavior: { + response: ResponseBehavior.allowCrossOrigin(), + }, + }), + } + }, + expected: FetchTestResult.FAILURE, +}), "public to private to local: failed second preflight."); + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PUBLIC }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + redirect: preflightUrl({ + server: Server.HTTPS_LOCAL, + behavior: { + preflight: PreflightBehavior.success(token()), + response: ResponseBehavior.allowCrossOrigin(), + }, + }), + } + }, + expected: FetchTestResult.SUCCESS, +}), "public to private to local: success."); + +promise_test(t => fetchTest(t, { + source: { server: Server.HTTPS_PUBLIC }, + target: { + server: Server.HTTPS_PRIVATE, + behavior: { + preflight: PreflightBehavior.success(token()), + redirect: preflightUrl({ + server: Server.HTTPS_LOCAL, + behavior: { preflight: PreflightBehavior.success(token()) }, + }), + } + }, + fetchOptions: { mode: "no-cors" }, + expected: FetchTestResult.OPAQUE, +}), "public to private to local: no-cors success.");
diff --git a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/resources/preflight.py b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/resources/preflight.py index bc225045..730a553 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/resources/preflight.py +++ b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/resources/preflight.py
@@ -36,6 +36,8 @@ # # The following parameters only affect non-preflight responses: # +# - redirect: If set, the response code is set to 301 and the `Location` +# response header is set to this value. # - mime-type: If set, the `Content-Type` response header is set to this value. # - file: Specifies a path (relative to this file's directory) to a file. If # set, the response body is copied from this file. @@ -123,6 +125,11 @@ mode = request.GET.get(b"final-headers") headers = _get_response_headers(request.method, mode) + redirect = request.GET.get(b"redirect") + if redirect is not None: + headers.append(("Location", redirect)) + return (301, headers, b"") + mime_type = request.GET.get(b"mime-type") if mime_type is not None: headers.append(("Content-Type", mime_type),)
diff --git a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/resources/support.sub.js b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/resources/support.sub.js index 98ae1f3..ecb8b819 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/resources/support.sub.js +++ b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/resources/support.sub.js
@@ -128,22 +128,27 @@ return options; } -// Computes options to pass to `resolveUrl()` for `resources/preflight.py`. +// Computes the URL of a preflight handler configured with the given options. // // `server` identifies the server from which to load the resource. // `behavior` specifies the behavior of the target server. It may contain: // - `preflight`: The result of calling one of `PreflightBehavior`'s methods. // - `response`: The result of calling one of `ResponseBehavior`'s methods. -function targetResolveOptions({ server, behavior }) { +// - `redirect`: A URL to which the target should redirect GET requests. +function preflightUrl({ server, behavior }) { const options = {...server}; if (behavior) { - const { preflight, response } = behavior; + const { preflight, response, redirect } = behavior; options.searchParams = { ...preflight, ...response, }; + if (redirect !== undefined) { + options.searchParams.redirect = redirect; + } } - return options; + + return resolveUrl("resources/preflight.py", options); } // Methods generate behavior specifications for how `resources/preflight.py` @@ -206,7 +211,7 @@ // // Optional. Passed to `sourceResolveOptions()`. // source, // -// // Optional. Passed to `targetResolveOptions()`. +// // Optional. Passed to `preflightUrl()`. // target, // // // Optional. Passed to `fetch()`. @@ -220,8 +225,7 @@ const sourceUrl = resolveUrl("resources/fetcher.html", sourceResolveOptions(source)); - const targetUrl = - resolveUrl("resources/preflight.py", targetResolveOptions(target)); + const targetUrl = preflightUrl(target); const iframe = await appendIframe(t, document, sourceUrl); const reply = futureMessage(); @@ -264,7 +268,7 @@ // // Optional. Passed to `sourceResolveOptions()`. // source, // -// // Optional. Passed to `targetResolveOptions()`. +// // Optional. Passed to `preflightUrl()`. // target, // // // Optional. Method to use when sending the request. Defaults to "GET". @@ -278,8 +282,7 @@ const sourceUrl = resolveUrl("resources/xhr-sender.html", sourceResolveOptions(source)); - const targetUrl = - resolveUrl("resources/preflight.py", targetResolveOptions(target)); + const targetUrl = preflightUrl(target); const iframe = await appendIframe(t, document, sourceUrl); const reply = futureMessage(); @@ -344,8 +347,7 @@ }; function workerScriptUrl(target) { - const url = - resolveUrl("resources/preflight.py", targetResolveOptions(target)); + const url = preflightUrl(target); url.searchParams.append("body", "postMessage({ loaded: true })") url.searchParams.append("mime-type", "application/javascript") @@ -395,8 +397,7 @@ const sourceUrl = resolveUrl("resources/shared-worker-fetcher.html", sourceResolveOptions(source)); - const targetUrl = - resolveUrl("resources/preflight.py", targetResolveOptions(target)); + const targetUrl = preflightUrl(target); targetUrl.searchParams.append( "body", "onconnect = (e) => e.ports[0].postMessage({ loaded: true })") @@ -418,8 +419,7 @@ }; async function workerFetchTest(t, { source, target, expected }) { - const targetUrl = - resolveUrl("resources/preflight.py", targetResolveOptions(target)); + const targetUrl = preflightUrl(target); const sourceUrl = resolveUrl("resources/fetcher.js", sourceResolveOptions(source)); @@ -439,8 +439,7 @@ } async function sharedWorkerFetchTest(t, { source, target, expected }) { - const targetUrl = - resolveUrl("resources/preflight.py", targetResolveOptions(target)); + const targetUrl = preflightUrl(target); const sourceUrl = resolveUrl("resources/shared-fetcher.js", sourceResolveOptions(source));
diff --git a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker-fetch.https.window.js b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker-fetch.https.window.js index edb20c04..5645d78 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker-fetch.https.window.js +++ b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker-fetch.https.window.js
@@ -21,8 +21,7 @@ const scriptUrl = resolveUrl("resources/service-worker.js", sourceResolveOptions(source)); - const realTargetUrl = - resolveUrl("resources/preflight.py", targetResolveOptions(target)); + const realTargetUrl = preflightUrl(target); // Fetch a URL within the service worker's scope, but tell it which URL to // really fetch.
diff --git a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker-update.https.window.js b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker-update.https.window.js index 703c7650..aa0a770b 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker-update.https.window.js +++ b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker-update.https.window.js
@@ -28,8 +28,7 @@ "resources/service-worker-bridge.html", sourceResolveOptions({ server: target.server })); - const scriptUrl = - resolveUrl("resources/preflight.py", targetResolveOptions(target)); + const scriptUrl = preflightUrl(target); scriptUrl.searchParams.append("treat-as-public-once", token()); scriptUrl.searchParams.append("mime-type", "application/javascript"); scriptUrl.searchParams.append("file", "service-worker.js");
diff --git a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker.https.window.js b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker.https.window.js index 3d3845b..9133846 100644 --- a/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker.https.window.js +++ b/third_party/blink/web_tests/external/wpt/fetch/private-network-access/service-worker.https.window.js
@@ -24,8 +24,7 @@ const sourceUrl = resolveUrl("resources/service-worker-bridge.html", sourceResolveOptions(source)); - const targetUrl = - resolveUrl("resources/preflight.py", targetResolveOptions(target)); + const targetUrl = preflightUrl(target); targetUrl.searchParams.append("body", "undefined"); targetUrl.searchParams.append("mime-type", "application/javascript");
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/render-blocking/render-blocked-apis-by-preload-link.tentative.html b/third_party/blink/web_tests/external/wpt/html/dom/render-blocking/render-blocked-apis-by-preload-link.tentative.html index cbc7a9a..8219fc8a 100644 --- a/third_party/blink/web_tests/external/wpt/html/dom/render-blocking/render-blocked-apis-by-preload-link.tentative.html +++ b/third_party/blink/web_tests/external/wpt/html/dom/render-blocking/render-blocked-apis-by-preload-link.tentative.html
@@ -2,8 +2,6 @@ <title>Certain APIs should not trigger while rendering is blocked by a preload link</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> -<script src="/resources/testdriver.js"></script> -<script src="/resources/testdriver-vendor.js"></script> <script src="support/test-render-blocking.js"></script> <link id="font-preload" rel="preload" as="font" blocking="render" crossorigin
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/render-blocking/render-blocked-apis-by-stylesheet-link.tentative.html b/third_party/blink/web_tests/external/wpt/html/dom/render-blocking/render-blocked-apis-by-stylesheet-link.tentative.html new file mode 100644 index 0000000..30b60fc --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/html/dom/render-blocking/render-blocked-apis-by-stylesheet-link.tentative.html
@@ -0,0 +1,18 @@ +<!doctype html> +<title>Certain APIs should not trigger while rendering is blocked by a stylesheet link</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="support/test-render-blocking.js"></script> +<script> +// Test case must be set up before the stylesheet, because the stylesheet is +// script-blocking, which means we can't set it up while the stylesheet is +// loading. +test_render_blocked_apis(() => { + let color = getComputedStyle(document.querySelector('.target')).color; + assert_equals(color, 'rgb(255, 0, 0)'); +}, 'Render-blocking stylesheet is applied'); +</script> +<link rel="stylesheet" href="support/target-red.css?pipe=trickle(d1)"> +<div class="target"> + This should be red +</div>
diff --git a/third_party/blink/web_tests/external/wpt/html/dom/render-blocking/support/test-render-blocking.js b/third_party/blink/web_tests/external/wpt/html/dom/render-blocking/support/test-render-blocking.js index 5d193a4..b3d09abaa 100644 --- a/third_party/blink/web_tests/external/wpt/html/dom/render-blocking/support/test-render-blocking.js +++ b/third_party/blink/web_tests/external/wpt/html/dom/render-blocking/support/test-render-blocking.js
@@ -119,27 +119,31 @@ createAutofocusTarget(), 'focus', 'Should not flush autofocus candidates when render-blocked'); - // requestFullscreen() below will trigger viewport resize. - test_event_blocked( - window, 'resize', - 'Should not run the resize steps when render-blocked'); - const scrollTarget = createScrollTarget(); test_event_blocked( scrollTarget, 'scroll', 'Should not run the scroll steps when render-blocked', () => scrollTarget.scrollTop = 100); + test_event_blocked( + createAnimationTarget(), ['animationstart', 'animationend'], + 'Should not run the update animations and send events steps when render-blocked'); + + /* TODO(xiaochengh): requestFullscreen() with test driver currently causes + * memory leak in Blink web test runner. Fix it and re-enable these tests. + * See https://crbug.com/1293987 for details + * + // requestFullscreen() below will trigger viewport resize. + test_event_blocked( + window, 'resize', + 'Should not run the resize steps when render-blocked'); + // requestFullscreen() below will change the matches state test_event_blocked( matchMedia('all and (display-mode: fullscreen)'), 'change', 'Should not run the evaluate media queries and report changes steps when render-blocked'); test_event_blocked( - createAnimationTarget(), ['animationstart', 'animationend'], - 'Should not run the update animations and send events steps when render-blocked'); - - test_event_blocked( document, ['fullscreenchange', 'fullscreenerror'], 'Should not run the fullscreen steps when render-blocked', () => { @@ -149,6 +153,7 @@ .then(() => document.exitFullscreen())); } }); + */ // We should also verify that the context lost steps for canvas are not run, // but there's currently no way to reliably trigger a context lost in WPT.
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/enctypes-helper.js b/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/enctypes-helper.js index 53b76b0..0f0d681 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/enctypes-helper.js +++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/enctypes-helper.js
@@ -1,3 +1,36 @@ +// This file exposes the `formSubmissionTemplate` function, which can be used +// to create tests for the form submission encoding of various enctypes: +// +// const urlencodedTest = formSubmissionTemplate( +// "application/x-www-form-urlencoded", +// (expected, _actualFormBody) => expected +// ); +// +// urlencodedTest({ +// name: "a", +// value: "b", +// expected: "a=b", +// formEncoding: "UTF-8", // optional +// description: "Simple urlencoded test" +// }); +// +// The above call to `urlencodedTest` tests the urlencoded form submission for a +// form whose entry list contains a single entry with name "a" and value "b", +// and it checks that the form payload matches the `expected` property after +// isomorphic-encoding. +// +// Since per the spec no normalization of the form entries should happen before +// the actual form encoding, each call to `urlencodedTest` will in fact add two +// tests: one submitting the entry as a form control (marked "normal form"), and +// one adding the entry through the `formdata` event (marked "formdata event"). +// Both cases are compared against the same expected value. +// +// Since multipart/form-data boundary strings can't be predicted ahead of time, +// the second parameter of `formSubmissionTemplate` allows transforming the +// expected value passed to each test. The second argument of that callback +// is the actual form body (isomorphic-decoded). When this callback is used, the +// `expected` property doesn't need to be a string. + (() => { // Using echo-content-escaped.py rather than // /fetch/api/resources/echo-content.py to work around WebKit not @@ -7,7 +40,7 @@ const IFRAME_NAME = "formtargetframe"; - // Undoes the escapes from /fetch/api/resources/echo-content.py + // Undoes the escapes from echo-content-escaped.py function unescape(str) { return str .replace(/\r\n?|\n/g, "\r\n") @@ -18,9 +51,12 @@ .replace(/\\\\/g, "\\"); } + // Tests the form submission of an entry list containing a single entry. + // // `expectedBuilder` is a function that takes in the actual form body // (necessary to get the multipart/form-data payload) and returns the form // body that should be expected. + // // If `testFormData` is false, the form entry will be submitted in for // controls. If it is true, it will submitted by modifying the entry list // during the `formdata` event. @@ -90,12 +126,25 @@ // This function returns a function to add individual form tests corresponding // to some enctype. - // `expectedBuilder` is a function that takes two parameters: `expected` (the - // `expected` value of a test) and `serialized` (the actual form body - // submitted by the browser), and returns the correct form body that should - // have been submitted. This is necessary in order to account for th + // `expectedBuilder` is an optional callback that takes two parameters: + // `expected` (the `expected` property passed to a test) and `actualFormBody` + // (the actual form body submitted by the browser, isomorphic-decoded). It + // must return the correct form body that should have been submitted, + // isomorphic-encoded. This is necessary in order to account for the // multipart/form-data boundary. - window.formSubmissionTemplate = (enctype, expectedBuilder) => { + // + // The returned function takes an object with the following properties: + // - `name`, the form entry's name. Must be a string. + // - `value`, the form entry's value, either a string or a `File` object. + // - `expected`, the expected form body. Usually a string, but it can be + // anything depending on `expectedBuilder`. + // - `formEncoding` (optional), the character encoding used for submitting the + // form. + // - `description`, used as part of the testharness test's description. + window.formSubmissionTemplate = ( + enctype, + expectedBuilder = (expected) => expected + ) => { function form({ name, value,
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/multipart-formdata.window.js b/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/multipart-formdata.window.js index f26c0723d..d21eec9 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/multipart-formdata.window.js +++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/multipart-formdata.window.js
@@ -3,7 +3,10 @@ // Form submissions in multipart/form-data are also tested in // /FileAPI/file/send-file* -const form = formSubmissionTemplate( +// The `expected` property of objects passed to `formTest` must be an object +// with `name`, `value` and optionally `filename` properties, which represent +// the corresponding data in a multipart/form-data part. +const formTest = formSubmissionTemplate( "multipart/form-data", ({ name, filename, value }, serialized) => { let headers; @@ -29,7 +32,7 @@ }, ); -form({ +formTest({ name: "basic", value: "test", expected: { @@ -39,7 +42,7 @@ description: "Basic test", }); -form({ +formTest({ name: "basic", value: new File([], "file-test.txt", { type: "text/plain" }), expected: { @@ -50,7 +53,7 @@ description: "Basic File test", }); -form({ +formTest({ name: "a\0b", value: "c", expected: { @@ -60,7 +63,7 @@ description: "0x00 in name", }); -form({ +formTest({ name: "a", value: "b\0c", expected: { @@ -70,7 +73,7 @@ description: "0x00 in value", }); -form({ +formTest({ name: "a", value: new File([], "b\0c", { type: "text/plain" }), expected: { @@ -81,7 +84,7 @@ description: "0x00 in filename", }); -form({ +formTest({ name: "a\nb", value: "c", expected: { @@ -91,7 +94,7 @@ description: "\\n in name", }); -form({ +formTest({ name: "a\rb", value: "c", expected: { @@ -101,7 +104,7 @@ description: "\\r in name", }); -form({ +formTest({ name: "a\r\nb", value: "c", expected: { @@ -111,7 +114,7 @@ description: "\\r\\n in name", }); -form({ +formTest({ name: "a\n\rb", value: "c", expected: { @@ -121,7 +124,7 @@ description: "\\n\\r in name", }); -form({ +formTest({ name: "a", value: "b\nc", expected: { @@ -131,7 +134,7 @@ description: "\\n in value", }); -form({ +formTest({ name: "a", value: "b\rc", expected: { @@ -141,7 +144,7 @@ description: "\\r in value", }); -form({ +formTest({ name: "a", value: "b\r\nc", expected: { @@ -151,7 +154,7 @@ description: "\\r\\n in value", }); -form({ +formTest({ name: "a", value: "b\n\rc", expected: { @@ -161,7 +164,7 @@ description: "\\n\\r in value", }); -form({ +formTest({ name: "a", value: new File([], "b\nc", { type: "text/plain" }), expected: { @@ -172,7 +175,7 @@ description: "\\n in filename", }); -form({ +formTest({ name: "a", value: new File([], "b\rc", { type: "text/plain" }), expected: { @@ -183,7 +186,7 @@ description: "\\r in filename", }); -form({ +formTest({ name: "a", value: new File([], "b\r\nc", { type: "text/plain" }), expected: { @@ -194,7 +197,7 @@ description: "\\r\\n in filename", }); -form({ +formTest({ name: "a", value: new File([], "b\n\rc", { type: "text/plain" }), expected: { @@ -205,7 +208,7 @@ description: "\\n\\r in filename", }); -form({ +formTest({ name: 'a"b', value: "c", expected: { @@ -215,7 +218,7 @@ description: "double quote in name", }); -form({ +formTest({ name: "a", value: 'b"c', expected: { @@ -225,7 +228,7 @@ description: "double quote in value", }); -form({ +formTest({ name: "a", value: new File([], 'b"c', { type: "text/plain" }), expected: { @@ -236,7 +239,7 @@ description: "double quote in filename", }); -form({ +formTest({ name: "a'b", value: "c", expected: { @@ -246,7 +249,7 @@ description: "single quote in name", }); -form({ +formTest({ name: "a", value: "b'c", expected: { @@ -256,7 +259,7 @@ description: "single quote in value", }); -form({ +formTest({ name: "a", value: new File([], "b'c", { type: "text/plain" }), expected: { @@ -267,7 +270,7 @@ description: "single quote in filename", }); -form({ +formTest({ name: "a\\b", value: "c", expected: { @@ -277,7 +280,7 @@ description: "backslash in name", }); -form({ +formTest({ name: "a", value: "b\\c", expected: { @@ -287,7 +290,7 @@ description: "backslash in value", }); -form({ +formTest({ name: "a", value: new File([], "b\\c", { type: "text/plain" }), expected: { @@ -298,7 +301,7 @@ description: "backslash in filename", }); -form({ +formTest({ name: "áb", value: "ç", expected: { @@ -308,7 +311,7 @@ description: "non-ASCII in name and value", }); -form({ +formTest({ name: "a", value: new File([], "É™.txt", { type: "text/plain" }), expected: { @@ -319,7 +322,7 @@ description: "non-ASCII in filename", }); -form({ +formTest({ name: "aÉ™b", value: "c\uFFFDd", formEncoding: "windows-1252", @@ -330,7 +333,7 @@ description: "characters not in encoding in name and value", }); -form({ +formTest({ name: "á", value: new File([], "💩", { type: "text/plain" }), formEncoding: "windows-1252",
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/text-plain.window.js b/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/text-plain.window.js index 54bca9e1..508f9884 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/text-plain.window.js +++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/text-plain.window.js
@@ -1,207 +1,204 @@ // META: script=enctypes-helper.js -const form = formSubmissionTemplate( - "text/plain", - (expected) => expected, -); +const formTest = formSubmissionTemplate("text/plain"); -form({ +formTest({ name: "basic", value: "test", expected: "basic=test\r\n", description: "Basic test", }); -form({ +formTest({ name: "basic", value: new File([], "file-test.txt"), expected: "basic=file-test.txt\r\n", description: "Basic File test", }); -form({ +formTest({ name: "a\0b", value: "c", expected: "a\0b=c\r\n", description: "0x00 in name", }); -form({ +formTest({ name: "a", value: "b\0c", expected: "a=b\0c\r\n", description: "0x00 in value", }); -form({ +formTest({ name: "a", value: new File([], "b\0c"), expected: "a=b\0c\r\n", description: "0x00 in filename", }); -form({ +formTest({ name: "a\nb", value: "c", expected: "a\r\nb=c\r\n", description: "\\n in name", }); -form({ +formTest({ name: "a\rb", value: "c", expected: "a\r\nb=c\r\n", description: "\\r in name", }); -form({ +formTest({ name: "a\r\nb", value: "c", expected: "a\r\nb=c\r\n", description: "\\r\\n in name", }); -form({ +formTest({ name: "a\n\rb", value: "c", expected: "a\r\n\r\nb=c\r\n", description: "\\n\\r in name", }); -form({ +formTest({ name: "a", value: "b\nc", expected: "a=b\r\nc\r\n", description: "\\n in value", }); -form({ +formTest({ name: "a", value: "b\rc", expected: "a=b\r\nc\r\n", description: "\\r in value", }); -form({ +formTest({ name: "a", value: "b\r\nc", expected: "a=b\r\nc\r\n", description: "\\r\\n in value", }); -form({ +formTest({ name: "a", value: "b\n\rc", expected: "a=b\r\n\r\nc\r\n", description: "\\n\\r in value", }); -form({ +formTest({ name: "a", value: new File([], "b\nc"), expected: "a=b\r\nc\r\n", description: "\\n in filename", }); -form({ +formTest({ name: "a", value: new File([], "b\rc"), expected: "a=b\r\nc\r\n", description: "\\r in filename", }); -form({ +formTest({ name: "a", value: new File([], "b\r\nc"), expected: "a=b\r\nc\r\n", description: "\\r\\n in filename", }); -form({ +formTest({ name: "a", value: new File([], "b\n\rc"), expected: "a=b\r\n\r\nc\r\n", description: "\\n\\r in filename", }); -form({ +formTest({ name: 'a"b', value: "c", expected: 'a"b=c\r\n', description: "double quote in name", }); -form({ +formTest({ name: "a", value: 'b"c', expected: 'a=b"c\r\n', description: "double quote in value", }); -form({ +formTest({ name: "a", value: new File([], 'b"c'), expected: 'a=b"c\r\n', description: "double quote in filename", }); -form({ +formTest({ name: "a'b", value: "c", expected: "a'b=c\r\n", description: "single quote in name", }); -form({ +formTest({ name: "a", value: "b'c", expected: "a=b'c\r\n", description: "single quote in value", }); -form({ +formTest({ name: "a", value: new File([], "b'c"), expected: "a=b'c\r\n", description: "single quote in filename", }); -form({ +formTest({ name: "a\\b", value: "c", expected: "a\\b=c\r\n", description: "backslash in name", }); -form({ +formTest({ name: "a", value: "b\\c", expected: "a=b\\c\r\n", description: "backslash in value", }); -form({ +formTest({ name: "a", value: new File([], "b\\c"), expected: "a=b\\c\r\n", description: "backslash in filename", }); -form({ +formTest({ name: "áb", value: "ç", expected: "\xC3\xA1b=\xC3\xA7\r\n", description: "non-ASCII in name and value", }); -form({ +formTest({ name: "a", value: new File([], "É™.txt"), expected: "a=\xC9\x99.txt\r\n", description: "non-ASCII in filename", }); -form({ +formTest({ name: "aÉ™b", value: "c\uFFFDd", formEncoding: "windows-1252", @@ -209,7 +206,7 @@ description: "characters not in encoding in name and value", }); -form({ +formTest({ name: "á", value: new File([], "💩"), formEncoding: "windows-1252",
diff --git a/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/urlencoded2.window.js b/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/urlencoded2.window.js index df86abb..503391d 100644 --- a/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/urlencoded2.window.js +++ b/third_party/blink/web_tests/external/wpt/html/semantics/forms/form-submission-0/urlencoded2.window.js
@@ -1,207 +1,204 @@ // META: script=enctypes-helper.js -const form = formSubmissionTemplate( - "application/x-www-form-urlencoded", - (expected) => expected, -); +const formTest = formSubmissionTemplate("application/x-www-form-urlencoded"); -form({ +formTest({ name: "basic", value: "test", expected: "basic=test", description: "Basic test", }); -form({ +formTest({ name: "basic", value: new File([], "file-test.txt"), expected: "basic=file-test.txt", description: "Basic File test", }); -form({ +formTest({ name: "a\0b", value: "c", expected: "a%00b=c", description: "0x00 in name", }); -form({ +formTest({ name: "a", value: "b\0c", expected: "a=b%00c", description: "0x00 in value", }); -form({ +formTest({ name: "a", value: new File([], "b\0c"), expected: "a=b%00c", description: "0x00 in filename", }); -form({ +formTest({ name: "a\nb", value: "c", expected: "a%0D%0Ab=c", description: "\\n in name", }); -form({ +formTest({ name: "a\rb", value: "c", expected: "a%0D%0Ab=c", description: "\\r in name", }); -form({ +formTest({ name: "a\r\nb", value: "c", expected: "a%0D%0Ab=c", description: "\\r\\n in name", }); -form({ +formTest({ name: "a\n\rb", value: "c", expected: "a%0D%0A%0D%0Ab=c", description: "\\n\\r in name", }); -form({ +formTest({ name: "a", value: "b\nc", expected: "a=b%0D%0Ac", description: "\\n in value", }); -form({ +formTest({ name: "a", value: "b\rc", expected: "a=b%0D%0Ac", description: "\\r in value", }); -form({ +formTest({ name: "a", value: "b\r\nc", expected: "a=b%0D%0Ac", description: "\\r\\n in value", }); -form({ +formTest({ name: "a", value: "b\n\rc", expected: "a=b%0D%0A%0D%0Ac", description: "\\n\\r in value", }); -form({ +formTest({ name: "a", value: new File([], "b\nc"), expected: "a=b%0D%0Ac", description: "\\n in filename", }); -form({ +formTest({ name: "a", value: new File([], "b\rc"), expected: "a=b%0D%0Ac", description: "\\r in filename", }); -form({ +formTest({ name: "a", value: new File([], "b\r\nc"), expected: "a=b%0D%0Ac", description: "\\r\\n in filename", }); -form({ +formTest({ name: "a", value: new File([], "b\n\rc"), expected: "a=b%0D%0A%0D%0Ac", description: "\\n\\r in filename", }); -form({ +formTest({ name: 'a"b', value: "c", expected: "a%22b=c", description: "double quote in name", }); -form({ +formTest({ name: "a", value: 'b"c', expected: "a=b%22c", description: "double quote in value", }); -form({ +formTest({ name: "a", value: new File([], 'b"c'), expected: "a=b%22c", description: "double quote in filename", }); -form({ +formTest({ name: "a'b", value: "c", expected: "a%27b=c", description: "single quote in name", }); -form({ +formTest({ name: "a", value: "b'c", expected: "a=b%27c", description: "single quote in value", }); -form({ +formTest({ name: "a", value: new File([], "b'c"), expected: "a=b%27c", description: "single quote in filename", }); -form({ +formTest({ name: "a\\b", value: "c", expected: "a%5Cb=c", description: "backslash in name", }); -form({ +formTest({ name: "a", value: "b\\c", expected: "a=b%5Cc", description: "backslash in value", }); -form({ +formTest({ name: "a", value: new File([], "b\\c"), expected: "a=b%5Cc", description: "backslash in filename", }); -form({ +formTest({ name: "áb", value: "ç", expected: "%C3%A1b=%C3%A7", description: "non-ASCII in name and value", }); -form({ +formTest({ name: "a", value: new File([], "É™.txt"), expected: "a=%C9%99.txt", description: "non-ASCII in filename", }); -form({ +formTest({ name: "aÉ™b", value: "c\uFFFDd", formEncoding: "windows-1252", @@ -209,7 +206,7 @@ description: "characters not in encoding in name and value", }); -form({ +formTest({ name: "á", value: new File([], "💩"), formEncoding: "windows-1252",
diff --git a/third_party/blink/web_tests/external/wpt/mediacapture-streams/MediaStreamTrack-iframe-transfer.https.html b/third_party/blink/web_tests/external/wpt/mediacapture-streams/MediaStreamTrack-iframe-transfer.https.html new file mode 100644 index 0000000..28ff506b --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/mediacapture-streams/MediaStreamTrack-iframe-transfer.https.html
@@ -0,0 +1,26 @@ +<!doctype html> +<title>MediaStreamTrack transfer to iframe</title> +<script src=/resources/testharness.js></script> +<script src=/resources/testharnessreport.js></script> +<script> +promise_test(async () => { + const iframe = document.createElement("iframe"); + const stream = await navigator.mediaDevices.getUserMedia({video: true}); + const track = stream.getVideoTracks()[0]; + const result = new Promise((resolve, reject) => { + window.onmessage = (e) => { + if (e.data.result === 'Failure') { + reject('Failed: ' + e.data.error); + } else { + resolve(); + } + }; + }); + iframe.addEventListener("load", () => { + iframe.contentWindow.postMessage(track); + }); + iframe.src = "support/iframe-MediaStreamTrack-transfer.html"; + document.body.appendChild(iframe); + return result; +}); +</script>
diff --git a/third_party/blink/web_tests/external/wpt/mediacapture-streams/support/iframe-MediaStreamTrack-transfer.html b/third_party/blink/web_tests/external/wpt/mediacapture-streams/support/iframe-MediaStreamTrack-transfer.html new file mode 100644 index 0000000..e8d6aac --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/mediacapture-streams/support/iframe-MediaStreamTrack-transfer.html
@@ -0,0 +1,21 @@ +<!DOCTYPE html> +<html> + <head> + <title>iframe</title> + <script> + function onMsg(e) { + if(e.data instanceof MediaStreamTrack) { + parent.postMessage({result: 'Success'}); + } else { + parent.postMessage({ + result: 'Failure', + error: `${e.data} is not a MediaStreamTrack` + }); + } + } + window.addEventListener("message", onMsg); + </script> + </head> + <body> + </body> +</html>
diff --git a/third_party/webrtc_overrides/metronome_task_queue_factory.h b/third_party/webrtc_overrides/metronome_task_queue_factory.h index 3b4ec2a..02f8d35 100644 --- a/third_party/webrtc_overrides/metronome_task_queue_factory.h +++ b/third_party/webrtc_overrides/metronome_task_queue_factory.h
@@ -9,6 +9,7 @@ #include "base/feature_list.h" #include "base/memory/scoped_refptr.h" +#include "base/metrics/field_trial_params.h" #include "third_party/webrtc/api/task_queue/task_queue_factory.h" #include "third_party/webrtc/rtc_base/system/rtc_export.h" #include "third_party/webrtc_overrides/metronome_source.h"
diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ids.spec index 0e2a900..2453d2d 100644 --- a/tools/gritsettings/resource_ids.spec +++ b/tools/gritsettings/resource_ids.spec
@@ -827,10 +827,6 @@ "messages": [4380], }, - "headless/lib/resources/headless_lib_resources.grd": { - "includes": [4400], - }, - "mojo/public/js/mojo_bindings_resources.grd": { "includes": [4420], },
diff --git a/tools/mb/mb_config.pyl b/tools/mb/mb_config.pyl index 1e577b5..3be1140 100644 --- a/tools/mb/mb_config.pyl +++ b/tools/mb/mb_config.pyl
@@ -841,7 +841,6 @@ 'android_arm64_dbg_recipe': 'android_debug_trybot_compile_only_arm64_fastbuild', 'android-binary-size': 'android_binary_size', 'android_blink_rel': 'android_release_trybot', - 'android_cfi_rel_ng': 'android_cfi_full_cfi_diag_thin_lto_release_static_dcheck_always_on_goma', 'android_compile_dbg': 'android_debug_trybot_compile_only', 'android_compile_x64_dbg': 'android_debug_trybot_compile_only_x64', 'android_compile_x86_dbg': 'android_debug_trybot_compile_only_x86', @@ -1263,10 +1262,6 @@ 'android', 'cast', 'clang', 'debug_static_bot', 'compile_only', ], - 'android_cfi_full_cfi_diag_thin_lto_release_static_dcheck_always_on_goma': [ - 'android', 'cfi_full', 'cfi_diag', 'thin_lto', 'release', 'static', 'dcheck_always_on', 'goma', - ], - 'android_clang_asan_debug_bot_reclient': [ 'android', 'clang', 'asan', 'debug_bot_reclient', 'strip_debug_info', ],
diff --git a/tools/mb/mb_config_expectations/tryserver.chromium.android.json b/tools/mb/mb_config_expectations/tryserver.chromium.android.json index b712890..1b511d8 100644 --- a/tools/mb/mb_config_expectations/tryserver.chromium.android.json +++ b/tools/mb/mb_config_expectations/tryserver.chromium.android.json
@@ -1048,21 +1048,6 @@ "use_goma": true } }, - "android_cfi_rel_ng": { - "gn_args": { - "dcheck_always_on": true, - "ffmpeg_branding": "Chrome", - "is_cfi": true, - "is_component_build": false, - "is_debug": false, - "proprietary_codecs": true, - "target_os": "android", - "use_cfi_cast": true, - "use_cfi_diag": true, - "use_goma": true, - "use_thin_lto": true - } - }, "android_compile_dbg": { "gn_args": { "ffmpeg_branding": "Chrome",
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index 2313f8d3..7dfe271 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -3629,6 +3629,8 @@ <int value="24" label="Overlapping apps dialog shown"/> <int value="25" label="Window mode changed to browser"/> <int value="26" label="Window mode changed to window"/> + <int value="27" label="Run on OS Login mode turned on"/> + <int value="28" label="Run on OS Login mode turned off"/> </enum> <enum name="AppMenuHighlightItem"> @@ -16399,6 +16401,9 @@ </enum> <enum name="ConversionPostSendReportDeleteEvent"> + <obsolete> + The error rate is not high enough to merit monitoring. + </obsolete> <int value="0" label="Started"/> <int value="1" label="Succeeded"/> <int value="2" label="Failed"/> @@ -55267,6 +55272,7 @@ <int value="871713352" label="ImprovedLanguageSettings:enabled"/> <int value="872509587" label="ArcWindowPredictor:enabled"/> <int value="873323760" label="MediaFoundationClearPlayback:disabled"/> + <int value="875077636" label="OriginAgentClusterDefaultEnable:disabled"/> <int value="876349279" label="WebViewExtraHeadersSameDomainOnly:enabled"/> <int value="876879670" label="OfflinePagesInDownloadHomeOpenInCct:enabled"/> <int value="877059804" label="AutofillPreventMixedFormsFilling:disabled"/> @@ -55480,6 +55486,7 @@ <int value="1036565901" label="AssistPersonalInfo:enabled"/> <int value="1036958177" label="enable-experimental-accessibility-dictation-extension"/> + <int value="1037038569" label="OriginAgentClusterDefaultEnable:enabled"/> <int value="1037961753" label="CCTIncognito:disabled"/> <int value="1038264914" label="PerDeskShelf:enabled"/> <int value="1042202617" label="RemoteCopyReceiver:enabled"/> @@ -64957,6 +64964,7 @@ <int value="3" label="NTP containing Discover feed wrapper fixed"/> <int value="4" label="Content suggestions view controller not cleaned up on restart"/> + <int value="5" label="ELM collection view containing feed header fixed"/> </enum> <enum name="NTPCustomizeAction">
diff --git a/tools/metrics/histograms/metadata/android/histograms.xml b/tools/metrics/histograms/metadata/android/histograms.xml index 6956d06e0..92fe699 100644 --- a/tools/metrics/histograms/metadata/android/histograms.xml +++ b/tools/metrics/histograms/metadata/android/histograms.xml
@@ -954,6 +954,18 @@ </summary> </histogram> +<histogram name="Android.DynamicColors.IsAvailable" enum="Boolean" + expires_after="2023-02-02"> + <owner>skym@chromium.org</owner> + <owner>clank-sbui-team@google.com</owner> + <summary> + Recorded during ChromeBaseAppCompatActivity initialization if third_party + dynamic colors logic thinks dynamic colors are available. This is often + based on Android version and OEM. This metric is not related to whether + dynamic colors are desired by features/experiments. + </summary> +</histogram> + <histogram base="true" name="Android.FeatureModules.AvailabilityStatus" enum="FeatureModuleAvailabilityStatus" expires_after="2022-06-13"> <!-- Name completed by histogram_suffixes
diff --git a/tools/metrics/histograms/metadata/browser/histograms.xml b/tools/metrics/histograms/metadata/browser/histograms.xml index 1e0e4d3..92f4d2f 100644 --- a/tools/metrics/histograms/metadata/browser/histograms.xml +++ b/tools/metrics/histograms/metadata/browser/histograms.xml
@@ -565,6 +565,16 @@ <token key="TabSwitchingType" variants="TabSwitchingType"/> </histogram> +<histogram name="Browser.ThemeService.WritePackToDisk" enum="BooleanSuccess" + expires_after="M105"> + <owner>etienneb@chromium.org</owner> + <owner>sky@chromium.org</owner> + <summary> + For each attempt to write a theme pack on disk, counts whether the attempt + succeeded. + </summary> +</histogram> + <histogram name="Browser.WindowCount.Guest" units="units" expires_after="2022-06-19"> <owner>rhalavati@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/others/histograms.xml b/tools/metrics/histograms/metadata/others/histograms.xml index 3b7f539..733dbb4 100644 --- a/tools/metrics/histograms/metadata/others/histograms.xml +++ b/tools/metrics/histograms/metadata/others/histograms.xml
@@ -3426,6 +3426,10 @@ <histogram name="Conversions.DeleteSentReportOperation" enum="ConversionPostSendReportDeleteEvent" expires_after="M105"> + <obsolete> + The error rate is not high enough to merit monitoring. Removed on + 2022-02-02. + </obsolete> <owner>apaseltiner@chromium.org</owner> <owner>johnidel@chromium.org</owner> <owner>measurement-api-dev+metrics@google.com</owner>
diff --git a/tools/perf/core/perfetto_binary_roller/binary_deps.json b/tools/perf/core/perfetto_binary_roller/binary_deps.json index c2adf7b..8a626df 100644 --- a/tools/perf/core/perfetto_binary_roller/binary_deps.json +++ b/tools/perf/core/perfetto_binary_roller/binary_deps.json
@@ -6,7 +6,7 @@ }, "win": { "hash": "dd95274958d71a189df0b6033cc1f0b6e1f4c036", - "remote_path": "perfetto_binaries/trace_processor_shell/win/e7314895882693974527529802b087ab54f83702/trace_processor_shell.exe" + "remote_path": "perfetto_binaries/trace_processor_shell/win/d7a3889b04b51adc5e1f8f51d9203847f43fe469/trace_processor_shell.exe" }, "linux_arm": { "hash": "58893933be305d3bfe0a72ebebcacde2ac3ca893", @@ -14,7 +14,7 @@ }, "mac": { "hash": "c5cdc3dd4386ea2979b7fd2c7a6e03061d346097", - "remote_path": "perfetto_binaries/trace_processor_shell/mac/f2de2a9b26320a7e763e64858a65bc953fab035d/trace_processor_shell" + "remote_path": "perfetto_binaries/trace_processor_shell/mac/e7314895882693974527529802b087ab54f83702/trace_processor_shell" }, "mac_arm64": { "hash": "c0397e87456ad6c6a7aa0133e5b81c97adbab4ab", @@ -22,7 +22,7 @@ }, "linux": { "hash": "e77b1decbe72adff8b2fba5322e941d478833c9b", - "remote_path": "perfetto_binaries/trace_processor_shell/linux/e7314895882693974527529802b087ab54f83702/trace_processor_shell" + "remote_path": "perfetto_binaries/trace_processor_shell/linux/d7a3889b04b51adc5e1f8f51d9203847f43fe469/trace_processor_shell" } }, "power_profile.sql": {
diff --git a/tools/perf/page_sets/rendering/throughput_test_cases.py b/tools/perf/page_sets/rendering/throughput_test_cases.py index 51e1357..c03ce0f 100644 --- a/tools/perf/page_sets/rendering/throughput_test_cases.py +++ b/tools/perf/page_sets/rendering/throughput_test_cases.py
@@ -147,6 +147,13 @@ 'main-animations-half-presented.html') +class NoUpdateCompositorAnimationWithJankyMainAnimation(ThroughputMetricStory): + BASE_NAME = 'no_update_compositor_animation_with_janky_main_animation' + SUPPORTED_PLATFORMS = platforms.ALL_PLATFORMS + URL = ('file://../../../../chrome/test/data/perf/throughput_test_cases/' + 'mixed-jank.html') + + class ThroughputScrolling(ThroughputMetricStory): ABSTRACT_STORY = True URL = ('file://../../../../chrome/test/data/perf/throughput_test_cases/'
diff --git a/ui/base/ui_base_features.cc b/ui/base/ui_base_features.cc index d564d79..3450af6 100644 --- a/ui/base/ui_base_features.cc +++ b/ui/base/ui_base_features.cc
@@ -6,6 +6,7 @@ #include <stdlib.h> +#include "base/metrics/field_trial_params.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" @@ -334,10 +335,18 @@ // Enable raw draw for tiles. const base::Feature kRawDraw{"RawDraw", base::FEATURE_DISABLED_BY_DEFAULT}; +// Tile size = viewport size * TileSizeFactor +const base::FeatureParam<double> kRawDrawTileSizeFactor{&kRawDraw, + "TileSizeFactor", 1}; + bool IsUsingRawDraw() { return base::FeatureList::IsEnabled(kRawDraw); } +double RawDrawTileSizeFactor() { + return kRawDrawTileSizeFactor.Get(); +} + const base::Feature kUiCompositorReleaseTileResourcesForHiddenLayers{ "UiCompositorReleaseTileResourcesForHiddenLayers", base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/ui/base/ui_base_features.h b/ui/base/ui_base_features.h index 6a49493a..4a915d6 100644 --- a/ui/base/ui_base_features.h +++ b/ui/base/ui_base_features.h
@@ -192,6 +192,7 @@ // Enables Raw Draw. COMPONENT_EXPORT(UI_BASE_FEATURES) extern const base::Feature kRawDraw; COMPONENT_EXPORT(UI_BASE_FEATURES) bool IsUsingRawDraw(); +COMPONENT_EXPORT(UI_BASE_FEATURES) double RawDrawTileSizeFactor(); COMPONENT_EXPORT(UI_BASE_FEATURES) extern const base::Feature kUiCompositorReleaseTileResourcesForHiddenLayers;
diff --git a/ui/color/color_provider_utils.cc b/ui/color/color_provider_utils.cc index 53e52014..7ad92f5 100644 --- a/ui/color/color_provider_utils.cc +++ b/ui/color/color_provider_utils.cc
@@ -6,6 +6,7 @@ #include "base/containers/contains.h" #include "base/containers/fixed_flat_map.h" +#include "base/no_destructor.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "third_party/skia/include/core/SkColor.h" @@ -54,8 +55,12 @@ kColorOverlayScrollbarStrokeHoveredLight}, }; +ColorProviderUtilsCallbacks* g_color_provider_utils_callbacks = nullptr; + } // namespace +ColorProviderUtilsCallbacks::~ColorProviderUtilsCallbacks() = default; + base::StringPiece ColorModeName(ColorProviderManager::ColorMode color_mode) { switch (color_mode) { case ColorProviderManager::ColorMode::kLight: @@ -99,7 +104,11 @@ auto* i = color_id_map.find(color_id); if (i != color_id_map.cend()) return i->second; - return "<invalid>"; + base::StringPiece color_name; + if (g_color_provider_utils_callbacks && + g_color_provider_utils_callbacks->ColorIdName(color_id, &color_name)) + return color_name; + return base::StringPrintf("ColorId(%d)", color_id); } #include "ui/color/color_id_map_macros.inc" @@ -300,4 +309,8 @@ return true; } +void SetColorProviderUtilsCallbacks(ColorProviderUtilsCallbacks* callbacks) { + g_color_provider_utils_callbacks = callbacks; +} + } // namespace ui
diff --git a/ui/color/color_provider_utils.h b/ui/color/color_provider_utils.h index b931a10c..1f3cec2 100644 --- a/ui/color/color_provider_utils.h +++ b/ui/color/color_provider_utils.h
@@ -7,6 +7,7 @@ #include <string> +#include "base/callback.h" #include "base/component_export.h" #include "base/strings/string_piece.h" #include "third_party/skia/include/core/SkColor.h" @@ -18,6 +19,12 @@ using RendererColorMap = base::flat_map<color::mojom::RendererColorId, SkColor>; +class COMPONENT_EXPORT(COLOR) ColorProviderUtilsCallbacks { + public: + virtual ~ColorProviderUtilsCallbacks(); + virtual bool ColorIdName(ColorId color_id, base::StringPiece* color_name) = 0; +}; + // The following functions convert various values to strings intended for // logging. Do not retain the results for longer than the scope in which these // functions are called. @@ -73,6 +80,11 @@ const ColorProvider& color_provider, const RendererColorMap& renderer_color_map); +// Sets the callback for converting a ChromColorId to a string name. This is +// used by ColorIdName. Only one callback is allowed. +void COMPONENT_EXPORT(COLOR) + SetColorProviderUtilsCallbacks(ColorProviderUtilsCallbacks* callbacks); + } // namespace ui #endif // UI_COLOR_COLOR_PROVIDER_UTILS_H_
diff --git a/ui/gl/gl_image_egl_angle_vulkan.cc b/ui/gl/gl_image_egl_angle_vulkan.cc index 7a43590..2765869 100644 --- a/ui/gl/gl_image_egl_angle_vulkan.cc +++ b/ui/gl/gl_image_egl_angle_vulkan.cc
@@ -11,6 +11,7 @@ #include "ui/gl/gl_context_egl.h" #include "ui/gl/gl_surface_egl.h" +#define EGL_TEXTURE_INTERNAL_FORMAT_ANGLE 0x345D #define EGL_VULKAN_IMAGE_ANGLE 0x34D3 #define EGL_VULKAN_IMAGE_CREATE_INFO_HI_ANGLE 0x34D4 #define EGL_VULKAN_IMAGE_CREATE_INFO_LO_ANGLE 0x34D5 @@ -23,7 +24,8 @@ GLImageEGLAngleVulkan::~GLImageEGLAngleVulkan() = default; bool GLImageEGLAngleVulkan::Initialize(VkImage image, - const VkImageCreateInfo* create_info) { + const VkImageCreateInfo* create_info, + unsigned int internal_format) { DCHECK(image != VK_NULL_HANDLE); DCHECK(create_info); @@ -33,6 +35,8 @@ static_cast<EGLint>((info >> 32) & 0xffffffff), EGL_VULKAN_IMAGE_CREATE_INFO_LO_ANGLE, static_cast<EGLint>(info & 0xffffffff), + EGL_TEXTURE_INTERNAL_FORMAT_ANGLE, + static_cast<EGLint>(internal_format), EGL_NONE, };
diff --git a/ui/gl/gl_image_egl_angle_vulkan.h b/ui/gl/gl_image_egl_angle_vulkan.h index c14e85e..3a41ae92 100644 --- a/ui/gl/gl_image_egl_angle_vulkan.h +++ b/ui/gl/gl_image_egl_angle_vulkan.h
@@ -21,7 +21,9 @@ GLImageEGLAngleVulkan(const GLImageEGLAngleVulkan&) = delete; GLImageEGLAngleVulkan& operator=(const GLImageEGLAngleVulkan&) = delete; - bool Initialize(VkImage image, const VkImageCreateInfo* create_info); + bool Initialize(VkImage image, + const VkImageCreateInfo* create_info, + unsigned int internal_format); protected: ~GLImageEGLAngleVulkan() override;
diff --git a/ui/gl/gl_surface_egl_surface_control.cc b/ui/gl/gl_surface_egl_surface_control.cc index bf1bfad..4699f94 100644 --- a/ui/gl/gl_surface_egl_surface_control.cc +++ b/ui/gl/gl_surface_egl_surface_control.cc
@@ -345,7 +345,6 @@ bool is_primary_plane = false; if (scoped_hardware_buffer) { hardware_buffer = scoped_hardware_buffer->buffer(); - fence_fd = scoped_hardware_buffer->TakeFence(); // We currently only promote the display compositor's buffer or a video // buffer to an overlay. So if this buffer is not for video then it implies @@ -374,8 +373,7 @@ if (gpu_fence && surface_state.hardware_buffer) { auto fence_handle = gpu_fence->GetGpuFenceHandle().Clone(); DCHECK(!fence_handle.is_null()); - fence_fd = - MergeFDs(std::move(fence_fd), std::move(fence_handle.owned_fd)); + fence_fd = std::move(fence_handle.owned_fd); } if (is_primary_plane) {
diff --git a/ui/snapshot/snapshot_aura_unittest.cc b/ui/snapshot/snapshot_aura_unittest.cc index 999e4fa..a16786c5 100644 --- a/ui/snapshot/snapshot_aura_unittest.cc +++ b/ui/snapshot/snapshot_aura_unittest.cc
@@ -91,15 +91,14 @@ } // namespace -// Param specifies whether to use SkiaRenderer or not -class SnapshotAuraTest : public testing::TestWithParam<bool> { +class SnapshotAuraTest : public testing::Test { public: - SnapshotAuraTest() {} + SnapshotAuraTest() = default; SnapshotAuraTest(const SnapshotAuraTest&) = delete; SnapshotAuraTest& operator=(const SnapshotAuraTest&) = delete; - ~SnapshotAuraTest() override {} + ~SnapshotAuraTest() override = default; void SetUp() override { testing::Test::SetUp(); @@ -110,8 +109,8 @@ // The ContextFactory must exist before any Compositors are created. // Snapshot test tests real drawing and readback, so needs pixel output. const bool enable_pixel_output = true; - context_factories_ = std::make_unique<ui::TestContextFactories>( - enable_pixel_output, GetParam()); + context_factories_ = + std::make_unique<ui::TestContextFactories>(enable_pixel_output); helper_ = std::make_unique<aura::test::AuraTestHelper>( context_factories_->GetContextFactory()); @@ -194,8 +193,6 @@ std::vector<unsigned char> png_representation_; }; -INSTANTIATE_TEST_SUITE_P(All, SnapshotAuraTest, ::testing::Bool()); - #if BUILDFLAG(IS_WIN) && !defined(NDEBUG) // https://crbug.com/852512 #define MAYBE_FullScreenWindow DISABLED_FullScreenWindow @@ -205,7 +202,7 @@ #else #define MAYBE_FullScreenWindow FullScreenWindow #endif -TEST_P(SnapshotAuraTest, MAYBE_FullScreenWindow) { +TEST_F(SnapshotAuraTest, MAYBE_FullScreenWindow) { #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA) // TODO(https://crbug.com/1143031): Fix this test to run in < action_timeout() // on the Linux Debug & TSAN bots. @@ -229,7 +226,7 @@ EXPECT_EQ(0u, GetFailedPixelsCount(snapshot)); } -TEST_P(SnapshotAuraTest, PartialBounds) { +TEST_F(SnapshotAuraTest, PartialBounds) { #if BUILDFLAG(IS_WIN) // TODO(https://crbug.com/850556): Make work on Win10. base::win::Version version = base::win::GetVersion(); @@ -245,7 +242,7 @@ EXPECT_EQ(0u, GetFailedPixelsCount(snapshot)); } -TEST_P(SnapshotAuraTest, Rotated) { +TEST_F(SnapshotAuraTest, Rotated) { #if BUILDFLAG(IS_WIN) // TODO(https://crbug.com/850556): Make work on Win10. base::win::Version version = base::win::GetVersion(); @@ -263,7 +260,7 @@ EXPECT_EQ(0u, GetFailedPixelsCount(snapshot)); } -TEST_P(SnapshotAuraTest, UIScale) { +TEST_F(SnapshotAuraTest, UIScale) { #if BUILDFLAG(IS_WIN) // TODO(https://crbug.com/850556): Make work on Win10. base::win::Version version = base::win::GetVersion(); @@ -287,7 +284,7 @@ EXPECT_EQ(0u, GetFailedPixelsCountWithScaleFactor(snapshot, 1 / kUIScale)); } -TEST_P(SnapshotAuraTest, DeviceScaleFactor) { +TEST_F(SnapshotAuraTest, DeviceScaleFactor) { #if BUILDFLAG(IS_WIN) // TODO(https://crbug.com/850556): Make work on Win10. base::win::Version version = base::win::GetVersion(); @@ -310,7 +307,7 @@ EXPECT_EQ(0u, GetFailedPixelsCountWithScaleFactor(snapshot, 2)); } -TEST_P(SnapshotAuraTest, RotateAndUIScale) { +TEST_F(SnapshotAuraTest, RotateAndUIScale) { #if BUILDFLAG(IS_WIN) // TODO(https://crbug.com/850556): Make work on Win10. base::win::Version version = base::win::GetVersion(); @@ -335,7 +332,7 @@ EXPECT_EQ(0u, GetFailedPixelsCountWithScaleFactor(snapshot, 1 / kUIScale)); } -TEST_P(SnapshotAuraTest, RotateAndUIScaleAndScaleFactor) { +TEST_F(SnapshotAuraTest, RotateAndUIScaleAndScaleFactor) { #if BUILDFLAG(IS_WIN) // TODO(https://crbug.com/850556): Make work on Win10. base::win::Version version = base::win::GetVersion();
diff --git a/ui/webui/resources/cr_components/app_management/BUILD.gn b/ui/webui/resources/cr_components/app_management/BUILD.gn index e76bee7e..d9af008 100644 --- a/ui/webui/resources/cr_components/app_management/BUILD.gn +++ b/ui/webui/resources/cr_components/app_management/BUILD.gn
@@ -16,6 +16,7 @@ "icons.ts", "more_permissions_item.ts", "permission_item.ts", + "run_on_os_login_item.ts", "shared_style.ts", "shared_vars.ts", "toggle_row.ts",
diff --git a/ui/webui/resources/cr_components/app_management/app_management.mojom b/ui/webui/resources/cr_components/app_management/app_management.mojom index 0cbabb3..5c43257 100644 --- a/ui/webui/resources/cr_components/app_management/app_management.mojom +++ b/ui/webui/resources/cr_components/app_management/app_management.mojom
@@ -65,6 +65,10 @@ // Used to set the Window Mode from the frontend inside // app_management_page_handler. SetWindowMode(string app_id, apps.mojom.WindowMode window_mode); + // Used to set the Run On OS Login Modes from the frontend + // of an app via app_management_page_handler. + SetRunOnOsLoginMode(string app_id, + apps.mojom.RunOnOsLoginMode run_on_os_login_mode); }; // Frontend interface.
diff --git a/ui/webui/resources/cr_components/app_management/constants.ts b/ui/webui/resources/cr_components/app_management/constants.ts index a044aa1d..09c0ac7 100644 --- a/ui/webui/resources/cr_components/app_management/constants.ts +++ b/ui/webui/resources/cr_components/app_management/constants.ts
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -export {AppType, InstallReason, OptionalBool, WindowMode} from './types.mojom-webui.js'; +export {AppType, InstallReason, OptionalBool, RunOnOsLogin, RunOnOsLoginMode, WindowMode} from './types.mojom-webui.js'; /** * The number of apps displayed in app list in the main view before expanding. @@ -72,4 +72,6 @@ OverlappingAppsDialogShown = 24, WindowModeChangedToBrowser = 25, WindowModeChangedToWindow = 26, + RunOnOsLoginModeTurnedOn = 27, + RunOnOsLoginModeTurnedOff = 28, }
diff --git a/ui/webui/resources/cr_components/app_management/run_on_os_login_item.html b/ui/webui/resources/cr_components/app_management/run_on_os_login_item.html new file mode 100644 index 0000000..b698188 --- /dev/null +++ b/ui/webui/resources/cr_components/app_management/run_on_os_login_item.html
@@ -0,0 +1,8 @@ +<template is="dom-if" if="[[available_]]"> + <app-management-toggle-row + id="toggle-row" + label="[[loginModeLabel]]" + managed="[[isManaged_(app)]]" + value="[[getValue_(app)]]"> + </app-management-toggle-row> + </template> \ No newline at end of file
diff --git a/ui/webui/resources/cr_components/app_management/run_on_os_login_item.ts b/ui/webui/resources/cr_components/app_management/run_on_os_login_item.ts new file mode 100644 index 0000000..1891b3b41 --- /dev/null +++ b/ui/webui/resources/cr_components/app_management/run_on_os_login_item.ts
@@ -0,0 +1,146 @@ +// Copyright 2022 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import './shared_style.js'; +import './toggle_row.js'; + +import {assert, assertNotReached} from '//resources/js/assert.m.js'; +import {html, PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; + +import {App} from './app_management.mojom-webui.js'; +import {BrowserProxy} from './browser_proxy.js'; +import {AppManagementUserAction, RunOnOsLoginMode} from './constants.js'; +import {AppManagementToggleRowElement} from './toggle_row.js'; +import {recordAppManagementUserAction} from './util.js'; + +export class AppManagementRunOnOsLoginItemElement extends PolymerElement { + static get is() { + return 'app-management-run-on-os-login-item'; + } + + static get template() { + return html`{__html_template__}`; + } + + static get properties() { + return { + loginModeLabel: String, + + app: Object, + + available_: { + type: Boolean, + computed: 'isAvailable_(app)', + reflectToAttribute: true, + }, + }; + } + + loginModeLabel: String; + app: App; + + ready() { + super.ready(); + this.addEventListener('click', this.onClick_); + this.addEventListener('change', this.toggleOsLoginMode_); + } + + private isAvailable_(app: App): boolean { + if (app === undefined) { + return false; + } + assert(app); + return app.runOnOsLogin !== undefined; + } + + private isManaged_(app: App): boolean { + if (app === undefined || !this.isAvailable_(app)) { + return false; + } + assert(app); + + const loginData = app.runOnOsLogin; + if (loginData) { + return loginData.isManaged; + } + return false; + } + + + private getValue_(app: App): boolean { + if (app === undefined) { + return false; + } + assert(app); + + const loginMode = this.getRunOnOsLoginMode(app); + assert(loginMode); + + if (loginMode) { + return this.getRunOnOsLoginModeBoolean(loginMode); + } + return false; + } + + private onClick_() { + this.shadowRoot! + .querySelector<AppManagementToggleRowElement>('#toggle-row')!.click(); + } + + toggleOsLoginMode_() { + assert(this.app); + const currentRunOnOsLoginData = this.app.runOnOsLogin; + if (currentRunOnOsLoginData) { + const currentRunOnOsLoginMode = currentRunOnOsLoginData.loginMode; + if (currentRunOnOsLoginMode === RunOnOsLoginMode.kUnknown) { + assertNotReached(); + } + const newRunOnOsLoginMode = + (currentRunOnOsLoginMode === RunOnOsLoginMode.kNotRun) ? + RunOnOsLoginMode.kWindowed : + RunOnOsLoginMode.kNotRun; + BrowserProxy.getInstance().handler.setRunOnOsLoginMode( + this.app.id, + newRunOnOsLoginMode, + ); + const booleanWindowMode = + this.getRunOnOsLoginModeBoolean(newRunOnOsLoginMode); + const windowModeChangeAction = booleanWindowMode ? + AppManagementUserAction.RunOnOsLoginModeTurnedOn : + AppManagementUserAction.RunOnOsLoginModeTurnedOff; + recordAppManagementUserAction(this.app.type, windowModeChangeAction); + } + } + + private getRunOnOsLoginMode(app: App): RunOnOsLoginMode|null { + if (app.runOnOsLogin) { + return app.runOnOsLogin.loginMode; + } + return null; + } + + private convertModeToBoolean(runOnOsLoginMode: RunOnOsLoginMode): boolean { + switch (runOnOsLoginMode) { + case RunOnOsLoginMode.kNotRun: + return false; + case RunOnOsLoginMode.kWindowed: + return true; + default: + assertNotReached(); + return false; + } + } + + private getRunOnOsLoginModeBoolean(runOnOsLoginMode: RunOnOsLoginMode): + boolean { + assert( + runOnOsLoginMode !== RunOnOsLoginMode.kUnknown, + 'Run on OS Login Mode is not set'); + return this.convertModeToBoolean(runOnOsLoginMode); + } +} + +customElements.define( + AppManagementRunOnOsLoginItemElement.is, + AppManagementRunOnOsLoginItemElement); \ No newline at end of file
diff --git a/ui/webui/resources/cr_components/app_management/util.ts b/ui/webui/resources/cr_components/app_management/util.ts index 33473a1..4f57246 100644 --- a/ui/webui/resources/cr_components/app_management/util.ts +++ b/ui/webui/resources/cr_components/app_management/util.ts
@@ -5,7 +5,7 @@ import {assert, assertNotReached} from 'chrome://resources/js/assert.m.js'; import {App} from './app_management.mojom-webui.js'; -import {AppManagementUserAction, AppType, OptionalBool, WindowMode} from './constants.js'; +import {AppManagementUserAction, AppType, OptionalBool} from './constants.js'; import {PermissionType, PermissionTypeIndex} from './permission_constants.js'; import {isPermissionEnabled} from './permission_util.js'; @@ -123,20 +123,3 @@ chrome.metricsPrivate.recordEnumerationValue( histogram, userAction, enumLength); } - -function convertWindowModeToBool(windowMode: WindowMode): boolean { - switch (windowMode) { - case WindowMode.kBrowser: - return false; - case WindowMode.kWindow: - return true; - default: - assertNotReached(); - return false; - } -} - -export function getWindowModeBoolean(windowMode: WindowMode): boolean { - assert(windowMode !== WindowMode.kUnknown, 'Window Mode Not Set'); - return convertWindowModeToBool(windowMode); -} \ No newline at end of file
diff --git a/ui/webui/resources/cr_components/app_management/window_mode_item.ts b/ui/webui/resources/cr_components/app_management/window_mode_item.ts index 0c413b1..9f57afd 100644 --- a/ui/webui/resources/cr_components/app_management/window_mode_item.ts +++ b/ui/webui/resources/cr_components/app_management/window_mode_item.ts
@@ -12,7 +12,7 @@ import {BrowserProxy} from './browser_proxy.js'; import {AppManagementUserAction, WindowMode} from './constants.js'; import {AppManagementToggleRowElement} from './toggle_row.js'; -import {getWindowModeBoolean, recordAppManagementUserAction} from './util.js'; +import {recordAppManagementUserAction} from './util.js'; export class AppManagementWindowModeElement extends PolymerElement { static get is() { @@ -62,7 +62,7 @@ return false; } assert(app); - return getWindowModeBoolean(app.windowMode); + return this.getWindowModeBoolean(app.windowMode); } private onClick_() { @@ -83,12 +83,29 @@ this.app.id, newWindowMode, ); - const booleanWindowMode = getWindowModeBoolean(newWindowMode); + const booleanWindowMode = this.getWindowModeBoolean(newWindowMode); const windowModeChangeAction = booleanWindowMode ? AppManagementUserAction.WindowModeChangedToWindow : AppManagementUserAction.WindowModeChangedToBrowser; recordAppManagementUserAction(this.app.type, windowModeChangeAction); } + + private convertWindowModeToBool(windowMode: WindowMode): boolean { + switch (windowMode) { + case WindowMode.kBrowser: + return false; + case WindowMode.kWindow: + return true; + default: + assertNotReached(); + return false; + } + } + + private getWindowModeBoolean(windowMode: WindowMode): boolean { + assert(windowMode !== WindowMode.kUnknown, 'Window Mode Not Set'); + return this.convertWindowModeToBool(windowMode); + } } customElements.define(
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/WebLayerImpl.java b/weblayer/browser/java/org/chromium/weblayer_private/WebLayerImpl.java index 6774271..037dcac 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/WebLayerImpl.java +++ b/weblayer/browser/java/org/chromium/weblayer_private/WebLayerImpl.java
@@ -42,6 +42,7 @@ import org.chromium.base.StrictModeContext; import org.chromium.base.TraceEvent; import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.DoNotInline; import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.NativeMethods; import org.chromium.base.compat.ApiHelperForO; @@ -996,11 +997,26 @@ return; } final Intent intent = new Intent(); - intent.setClassName(WebViewFactory.getLoadedPackageInfo().packageName, + intent.setClassName(getWebViewFactoryPackageName(), EmbeddedComponentLoader.AW_COMPONENTS_PROVIDER_SERVICE); new EmbeddedComponentLoader(Arrays.asList(componentPolicies)).connect(intent); } + /** + * WebViewFactory is not a public android API so R8 is unable to compute its + * API level. This causes R8 to not be able to inline WebLayerImplJni#get + * into WebLayerImpl#loadComponents. + + * References to WebViewFactory are in a separate method to avoid this issue + * and allow WebLayerImplJni#get to be inlined into WebLayerImpl#loadComponents. + * @DoNotInline is to avoid any similar inlining issues whenever this method + * is referenced. + */ + @DoNotInline + private static String getWebViewFactoryPackageName() { + return WebViewFactory.getLoadedPackageInfo().packageName; + } + @NativeMethods interface Natives { void setRemoteDebuggingEnabled(boolean enabled);