Helpviewer/Passwords/PasswordManager.py

changeset 7
c679fb30c8f3
parent 6
52e8c820d0dd
child 12
1d8dd9706f46
equal deleted inserted replaced
6:52e8c820d0dd 7:c679fb30c8f3
334 # check that url isn't in __never 334 # check that url isn't in __never
335 if url.toString() in self.__never: 335 if url.toString() in self.__never:
336 return 336 return
337 337
338 # check the request type 338 # check the request type
339 v = request.attribute(QNetworkRequest.User + 101) 339 navType = request.attribute(QNetworkRequest.User + 101)
340 if not v.isValid(): 340 if navType is None:
341 return 341 return
342 navType = v.toInt()[0]
343 if navType != QWebPage.NavigationTypeFormSubmitted: 342 if navType != QWebPage.NavigationTypeFormSubmitted:
344 return 343 return
345 344
346 # determine the QWebPage 345 # determine the QWebPage
347 v = request.attribute(QNetworkRequest.User + 100) 346 webPage = request.attribute(QNetworkRequest.User + 100)
348 webPage = v.toPyObject() 347 if webPage is None:
349 if webPage == NotImplemented or webPage is None:
350 return 348 return
351 349
352 # determine the requests content type 350 # determine the requests content type
353 contentTypeHeader = request.rawHeader("Content-Type") 351 contentTypeHeader = request.rawHeader("Content-Type")
354 if contentTypeHeader.isEmpty(): 352 if contentTypeHeader.isEmpty():
442 key = arg[0] 440 key = arg[0]
443 value = arg[1].replace("+", " ") 441 value = arg[1].replace("+", " ")
444 args.add((key, value)) 442 args.add((key, value))
445 443
446 # extract the forms 444 # extract the forms
447 lst = webPage.mainFrame().evaluateJavaScript(parseForms_js).toList() 445 lst = webPage.mainFrame().evaluateJavaScript(parseForms_js)
448 for formVariant in lst: 446 for map in lst:
449 map = formVariant.toMap()
450 formHasPasswords = False 447 formHasPasswords = False
451 formName = map["name"].toString() 448 formName = map["name"]
452 formIndex = map["index"].toInt()[0] 449 formIndex = map["index"]
453 elements = map["elements"].toList() 450 elements = map["elements"]
454 formElements = set() 451 formElements = set()
455 formElementTypes = {} 452 formElementTypes = {}
456 deadElements = set() 453 deadElements = set()
457 for element in elements: 454 for elementMap in elements:
458 elementMap = element.toMap() 455 name = elementMap["name"]
459 name = elementMap["name"].toString() 456 value = elementMap["value"]
460 value = elementMap["value"].toString() 457 type_ = elementMap["type"]
461 type_ = elementMap["type"].toString()
462 if type_ == "password": 458 if type_ == "password":
463 formHasPasswords = True 459 formHasPasswords = True
464 t = (name, value) 460 t = (name, value)
465 try: 461 try:
466 if elementMap["autocomplete"].toString() == "off": 462 if elementMap["autocomplete"] == "off":
467 deadElements.add(t) 463 deadElements.add(t)
468 except KeyError: 464 except KeyError:
469 pass 465 pass
470 if name: 466 if name:
471 formElements.add(t) 467 formElements.add(t)
542 for element in form.elements: 538 for element in form.elements:
543 name = element[0] 539 name = element[0]
544 value = element[1] 540 value = element[1]
545 541
546 disabled = page.mainFrame().evaluateJavaScript( 542 disabled = page.mainFrame().evaluateJavaScript(
547 'document.forms[%s].elements["%s"].disabled' % (formName, name)).toBool() 543 'document.forms[%s].elements["%s"].disabled' % (formName, name))
548 if disabled: 544 if disabled:
549 continue 545 continue
550 546
551 readOnly = page.mainFrame().evaluateJavaScript( 547 readOnly = page.mainFrame().evaluateJavaScript(
552 'document.forms[%s].elements["%s"].readOnly' % (formName, name)).toBool() 548 'document.forms[%s].elements["%s"].readOnly' % (formName, name))
553 if readOnly: 549 if readOnly:
554 continue 550 continue
555 551
556 type_ = page.mainFrame().evaluateJavaScript( 552 type_ = page.mainFrame().evaluateJavaScript(
557 'document.forms[%s].elements["%s"].type' % (formName, name)).toString() 553 'document.forms[%s].elements["%s"].type' % (formName, name))
558 if type_ == "" or \ 554 if type_ == "" or \
559 type_ in ["hidden", "reset", "submit"]: 555 type_ in ["hidden", "reset", "submit"]:
560 continue 556 continue
561 if type_ == "password": 557 if type_ == "password":
562 value = Utilities.pwDecode(self.__logins[key][1]) 558 value = Utilities.pwDecode(self.__logins[key][1])

eric ide

mercurial