Propertly handle history buttons and fix dns resolve

This commit is contained in:
Izalia Mae 2022-09-02 10:04:49 -04:00
parent fc42cba8f8
commit f90f82f36c
3 changed files with 38 additions and 4 deletions

View file

@ -2,7 +2,7 @@ import cairo
import threading
from bs4 import BeautifulSoup
from dns.resolver import NXDOMAIN, resolve
from dns.resolver import NXDOMAIN
from izzylib.exceptions import DNSResolverError
from izzylib.misc import class_name
from izzylib.url import Address
@ -16,6 +16,7 @@ from ..widgets import Box, FileChooser
from ..functions import (
BuilderBase,
connect,
resolve_address,
run_in_gui_thread,
set_image
)
@ -348,13 +349,17 @@ class WebTab(BuilderBase, Gtk.Box):
self['navbar-stop'].set_sensitive(loading)
self['navbar-refresh'].set_sensitive(not loading)
for button, action in {'navbar-prev': self.webview.can_go_back(), 'navbar-next': self.webview.can_go_forward()}.items():
self[button].set_sensitive(action)
#self.set_history_button_state()
if self.window.active_tab == self:
self.window.set_button_state(self.id)
def set_history_button_state(self):
for button, action in {'navbar-prev': self.webview.can_go_back(), 'navbar-next': self.webview.can_go_forward()}.items():
self[button].set_sensitive(action)
def set_favicon(self, icon=None):
icon = icon or self.favicon or 'image-x-generic'
logging.debug(f'Set icon for page: {class_name(icon)}, {self.url}')
@ -517,7 +522,7 @@ class WebTab(BuilderBase, Gtk.Box):
## Is the url.domain an actual domain?
if not keyword:
try:
address = Address(resolve(url.domain))
address = Address(resolve_address(url.domain))
logging.verbose('Url without protocol')

View file

@ -59,6 +59,9 @@ class WebviewHandler(ComponentBase):
connect(self.inspector, 'detach', self.handle_inspector, 'detach', original_args=True)
connect(self.inspector, 'closed', self.handle_inspector, 'close', original_args=True)
## History list
connect(self.webview.get_back_forward_list(), 'changed', self.handle_history_change, original_args=True)
@property
def inspector(self):
@ -278,6 +281,10 @@ class WebviewHandler(ComponentBase):
tabs.set_show_tabs(True)
def handle_history_change(self, history, added, removed):
self.tab.set_history_button_state()
def handle_insecure_content(self, webview, event):
logging.debug('insecure-content:', event.value_nick)
return True

View file

@ -1,11 +1,13 @@
import cairo
import multiprocessing
import random
import socket
import threading
import time
import traceback
from ctypes import cdll, create_string_buffer, byref
from dns.resolver import NXDOMAIN, resolve
from izzylib.http_client import HttpClient
from json.decoder import JSONDecodeError
from platform import system
@ -139,6 +141,26 @@ def new_pixbuf(image, size=16):
return scale_pixbuf(image, size)
def resolve_address(domain, type=None):
domain = domain.strip()
if not type:
type == 'AAAA'
try:
return random.choice(resolve(domain, type)).address
except TypeError:
# Not sure why this error is coming from dns.enum, so ignore it
pass
except NXDOMAIN as e:
if type != 'AAAA':
raise e
return random.choice(resolve(domain, 'A')).address
def run_in_gui_thread(func, *args, **kwargs):
GLib.idle_add(lambda *unused: func(*args, **kwargs))