I try to use a 3.9 image for the browser plugin image.
I have checked about readDocumentAtStartup preference and "AutoStart installedLaunchers". The image appears in the browser ok. If add a src="test.st" in the html as: <head> <title>Test de plugin web Squeak</title> </head> <body> <embed type="application/x-squeak-source" src ="test.st" align="center" width="700" height="500"> </embed> </body> </html> With test.st as: IFIDbSession default. IFIModels new. moment := IFIModels schools anyOne learners anyOne pedagogicalMoments anyOne. view := (moment exerciceViewAtStart beSticky position: 0@0) openInWorld. I got a strange error, see attached log and the test.st is not filed in. If I use this same image and drop the test.st into it, it works fine. So it may look like a security check, but I cannot find it. Thanks Hilaire MessageNotUnderstood: UndefinedObject>>domain 15 July 2007 12:30:33 pm VM: unix - a SmalltalkImage Image: Squeak3.9 [latest update: #7068] SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /home/hilaire/.npsqueak Trusted Dir /home/hilaire/.npsqueak/secure Untrusted Dir /home/hilaire/.npsqueak/My Squeak UndefinedObject(Object)>>doesNotUnderstand: #domain Receiver: nil Arguments and temporary variables: t1: domain Receiver's instance variables: nil UndefinedObject>>DoIt Receiver: nil Arguments and temporary variables: Receiver's instance variables: nil Compiler>>evaluate:in:to:notifying:ifFail:logged: Receiver: a Compiler Arguments and temporary variables: t1: 'Non .ST domain' t2: nil t3: nil t4: nil t5: [] in Compiler class>>evaluate:for:notifying:logged: {[^ nil]} t6: true t7: DoIt Non. ^ ST domain t8: a CompiledMethod (534) t9: nil t10: nil t11: nil t12: nil Receiver's instance variables: sourceStream: a ReadStream 'Non .ST domain' requestor: nil class: UndefinedObject category: nil context: nil parserClass: Parser Compiler class>>evaluate:for:notifying:logged: Receiver: Compiler Arguments and temporary variables: t1: 'Non .ST domain' t2: nil t3: nil t4: true Receiver's instance variables: superclass: Object methodDict: a MethodDictionary(#compile:in:classified:notifying:ifFail:->a Comp...etc... format: 142 instanceVariables: #('sourceStream' 'requestor' 'class' 'category' 'context' 'p...etc... organization: ('error handling' notify: notify:at:) ('public access' compile:in...etc... subclasses: nil name: #Compiler classPool: a Dictionary() sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Compiler-Kernel' traitComposition: nil localSelectors: nil --- The full stack --- UndefinedObject(Object)>>doesNotUnderstand: #domain UndefinedObject>>DoIt Compiler>>evaluate:in:to:notifying:ifFail:logged: Compiler class>>evaluate:for:notifying:logged: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Compiler class>>evaluate:for:logged: Compiler class>>evaluate:logged: [] in RWBinaryOrTextStream(PositionableStream)>>fileInAnnouncing: {[t2 := (self peekFor: $!) ifTrue: [(Compiler evaluate: self nextChunk lo...]} BlockContext>>on:do: [] in RWBinaryOrTextStream(PositionableStream)>>fileInAnnouncing: {[:t4 | [self atEnd] whileFalse: [t4 value: self position. self skipSep...]} [] in ProgressInitiationException>>defaultMorphicAction {[t1 := workBlock value: t2]} BlockContext>>ensure: ProgressInitiationException>>defaultMorphicAction ProgressInitiationException>>defaultAction UndefinedObject>>handleSignal: ProgressInitiationException(Exception)>>signal ProgressInitiationException>>display:at:from:to:during: ProgressInitiationException class>>display:at:from:to:during: ByteString(String)>>displayProgressAt:from:to:during: RWBinaryOrTextStream(PositionableStream)>>fileInAnnouncing: RWBinaryOrTextStream(PositionableStream)>>fileIn CodeLoader>>installSourceFile: [] in CodeLoader>>installSourceFiles {[:t1 | self installSourceFile: t1 contentStream]} Array(SequenceableCollection)>>do: CodeLoader>>installSourceFiles ProjectLauncher>>startUpAfterLogin ProjectLauncher>>startUp [] in AutoStart class>>startUp: {[t4 startUp]} WorldState>>runStepMethodsIn: PasteUpMorph>>runStepMethods WorldState>>doOneCycleNowFor: WorldState>>doOneCycleFor: PasteUpMorph>>doOneCycle [] in Project class>>spawnNewProcess {[[World doOneCycle. Processor yield. false] whileFalse. nil]} [] in BlockContext>>newProcess {[self value. Processor terminateActive]} |
Looks like the image tried to access 'http://test.st/'.
The most compatible solution is to add a BASE tag with the absolute URL ending in a slash, which is concatenated with the SRC url (see ProjectLauncher>>startUpAfterLogin and CodeLoader>>createRequestFor:in:). You can try to add APISUPPORTED="TRUE" which will cause the image to try fetching the (relative) SRC through the browser. That may or may not work depending on which browser is used. The problem is that a browser plugin cannot find out the base URL of the page it is embedded in, so it cannot resolve relative URLs on its own. The only way to fetch relative URLs is by going through the browser API. Which was unreliable for years, hence at squeakland the APISUPPORTED tag was generated on the server side by a script that used the Browser agent string to determine if the API is supported or not. - Bert - On Jul 15, 2007, at 12:37 , Hilaire Fernandes wrote: > I try to use a 3.9 image for the browser plugin image. > I have checked about readDocumentAtStartup preference and > "AutoStart installedLaunchers". > > The image appears in the browser ok. > > If add a src="test.st" in the html as: > > <head> > <title>Test de plugin web Squeak</title> > </head> > <body> > <embed > type="application/x-squeak-source" > src ="test.st" > align="center" > width="700" > height="500"> > </embed> > </body> > </html> > > With test.st as: > IFIDbSession default. IFIModels new. > moment := IFIModels schools anyOne learners anyOne > pedagogicalMoments anyOne. > view := (moment exerciceViewAtStart beSticky position: 0@0) > openInWorld. > > I got a strange error, see attached log and the test.st is not > filed in. > > If I use this same image and drop the test.st into it, it works fine. > So it may look like a security check, but I cannot find it. > > Thanks > > Hilaire > MessageNotUnderstood: UndefinedObject>>domain > 15 July 2007 12:30:33 pm > > VM: unix - a SmalltalkImage > Image: Squeak3.9 [latest update: #7068] > > SecurityManager state: > Restricted: false > FileAccess: true > SocketAccess: true > Working Dir /home/hilaire/.npsqueak > Trusted Dir /home/hilaire/.npsqueak/secure > Untrusted Dir /home/hilaire/.npsqueak/My Squeak > > UndefinedObject(Object)>>doesNotUnderstand: #domain > Receiver: nil > Arguments and temporary variables: > t1: domain > Receiver's instance variables: > nil > > UndefinedObject>>DoIt > Receiver: nil > Arguments and temporary variables: > > Receiver's instance variables: > nil > > Compiler>>evaluate:in:to:notifying:ifFail:logged: > Receiver: a Compiler > Arguments and temporary variables: > t1: 'Non .ST domain' > t2: nil > t3: nil > t4: nil > t5: [] in Compiler class>>evaluate:for:notifying:logged: {[^ nil]} > t6: true > t7: DoIt > Non. > ^ ST domain > t8: a CompiledMethod (534) > t9: nil > t10: nil > t11: nil > t12: nil > Receiver's instance variables: > sourceStream: a ReadStream 'Non .ST domain' > requestor: nil > class: UndefinedObject > category: nil > context: nil > parserClass: Parser > > Compiler class>>evaluate:for:notifying:logged: > Receiver: Compiler > Arguments and temporary variables: > t1: 'Non .ST domain' > t2: nil > t3: nil > t4: true > Receiver's instance variables: > superclass: Object > methodDict: a MethodDictionary > (#compile:in:classified:notifying:ifFail:->a Comp...etc... > format: 142 > instanceVariables: #('sourceStream' 'requestor' 'class' > 'category' 'context' 'p...etc... > organization: ('error handling' notify: notify:at:) > ('public access' compile:in...etc... > subclasses: nil > name: #Compiler > classPool: a Dictionary() > sharedPools: nil > environment: a SystemDictionary(lots of globals) > category: #'Compiler-Kernel' > traitComposition: nil > localSelectors: nil > > > --- The full stack --- > UndefinedObject(Object)>>doesNotUnderstand: #domain > UndefinedObject>>DoIt > Compiler>>evaluate:in:to:notifying:ifFail:logged: > Compiler class>>evaluate:for:notifying:logged: > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > Compiler class>>evaluate:for:logged: > Compiler class>>evaluate:logged: > [] in RWBinaryOrTextStream(PositionableStream)>>fileInAnnouncing: > {[t2 := (self peekFor: $!) ifTrue: [(Compiler evaluate: self > nextChunk lo...]} > BlockContext>>on:do: > [] in RWBinaryOrTextStream(PositionableStream)>>fileInAnnouncing: > {[:t4 | [self atEnd] whileFalse: [t4 value: self position. > self skipSep...]} > [] in ProgressInitiationException>>defaultMorphicAction {[t1 := > workBlock value: t2]} > BlockContext>>ensure: > ProgressInitiationException>>defaultMorphicAction > ProgressInitiationException>>defaultAction > UndefinedObject>>handleSignal: > ProgressInitiationException(Exception)>>signal > ProgressInitiationException>>display:at:from:to:during: > ProgressInitiationException class>>display:at:from:to:during: > ByteString(String)>>displayProgressAt:from:to:during: > RWBinaryOrTextStream(PositionableStream)>>fileInAnnouncing: > RWBinaryOrTextStream(PositionableStream)>>fileIn > CodeLoader>>installSourceFile: > [] in CodeLoader>>installSourceFiles {[:t1 | self > installSourceFile: t1 contentStream]} > Array(SequenceableCollection)>>do: > CodeLoader>>installSourceFiles > ProjectLauncher>>startUpAfterLogin > ProjectLauncher>>startUp > [] in AutoStart class>>startUp: {[t4 startUp]} > WorldState>>runStepMethodsIn: > PasteUpMorph>>runStepMethods > WorldState>>doOneCycleNowFor: > WorldState>>doOneCycleFor: > PasteUpMorph>>doOneCycle > [] in Project class>>spawnNewProcess {[[World doOneCycle. > Processor yield. false] whileFalse. nil]} > [] in BlockContext>>newProcess {[self value. Processor > terminateActive]} > |
This is where I was stuck thanks.
I noted the font are a little tiny when switching to browser plugin image. Which option alter this? Hilaire Bert Freudenberg a écrit : > Looks like the image tried to access 'http://test.st/'. > > The most compatible solution is to add a BASE tag with the absolute URL > ending in a slash, which is concatenated with the SRC url (see > ProjectLauncher>>startUpAfterLogin and CodeLoader>>createRequestFor:in:). > > You can try to add APISUPPORTED="TRUE" which will cause the image to try > fetching the (relative) SRC through the browser. That may or may not > work depending on which browser is used. > > The problem is that a browser plugin cannot find out the base URL of the > page it is embedded in, so it cannot resolve relative URLs on its own. > The only way to fetch relative URLs is by going through the browser API. > Which was unreliable for years, hence at squeakland the APISUPPORTED tag > was generated on the server side by a script that used the Browser agent > string to determine if the API is supported or not. |
Hilaire Fernandes a écrit :
> This is where I was stuck thanks. > I noted the font are a little tiny when switching to browser plugin > image. Which option alter this? Sorry to bother this problem has nothing to do with plugin. Hilaire |
Free forum by Nabble | Edit this page |