1*ef39d40dSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*ef39d40dSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*ef39d40dSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*ef39d40dSAndrew Rist * distributed with this work for additional information 6*ef39d40dSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*ef39d40dSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*ef39d40dSAndrew Rist * "License"); you may not use this file except in compliance 9*ef39d40dSAndrew Rist * with the License. You may obtain a copy of the License at 10*ef39d40dSAndrew Rist * 11*ef39d40dSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*ef39d40dSAndrew Rist * 13*ef39d40dSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*ef39d40dSAndrew Rist * software distributed under the License is distributed on an 15*ef39d40dSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*ef39d40dSAndrew Rist * KIND, either express or implied. See the License for the 17*ef39d40dSAndrew Rist * specific language governing permissions and limitations 18*ef39d40dSAndrew Rist * under the License. 19*ef39d40dSAndrew Rist * 20*ef39d40dSAndrew Rist *************************************************************/ 21*ef39d40dSAndrew Rist 22*ef39d40dSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir package ifc.frame; 25cdf0e10cSrcweir 26cdf0e10cSrcweir import lib.MultiMethodTest; 27cdf0e10cSrcweir import util.utils; 28cdf0e10cSrcweir 29cdf0e10cSrcweir import com.sun.star.frame.DispatchDescriptor; 30cdf0e10cSrcweir import com.sun.star.frame.FrameSearchFlag; 31cdf0e10cSrcweir import com.sun.star.frame.XDispatch; 32cdf0e10cSrcweir import com.sun.star.frame.XDispatchProvider; 33cdf0e10cSrcweir import com.sun.star.lang.XMultiServiceFactory; 34cdf0e10cSrcweir import com.sun.star.uno.UnoRuntime; 35cdf0e10cSrcweir import com.sun.star.util.URL; 36cdf0e10cSrcweir import com.sun.star.util.XURLTransformer; 37cdf0e10cSrcweir 38cdf0e10cSrcweir /** 39cdf0e10cSrcweir * Testing <code>com.sun.star.frame.XDispatchProvider</code> 40cdf0e10cSrcweir * interface methods: 41cdf0e10cSrcweir * <ul> 42cdf0e10cSrcweir * <li><code> queryDispatch() </code></li> 43cdf0e10cSrcweir * <li><code> queryDispatches() </code></li> 44cdf0e10cSrcweir * </ul><p> 45cdf0e10cSrcweir * This test needs the following object relations : 46cdf0e10cSrcweir * <ul> 47cdf0e10cSrcweir * <li> <code>'XDispatchProvider.URL'</code> (of type <code>String</code>): 48cdf0e10cSrcweir * used to obtain unparsed url of DispatchProvider </li> 49cdf0e10cSrcweir * </ul> <p> 50cdf0e10cSrcweir * Test is <b> NOT </b> multithread compilant. <p> 51cdf0e10cSrcweir * @see com.sun.star.frame.XDispatchProvider 52cdf0e10cSrcweir */ 53cdf0e10cSrcweir public class _XDispatchProvider extends MultiMethodTest { 54cdf0e10cSrcweir public static XDispatchProvider oObj = null; 55cdf0e10cSrcweir private String dispatchUrl = null ; 56cdf0e10cSrcweir 57cdf0e10cSrcweir /** 58cdf0e10cSrcweir * Retrieves object relation. 59cdf0e10cSrcweir */ before()60cdf0e10cSrcweir public void before() { 61cdf0e10cSrcweir dispatchUrl = (String) tEnv.getObjRelation("XDispatchProvider.URL") ; 62cdf0e10cSrcweir if (dispatchUrl == null) { 63cdf0e10cSrcweir dispatchUrl = utils.getFullTestDocName("index.html"); 64cdf0e10cSrcweir } 65cdf0e10cSrcweir log.println("Using URL: '" + dispatchUrl + "'"); 66cdf0e10cSrcweir } 67cdf0e10cSrcweir 68cdf0e10cSrcweir /** 69cdf0e10cSrcweir * Test calls the method. <p> 70cdf0e10cSrcweir * Has <b> OK </b> status if the method does not return null. 71cdf0e10cSrcweir */ _queryDispatch()72cdf0e10cSrcweir public void _queryDispatch() { 73cdf0e10cSrcweir URL url = new URL(); 74cdf0e10cSrcweir String frameName = "_top"; 75cdf0e10cSrcweir 76cdf0e10cSrcweir url.Complete = dispatchUrl; 77cdf0e10cSrcweir try { 78cdf0e10cSrcweir XURLTransformer xParser=(XURLTransformer) 79cdf0e10cSrcweir UnoRuntime.queryInterface(XURLTransformer.class, 80cdf0e10cSrcweir ((XMultiServiceFactory)tParam.getMSF()).createInstance 81cdf0e10cSrcweir ("com.sun.star.util.URLTransformer")); 82cdf0e10cSrcweir // Because it's an in/out parameter we must use an array of 83cdf0e10cSrcweir // URL objects. 84cdf0e10cSrcweir URL[] aParseURL = new URL[1]; 85cdf0e10cSrcweir aParseURL[0] = new URL(); 86cdf0e10cSrcweir aParseURL[0].Complete = dispatchUrl; 87cdf0e10cSrcweir xParser.parseStrict(aParseURL); 88cdf0e10cSrcweir url = aParseURL[0]; 89cdf0e10cSrcweir } catch (com.sun.star.uno.Exception e) { 90cdf0e10cSrcweir log.println("Couldn't parse URL"); 91cdf0e10cSrcweir } 92cdf0e10cSrcweir XDispatch xDispatch = oObj.queryDispatch(url, 93cdf0e10cSrcweir frameName, FrameSearchFlag.ALL); 94cdf0e10cSrcweir tRes.tested("queryDispatch()", xDispatch != null); 95cdf0e10cSrcweir } 96cdf0e10cSrcweir 97cdf0e10cSrcweir /** 98cdf0e10cSrcweir * Before test calls the method, DispatchDescriptor sequence is defined.<p> 99cdf0e10cSrcweir * Has <b> OK </b> status if the method does not return null, returned 100cdf0e10cSrcweir * sequence length is equal to a number of DispatchDescriptors 101cdf0e10cSrcweir * and returned sequence consists of non-null elements. 102cdf0e10cSrcweir */ _queryDispatches()103cdf0e10cSrcweir public void _queryDispatches() { 104cdf0e10cSrcweir String name1 = "_self"; 105cdf0e10cSrcweir String name2 = "_top"; 106cdf0e10cSrcweir URL url1 = new URL(); 107cdf0e10cSrcweir URL url2 = new URL(); 108cdf0e10cSrcweir 109cdf0e10cSrcweir url1.Complete = dispatchUrl; 110cdf0e10cSrcweir url2.Complete = dispatchUrl; 111cdf0e10cSrcweir try { 112cdf0e10cSrcweir log.println("Parsing URL"); 113cdf0e10cSrcweir XURLTransformer xParser = (XURLTransformer) 114cdf0e10cSrcweir UnoRuntime.queryInterface(XURLTransformer.class, 115cdf0e10cSrcweir ((XMultiServiceFactory)tParam.getMSF()).createInstance 116cdf0e10cSrcweir ("com.sun.star.util.URLTransformer")); 117cdf0e10cSrcweir // Because it's an in/out parameter we must use an array of 118cdf0e10cSrcweir // URL objects. 119cdf0e10cSrcweir URL[] aParseURL = new URL[1]; 120cdf0e10cSrcweir aParseURL[0] = new URL(); 121cdf0e10cSrcweir aParseURL[0].Complete = dispatchUrl; 122cdf0e10cSrcweir xParser.parseStrict(aParseURL); 123cdf0e10cSrcweir url1 = aParseURL[0]; 124cdf0e10cSrcweir url2 = aParseURL[0]; 125cdf0e10cSrcweir } catch (com.sun.star.uno.Exception e) { 126cdf0e10cSrcweir log.println("Couldn't parse URL"); 127cdf0e10cSrcweir } 128cdf0e10cSrcweir DispatchDescriptor descs[] = new DispatchDescriptor[] { 129cdf0e10cSrcweir new DispatchDescriptor(url1, name1, FrameSearchFlag.ALL), 130cdf0e10cSrcweir new DispatchDescriptor(url2, name2, FrameSearchFlag.ALL) 131cdf0e10cSrcweir }; 132cdf0e10cSrcweir XDispatch[] xDispatches = oObj.queryDispatches(descs); 133cdf0e10cSrcweir 134cdf0e10cSrcweir if (xDispatches == null) { 135cdf0e10cSrcweir log.println("queryDispatches() returned null"); 136cdf0e10cSrcweir tRes.tested("queryDispatches()", false); 137cdf0e10cSrcweir return; 138cdf0e10cSrcweir } 139cdf0e10cSrcweir 140cdf0e10cSrcweir if (xDispatches.length != descs.length) { 141cdf0e10cSrcweir log.println("queryDispatches() returned " 142cdf0e10cSrcweir + xDispatches.length 143cdf0e10cSrcweir + " amount of XDispatch instead of " 144cdf0e10cSrcweir + descs.length); 145cdf0e10cSrcweir tRes.tested("queryDispatches()", false); 146cdf0e10cSrcweir return; 147cdf0e10cSrcweir } 148cdf0e10cSrcweir 149cdf0e10cSrcweir for (int i = 0; i < xDispatches.length; i++) { 150cdf0e10cSrcweir if (xDispatches[i] == null) { 151cdf0e10cSrcweir log.println("queryDispatches() result contains" 152cdf0e10cSrcweir + " null object"); 153cdf0e10cSrcweir tRes.tested("queryDispatches()", false); 154cdf0e10cSrcweir return; 155cdf0e10cSrcweir } 156cdf0e10cSrcweir } 157cdf0e10cSrcweir 158cdf0e10cSrcweir tRes.tested("queryDispatches()", true); 159cdf0e10cSrcweir return; 160cdf0e10cSrcweir } 161cdf0e10cSrcweir 162cdf0e10cSrcweir } 163cdf0e10cSrcweir 164