platform/bb/rhodes/src/com/rho/rubyext/WebView.java in rhodes-3.0.2 vs platform/bb/rhodes/src/com/rho/rubyext/WebView.java in rhodes-3.1.0.beta.1

- old
+ new

@@ -1,5 +1,31 @@ +/*------------------------------------------------------------------------ +* (The MIT License) +* +* Copyright (c) 2008-2011 Rhomobile, Inc. +* +* Permission is hereby granted, free of charge, to any person obtaining a copy +* of this software and associated documentation files (the "Software"), to deal +* in the Software without restriction, including without limitation the rights +* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +* copies of the Software, and to permit persons to whom the Software is +* furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in +* all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +* THE SOFTWARE. +* +* http://rhomobile.com +*------------------------------------------------------------------------*/ + package com.rho.rubyext; import com.rho.RhoEmptyLogger; import com.rho.RhoLogger; import com.rho.RhodesApp; @@ -48,10 +74,22 @@ LOG.ERROR("navigate failed.", e); throw (e instanceof RubyException ? (RubyException)e : new RubyException(e.getMessage())); } } }); + klass.getSingletonClass().defineMethod("navigate_back", new RubyNoArgMethod() { + protected RubyValue run(RubyValue receiver, RubyBlock block) + { + try { + RhodesApplication.getInstance().navigateBack(); + return RubyConstant.QNIL; + } catch(Exception e) { + LOG.ERROR("navigate_back failed.", e); + throw (e instanceof RubyException ? (RubyException)e : new RubyException(e.getMessage())); + } + } + }); klass.getSingletonClass().defineMethod("current_location", new RubyNoOrOneArgMethod() { protected RubyValue run(RubyValue receiver, RubyBlock block) { try { String url = RhodesApp.getInstance().getCurrentUrl(0); @@ -135,8 +173,29 @@ LOG.ERROR("set_cookie failed.", e); throw (e instanceof RubyException ? (RubyException)e : new RubyException(e.getMessage())); } } }); + klass.getSingletonClass().defineMethod("get_cookie", new RubyOneArgMethod() { + protected RubyValue run(RubyValue receiver, RubyValue arg1, RubyBlock block) { + try { + final String url = arg1.toString(); + + RhodesApplication.getInstance().invokeLater( new Runnable() { + public void run() + { + RhodesApplication.getInstance().getCookie(RhodesApp.getInstance().canonicalizeRhoUrl(url)); + } + } ); + + return RubyConstant.QNIL; + } + catch (Exception e) { + LOG.ERROR("get_cookie failed.", e); + throw (e instanceof RubyException ? (RubyException)e : new RubyException(e.getMessage())); + } + } + }); + } }