1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4 from telemetry
.page
import page
as page_module
5 from telemetry
.page
import page_set
as page_set_module
8 class MobileMemoryPage(page_module
.Page
):
10 def __init__(self
, url
, page_set
):
11 super(MobileMemoryPage
, self
).__init
__(
12 url
=url
, page_set
=page_set
, credentials_path
= 'data/credentials.json')
13 self
.user_agent_type
= 'mobile'
14 self
.archive_data_file
= 'data/mobile_memory.json'
17 class GmailPage(MobileMemoryPage
):
19 def __init__(self
, page_set
):
20 super(GmailPage
, self
).__init
__(
21 url
='https://mail.google.com/mail/mu',
24 self
.reload_and_gc
= [{'action': 'reload'},
27 {'action': 'js_collect_garbage'}]
28 self
.credentials
= 'google'
30 def ReloadAndGc(self
, action_runner
):
31 action_runner
.ReloadPage()
32 action_runner
.Wait(15)
33 action_runner
.ForceGarbageCollection()
35 def RunPageInteractions(self
, action_runner
):
37 self
.ReloadAndGc(action_runner
)
40 class GoogleSearchPage(MobileMemoryPage
):
42 """ Why: Tests usage of discardable memory """
44 def __init__(self
, page_set
):
45 super(GoogleSearchPage
, self
).__init
__(
46 url
='https://www.google.com/search?site=&tbm=isch&q=google',
49 def RunPageInteractions(self
, action_runner
):
50 interaction
= action_runner
.BeginGestureInteraction(
51 'ScrollAction', is_smooth
=True)
52 action_runner
.ScrollPage()
55 interaction
= action_runner
.BeginGestureInteraction(
56 'ScrollAction', is_smooth
=True)
57 action_runner
.ScrollPage()
60 interaction
= action_runner
.BeginGestureInteraction(
61 'ScrollAction', is_smooth
=True)
62 action_runner
.ScrollPage()
65 interaction
= action_runner
.BeginGestureInteraction(
66 'ScrollAction', is_smooth
=True)
67 action_runner
.ScrollPage()
69 action_runner
.WaitForJavaScriptCondition(
70 'document.getElementById("rg_s").childElementCount > 300')
73 class ScrollPage(MobileMemoryPage
):
75 def __init__(self
, url
, page_set
):
76 super(ScrollPage
, self
).__init
__(url
=url
, page_set
=page_set
)
78 def RunPageInteractions(self
, action_runner
):
79 interaction
= action_runner
.BeginGestureInteraction(
80 'ScrollAction', is_smooth
=True)
81 action_runner
.ScrollPage()
85 class MobileMemoryPageSet(page_set_module
.PageSet
):
87 """ Mobile sites with interesting memory characteristics """
90 super(MobileMemoryPageSet
, self
).__init
__(
91 user_agent_type
='mobile',
92 archive_data_file
='data/mobile_memory.json',
93 bucket
=page_set_module
.PARTNER_BUCKET
)
95 self
.AddPage(GmailPage(self
))
96 self
.AddPage(GoogleSearchPage(self
))
99 # Why: Renderer process memory bloat
100 'http://techcrunch.com',
101 # pylint: disable=C0301
102 'http://techcrunch.com/2014/02/17/pixel-brings-brings-old-school-video-game-art-to-life-in-your-home/',
103 'http://techcrunch.com/2014/02/15/kickstarter-coins-2/',
104 'http://techcrunch.com/2014/02/15/was-y-combinator-worth-it/',
107 for url
in urls_list
:
108 self
.AddPage(ScrollPage(url
, self
))