40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
import logging
|
|
from typing import Any, Dict, List
|
|
from desktop_env.evaluators.metrics.utils import are_lists_equal, compare_urls
|
|
|
|
logger = logging.getLogger("desktopenv.metrics.chrome")
|
|
|
|
|
|
def is_expected_tabs(open_tabs: List[Dict[str, str]], rule: Dict[str, Any]) -> float:
|
|
"""
|
|
Checks if the expected tabs are open in Chrome.
|
|
"""
|
|
|
|
print(open_tabs, rule)
|
|
match_type = rule['type']
|
|
|
|
if match_type == "url":
|
|
expected_urls = rule['urls']
|
|
actual_urls = [tab['url'] for tab in open_tabs]
|
|
return 1 if are_lists_equal(expected_urls, actual_urls, compare_urls) else 0
|
|
else:
|
|
logger.error(f"Unknown type: {match_type}")
|
|
return 0
|
|
|
|
|
|
def is_expected_bookmarks(bookmarks: List[Dict[str, Any]], rule: Dict[str, Any]) -> float:
|
|
"""
|
|
Checks if the expected bookmarks are in Chrome.
|
|
"""
|
|
|
|
# todo
|
|
match_type = rule['type']
|
|
|
|
if match_type == "url":
|
|
expected_urls = rule['urls']
|
|
actual_urls = [bookmark['url'] for bookmark in bookmarks]
|
|
return 1 if are_lists_equal(expected_urls, actual_urls, compare_urls) else 0
|
|
else:
|
|
logger.error(f"Unknown type: {match_type}")
|
|
return 0
|