Code cleanup withe left overs from old plugin manager removed.
This commit is contained in:
@@ -137,6 +137,21 @@ class PluginSystemManagerRegressionTests(unittest.TestCase):
|
||||
self.assertEqual(instance.deactivation_count, 1)
|
||||
self.assertEqual(plugin_info.instance, None)
|
||||
|
||||
@mock.patch("cthulhu.plugin_system_manager.dbus_service.get_remote_controller")
|
||||
def test_obsolete_plugin_manager_active_entry_is_dropped(self, remote_controller):
|
||||
remote_controller.return_value = mock.Mock()
|
||||
|
||||
with tempfile.TemporaryDirectory() as temp_dir:
|
||||
manager = self._create_manager()
|
||||
plugin_info = self._create_plugin_info(temp_dir, "OCR")
|
||||
manager._plugins["OCR"] = plugin_info
|
||||
manager._plugin_name_index["OCR"] = ["OCR"]
|
||||
|
||||
with mock.patch.object(manager, "syncAllPluginsActive"):
|
||||
manager.setActivePlugins(["PluginManager", "OCR"])
|
||||
|
||||
self.assertEqual(manager.getActivePlugins(), ["OCR"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
@@ -96,6 +96,45 @@ class SteamReturnActivationTests(unittest.TestCase):
|
||||
|
||||
|
||||
class SteamVirtualizedListMutationTests(unittest.TestCase):
|
||||
def test_caret_moved_ignores_transient_loading_spinner(self):
|
||||
testScript = steam_script.Script.__new__(steam_script.Script)
|
||||
source = object()
|
||||
spinner = object()
|
||||
event = mock.Mock(type="object:text-caret-moved", source=source)
|
||||
|
||||
testScript.utilities = mock.Mock()
|
||||
testScript.utilities.inDocumentContent.return_value = True
|
||||
|
||||
with (
|
||||
mock.patch.object(steam_script.AXObject, "get_name", side_effect=["", "Steam Spinner"]),
|
||||
mock.patch.object(steam_script.AXObject, "iter_children", return_value=iter([spinner])),
|
||||
mock.patch.object(steam_script.AXUtilities, "is_image_or_canvas", return_value=True),
|
||||
mock.patch.object(steam_script.debug, "printMessage"),
|
||||
mock.patch.object(steam_script.Chromium.Script, "onCaretMoved") as chromiumCaretMoved,
|
||||
):
|
||||
self.assertTrue(testScript.onCaretMoved(event))
|
||||
|
||||
chromiumCaretMoved.assert_not_called()
|
||||
|
||||
def test_caret_moved_defers_to_chromium_without_loading_spinner(self):
|
||||
testScript = steam_script.Script.__new__(steam_script.Script)
|
||||
source = object()
|
||||
child = object()
|
||||
event = mock.Mock(type="object:text-caret-moved", source=source)
|
||||
|
||||
testScript.utilities = mock.Mock()
|
||||
testScript.utilities.inDocumentContent.return_value = True
|
||||
|
||||
with (
|
||||
mock.patch.object(steam_script.AXObject, "get_name", side_effect=["", "Not A Spinner"]),
|
||||
mock.patch.object(steam_script.AXObject, "iter_children", return_value=iter([child])),
|
||||
mock.patch.object(steam_script.AXUtilities, "is_image_or_canvas", return_value=True),
|
||||
mock.patch.object(steam_script.Chromium.Script, "onCaretMoved", return_value="handled") as chromiumCaretMoved,
|
||||
):
|
||||
self.assertEqual(testScript.onCaretMoved(event), "handled")
|
||||
|
||||
chromiumCaretMoved.assert_called_once_with(event)
|
||||
|
||||
def test_children_added_skips_generic_web_cache_dump_for_virtualized_list_churn(self):
|
||||
testScript = steam_script.Script.__new__(steam_script.Script)
|
||||
source = object()
|
||||
|
||||
@@ -39,7 +39,7 @@ color-calculation-max = 3
|
||||
copy-to-clipboard = false
|
||||
|
||||
[profiles.default.plugins]
|
||||
active-plugins = ["PluginManager", "OCR"]
|
||||
active-plugins = ["Clipboard", "OCR"]
|
||||
plugin-sources = []
|
||||
"""
|
||||
|
||||
@@ -64,7 +64,7 @@ class LegacyTomlSchemaMigrationTests(unittest.TestCase):
|
||||
settings.GENERAL_KEYBOARD_LAYOUT_DESKTOP,
|
||||
)
|
||||
self.assertEqual(general["cthulhuModifierKeys"], settings.DESKTOP_MODIFIER_KEYS)
|
||||
self.assertEqual(general["activePlugins"], ["PluginManager", "OCR"])
|
||||
self.assertEqual(general["activePlugins"], ["Clipboard", "OCR"])
|
||||
self.assertEqual(general["aiProvider"], settings.AI_PROVIDER_OLLAMA)
|
||||
self.assertFalse(general["aiAssistantEnabled"])
|
||||
self.assertEqual(general["ocrLanguageCode"], "eng")
|
||||
@@ -82,7 +82,7 @@ class LegacyTomlSchemaMigrationTests(unittest.TestCase):
|
||||
savedSettings = settingsPath.read_text(encoding="utf-8")
|
||||
|
||||
self.assertIn('profile = ["Default", "default"]', savedSettings)
|
||||
self.assertIn('activePlugins = ["PluginManager", "OCR"]', savedSettings)
|
||||
self.assertIn('activePlugins = ["Clipboard", "OCR"]', savedSettings)
|
||||
self.assertNotIn("format-version = 2", savedSettings)
|
||||
self.assertNotIn("[profiles.default.metadata]", savedSettings)
|
||||
|
||||
|
||||
@@ -34,14 +34,33 @@ class WebKeyGrabRegressionTests(unittest.TestCase):
|
||||
testScript._lastMouseButtonContext = ("old", 7)
|
||||
testScript._madeFindAnnouncement = True
|
||||
testScript._inFocusMode = True
|
||||
testScript._focusModeIsSticky = False
|
||||
testScript._browseModeIsSticky = False
|
||||
testScript._navSuspended = False
|
||||
testScript.removeKeyGrabs = mock.Mock()
|
||||
testScript.refreshKeyGrabs = mock.Mock()
|
||||
testScript._setNavigationSuspended = mock.Mock()
|
||||
testScript.presentMessage = mock.Mock()
|
||||
testScript.utilities = mock.Mock()
|
||||
testScript.utilities.isZombie.return_value = False
|
||||
testScript.utilities.isDocument.return_value = False
|
||||
testScript.utilities.getTopLevelDocumentForObject.return_value = None
|
||||
testScript.utilities.inFindContainer.return_value = False
|
||||
testScript.utilities.getCaretContext.return_value = (None, -1)
|
||||
testScript.utilities.queryNonEmptyText.return_value = None
|
||||
testScript.utilities.isContentEditableWithEmbeddedObjects.return_value = False
|
||||
testScript.utilities.isAnchor.return_value = False
|
||||
testScript.utilities.lastInputEventWasPageNav.return_value = False
|
||||
testScript.utilities.isFocusedWithMathChild.return_value = False
|
||||
testScript.utilities.caretMovedToSamePageFragment.return_value = False
|
||||
testScript.utilities.lastInputEventWasLineNav.return_value = False
|
||||
testScript.utilities.shouldInterruptForLocusOfFocusChange.return_value = False
|
||||
testScript.flatReviewPresenter = mock.Mock()
|
||||
testScript.flatReviewPresenter.is_active.return_value = False
|
||||
testScript.updateBraille = mock.Mock()
|
||||
testScript.speechGenerator = mock.Mock()
|
||||
testScript.speechGenerator.generateSpeech.return_value = []
|
||||
testScript._saveFocusedObjectInfo = mock.Mock()
|
||||
return testScript
|
||||
|
||||
def test_window_deactivate_does_not_drop_key_grabs(self):
|
||||
@@ -99,6 +118,44 @@ class WebKeyGrabRegressionTests(unittest.TestCase):
|
||||
self.assertFalse(result)
|
||||
testScript.refreshKeyGrabs.assert_called_once_with()
|
||||
|
||||
def test_non_document_focus_preserves_sticky_focus_mode(self):
|
||||
testScript = self._make_partial_script()
|
||||
testScript._focusModeIsSticky = True
|
||||
oldFocus = object()
|
||||
newFocus = object()
|
||||
|
||||
with mock.patch("cthulhu.scripts.web.script.AXObject.is_dead", return_value=False):
|
||||
result = web_script.Script.locus_of_focus_changed(testScript, None, oldFocus, newFocus)
|
||||
|
||||
self.assertFalse(result)
|
||||
self.assertTrue(testScript._inFocusMode)
|
||||
|
||||
def test_document_focus_restores_sticky_focus_after_suspension(self):
|
||||
testScript = self._make_partial_script()
|
||||
testScript._inFocusMode = False
|
||||
testScript._focusModeIsSticky = True
|
||||
testScript._navSuspended = True
|
||||
oldFocus = object()
|
||||
newFocus = object()
|
||||
document = object()
|
||||
testScript.utilities.getTopLevelDocumentForObject.side_effect = (
|
||||
lambda obj: document if obj is newFocus else None
|
||||
)
|
||||
|
||||
with (
|
||||
mock.patch("cthulhu.scripts.web.script.AXObject.is_dead", return_value=False),
|
||||
mock.patch("cthulhu.scripts.web.script.AXUtilities.is_unknown_or_redundant", return_value=False),
|
||||
mock.patch("cthulhu.scripts.web.script.AXUtilities.is_heading", return_value=False),
|
||||
mock.patch("cthulhu.scripts.web.script.speech.speak"),
|
||||
mock.patch("cthulhu.scripts.web.script.cthulhu.emitRegionChanged"),
|
||||
):
|
||||
result = web_script.Script.locus_of_focus_changed(testScript, None, oldFocus, newFocus)
|
||||
|
||||
self.assertTrue(result)
|
||||
self.assertTrue(testScript._inFocusMode)
|
||||
testScript.presentMessage.assert_called_with(messages.MODE_FOCUS_IS_STICKY)
|
||||
testScript.refreshKeyGrabs.assert_called_once_with()
|
||||
|
||||
|
||||
class WebActiveWindowRegressionTests(unittest.TestCase):
|
||||
def test_sanity_check_recovers_missing_script_app_from_active_window(self):
|
||||
@@ -395,6 +452,23 @@ class WebDynamicContentRecoveryRegressionTests(unittest.TestCase):
|
||||
setLocusOfFocus.assert_called_once_with(event, source, False)
|
||||
testScript.utilities.setCaretContext.assert_called_once_with(source, 0)
|
||||
|
||||
def test_browse_mode_sticky_blocks_web_app_descendant_focus_claim(self):
|
||||
testScript = self._make_dynamic_script()
|
||||
source = object()
|
||||
event = mock.Mock(detail1=1, source=source)
|
||||
testScript._browseModeIsSticky = True
|
||||
testScript.utilities.getDocumentForObject.return_value = "document"
|
||||
testScript.utilities.isWebAppDescendant.return_value = True
|
||||
|
||||
with (
|
||||
mock.patch.object(web_script.cthulhu_state, "locusOfFocus", object()),
|
||||
mock.patch.object(web_script.cthulhu, "setLocusOfFocus") as setLocusOfFocus,
|
||||
):
|
||||
result = web_script.Script.onFocusedChanged(testScript, event)
|
||||
|
||||
self.assertTrue(result)
|
||||
setLocusOfFocus.assert_not_called()
|
||||
|
||||
|
||||
class WebContextReplicantRegressionTests(unittest.TestCase):
|
||||
def test_same_object_replicant_can_recover_before_old_focus_is_dead(self):
|
||||
|
||||
Reference in New Issue
Block a user