package com.smash.revolance.ui.materials.mock.webdriver.browser;
/*
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Revolance-UI-Materials-Mock-Webdriver-Service
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Copyright (C) 2012 - 2013 RevoLance
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
import com.smash.revolance.ui.materials.JsonHelper;
import com.smash.revolance.ui.materials.TestConstants;
import com.smash.revolance.ui.materials.mock.webdriver.MockedWebPage;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import java.io.File;
import java.io.IOException;
import java.util.List;
/**
* User: wsmash
* Date: 29/09/13
* Time: 23:49
*/
public class MockedBrowser extends TestConstants
{
private MockedWebPage page = new MockedWebPage();
// Browser's list of pages that have been visited.
// private ArrayList<MockedWebPage> history = new ArrayList<MockedWebPage>();
private Point location;
private Dimension dimension;
public MockedBrowser()
{
setSize( 800, 600 );
setLocation( 0, 0 );
}
public void setLocation(int x, int y)
{
location = new Point( x, y );
}
public void setSize(int w, int h)
{
dimension = new Dimension( w, h );
}
/*
public void goBack()
{
int pageIndex = history.indexOf( page );
if ( pageIndex != 0 )
{
page = history.get( pageIndex - 1 );
}
}
*/
/*
public void refresh()
{
}
*/
/*
public void goForward()
{
int pageIndex = history.indexOf( page.getUrl() );
if ( pageIndex != history.size() - 1 )
{
page = history.get( pageIndex + 1 );
}
}
*/
public String getUrl()
{
return page.getUrl();
}
public void goToUrl(String url) throws Exception
{
page = (MockedWebPage) JsonHelper.getInstance().map( MockedWebPage.class, getMockedPage( url ) );
page.setUrl( url );
// history.add( page );
}
public String getTitle()
{
return page.getTitle();
}
public String takeScreenshot()
{
return page.getCaption();
}
public Object executeJavaScript(String script, Object[] args)
{
if ( script.contains( "clientHeight" ) )
{
return getPageHeight();
}
if ( script.contains( "clientWidth" ) )
{
return getPageWidth();
}
return "";
}
public Point getLocation()
{
return location;
}
public Dimension getDimension()
{
return dimension;
}
public List<String> findElements(String xpath)
{
return page.findElements( xpath );
}
public Point getElementLocation(String elementId)
{
return page.getElementLocation( elementId );
}
public Dimension getElementSize(String elementId)
{
return page.getElementSize( elementId );
}
public String getElementTag(String elementId)
{
return page.getElementTag( elementId );
}
public String getElementText(String elementId)
{
return page.getElementText( elementId );
}
public String getElementHtmlAttribute(String elementId, String attr)
{
return page.getElementAttribute( elementId, attr );
}
public String getPageHeight()
{
return String.valueOf( page.getH() );
}
public String getPageWidth()
{
return String.valueOf( page.getW() );
}
public String isElementDisplayed(String elementId)
{
return String.valueOf( page.isElementDisplayed( elementId ) );
}
public String getElementCssAttribute(String elementId, String cssAttribute)
{
return page.getCssAttribute( elementId, cssAttribute );
}
}