Port framework/qa/complex/XTitle/CheckXTile.java to Cppunit
framework - Remove CheckXTitle.java from makefiles - Create new makefile for CheckXTitle framework qa complex XTitle - Remove JUnit test framework qa cppunit - Add new CppUnit test suit CheckXTitle.cxx - checkDefaultTitle: tests if default title is the same after cycling through the default window and print preview - checkTitleDefaultFileName: tests if a window title set with SuggestedSaveAs is in fact set with said name - setTitleAndCheck: tests if after setting window title and cycling through default window and print preview, there is infinite recursion Change-Id: If7794f0f853ef427bb735a22752cff3635f5ff63 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168168 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
This commit is contained in:
parent
ecd42fe188
commit
4078428a40
5 changed files with 202 additions and 327 deletions
43
framework/CppunitTest_framework_CheckXTitle.mk
Normal file
43
framework/CppunitTest_framework_CheckXTitle.mk
Normal file
|
@ -0,0 +1,43 @@
|
|||
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
|
||||
$(eval $(call gb_CppunitTest_CppunitTest,framework_CheckXTitle))
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_exception_objects,framework_CheckXTitle, \
|
||||
framework/qa/cppunit/CheckXTitle \
|
||||
))
|
||||
|
||||
$(eval $(call gb_CppunitTest_use_sdk_api,framework_CheckXTitle))
|
||||
|
||||
$(eval $(call gb_CppunitTest_use_libraries,framework_CheckXTitle, \
|
||||
comphelper \
|
||||
cppu \
|
||||
cppuhelper \
|
||||
sal \
|
||||
salhelper \
|
||||
subsequenttest \
|
||||
test \
|
||||
unotest \
|
||||
utl \
|
||||
tl \
|
||||
vcl \
|
||||
))
|
||||
|
||||
$(eval $(call gb_CppunitTest_use_external,framework_CheckXTitle,boost_headers))
|
||||
|
||||
$(eval $(call gb_CppunitTest_use_sdk_api,framework_CheckXTitle))
|
||||
|
||||
$(eval $(call gb_CppunitTest_use_ure,framework_CheckXTitle))
|
||||
$(eval $(call gb_CppunitTest_use_vcl,framework_CheckXTitle))
|
||||
|
||||
$(eval $(call gb_CppunitTest_use_rdb,framework_CheckXTitle,services))
|
||||
|
||||
$(eval $(call gb_CppunitTest_use_configuration,framework_CheckXTitle))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
|
@ -58,12 +58,10 @@ $(eval $(call gb_JunitTest_add_sourcefiles,framework_complex,\
|
|||
framework/qa/complex/dispatches/checkdispatchapi \
|
||||
framework/qa/complex/dispatches/Interceptor \
|
||||
framework/qa/complex/ModuleManager/CheckXModuleManager \
|
||||
framework/qa/complex/XTitle/CheckXTitle \
|
||||
))
|
||||
|
||||
$(eval $(call gb_JunitTest_add_classes,framework_complex,\
|
||||
complex.dispatches.checkdispatchapi \
|
||||
complex.XTitle.CheckXTitle \
|
||||
))
|
||||
# these were disabled in the old build system too, please check
|
||||
# carefully before reenabling
|
||||
|
|
|
@ -28,6 +28,7 @@ $(eval $(call gb_Module_add_targets,framework,\
|
|||
$(eval $(call gb_Module_add_slowcheck_targets,framework,\
|
||||
CppunitTest_framework_dispatch \
|
||||
CppunitTest_framework_loadenv \
|
||||
CppunitTest_framework_CheckXTitle \
|
||||
))
|
||||
|
||||
# Not sure why this is not stable on macOS.
|
||||
|
|
|
@ -1,325 +0,0 @@
|
|||
/*
|
||||
* This file is part of the LibreOffice project.
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*
|
||||
* This file incorporates work covered by the following license notice:
|
||||
*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed
|
||||
* with this work for additional information regarding copyright
|
||||
* ownership. The ASF licenses this file to you under the Apache
|
||||
* License, Version 2.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||
*/
|
||||
|
||||
package complex.XTitle;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import util.utils;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.Before;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
import org.openoffice.test.OfficeConnection;
|
||||
import com.sun.star.beans.PropertyValue;
|
||||
import com.sun.star.frame.Desktop;
|
||||
import com.sun.star.frame.XComponentLoader;
|
||||
import com.sun.star.frame.XFrame2;
|
||||
import com.sun.star.frame.XModel;
|
||||
import com.sun.star.frame.XTitle;
|
||||
import com.sun.star.frame.XController;
|
||||
import com.sun.star.lang.XComponent;
|
||||
import com.sun.star.lang.XMultiServiceFactory;
|
||||
import com.sun.star.uno.UnoRuntime;
|
||||
import com.sun.star.util.URLTransformer;
|
||||
import com.sun.star.util.XURLTransformer;
|
||||
import com.sun.star.util.URL;
|
||||
import com.sun.star.frame.XDispatchProvider;
|
||||
import com.sun.star.frame.XDispatch;
|
||||
|
||||
/** @short Check the interface XTitle
|
||||
|
||||
@descr These tests check in various cases the correctness of
|
||||
the title in the ui window.
|
||||
*/
|
||||
|
||||
public class CheckXTitle
|
||||
{
|
||||
|
||||
// some const
|
||||
private static final String DOCUMENT_TITLE = "documentTitle";
|
||||
private static final String UNO_URL_FOR_PRINT_PREVIEW = ".uno:PrintPreview";
|
||||
private static final String UNO_URL_FOR_CLOSING_PRINT_PREVIEW = ".uno:ClosePreview";
|
||||
private static final String UNO_URL_FOR_CLOSING_DOC = ".uno:CloseWin";
|
||||
|
||||
// members
|
||||
|
||||
/** will be set to xDesktop OR xFrame. */
|
||||
private XComponentLoader m_xLoader = null;
|
||||
|
||||
/** provides uno service manager */
|
||||
private XMultiServiceFactory m_xMSF = null;
|
||||
|
||||
/** used for parsing uno query URLs */
|
||||
private XURLTransformer m_xParser = null;
|
||||
|
||||
// test environment
|
||||
/** @short Create the environment for following tests.
|
||||
|
||||
@descr Use either a component loader from desktop or
|
||||
from frame
|
||||
*/
|
||||
@Before public void before() throws Exception
|
||||
{
|
||||
// get uno service manager from global test environment
|
||||
/* points to the global uno service manager. */
|
||||
m_xMSF = getMSF();
|
||||
|
||||
// define default loader
|
||||
m_xLoader = Desktop.create(connection.getComponentContext());
|
||||
|
||||
// get URL parser
|
||||
m_xParser = URLTransformer.create(connection.getComponentContext());
|
||||
}
|
||||
|
||||
/** @short close the environment.
|
||||
*/
|
||||
@After public void after() throws Exception
|
||||
{
|
||||
m_xLoader = null;
|
||||
m_xParser = null;
|
||||
m_xMSF = null;
|
||||
}
|
||||
|
||||
private URL parseURL(String unoURL)
|
||||
{
|
||||
URL[] aParseURL = new URL[] { new URL() };
|
||||
aParseURL[0].Complete = unoURL;
|
||||
m_xParser.parseStrict(aParseURL);
|
||||
return aParseURL[0];
|
||||
}
|
||||
|
||||
private void waitUntilDispatcherAvailable(XModel xModel, String unoURL)
|
||||
throws InterruptedException
|
||||
{
|
||||
utils.waitForEventIdle(m_xMSF);
|
||||
|
||||
// On Windows, some events such as focus changes are handled
|
||||
// asynchronously using PostMessage (Windows message queue)
|
||||
// so the previous UI transition may still not have completed yet
|
||||
// even though we called waitForEventIdle.
|
||||
//
|
||||
// Loop a few times until the desired dispatcher is available, which
|
||||
// is a better indication that the UI transition has completed.
|
||||
|
||||
XDispatchProvider xDisProv;
|
||||
XDispatch xDispatcher = null;
|
||||
URL parsed_url = parseURL(unoURL);
|
||||
|
||||
for (int ntries = 1; ntries < 5; ++ntries) {
|
||||
xDisProv = UnoRuntime.queryInterface(
|
||||
XDispatchProvider.class, xModel.getCurrentController() );
|
||||
xDispatcher = xDisProv.queryDispatch(parsed_url, "", 0);
|
||||
if (xDispatcher != null)
|
||||
break;
|
||||
Thread.sleep(250);
|
||||
}
|
||||
assertNotNull("Can not obtain dispatcher for query: " + unoURL, xDispatcher);
|
||||
}
|
||||
|
||||
|
||||
// prepare a uno URL query and dispatch it
|
||||
private void prepareQueryAndDispatch(XDispatchProvider xDisProv, String unoURL)
|
||||
{
|
||||
XDispatch xDispatcher = null;
|
||||
URL parsed_url = parseURL(unoURL);
|
||||
|
||||
xDispatcher = xDisProv.queryDispatch(parsed_url, "", 0);
|
||||
assertNotNull("Can not obtain dispatcher for query: " + unoURL, xDispatcher);
|
||||
xDispatcher.dispatch(parsed_url, null);
|
||||
}
|
||||
|
||||
/** @short checks the numbers displayed in the title
|
||||
|
||||
@descr cycles through default view and print preview
|
||||
and asserts that the title doesn't change.
|
||||
|
||||
disabled until the waitUntilDispatcherAvailable can be replaced
|
||||
*/
|
||||
@Test
|
||||
public void checkTitleNumbers() throws Exception
|
||||
{
|
||||
PropertyValue[] lArgs = new PropertyValue[1];
|
||||
|
||||
lArgs[0] = new PropertyValue();
|
||||
lArgs[0].Name = "Hidden";
|
||||
lArgs[0].Value = Boolean.FALSE;
|
||||
|
||||
// load doc
|
||||
XComponent xDoc=null;
|
||||
xDoc = m_xLoader.loadComponentFromURL("private:factory/swriter", "_blank", 0, lArgs);
|
||||
assertNotNull("Could not load temporary document", xDoc);
|
||||
|
||||
XModel xModel = UnoRuntime.queryInterface( XModel.class, xDoc );
|
||||
XController xController = UnoRuntime.queryInterface( XController.class, xModel.getCurrentController() );
|
||||
XTitle xTitle = UnoRuntime.queryInterface( XTitle.class, xModel.getCurrentController().getFrame() );
|
||||
XDispatchProvider xDisProv = null;
|
||||
|
||||
// get window title with ui in default mode
|
||||
String defaultTitle = xTitle.getTitle();
|
||||
|
||||
xDisProv = UnoRuntime.queryInterface( XDispatchProvider.class, xModel.getCurrentController() );
|
||||
prepareQueryAndDispatch( xDisProv, UNO_URL_FOR_PRINT_PREVIEW );
|
||||
waitUntilDispatcherAvailable( xModel, UNO_URL_FOR_CLOSING_PRINT_PREVIEW );
|
||||
|
||||
// get window title with ui in print preview mode
|
||||
String printPreviewTitle = xTitle.getTitle();
|
||||
assertEquals("Title mismatch between default view window title and print preview window title",
|
||||
defaultTitle, printPreviewTitle);
|
||||
|
||||
xDisProv = UnoRuntime.queryInterface( XDispatchProvider.class, xModel.getCurrentController() );
|
||||
prepareQueryAndDispatch( xDisProv, UNO_URL_FOR_CLOSING_PRINT_PREVIEW );
|
||||
waitUntilDispatcherAvailable( xModel, UNO_URL_FOR_CLOSING_DOC );
|
||||
|
||||
//get window title with ui back in default mode
|
||||
String printPreviewClosedTitle = xTitle.getTitle();
|
||||
assertEquals("Title mismatch between default view window title and title after switching from print preview to default view window" ,defaultTitle, printPreviewClosedTitle);
|
||||
|
||||
xDisProv = UnoRuntime.queryInterface( XDispatchProvider.class, xModel.getCurrentController() );
|
||||
prepareQueryAndDispatch( xDisProv, UNO_URL_FOR_CLOSING_DOC );
|
||||
|
||||
xDoc = null;
|
||||
xDisProv = null;
|
||||
}
|
||||
|
||||
/** checks the if SuggestedSaveAsName is displayed in the title */
|
||||
@Test
|
||||
public void checkTitleSuggestedFileName() throws Exception
|
||||
{
|
||||
PropertyValue[] lArgs = new PropertyValue[2];
|
||||
|
||||
lArgs[0] = new PropertyValue();
|
||||
lArgs[0].Name = "Hidden";
|
||||
lArgs[0].Value = Boolean.FALSE;
|
||||
lArgs[1] = new PropertyValue();
|
||||
lArgs[1].Name = "SuggestedSaveAsName";
|
||||
lArgs[1].Value = "suggestme.odt";
|
||||
|
||||
// load doc
|
||||
XComponent xDoc = m_xLoader.loadComponentFromURL("private:factory/swriter", "_blank", 0, lArgs);
|
||||
assertNotNull("Could not load temporary document", xDoc);
|
||||
|
||||
XModel xModel = UnoRuntime.queryInterface( XModel.class, xDoc );
|
||||
XTitle xTitle = UnoRuntime.queryInterface( XTitle.class, xModel.getCurrentController().getFrame() );
|
||||
|
||||
String title = xTitle.getTitle();
|
||||
assertTrue(title.startsWith("suggestme.odt"));
|
||||
|
||||
XDispatchProvider xDisProv = UnoRuntime.queryInterface( XDispatchProvider.class, xModel.getCurrentController() );
|
||||
prepareQueryAndDispatch( xDisProv, UNO_URL_FOR_CLOSING_DOC );
|
||||
}
|
||||
|
||||
/** @short sets frame title and checks for infinite recursion
|
||||
|
||||
@descr sets frame title. then cycles through default and
|
||||
print preview. then closes the window and checks
|
||||
for infinite recursion.
|
||||
|
||||
disabled until the waitUntilDispatcherAvailable can be replaced
|
||||
*/
|
||||
@Test
|
||||
public void setTitleAndCheck() throws Exception
|
||||
{
|
||||
PropertyValue[] lArgs = new PropertyValue[1];
|
||||
|
||||
lArgs[0] = new PropertyValue();
|
||||
lArgs[0].Name = "Hidden";
|
||||
lArgs[0].Value = Boolean.FALSE;
|
||||
|
||||
// load doc
|
||||
XComponent xDoc = null;
|
||||
xDoc = m_xLoader.loadComponentFromURL("private:factory/swriter", "_blank", 0, lArgs);
|
||||
assertNotNull("Could not create office document", xDoc);
|
||||
XModel xModel = UnoRuntime.queryInterface( XModel.class, xDoc );
|
||||
XFrame2 xFrame = UnoRuntime.queryInterface( XFrame2.class, xModel.getCurrentController().getFrame() );
|
||||
XDispatchProvider xDisProv = null;
|
||||
// set doc title
|
||||
xFrame.setTitle(DOCUMENT_TITLE);
|
||||
|
||||
// switch to print preview mode
|
||||
xDisProv = UnoRuntime.queryInterface( XDispatchProvider.class, xModel.getCurrentController() );
|
||||
prepareQueryAndDispatch( xDisProv, UNO_URL_FOR_PRINT_PREVIEW );
|
||||
waitUntilDispatcherAvailable( xModel, UNO_URL_FOR_CLOSING_PRINT_PREVIEW );
|
||||
|
||||
// switch back to default mode
|
||||
xDisProv = UnoRuntime.queryInterface( XDispatchProvider.class, xModel.getCurrentController() );
|
||||
prepareQueryAndDispatch( xDisProv, UNO_URL_FOR_CLOSING_PRINT_PREVIEW );
|
||||
waitUntilDispatcherAvailable( xModel, UNO_URL_FOR_CLOSING_DOC );
|
||||
|
||||
// close document
|
||||
xDisProv = UnoRuntime.queryInterface( XDispatchProvider.class, xModel.getCurrentController() );
|
||||
try{
|
||||
prepareQueryAndDispatch( xDisProv, UNO_URL_FOR_CLOSING_DOC );
|
||||
} catch( Exception e ) {
|
||||
fail(e.toString());
|
||||
}
|
||||
|
||||
xDoc = null;
|
||||
xDisProv = null;
|
||||
}
|
||||
|
||||
/** @short checks creation of new empty document with readonly set to true
|
||||
|
||||
@descr creation of a new document with readonly property set
|
||||
to true. this should not fail even if as such it can
|
||||
be seen as a slightly silly thing to do. But existing
|
||||
3rd-party code depends on it to work.
|
||||
*/
|
||||
@Test public void checkLoadingWithReadOnly()
|
||||
{
|
||||
PropertyValue[] lArgs = new PropertyValue[2];
|
||||
|
||||
lArgs[0] = new PropertyValue();
|
||||
lArgs[0].Name = "Hidden";
|
||||
lArgs[0].Value = Boolean.FALSE;
|
||||
lArgs[1] = new PropertyValue();
|
||||
lArgs[1].Name = "ReadOnly";
|
||||
lArgs[1].Value = Boolean.TRUE;
|
||||
|
||||
// load doc
|
||||
XComponent xDoc = null;
|
||||
try{
|
||||
xDoc = m_xLoader.loadComponentFromURL("private:factory/swriter", "_default", 0, lArgs);
|
||||
} catch (Exception e) {
|
||||
}
|
||||
assertNotNull("Creating a new document read with ReadOnly property true should work (even if slightly silly)", xDoc);
|
||||
}
|
||||
|
||||
private XMultiServiceFactory getMSF()
|
||||
{
|
||||
return UnoRuntime.queryInterface(XMultiServiceFactory.class, connection.getComponentContext().getServiceManager());
|
||||
}
|
||||
|
||||
// setup and close connections
|
||||
@BeforeClass
|
||||
public static void setUpConnection() throws Exception
|
||||
{
|
||||
System.out.println("setUpConnection()");
|
||||
connection.setUp();
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void tearDownConnection()
|
||||
throws InterruptedException, com.sun.star.uno.Exception
|
||||
{
|
||||
System.out.println("tearDownConnection()");
|
||||
connection.tearDown();
|
||||
}
|
||||
private static final OfficeConnection connection = new OfficeConnection();
|
||||
}
|
158
framework/qa/cppunit/CheckXTitle.cxx
Normal file
158
framework/qa/cppunit/CheckXTitle.cxx
Normal file
|
@ -0,0 +1,158 @@
|
|||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/*
|
||||
* This file is part of the LibreOffice project.
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
#include <test/unoapi_test.hxx>
|
||||
|
||||
#include <com/sun/star/frame/XFrame.hpp>
|
||||
#include <com/sun/star/frame/XTitle.hpp>
|
||||
#include <com/sun/star/frame/XDispatchHelper.hpp>
|
||||
#include <com/sun/star/frame/XFrame2.hpp>
|
||||
#include <com/sun/star/util/URLTransformer.hpp>
|
||||
|
||||
#include <comphelper/propertyvalue.hxx>
|
||||
#include <comphelper/processfactory.hxx>
|
||||
|
||||
#include <vcl/scheduler.hxx>
|
||||
|
||||
using namespace ::com::sun::star;
|
||||
|
||||
namespace
|
||||
{
|
||||
// These were JUnit tests from framework/qa/complex/XTitle/CheckXTitle.java
|
||||
class Test : public UnoApiTest
|
||||
{
|
||||
public:
|
||||
Test()
|
||||
: UnoApiTest(u"/framework/qa/cppunit/data/"_ustr)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
CPPUNIT_TEST_FIXTURE(Test, checkDefaultTitle)
|
||||
{
|
||||
// Cycles through default view and print preview
|
||||
// and asserts that the title doesn't change.
|
||||
|
||||
// Load document
|
||||
uno::Reference<lang::XMultiServiceFactory> xFactory(comphelper::getProcessServiceFactory());
|
||||
uno::Reference<uno::XInterface> xInterface
|
||||
= xFactory->createInstance("com.sun.star.frame.Desktop");
|
||||
uno::Reference<frame::XComponentLoader> xComponentLoader(xInterface, uno::UNO_QUERY);
|
||||
uno::Sequence<beans::PropertyValue> aLoadArgs{ comphelper::makePropertyValue("Hidden", false) };
|
||||
mxComponent = xComponentLoader->loadComponentFromURL("private:factory/swriter", "_default", 0,
|
||||
aLoadArgs);
|
||||
|
||||
uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
|
||||
uno::Reference<frame::XController> xController(xModel->getCurrentController());
|
||||
uno::Reference<frame::XDispatchProvider> xFrame(xController->getFrame(), uno::UNO_QUERY);
|
||||
|
||||
uno::Reference<frame::XTitle> xTitle(xFrame, css::uno::UNO_QUERY);
|
||||
OUString defaultTitle = xTitle->getTitle();
|
||||
|
||||
uno::Reference<util::XURLTransformer> xParser(util::URLTransformer::create(mxComponentContext));
|
||||
|
||||
// Open print preview window and get title.
|
||||
util::URL printPreviewURL;
|
||||
printPreviewURL.Complete = u".uno::PrintPreview"_ustr;
|
||||
xParser->parseStrict(printPreviewURL);
|
||||
uno::Reference<frame::XDispatchProvider> xDispatchProvider(xModel->getCurrentController(),
|
||||
uno::UNO_QUERY);
|
||||
xDispatchProvider->queryDispatch(printPreviewURL, "", 0);
|
||||
uno::Reference<frame::XTitle> xTitle2(xFrame, css::uno::UNO_QUERY);
|
||||
Scheduler::ProcessEventsToIdle();
|
||||
|
||||
// Default window title and print preview window title should be the same.
|
||||
CPPUNIT_ASSERT_EQUAL(defaultTitle, xTitle2->getTitle());
|
||||
|
||||
// Close print preview window and check to see if default window title has changed
|
||||
util::URL closePreviewURL;
|
||||
closePreviewURL.Complete = u".uno::ClosePreview"_ustr;
|
||||
xParser->parseStrict(closePreviewURL);
|
||||
uno::Reference<frame::XDispatchProvider> xDispatchProvider2(xModel->getCurrentController(),
|
||||
uno::UNO_QUERY);
|
||||
xDispatchProvider2->queryDispatch(closePreviewURL, "", 0);
|
||||
uno::Reference<frame::XTitle> xTitle3(xFrame, css::uno::UNO_QUERY);
|
||||
Scheduler::ProcessEventsToIdle();
|
||||
|
||||
// Default window title should be the same after closing print preview window.
|
||||
CPPUNIT_ASSERT_EQUAL(defaultTitle, xTitle3->getTitle());
|
||||
}
|
||||
|
||||
CPPUNIT_TEST_FIXTURE(Test, checkTitleSuggestedFileName)
|
||||
{
|
||||
uno::Sequence<beans::PropertyValue> aArguments
|
||||
= { comphelper::makePropertyValue(u"SuggestedSaveAsName"_ustr, u"suggestedname.odt"_ustr),
|
||||
comphelper::makePropertyValue(u"Hidden"_ustr, false) };
|
||||
mxComponent = loadFromDesktop(u"private:factory/swriter"_ustr, "com.sun.star.text.TextDocument",
|
||||
aArguments);
|
||||
uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
|
||||
uno::Reference<frame::XController> xController(xModel->getCurrentController());
|
||||
uno::Reference<frame::XDispatchProvider> xFrame(xController->getFrame(), uno::UNO_QUERY);
|
||||
|
||||
uno::Reference<frame::XTitle> xTitle(xFrame, css::uno::UNO_QUERY);
|
||||
OUString windowTitle = xTitle->getTitle();
|
||||
|
||||
CPPUNIT_ASSERT(windowTitle.startsWith("suggestedname.odt"));
|
||||
}
|
||||
|
||||
CPPUNIT_TEST_FIXTURE(Test, setTitleAndCheck)
|
||||
{
|
||||
// Set the frame title, then cycle through default and print preview. Close the window
|
||||
// and check for infinite recursion.
|
||||
|
||||
uno::Reference<lang::XMultiServiceFactory> xFactory(comphelper::getProcessServiceFactory());
|
||||
uno::Reference<uno::XInterface> xInterface
|
||||
= xFactory->createInstance("com.sun.star.frame.Desktop");
|
||||
uno::Reference<frame::XComponentLoader> xComponentLoader(xInterface, uno::UNO_QUERY);
|
||||
uno::Sequence<beans::PropertyValue> aLoadArgs{ comphelper::makePropertyValue("Hidden", false) };
|
||||
mxComponent = xComponentLoader->loadComponentFromURL("private:factory/swriter", "_default", 0,
|
||||
aLoadArgs);
|
||||
|
||||
uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
|
||||
uno::Reference<frame::XController> xController(xModel->getCurrentController());
|
||||
uno::Reference<frame::XFrame2> xFrame(xController->getFrame(), uno::UNO_QUERY);
|
||||
|
||||
xFrame->setTitle(u"documentTitle"_ustr);
|
||||
|
||||
uno::Reference<frame::XDispatchProvider> xDispatchProvider(xModel->getCurrentController(),
|
||||
uno::UNO_QUERY);
|
||||
uno::Reference<util::XURLTransformer> xParser(util::URLTransformer::create(mxComponentContext));
|
||||
|
||||
util::URL printPreviewURL;
|
||||
printPreviewURL.Complete = u".uno::PrintPreview"_ustr;
|
||||
xParser->parseStrict(printPreviewURL);
|
||||
xDispatchProvider->queryDispatch(printPreviewURL, "", 0);
|
||||
Scheduler::ProcessEventsToIdle();
|
||||
|
||||
util::URL closePreviewURL;
|
||||
closePreviewURL.Complete = u".uno::ClosePreview"_ustr;
|
||||
xParser->parseStrict(closePreviewURL);
|
||||
uno::Reference<frame::XDispatchProvider> xDispatchProvider2(xModel->getCurrentController(),
|
||||
uno::UNO_QUERY);
|
||||
xDispatchProvider2->queryDispatch(closePreviewURL, "", 0);
|
||||
Scheduler::ProcessEventsToIdle();
|
||||
|
||||
util::URL closeDocURL;
|
||||
closeDocURL.Complete = u".uno::CloseWin"_ustr;
|
||||
xParser->parseStrict(closeDocURL);
|
||||
uno::Reference<frame::XDispatchProvider> xDispatchProvider3(xModel->getCurrentController(),
|
||||
uno::UNO_QUERY);
|
||||
uno::Reference<frame::XTitle> xTitle(xFrame, css::uno::UNO_QUERY);
|
||||
OUString windowTitle = xTitle->getTitle();
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(windowTitle, u"documentTitle"_ustr);
|
||||
|
||||
xDispatchProvider3->queryDispatch(closeDocURL, "", 0);
|
||||
Scheduler::ProcessEventsToIdle();
|
||||
}
|
||||
}
|
||||
|
||||
CPPUNIT_PLUGIN_IMPLEMENT();
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
Loading…
Reference in a new issue