Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / core / backends / chrome / system_info_backend.py
1 # Copyright 2013 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
5 from telemetry.core import camel_case
6 from telemetry.core import system_info
7 from telemetry.core.backends.chrome import inspector_websocket
8
9
10 class SystemInfoBackend(object):
11   def __init__(self, devtools_port, devtools_page=None):
12     self._port = devtools_port
13     self._page = devtools_page
14
15   def GetSystemInfo(self, timeout=10):
16     req = {'method': 'SystemInfo.getInfo'}
17     websocket = inspector_websocket.InspectorWebsocket()
18     try:
19       if self._page:
20         websocket.Connect('ws://127.0.0.1:%i/devtools/page/%i' %
21                           (self._port, self._page))
22       else:
23         websocket.Connect('ws://127.0.0.1:%i/devtools/browser' % self._port)
24       res = websocket.SyncRequest(req, timeout)
25     finally:
26       websocket.Disconnect()
27     if 'error' in res:
28       return None
29     return system_info.SystemInfo.FromDict(
30         camel_case.ToUnderscore(res['result']))