Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 // | 4 // |
| 5 // Swig Interface for PyAuto. | 5 // Swig Interface for PyAuto. |
| 6 // PyAuto makes the Automation Proxy interface available in Python | 6 // PyAuto makes the Automation Proxy interface available in Python |
| 7 // | 7 // |
| 8 // Running swig as: | 8 // Running swig as: |
| 9 // swig -python -c++ chrome/test/pyautolib/pyautolib.i | 9 // swig -python -c++ chrome/test/pyautolib/pyautolib.i |
| 10 // would generate pyautolib.py, pyautolib_wrap.cxx | 10 // would generate pyautolib.py, pyautolib_wrap.cxx |
| 11 | 11 |
| 12 // When adding a new class or method, make sure you specify the doc string using | 12 // When adding a new class or method, make sure you specify the doc string using |
| 13 // %feature("docstring", "doc string goes here") NODENAME; | 13 // %feature("docstring", "doc string goes here") NODENAME; |
| 14 // and attach it to your node (class or method). This doc string will be | 14 // and attach it to your node (class or method). This doc string will be |
| 15 // copied over in the generated python classes/methods. | 15 // copied over in the generated python classes/methods. |
| 16 | 16 |
| 17 %module(docstring="Python interface to Automation Proxy.") pyautolib | 17 %module(docstring="Python interface to Automation Proxy.") pyautolib |
| 18 %feature("autodoc", "1"); | 18 %feature("autodoc", "1"); |
| 19 | 19 |
| 20 %include <typemaps.i> | |
| 21 %include <cpointer.i> | |
| 20 %include <std_wstring.i> | 22 %include <std_wstring.i> |
| 21 %include <std_string.i> | 23 %include <std_string.i> |
| 22 | 24 |
| 23 %include "chrome/test/pyautolib/argc_argv.i" | 25 %include "chrome/test/pyautolib/argc_argv.i" |
| 24 | 26 |
| 25 // NOTE: All files included in this file should also be listed under | 27 // NOTE: All files included in this file should also be listed under |
| 26 // pyautolib_sources in chrome_tests.gypi. | 28 // pyautolib_sources in chrome_tests.gypi. |
| 27 | 29 |
| 28 // Headers that can be swigged directly. | 30 // Headers that can be swigged directly. |
| 29 %include "chrome/app/chrome_command_ids.h" | 31 %include "chrome/app/chrome_command_ids.h" |
| 30 %include "chrome/app/chrome_dll_resource.h" | 32 %include "chrome/app/chrome_dll_resource.h" |
| 31 %include "chrome/common/automation_constants.h" | 33 %include "chrome/common/automation_constants.h" |
| 32 %include "chrome/common/pref_names.h" | 34 %include "chrome/common/pref_names.h" |
| 35 %include "content/public/common/page_type.h" | |
|
Nirnimesh
2012/03/05 19:46:01
Do you still get a compilation error if you add ju
dyu1
2012/03/06 20:45:14
No, it worked fine. The compile errors were relate
| |
| 36 %include "content/public/common/security_style.h" | |
| 37 %include "net/base/net_export.h" | |
| 38 %include "net/base/cert_status_flags.h" | |
| 33 | 39 |
| 34 %{ | 40 %{ |
| 35 #include "chrome/common/automation_constants.h" | 41 #include "chrome/common/automation_constants.h" |
| 36 #include "chrome/common/pref_names.h" | 42 #include "chrome/common/pref_names.h" |
| 37 #include "chrome/test/automation/browser_proxy.h" | 43 #include "chrome/test/automation/browser_proxy.h" |
| 38 #include "chrome/test/automation/tab_proxy.h" | 44 #include "chrome/test/automation/tab_proxy.h" |
| 39 #include "chrome/test/pyautolib/pyautolib.h" | 45 #include "chrome/test/pyautolib/pyautolib.h" |
| 40 #include "net/test/test_server.h" | 46 #include "net/test/test_server.h" |
| 41 %} | 47 %} |
| 42 | 48 |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 140 bool Close(); | 146 bool Close(); |
| 141 bool Close(bool wait_until_closed); | 147 bool Close(bool wait_until_closed); |
| 142 %feature("docstring", "Blocks until tab is completely restored.") | 148 %feature("docstring", "Blocks until tab is completely restored.") |
| 143 WaitForTabToBeRestored; | 149 WaitForTabToBeRestored; |
| 144 bool WaitForTabToBeRestored(uint32 timeout_ms); | 150 bool WaitForTabToBeRestored(uint32 timeout_ms); |
| 145 %feature("docstring", "Simulates user action on the SSL blocking page." | 151 %feature("docstring", "Simulates user action on the SSL blocking page." |
| 146 "if |proceed| is true, this is equivalent to clicking the 'Proceed' " | 152 "if |proceed| is true, this is equivalent to clicking the 'Proceed' " |
| 147 "button, if false to 'Take me out of there' button.") | 153 "button, if false to 'Take me out of there' button.") |
| 148 TakeActionOnSSLBlockingPage; | 154 TakeActionOnSSLBlockingPage; |
| 149 bool TakeActionOnSSLBlockingPage(bool proceed); | 155 bool TakeActionOnSSLBlockingPage(bool proceed); |
| 156 %extend { | |
| 157 %feature("docstring", "Retrieves the different security states for the " | |
| 158 "current tab.") GetSecurityState; | |
| 159 PyObject* GetSecurityState() { | |
|
Nirnimesh
2012/03/05 19:46:01
This should be aligned at regular indent level, no
dyu1
2012/03/06 20:45:14
Done.
| |
| 160 content::SecurityStyle security_style; | |
| 161 net::CertStatus ssl_cert_status; | |
| 162 int insecure_content_status; | |
| 163 bool success = $self->GetSecurityState(&security_style, | |
| 164 &ssl_cert_status, &insecure_content_status); | |
| 165 PyObject* result_dict = PyDict_New(); | |
| 166 PyDict_SetItem( | |
| 167 result_dict, PyString_FromString("security_style"), | |
| 168 PyInt_FromLong(security_style)); | |
| 169 PyDict_SetItem( | |
| 170 result_dict, PyString_FromString("ssl_cert_status"), | |
| 171 PyInt_FromLong(ssl_cert_status)); | |
| 172 PyDict_SetItem( | |
| 173 result_dict, PyString_FromString("insecure_content_status"), | |
| 174 PyInt_FromLong(insecure_content_status)); | |
| 175 PyObject* tpl = PyTuple_New(2); | |
| 176 PyTuple_SetItem(tpl, 0, PyBool_FromLong(success)); | |
| 177 PyTuple_SetItem(tpl, 1, result_dict); | |
| 178 return tpl; | |
|
Nirnimesh
2012/03/05 19:46:01
I don't like the idea of returning a tuple. Why no
dyu1
2012/03/06 20:45:14
Done.
| |
| 179 } | |
| 180 } | |
| 181 %extend { | |
| 182 %feature("docstring", | |
| 183 "Returns the type of page currently showing " | |
| 184 "(normal, interstitial, error.") GetPageType; | |
| 185 bool GetPageType(int* OUTPUT) { | |
|
Nirnimesh
2012/03/05 19:46:01
This should be aligned at regular indent level, no
dyu1
2012/03/06 20:45:14
Done.
| |
| 186 return $self->GetPageType(reinterpret_cast<content::PageType*>(OU TPUT)); | |
|
Nirnimesh
2012/03/05 19:46:01
80+ chars
Nirnimesh
2012/03/05 19:46:01
To get rid of pointers in python, why not implemen
dyu1
2012/03/06 20:45:14
Done.
dyu1
2012/03/06 20:45:14
Done.
| |
| 187 } | |
| 188 } | |
| 150 | 189 |
| 151 // HTTP Auth | 190 // HTTP Auth |
| 152 %feature("docstring", | 191 %feature("docstring", |
| 153 "Checks if this tab has a login prompt waiting for auth. This will be " | 192 "Checks if this tab has a login prompt waiting for auth. This will be " |
| 154 "true if a navigation results in a login prompt, and if an attempted " | 193 "true if a navigation results in a login prompt, and if an attempted " |
| 155 "login fails. " | 194 "login fails. " |
| 156 "Note that this is only valid if you've done a navigation on this same " | 195 "Note that this is only valid if you've done a navigation on this same " |
| 157 "object; different TabProxy objects can refer to the same Tab. Calls " | 196 "object; different TabProxy objects can refer to the same Tab. Calls " |
| 158 "that can set this are NavigateToURL, GoBack, and GoForward. ") | 197 "that can set this are NavigateToURL, GoBack, and GoForward. ") |
| 159 NeedsAuth; | 198 NeedsAuth; |
| (...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 468 CERT_EXPIRED, | 507 CERT_EXPIRED, |
| 469 }; | 508 }; |
| 470 | 509 |
| 471 // Initialize a new HTTPSOptions that will use the specified certificate. | 510 // Initialize a new HTTPSOptions that will use the specified certificate. |
| 472 explicit HTTPSOptions(ServerCertificate cert); | 511 explicit HTTPSOptions(ServerCertificate cert); |
| 473 }; | 512 }; |
| 474 | 513 |
| 475 %{ | 514 %{ |
| 476 typedef net::TestServer::HTTPSOptions HTTPSOptions; | 515 typedef net::TestServer::HTTPSOptions HTTPSOptions; |
| 477 %} | 516 %} |
| 517 | |
| 518 %pointer_class(int, int_ptr); | |
| 519 %pointer_class(uint32, uint32_ptr); | |
| OLD | NEW |