22ed74f67f32d92b61d0c6034a4c58681ba15be3
[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 websocket_browser_connection
8
9
10 class SystemInfoBackend(object):
11   def __init__(self, devtools_port):
12     self._conn = websocket_browser_connection.WebSocketBrowserConnection(
13         devtools_port)
14     self._system_info = None
15
16   def GetSystemInfo(self, timeout=10):
17     if not self._system_info:
18       req = {'method': 'SystemInfo.getInfo'}
19       try:
20         res = self._conn.SyncRequest(req, timeout)
21         if 'error' in res:
22           return None
23         self._system_info = system_info.SystemInfo.FromDict(
24             camel_case.ToUnderscore(res['result']))
25       finally:
26         self._conn.Close()
27     return self._system_info