1 /* 2 * This file is part of the LibreOffice project. 3 * 4 * This Source Code Form is subject to the terms of the Mozilla Public 5 * License, v. 2.0. If a copy of the MPL was not distributed with this 6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 7 * 8 * This file incorporates work covered by the following license notice: 9 * 10 * Licensed to the Apache Software Foundation (ASF) under one or more 11 * contributor license agreements. See the NOTICE file distributed 12 * with this work for additional information regarding copyright 13 * ownership. The ASF licenses this file to you under the Apache 14 * License, Version 2.0 (the "License"); you may not use this file 15 * except in compliance with the License. You may obtain a copy of 16 * the License at http://www.apache.org/licenses/LICENSE-2.0 . 17 */ 18 package mod._svtools; 19 20 import com.sun.star.drawing.XLayerManager; 21 import com.sun.star.drawing.XLayerSupplier; 22 23 import java.io.PrintWriter; 24 25 import lib.TestCase; 26 import lib.TestEnvironment; 27 import lib.TestParameters; 28 import util.AccessibilityTools; 29 import util.SOfficeFactory; 30 31 import com.sun.star.accessibility.AccessibleRole; 32 import com.sun.star.accessibility.XAccessible; 33 import com.sun.star.awt.XExtendedToolkit; 34 import com.sun.star.awt.XWindow; 35 import com.sun.star.lang.XComponent; 36 import com.sun.star.uno.UnoRuntime; 37 import com.sun.star.uno.XInterface; 38 import com.sun.star.util.XCloseable; 39 40 41 /** 42 * Test for object that implements the following interfaces : 43 * <ul> 44 * <li><code>::com::sun::star::accessibility::XAccessibleComponent 45 * </code></li> 46 * <li><code>::com::sun::star::accessibility::XAccessibleContext 47 * </code></li> 48 * <li><code>::com::sun::star::accessibility::XAccessibleEventBroadcaster 49 * </code></li> 50 * <li> 51 * <code>::com::sun::star::accessibility::XAccessibleExtendedComponent 52 * </code></li> 53 * <li><code>::com::sun::star::accessibility::XAccessibleSelection 54 * </code></li> 55 * </ul> <p> 56 * 57 * @see com.sun.star.accessibility.XAccessibleSelection 58 * @see com.sun.star.accessibility.XAccessibleExtendedComponent 59 * @see com.sun.star.accessibility.XAccessibleEventBroadcaster 60 * @see com.sun.star.accessibility.XAccessibleContext 61 * @see com.sun.star.accessibility.XAccessibleComponent 62 * @see ifc.accessibility._XAccessibleSelection 63 * @see ifc.accessibility._XAccessibleComponent 64 * @see ifc.accessibility._XAccessibleExtendedComponent 65 * @see ifc.accessibility._XAccessibleEventBroadcaster 66 * @see ifc.accessibility._XAccessibleContext 67 */ 68 public class AccessibleTabBarPageList extends TestCase { 69 static XComponent xDoc; 70 71 /** 72 * Disposes the document, if exists, created in 73 * <code>createTestEnvironment</code> method. 74 */ 75 @Override cleanup(TestParameters Param, PrintWriter log)76 protected void cleanup(TestParameters Param, PrintWriter log) { 77 log.println("disposing xDoc"); 78 79 if (xDoc != null) { 80 closeDoc(); 81 } 82 } 83 84 /** 85 * Creates a spreadsheet document. Then obtains an accessible object with 86 * the role <code>AccessibleRole.PAGETABLIST</code>. 87 * Object relations created : 88 * <ul> 89 * <li> <code>'EventProducer'</code> for 90 * {@link ifc.accessibility._XAccessibleEventBroadcaster}: 91 * </li> 92 * </ul> 93 * 94 * @param tParam test parameters 95 * @param log writer to log information while testing 96 * 97 * @see com.sun.star.awt.Toolkit 98 * @see com.sun.star.accessibility.AccessibleRole 99 * @see ifc.accessibility._XAccessibleEventBroadcaster 100 * @see com.sun.star.accessibility.XAccessibleEventBroadcaster 101 */ 102 @Override createTestEnvironment(TestParameters tParam, PrintWriter log)103 protected TestEnvironment createTestEnvironment(TestParameters tParam, 104 PrintWriter log) throws Exception { 105 log.println("creating a test environment"); 106 107 if (xDoc != null) { 108 closeDoc(); 109 } 110 111 // get a soffice factory object 112 SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF()); 113 114 log.println("creating a draw document"); 115 xDoc = SOF.createDrawDoc(null); 116 117 util.utils.waitForEventIdle(tParam.getMSF()); 118 119 XInterface oObj = (XInterface) tParam.getMSF() 120 .createInstance("com.sun.star.awt.Toolkit"); 121 122 XExtendedToolkit tk = UnoRuntime.queryInterface( 123 XExtendedToolkit.class, oObj); 124 125 util.utils.waitForEventIdle(tParam.getMSF()); 126 127 XWindow xWindow = UnoRuntime.queryInterface(XWindow.class, 128 tk.getActiveTopWindow()); 129 130 XAccessible xRoot = AccessibilityTools.getAccessibleObject(xWindow); 131 132 oObj = AccessibilityTools.getAccessibleObjectForRole(xRoot, 133 AccessibleRole.PAGE_TAB_LIST); 134 135 log.println("ImplementationName: " + util.utils.getImplName(oObj)); 136 137 TestEnvironment tEnv = new TestEnvironment(oObj); 138 139 tEnv.addObjRelation("XAccessibleSelection.multiSelection", 140 Boolean.FALSE); 141 142 tEnv.addObjRelation("XAccessibleSelection.OneAlwaysSelected", 143 Boolean.TRUE); 144 145 XLayerSupplier oLS = UnoRuntime.queryInterface(XLayerSupplier.class, xDoc); 146 XInterface oLM = oLS.getLayerManager(); 147 final XLayerManager xLM = UnoRuntime.queryInterface(XLayerManager.class, oLM); 148 149 150 tEnv.addObjRelation("EventProducer", 151 new ifc.accessibility._XAccessibleEventBroadcaster.EventProducer() { 152 public void fireEvent() { 153 xLM.insertNewByIndex(0); 154 } 155 }); 156 157 return tEnv; 158 } 159 closeDoc()160 protected void closeDoc() { 161 XCloseable closer = UnoRuntime.queryInterface( 162 XCloseable.class, xDoc); 163 164 try { 165 closer.close(true); 166 } catch (com.sun.star.util.CloseVetoException e) { 167 log.println("Couldn't close document " + e.getMessage()); 168 } catch (com.sun.star.lang.DisposedException e) { 169 log.println("Couldn't close document " + e.getMessage()); 170 } 171 } 172 }