| # Copyright 2022 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| from telemetry.page import cache_temperature as cache_temperature_module |
| from telemetry.page import page as page_module |
| from telemetry.page import shared_page_state |
| from telemetry import story |
| |
| URL_LIST = [ |
| "https://ad.doubleclick.net/ddm/adi/N378.275220.MYBESTOPTION.IT4/B9340305.127562781;sz=970x250", |
| "https://ad.doubleclick.net/ddm/adi/N378.275220.MYBESTOPTION.IT4/B9340305.128470354;sz=300x600", |
| "https://ad.doubleclick.net/ddm/adi/N378.275220.MYBESTOPTION.IT4/B8455269.126839257;sz=970x250", |
| "https://ad.doubleclick.net/ddm/adi/N378.275220.MYBESTOPTION.IT4/B9340305.127461685;sz=970x250", |
| "https://ad.doubleclick.net/ddm/adi/N378.3159.GOOGLE3/B9340305.138620671;sz=970x250", |
| "https://ad.doubleclick.net/ddm/adi/N378.275220.MYBESTOPTION.IT4/B9340305.128710365;sz=970x250", |
| ] |
| |
| |
| class PageWithFrame(page_module.Page): |
| def __init__(self, frame_type, frame_url, page_set, name=''): |
| self.frame_url = frame_url |
| self.frame_type = frame_type |
| if name == '': |
| name = frame_type + ": " + frame_url |
| super(PageWithFrame, self).__init__( |
| 'file://ad_frames/loader.html', |
| page_set=page_set, |
| name=name, |
| shared_page_state_class=shared_page_state.SharedDesktopPageState, |
| extra_browser_args=[ |
| '''--enable-features=PrivacySandboxAdsAPIsOverride,FencedFrames, |
| SharedStorageAPI,FencedFrames:implementation_type/mparch, |
| FencedFramesDefaultMode''', |
| '--enable-privacy-sandbox-ads-apis', |
| '--expose-internals-for-testing', |
| '--disk-cache-dir=/dev/null', |
| ], |
| cache_temperature=cache_temperature_module.COLD) |
| # We are loading a local file, which causes the page to mark itself as |
| # local. This results in the test not downloading the WPR files we need. |
| # Manually override the value so that it doesn't skip that step. |
| self._is_local = False |
| |
| def RunNavigateSteps(self, action_runner): |
| super(PageWithFrame, self).RunNavigateSteps(action_runner) |
| action_runner.ExecuteJavaScript(''' |
| (function() { |
| LoadFrame({{ type }}, {{ frame_url }}); |
| })();''', |
| type=self.frame_type, |
| frame_url=self.frame_url) |
| action_runner.Wait(3) |
| |
| def RunPageInteractions(self, action_runner): |
| pass |
| |
| |
| class IframePageSet(story.StorySet): |
| """Various ad pages loaded into iframes""" |
| |
| def __init__(self): |
| super(IframePageSet, |
| self).__init__(archive_data_file='data/ad_frame.json', |
| cloud_storage_bucket=story.PARTNER_BUCKET) |
| for url in URL_LIST: |
| self.AddStory(PageWithFrame('iframe', url, self)) |
| |
| |
| class FencedFramePageSet(story.StorySet): |
| """Various ad pages loaded into iframes""" |
| |
| def __init__(self): |
| super(FencedFramePageSet, |
| self).__init__(archive_data_file='data/ad_frame.json', |
| cloud_storage_bucket=story.PARTNER_BUCKET) |
| for url in URL_LIST: |
| self.AddStory(PageWithFrame('fencedframe', url, self)) |