Dont store a reference to the js source

This commit is contained in:
Kovid Goyal 2017-08-19 13:30:19 +05:30
parent 905e755fcc
commit c234d70647
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -31,6 +31,7 @@ LOADING_DOC = '''
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<script type="text/javascript" id="bootstrap"> <script type="text/javascript" id="bootstrap">
window.iframe_type = '__IFRAME_TYPE__'; // different in different iframes
__SCRIPT__ __SCRIPT__
end_script end_script
</head> </head>
@ -135,12 +136,10 @@ class View:
) )
self.search_overlay = SearchOverlay(self) self.search_overlay = SearchOverlay(self)
self.overlay = Overlay(self) self.overlay = Overlay(self)
self.src_doc = None
self.processing_spine_item_display = False self.processing_spine_item_display = False
self.iframe_ready = False self.iframe_ready = False
self.pending_load = None self.pending_load = None
self.encrypted_communications = False self.encrypted_communications = False
self.create_src_doc()
window.addEventListener('message', self.handle_message, False) window.addEventListener('message', self.handle_message, False)
self.handlers = { self.handlers = {
'ready': self.on_iframe_ready, 'ready': self.on_iframe_ready,
@ -273,14 +272,24 @@ class View:
def create_src_doc(self): def create_src_doc(self):
iframe_script = main_js().replace(/is_running_in_iframe\s*=\s*false/, 'is_running_in_iframe = true') iframe_script = main_js().replace(/is_running_in_iframe\s*=\s*false/, 'is_running_in_iframe = true')
main_js(None) main_js(None)
self.src_doc = LOADING_DOC.replace( r = /__([A-Z][A-Z_0-9]*[A-Z0-9])__/g
'__BS__', _('Bootstrapping book reader...')).replace( self.main_srcdoc = def():
'__SCRIPT__', iframe_script).replace( data = {
'__FONT__', get_font_family().replace('"', '&quot;')) 'BS': _('Bootstrapping book reader...'),
'SCRIPT': iframe_script,
'FONT': get_font_family(),
'IFRAME_TYPE': 'main'
}
return LOADING_DOC.replace(r, def(match, field): return data[field];)
def init_iframe(self, iframe_script): def init_iframe(self, iframe_script):
if self.main_srcdoc is None:
return
if not self.main_srcdoc:
self.create_src_doc()
self.encrypted_communications = False self.encrypted_communications = False
self.iframe.srcdoc = self.src_doc self.iframe.srcdoc = self.main_srcdoc()
self.main_srcdoc = None
def send_message(self, action, **data): def send_message(self, action, **data):
data.action = action data.action = action