1212# To show the window for an extended period of time increase this number.
1313MESSAGE_LOOP_RANGE = 25 # each iteration is 0.01 sec
1414
15- g_browser = None
16- g_client_handler = None
17- g_external = None
18-
1915g_datauri_data = """
2016<!DOCTYPE html>
2117<html>
@@ -105,33 +101,32 @@ def test_main(self):
105101 })
106102 subtest_message ("cef.Initialize() ok" )
107103
108- # Test global client callback
109- global g_client_handler
110- g_client_handler = ClientHandler (self )
104+ # Test global handler
105+ global_handler = GlobalHandler (self )
111106 cef .SetGlobalClientCallback ("OnAfterCreated" ,
112- g_client_handler ._OnAfterCreated )
107+ global_handler ._OnAfterCreated )
113108 subtest_message ("cef.SetGlobalClientCallback() ok" )
114109
115110 # Test creation of browser
116- global g_browser
117- g_browser = cef .CreateBrowserSync (url = g_datauri )
118- self .assertIsNotNone (g_browser , "Browser object" )
111+ browser = cef .CreateBrowserSync (url = g_datauri )
112+ self .assertIsNotNone (browser , "Browser object" )
119113 subtest_message ("cef.CreateBrowserSync() ok" )
120114
121- # Test client handler
122- g_browser .SetClientHandler (g_client_handler )
115+ # Test other handlers: LoadHandler, DisplayHandler etc.
116+ client_handlers = [LoadHandler (self ), DisplayHandler (self )]
117+ for handler in client_handlers :
118+ browser .SetClientHandler (handler )
123119 subtest_message ("browser.SetClientHandler() ok" )
124120
125121 # Test javascript bindings
126- global g_external
127- g_external = External (self )
122+ external = External (self )
128123 bindings = cef .JavascriptBindings (
129124 bindToFrames = False , bindToPopups = False )
130- bindings .SetFunction ("test_function" , g_external .test_function )
131- bindings .SetProperty ("test_property1" , g_external .test_property1 )
132- bindings .SetProperty ("test_property2" , g_external .test_property2 )
133- bindings .SetObject ("external" , g_external )
134- g_browser .SetJavascriptBindings (bindings )
125+ bindings .SetFunction ("test_function" , external .test_function )
126+ bindings .SetProperty ("test_property1" , external .test_property1 )
127+ bindings .SetProperty ("test_property2" , external .test_property2 )
128+ bindings .SetObject ("external" , external )
129+ browser .SetJavascriptBindings (bindings )
135130 subtest_message ("browser.SetJavascriptBindings() ok" )
136131
137132 # Run message loop for 0.5 sec.
@@ -142,8 +137,8 @@ def test_main(self):
142137 subtest_message ("cef.MessageLoopWork() ok" )
143138
144139 # Test browser closing. Remember to clean reference.
145- g_browser .CloseBrowser (True )
146- g_browser = None
140+ browser .CloseBrowser (True )
141+ del browser
147142 subtest_message ("browser.CloseBrowser() ok" )
148143
149144 # Give it some time to close before calling shutdown.
@@ -152,20 +147,22 @@ def test_main(self):
152147 cef .MessageLoopWork ()
153148 time .sleep (0.01 )
154149
155- # Client handler asserts and javascript External asserts
156- for obj in [g_client_handler , g_external ]:
150+ # Asserts in handlers and in external
151+ for obj in [] + client_handlers + [ global_handler , external ]:
157152 test_for_True = False # Test whether asserts are working correctly
158153 for key , value in obj .__dict__ .items ():
159154 if key == "test_for_True" :
160155 test_for_True = True
161156 continue
162157 if "_True" in key :
163- self .assertTrue (value , "Check assert: " + key )
158+ self .assertTrue (value , "Check assert: " +
159+ obj .__class__ .__name__ + "." + key )
164160 subtest_message (obj .__class__ .__name__ + "." +
165161 key .replace ("_True" , "" ) +
166162 " ok" )
167163 elif "_False" in key :
168- self .assertFalse (value , "Check assert: " + key )
164+ self .assertFalse (value , "Check assert: " +
165+ obj .__class__ .__name__ + "." + key )
169166 subtest_message (obj .__class__ .__name__ + "." +
170167 key .replace ("_False" , "" ) +
171168 " ok" )
@@ -180,24 +177,30 @@ def test_main(self):
180177 sys .stdout .flush ()
181178
182179
183- class ClientHandler (object ):
180+ class GlobalHandler (object ):
184181 def __init__ (self , test_case ):
185182 self .test_case = test_case
186- self .frame_source_visitor = None
187183
188184 # Asserts for True/False will be checked just before shutdown
189185 self .test_for_True = True # Test whether asserts are working correctly
190186 self .OnAfterCreated_True = False
191- self .OnLoadStart_True = False
192- self .OnLoadEnd_True = False
193- self .FrameSourceVisitor_True = False
194- self .javascript_errors_False = False
195- self .OnConsoleMessage_True = False
196187
197188 # noinspection PyUnusedLocal
198189 def _OnAfterCreated (self , browser ):
199190 self .OnAfterCreated_True = True
200191
192+
193+ class LoadHandler (object ):
194+ def __init__ (self , test_case ):
195+ self .test_case = test_case
196+ self .frame_source_visitor = None
197+
198+ # Asserts for True/False will be checked just before shutdown
199+ self .test_for_True = True # Test whether asserts are working correctly
200+ self .OnLoadStart_True = False
201+ self .OnLoadEnd_True = False
202+ self .FrameSourceVisitor_True = False
203+
201204 # noinspection PyUnusedLocal
202205 def OnLoadStart (self , browser , frame ):
203206 self .test_case .assertEqual (browser .GetUrl (), g_datauri )
@@ -209,9 +212,19 @@ def OnLoadEnd(self, browser, frame, http_code):
209212 self .frame_source_visitor = FrameSourceVisitor (self , self .test_case )
210213 frame .GetSource (self .frame_source_visitor )
211214 browser .ExecuteJavascript (
212- "print('ClientHandler .OnLoadEnd() ok')" )
215+ "print('LoadHandler .OnLoadEnd() ok')" )
213216 self .OnLoadEnd_True = True
214217
218+
219+ class DisplayHandler (object ):
220+ def __init__ (self , test_case ):
221+ self .test_case = test_case
222+
223+ # Asserts for True/False will be checked just before shutdown
224+ self .test_for_True = True # Test whether asserts are working correctly
225+ self .javascript_errors_False = False
226+ self .OnConsoleMessage_True = False
227+
215228 # noinspection PyUnusedLocal
216229 def OnConsoleMessage (self , browser , message , source , line ):
217230 if "error" in message .lower () or "uncaught" in message .lower ():
0 commit comments