Page 1 of 1

Issue with WebGadget in Maverick related to cookies

Posted: Thu Dec 26, 2013 10:26 pm
by bbanelli
Greetings,

first of all, Merry Christmas!

This is not entirely related strictly to PureBasic, but has its repercussions, so here it is - there's a small issue regarding settings of WebGadget in Maverick. Cookies are blocked by default in Safari and they need to be enabled manually, FWIW.

http://i44.tinypic.com/ri9ij6.pngt

Now, is there an option to set that option via simple oneliner/command line/PureBasic command?

With my best,

Bruno

Re: Issue with WebGadget in Maverick related to cookies

Posted: Fri Dec 27, 2013 4:14 pm
by bbanelli
Probably not the most elegant way, but...

http://youtu.be/FyyX6SHEydI?hd=1

http://dev.banelli.biz/ChangeSafariCookies.scpt

Code: Select all

tell application "System Events"
	tell application "Safari" to activate
	tell process "Safari"
		keystroke "," using command down
		delay 3
		tell window 1
			click button "Privacy" of tool bar 1
			delay 3
			click radio button "From third parties and advertisers" of radio group 1 of group 1 of group 1
		end tell
	end tell
	tell application "Safari" to quit
end tell
Hope it helps,

Bruno

Re: Issue with WebGadget in Maverick related to cookies

Posted: Sat Dec 28, 2013 6:17 pm
by Shardik
bbanelli wrote:Probably not the most elegant way, but...

http://youtu.be/FyyX6SHEydI?hd=1

http://dev.banelli.biz/ChangeSafariCookies.scpt
Bruno,

thank you for your effort of demonstrating how to change the cookie policy in Safari with your YouTube video using Apple script! I think that using a script to change the cookie policy is the only way for OS X Lion and newer. In Snow Leopard it is still possible to change the cookie policy with a simple PureBasic command! After executing the code example below and changing the setting on Snow Leopard, you have to close Safari (with Cmd+Q) and restart Safari. Then you will observe that the setting has changed. In Lion and Mountain Lion (and presumably Mavericks) this doesn't work anymore! I assume that newer Safari versions save the cookie policy when closing and restore the saved setting on a restart for safety reasons...

Nevertheless in your own programs using the WebGadget it should be possible to change the cookie policy with my example code.

Code: Select all

CookieStorage = CocoaMessage(0, 0, "NSHTTPCookieStorage sharedHTTPCookieStorage")

If CookieStorage
  OpenWindow(0, 270, 100, 260, 117, "Change cookie settings")
  FrameGadget(0, 10, 10, WindowWidth(0) - 20, WindowHeight(0) - 20, "Block cookies:")
  OptionGadget(1, 20, 80, WindowWidth(0) - 20, 20, "Never")
  OptionGadget(2, 20, 55, WindowWidth(0) - 20, 20, "Always")
  OptionGadget(3, 20, 30, GadgetWidth(0) - 20, 20, "From third parties and advertisers")

  CookiePolicy = CocoaMessage(0, CookieStorage, "cookieAcceptPolicy")
  SetGadgetState(CookiePolicy + 1, #True)

  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Break
      Case #PB_Event_Gadget
        SelectedGadget = EventGadget()

        If SelectedGadget >= 1 And SelectedGadget <= 3
          CookiePolicy = SelectedGadget - 1
          CocoaMessage(0, CookieStorage, "setCookieAcceptPolicy:", CookiePolicy)
        EndIf
    EndSelect
  ForEver
EndIf

Re: Issue with WebGadget in Maverick related to cookies

Posted: Sat Jan 04, 2014 9:59 pm
by bbanelli
@Shardik, thank you very much for your code, I'll make sure to test it and report back to forum!