Blame SOURCES/0103-LOK-moved-the-decalaration-of-LibLODocument_Impl-to-.patch

f325b2
From 578ff092c9726fb2fd18b1a21a5846855a641508 Mon Sep 17 00:00:00 2001
f325b2
From: Mihai Varga <mihai.varga@collabora.com>
f325b2
Date: Wed, 9 Sep 2015 15:08:26 +0300
f325b2
Subject: [PATCH 103/398] LOK: moved the decalaration of LibLODocument_Impl to
f325b2
 make it visible
f325b2
f325b2
We needed a better way to test LOK methods that are not app specific,
f325b2
but are defined in /desktop/source/lib/init.cxx. So the decalaration
f325b2
needs to be visible.
f325b2
f325b2
I also moved the `getStyles` test in the new test file
f325b2
f325b2
Change-Id: I98d97dc17a66e72732ca7bd848c131610790f48e
f325b2
(cherry picked from commit 2290efa4a22d42cd9099b63b9138e4ff994c07f9)
f325b2
---
f325b2
 desktop/CppunitTest_desktop_lib.mk          |  68 ++++++++++++++++
f325b2
 desktop/Module_desktop.mk                   |   4 +
f325b2
 desktop/inc/lib/init.hxx                    |  27 +++++++
f325b2
 desktop/qa/data/blank_text.odt              | Bin 0 -> 8295 bytes
f325b2
 desktop/qa/desktop_lib/test_desktop_lib.cxx | 116 ++++++++++++++++++++++++++++
f325b2
 desktop/source/lib/init.cxx                 |  79 +++++++++----------
f325b2
 libreofficekit/qa/unit/tiledrendering.cxx   |  34 --------
f325b2
 7 files changed, 252 insertions(+), 76 deletions(-)
f325b2
 create mode 100644 desktop/CppunitTest_desktop_lib.mk
f325b2
 create mode 100644 desktop/inc/lib/init.hxx
f325b2
 create mode 100644 desktop/qa/data/blank_text.odt
f325b2
 create mode 100644 desktop/qa/desktop_lib/test_desktop_lib.cxx
f325b2
f325b2
diff --git a/desktop/CppunitTest_desktop_lib.mk b/desktop/CppunitTest_desktop_lib.mk
f325b2
new file mode 100644
f325b2
index 000000000000..be394600ddf0
f325b2
--- /dev/null
f325b2
+++ b/desktop/CppunitTest_desktop_lib.mk
f325b2
@@ -0,0 +1,68 @@
f325b2
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
f325b2
+#*************************************************************************
f325b2
+#
f325b2
+# This file is part of the LibreOffice project.
f325b2
+#
f325b2
+# This Source Code Form is subject to the terms of the Mozilla Public
f325b2
+# License, v. 2.0. If a copy of the MPL was not distributed with this
f325b2
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
f325b2
+#
f325b2
+#*************************************************************************
f325b2
+
f325b2
+$(eval $(call gb_CppunitTest_CppunitTest,desktop_lib))
f325b2
+
f325b2
+$(eval $(call gb_CppunitTest_add_exception_objects,desktop_lib, \
f325b2
+	desktop/qa/desktop_lib/test_desktop_lib \
f325b2
+))
f325b2
+
f325b2
+$(eval $(call gb_CppunitTest_use_libraries,desktop_lib, \
f325b2
+	comphelper \
f325b2
+	cppu \
f325b2
+	cppuhelper \
f325b2
+	sal \
f325b2
+	sfx \
f325b2
+	sofficeapp \
f325b2
+	subsequenttest \
f325b2
+	sw \
f325b2
+	test \
f325b2
+	unotest \
f325b2
+	vcl \
f325b2
+    $(gb_UWINAPI) \
f325b2
+))
f325b2
+
f325b2
+$(eval $(call gb_CppunitTest_use_external,desktop_lib,boost_headers))
f325b2
+
f325b2
+$(eval $(call gb_CppunitTest_use_api,desktop_lib,\
f325b2
+	offapi \
f325b2
+	udkapi \
f325b2
+))
f325b2
+
f325b2
+$(eval $(call gb_CppunitTest_use_ure,desktop_lib))
f325b2
+
f325b2
+$(eval $(call gb_CppunitTest_use_vcl,desktop_lib))
f325b2
+
f325b2
+$(eval $(call gb_CppunitTest_use_components,desktop_lib,\
f325b2
+    comphelper/util/comphelp \
f325b2
+    configmgr/source/configmgr \
f325b2
+    filter/source/config/cache/filterconfig1 \
f325b2
+    filter/source/storagefilterdetect/storagefd \
f325b2
+    framework/util/fwk \
f325b2
+    i18npool/util/i18npool \
f325b2
+    package/source/xstor/xstor \
f325b2
+    package/util/package2 \
f325b2
+    sax/source/expatwrap/expwrap \
f325b2
+    sfx2/util/sfx \
f325b2
+    svl/source/fsstor/fsstorage \
f325b2
+    svtools/util/svt \
f325b2
+    sw/util/sw \
f325b2
+    sw/util/swd \
f325b2
+    toolkit/util/tk \
f325b2
+    ucb/source/core/ucb1 \
f325b2
+    ucb/source/ucp/file/ucpfile1 \
f325b2
+    unoxml/source/service/unoxml \
f325b2
+    xmloff/util/xo \
f325b2
+))
f325b2
+
f325b2
+$(eval $(call gb_CppunitTest_use_configuration,desktop_lib))
f325b2
+
f325b2
+# vim: set noet sw=4 ts=4:
f325b2
diff --git a/desktop/Module_desktop.mk b/desktop/Module_desktop.mk
f325b2
index ab04152731ce..c725a268721e 100644
f325b2
--- a/desktop/Module_desktop.mk
f325b2
+++ b/desktop/Module_desktop.mk
f325b2
@@ -130,4 +130,8 @@ $(eval $(call gb_Module_add_check_targets,desktop, \
f325b2
     CppunitTest_desktop_version \
f325b2
 ))
f325b2
 
f325b2
+$(eval $(call gb_Module_add_check_targets,desktop, \
f325b2
+    CppunitTest_desktop_lib \
f325b2
+))
f325b2
+
f325b2
 # vim: set ts=4 sw=4 et:
f325b2
diff --git a/desktop/inc/lib/init.hxx b/desktop/inc/lib/init.hxx
f325b2
new file mode 100644
f325b2
index 000000000000..b17f82566daf
f325b2
--- /dev/null
f325b2
+++ b/desktop/inc/lib/init.hxx
f325b2
@@ -0,0 +1,27 @@
f325b2
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
f325b2
+/*
f325b2
+ * This file is part of the LibreOffice project.
f325b2
+ *
f325b2
+ * This Source Code Form is subject to the terms of the Mozilla Public
f325b2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
f325b2
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
f325b2
+ */
f325b2
+#include <LibreOfficeKit/LibreOfficeKit.h>
f325b2
+#include <com/sun/star/frame/XStorable.hpp>
f325b2
+#include <com/sun/star/lang/XComponent.hpp>
f325b2
+#include <boost/shared_ptr.hpp>
f325b2
+#include "../../source/inc/desktopdllapi.h"
f325b2
+
f325b2
+using namespace css;
f325b2
+using namespace boost;
f325b2
+
f325b2
+namespace desktop {
f325b2
+    struct DESKTOP_DLLPUBLIC LibLODocument_Impl : public _LibreOfficeKitDocument
f325b2
+    {
f325b2
+        uno::Reference<css::lang::XComponent> mxComponent;
f325b2
+        shared_ptr< LibreOfficeKitDocumentClass > m_pDocumentClass;
f325b2
+
f325b2
+        explicit LibLODocument_Impl(const uno::Reference <css::lang::XComponent> &xComponent);
f325b2
+        ~LibLODocument_Impl();
f325b2
+    };
f325b2
+}
f325b2
diff --git a/desktop/qa/data/blank_text.odt b/desktop/qa/data/blank_text.odt
f325b2
new file mode 100644
f325b2
index 0000000000000000000000000000000000000000..00b92d785acd15b68c927aa3b2f1a5d3f1614425
f325b2
GIT binary patch
f325b2
literal 8295
f325b2
zcmeHMbzD^4)*hNsQc^-jKmmy%1rd-Ak(8lp=$L__8>A5dW28Gpx)G!i6qJrZIz_ru
f325b2
zg>QK8^~KkV_s{RIyXJS8eTMTqXV-f6UVEu3Vqud50QdkvlH{qhVLLAY3jhE(yU;%Y
f325b2
z;MQ<+XAguq6oG(Qn?jwf?d`y>c4l1mP$z3AE_;NzoteF<3*6k!nakPS-C6Y?WGF;v
f325b2
z{|F`kaCT9n$uz87;3jrZYnT(*`Dc*}VQ2YRRauVk63r#_BZLa_((35%b^rhafRDxj
f325b2
zEbpaI0RWh(3epl9?n!I?r9c2TK~o9Q(doi2P%2%X%6)Tn-M_nzXj(9a(Spt7e}Deh
f325b2
z2mk-`fGSrD_oOVdwFf<80SYq8(nXTS0sry_e0==BT
f325b2
zf&CbW+-It|M8w*j>u4maO|d^VuRm+wd?}~?N)wPBml%=s{hI+|cA8&#A{z`RT+}Bz
f325b2
zKq}i;*M!}EKwC7=acz=dHcTOdH8x-8`_7Ws5zSQhy$6sOhZglb`FK8SvW%?YDbkW`
f325b2
zg_Q{%eVh1Our~@fy5ki%6(G&?{?Q>{2U8)%)Nje^m#)#3agL2Pn1#X}w#rUB(6_JK
f325b2
zAx34b0S~1-bB<qB%QDAf7BAvdeV1<2L>!4cK@C%~NkSkK8gsPST2?~w51viIv5~l1
f325b2
zFLm9?Z-fEA5b;^L^GV~ux;fVKd!SMZWuIan9Jmrz9m;5QSq$A}x}8sidL}Sj@6;MN
f325b2
zHbXyfg1(+5n!a5R>(JW8Pds@)*UCfXJbAzo3a<&bGTd#jh$K3?|5`SWX%J_5AqqFJ
f325b2
zC-;P?cSy!PyT)Aj5%LKl0LNOSXxm8{Yn%jw5lS1IqcnS0E{>=Le`t(wq*r;Mk%58I
f325b2
ztjp0Gdk57FjBPjZ*o|<N_*%C_m8Fwj0jERm*~gI-s%66APJIUJb_W0h>-#;D65Z4i
f325b2
zOHwm8XuI>CI^-jbl*2j{BoC_&Y1#r?8a$qJ(}6;*JE_&@N9OnP;-%tm-O$IhKu!9?
f325b2
z^tihwC@E87syKplz=M8q<2^-9lKJUQH;L#oYx;Hg?%$~K#}1HGlc6aY+mTot^Zlal
f325b2
zz?zV(D`HLlF0NEGmRRN9voXbS_aKatdu;BM5wk}#gsKO`feFC`lb8x2Kt)!jmQSx-
f325b2
z!1ghj$74$=ZEmZ?ClJ}o99`T|X-*7?J5+CVz5}T`y)TRJNzzrqgkfbSS405yZ5rco
f325b2
z)COV){;lHM&`3)0kHS4-IQt}NkSO!ZY6!)&AND0*#5SftMC;>
f325b2
zQjW&^NX?|<xePCkcUO>$c5ra%Mh>Y9MUyXmEG2KN;|uq@5*-{A69NoHU%xy&
f325b2
z2li~V_kL{q09LcR
f325b2
z`66G1Z}`q$g}H2#I|@qrO%*xX1Kh5aJ8JA)xpR%lNB2|}@$l~
f325b2
zMu2uSCv#_KYdcG)Gf%76opKr#BJpi(WNh`4luyuaWnQ9I*QKGM26gFA1=T+y(ph;v
f325b2
z4><i%XqLt{9YeE{!dtpvVD0DqZ7qC^_=$E>T|htGf
f325b2
z-fvD<DBqi2lN4>?j+97vNZ8(c#YZw#(V)k03Zi~v<pV#;rNgAxg>0AyqvoXG#MNbj
f325b2
z?PCfDc5M0E&cV1W!@};xo${lFt9c5Qu1-!5UF=bcQZG%#?r1=&jtg%|kF%CBm?b)N
f325b2
za&`AiLCR0rS@M+{c)Da3eBq&cTO0OTm&)$F8W)Gboyt66)vj9CqxZCkb|QyveQWr3
f325b2
zlxSZerrHz|r!j2*i8oykb0N#o&sT4P!r{#bQA8wh4OoPCpgsT$w&${W4?HFC=ACF<
f325b2
z8=a!kifzjx&Jo&>lIFqfVndSk>e0xCVa64V(?(13(8E8g3ZXVBm_8uIEF>8?PWUZ4
f325b2
z*kVaJK%)Y~Cjh4@Rh!%e=uLY$J-s1W2U{5JN2)f1cv`OwTa;E?+ZXfBwjqz1Hv`_x
f325b2
zY2Wo7OcZ-yES0H=jJGkKA}7R6xx2d>12j*fsEHK@T}zbI;xjjMTVvu9Zie&6jNLJa
f325b2
z*~OhLsK}bERD2SQJ9JWy>b|_*P>2Tt@sm`Ni?WvNi4so*C{C_W7_J$KS8i?EB#6pW
f325b2
z@M$ETW)
f325b2
z?67=v?$c50C`~G-tFn-HUhD7aU{ICDKMcqm$D+%hF-?kF04q5Mg@6>Wfm*N(ZQdW9
f325b2
zg9X92EG)uQtVJ-XHWqB@%hY16_+BR>mLyK(Mm_npZ9Mxjn75!puUcX^8LTZ0OqKT1
f325b2
zM#eF;k2+Hp!s2!!)Q%<($3s)12i{{YE-W5{EF}4LGQ83xZ}Gn5LZKRXx81r~eF-uc
f325b2
z1BfuV785~1dwxeY#|d&i@8GIgnWVr110%|U`#p{lUrAfsR1Y1X!cC0#4*SSOfc$$V
f325b2
z;UmPk;vpJJ*FDuLG%DZqmr^qDz$jQq_S~)17i3zo#M0BntG3}uE^?>KMHQPH5;}M~
f325b2
zgDl{5az*0VF){_a^g5J(1WiCke9qz5k=qH6xhbM(kIJA7VY{Dqfe~t&VE@E6TchKK
f325b2
ztkKP_{uJd#gjA(Q&I5jqisP2+yw*ZHkiZlH?OOmF{L4F%tDvoR9A^d?N1b}>SPm{|
f325b2
zO0JC*9H!4k&&-i!O5kAiF&Rgj7_@G7;BbOpGSL`2A6FEn4
f325b2
zz-#YT;q5_o64DOAKhKQHwcrNGhn0g!4{jo_hi$ilc91GGN)k%ulrPO@1uLr#*>o}E
f325b2
zd7|h{Ru5~R8q;QV_Du*33kfe~GA<F(`nzizU>st85gSp&_yA9MTJ)N;sG{_7yt$Iz
f325b2
zF+n-u6%wj+<=W7Mv6eNt`0`XKRU
f325b2
znkr+@D1u!Y6bsWwZig!GG_gL654qXSGZz1uPOM?{isdO0Hw3!nuPrFBf1D-t`1;8V
f325b2
zh;fb2B$4%X>yd;(?F-4+*?qtA?
f325b2
zBy@zbWPX3+m4}|+$W|~>8m@6az0F=IE
f325b2
zckv^Kw
f325b2
zh4J=Ajza?mr=70wAoXgZ(qgM94>hJ&cjM(WR^bAhEo=;r1Mm{~J}a7AsT-L_M$q(K
f325b2
z_Z&QECC4$Z2MeUau=by{Z-*%q>RhSzYQdu}*Kl82&sZHTyL-)claJP+*@ny>-+{3X
f325b2
zdtJ*ShcM5&YV)n`UVg}e)qU?lIEw&d`6uQhs$`tvlZpLR_oe~*bo0ej?5L3(mWoie
f325b2
zD||JA!$ZkNL699^cDGZ8vz6h;Ql9BF4mx&02QhzM8UBiH%$=cUt3o7F;%Oo`N$|!G
f325b2
zim?4lRlpm@7+$YEbzjF84(ge$VvGkwMgWhF1emj6w?k7nCcWnlEI77f6{kEbxibgz
f325b2
zHWk8rh{;isc{!VY4L-!`r`g|MuGGfR<@S0nOMFhl`zV6SllA1JI58t1g1uyd6ofw4
f325b2
zRo(;G*rt0W6v=8W^egPW+SIef3-1-_neoQ2v?l2&BPbjqr1;)Vh+NXVkHDtqAYx*?
f325b2
zE<yX2`TLaW<+o3>DjR4y4+VB@sGxM2D+jWIvSI6=0a2o$*k?MFNjE;F`fS`jv732r
f325b2
zWH)AD^74o#gw}YN)ZaFQw}qK#lSk;8V1RXyb%d1ngK`dKvKN^w^eDac9syk~+QRwC
f325b2
zJUvYp5`-w5-l5$x
f325b2
z2&}p8Ii^s%a)Goa?tG=ATkKf(hADgl`NCU;oL7K4f)xaQ9?>?nNxs<~Y>(^dJ!v8g
f325b2
zEu>sxvOx%n8_yoyMYu8paS2@L{czMCn?`e|3{{Js?sWCNb(88jdA
f325b2
z000!d<o|h4&q7EiXAhY9UyJ>kt|D@dpQK@jT|H;|i%_@ewz1_MaW&P-%aGNUXm!{f
f325b2
zN+vxng>F+nQO=Gsiuc{_t|1uetI(
f325b2
z-fkN|_P6l-7JR<#KM~|mkPi~%dD2O+*iW@BT}s_NuMZ>Gnq>EAfXb7UcBqB4$;#4d
f325b2
zPLC^(z8R;je|fd9B}5tZX&v_XspD6(Hm}=M@X+Fd_=(Rva-r!+3b66AvdTzrhn&QZ
f325b2
zpd-?cmzWh4pD^7xYORmGuLBF1MhHa^m-EcM1?d-~{Bwpc$q5*#Ip)>OvNn
f325b2
zwKi>AXlJA!vl(h-*L|vrBM!k;aGrsbP7y|h{V2jqV3qMkz^uMF9dysmtS7gvj}vrM
f325b2
zyl2Uu7A4tBJ=jRlp8nihNxpGagOsJsn2)gfZYqyve%{SE?4f047Nm!<@7?jx{8c<<
f325b2
z<}XBE&e5Wh{CT97I#gCoRJctubM==Ve(Z|wtA9a-@g8TcOq2PlVHzOWI@$2`Co4Zs
f325b2
zwmkEREunQY92X0WEE??EMwY|PY&Xq2#dnP-93OE>Jyq&^V3%Agd_4&}{FO2-LgAst
f325b2
zQ4!ZSAiEPcW>xqlac>T8mhhn5l&U+(Y1ymhsn^R!+3A3mOPuc>xX%38LW%czL)O#N
f325b2
zAnHj5cFXmZdb%yfcNJBGeo)J4)cKg+R}&TCZH#t2m^?UC+4Z_}{K%2ilZjO%2F$eU
f325b2
zyx|jh>1KmN+^0u^!pPU|Kj^!gAIK9rfF#|U_gtn(b6?S9_u<9G>=sQ}(4_$^uXgqb
f325b2
zU1DU)HS~J-m?)El74J52{~Ftfh?Ky43h+V^@|loVjB?U*ZLr`mhFYympH!n=Y#lhq
f325b2
zv^N$o^u~ItfRjgARUyB<=YEm%go8#F^EQY5-WXU&gN6&pAKoc;{f<{t3FIMeeRFL2
f325b2
z(FA5!{qsDL#2{7OhcN>#S0o}>U`_xvG4`zPv81DAHvyR}Rtr3a3JUGx_g?nAM6D3{
f325b2
zZRO*o7hKTBgLKiB23A$
f325b2
zrz+}z87+^iFded<-)l8Mk~coR-!aHY62RR4sf1BC>jPKX-iTvFS~9lfb9vqH(Sc~k
f325b2
zt52Z93k~Bb!Bicl1-I2*_z{Jr_jT!^dI9(*!Kz!RV%M&s-G-7Ja%$rb(N24_kP&&q
f325b2
zS-$M!`z%4xIhVJAUuP
f325b2
zrqzM_XbmeH76@79WYk*WkkUbw*V!7vIxTMZjEahMq2W*0W>LD;UwHSchYMe`Sr_Xg
f325b2
zeUCre*12n53mJ?UU7H*_#1YJT#n@J}pQfTlhjpS$WkAf@AzygX#0~Bgd67+;yA0F@
f325b2
zx(423=)t0G^nH*9nzwo0;ogwKmB1mY5{=mlQ{O#xKXH3sPHQ(ZT;xjNm~{Qcx8*lh
f325b2
zSPq`e8ZQ~)r6No^4+J;J)xsyZd8x?s+97tiZvwlp0>UyRb8~&yTf{6whiAF_JNxk>
f325b2
zE*q86$GjFk%IENgLER+C#uz}aOx~FmS8Ho8sxf2d;vEf|p|a~3c*2wG)+z9?_OfH9
f325b2
z3hx)Gqs$NSvHTve_`!6%m(^EF%VMq*3E+X)ca{CzUfIe^jqtJ!Ik@wt6j&r!bl)Ql
f325b2
z68Ub#I67%&EBN)=b(AP(2A=bkr;xOi?F_Om&Dh4qSbM56599}xBAKCOii1VL0ZmCG
f325b2
zMfg%AsSi%+K!TjDUba%#!7h^`Uo|QuA#*A`r|#C>gm=Eo>2F_PS9J$uAd#|6vEP%J
f325b2
zf2@9AQL5i_6z1P^Mm;krQ_LO>zG*}lx
f325b2
z<oW@9zhx^G!L>)>nJk+2dg-Z<`n|EBnmZ^
f325b2
z<7sa0T*zQl$EkK4!3rilt&OL7+qBR(V0YDfstDeU1%t>ks_@WL!y?-qZMH6%mSA>Y
f325b2
z9`fQg`K@aM;S+!?+@{{zKz2SO(PR*7kHB``1I>qHy>FRshS{w&#|qn*)&nK
f325b2
zjxMGXH>%pyJB9;+yI)rynfiJ0;?O48_UP1!!AJKXqVbSm*>CY**<-zW?A!A(r5zYK
f325b2
zy#f)hYQ)#196{{^w5{%wfm?O7b4RwuB5!#js6?s3wLFG(xa~W%t%pT;b8qb;HVm=m
f325b2
z+9IKKtIh78Be%8%xEs(9YKc-8qaUotZU2bom
f325b2
z=zWdy+N5`567i*oXzhsf7g@vb7$w}^jR&P7_2->#mOd&sOL=CXV<3aVZWOj)iBQ;k
f325b2
z`w<8=&-eH|#iW~us<Y`;CXd=W=Ilu}Ri0WdRp}@<;%D;;wGG>Oqax8?m_|`dV$J_m
f325b2
zH|Joz$(t;FihkIwd(50lB>E*T?!sue>~`3SiX235(OW$uTfpc=?t9QPpq!s#3F_Ki
f325b2
zgrKm$SC8`H#uJWR;W%BCeu5*Y^tj&
f325b2
z=&9D{)RSxalCtqav)Y@A+^)h_UN%18NGHyHm(RJN@F8lrt6G*Kuql|rGA%xW1(_Wf
f325b2
z=u^92O+DR9#y<e7UpAI}>
f325b2
zkL*W}(>;PE$GS?vHu-wjWd{Gt0etRkxxl`UaRvBSuT(~OR@$g4)E*lzEw8>SL(*_=
f325b2
zNgRak*`H#b?K`f{j5Uj+_lj}g|F-WqJ7$1G?W`@#ot(KG%`Cc*U3P)oBtaV@!RFl~
f325b2
z;$R#cN7l|7o75(O5N#arcEXj(hA5<_T2|h2>fl_FEZ
f325b2
z@>Z2g?80xkYO=?KM@OpI84~EXYyz`WZ`Hcl-MV8G6U-?{0P88wV0BN}5mBjQY#tJF
f325b2
zkSA!bh{6Y6i<Gq9oA;)<(>)8c&{A_=NqgpT01|yNA^bY6>=Lv}y*{)G^xR)O68NAq
f325b2
z$T^U%R#~x)FJ?#WPILO&?0e(-fxrwA<4yLco{`Bgf}91z>H3m&{lF>jXe-ZkQ%{$H
f325b2
zwyi0qm&QrF>nh7{?|Pgro^bV?UY#wjaFvFMcV}82KU=KWW`M{QpLJiwfmJ^adfOKG
f325b2
z_qOe4rUBh!e;Wh3BxP@BVQuN+_*ag>i5F}QhgzCDfhDb-;ZTGVdJp((n&NLHx
f325b2
z*xBA5hJf0c!~P47?gAXb(caS0+{wuV>iBQuMW?rC$&ufy3pF)0hnb^mZ|?{;b#Zk3
f325b2
z_sK36db5gm7HR;_av5j#=Z2i6NPefafZ0Qx&3{(rqQ1MR`A*JIXO~|ZaS`sKx1Dv{
f325b2
zdDAaKUGz4DJ;DWnP64_6m(ITEZD)}4w_ViH6zCpNlF^XhR8W=$|LtGsfUWXnvt28Q
f325b2
zAY{WQJZy!0#4|y)|JtoJU@e~UJB8;>(#CoFYjSy&9sK4t73&tJJEy7Ks&JKVN;&*K
f325b2
z_kz!t{VZ_O_9L5%EH=JXZ%4xg^E=u2Ii+8q(ms6Sp6pM^e$=0Dl_9+Vy5HY_@F)`1
f325b2
zf$`$|Bp9q*4Z|$4NQCelSGG&WAB66VOx(2nXxNu-VWMoN@7hZZ>8}Y*c->Gf%ial}
f325b2
z4I^v>?69%02$7O0QtyY(i>Y3v#W9eYG!<+$PFfZx*puNJWg_%GqO%ObbL4qRwImDb
f325b2
zY>gtOaur|Rs&KB_BrY(r72#i_*J5!K<=h|ffGNec$S@WK_tS9958|ai#BU@%us3uQ
f325b2
z3ynjFPj?_hA=IDPx8{gPy#G=y`bRrDbZEB|!#
f325b2
zj!;4u|CHJL$?|h>e?7E4%YmGm9$FxN$%y<8{57UO6Weophx^YH-rteG29AF@;@{9o
f325b2
zG!Z(x`PT`+@2Fp8|179Hw{oIiL(JcCzv|sT>&cGJV*Wja(M!Zn
f325b2
zb>TnM@t<RS4*r)up5MQ^fb3Vb{4>v)UY^_31w8*$&wnxf9QiZkPYFEJ&vUza^*@{U
f325b2
z2Q~d~eRifW=Z3g|^ju5-+{iP1JGYz*Sbo*kKlA*vHj@|doNMi$S^ilYa`f%*^WazQ
f325b2
z{WH%$YxCd&o^vh!7t7CK`&CHJ)cD*2&@2~fv#KHv+9d%1QuGIb)}I;Lv%CKTSWiMf
f325b2
f325b2
literal 0
f325b2
HcmV?d00001
f325b2
f325b2
diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx
f325b2
new file mode 100644
f325b2
index 000000000000..c88a53f41edb
f325b2
--- /dev/null
f325b2
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
f325b2
@@ -0,0 +1,116 @@
f325b2
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
f325b2
+/*
f325b2
+ * This file is part of the LibreOffice project.
f325b2
+ *
f325b2
+ * This Source Code Form is subject to the terms of the Mozilla Public
f325b2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
f325b2
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
f325b2
+ */
f325b2
+
f325b2
+#include <com/sun/star/frame/Desktop.hpp>
f325b2
+#include <com/sun/star/lang/XComponent.hpp>
f325b2
+#include <com/sun/star/frame/XComponentLoader.hpp>
f325b2
+
f325b2
+#include <boost/property_tree/json_parser.hpp>
f325b2
+#include <comphelper/processfactory.hxx>
f325b2
+#include <sfx2/objsh.hxx>
f325b2
+#include <test/unoapi_test.hxx>
f325b2
+
f325b2
+#include "../../inc/lib/init.hxx"
f325b2
+
f325b2
+using namespace com::sun::star;
f325b2
+using namespace desktop;
f325b2
+
f325b2
+class DesktopLOKTest : public UnoApiTest
f325b2
+{
f325b2
+public:
f325b2
+    DesktopLOKTest() : UnoApiTest("/desktop/qa/data/")
f325b2
+    {
f325b2
+    }
f325b2
+
f325b2
+    virtual ~DesktopLOKTest()
f325b2
+    {
f325b2
+    }
f325b2
+
f325b2
+    virtual void setUp() SAL_OVERRIDE
f325b2
+    {
f325b2
+        UnoApiTest::setUp();
f325b2
+        mxDesktop.set(frame::Desktop::create(comphelper::getComponentContext(getMultiServiceFactory())));
f325b2
+    };
f325b2
+
f325b2
+    virtual void tearDown() SAL_OVERRIDE
f325b2
+    {
f325b2
+        closeDoc();
f325b2
+        UnoApiTest::tearDown();
f325b2
+    };
f325b2
+
f325b2
+    LibLODocument_Impl* loadDoc(const char* pName);
f325b2
+    void closeDoc();
f325b2
+
f325b2
+    void runAllTests();
f325b2
+    void testGetStyles();
f325b2
+
f325b2
+    CPPUNIT_TEST_SUITE(DesktopLOKTest);
f325b2
+    CPPUNIT_TEST(runAllTests);
f325b2
+    CPPUNIT_TEST_SUITE_END();
f325b2
+
f325b2
+    uno::Reference<lang::XComponent> mxComponent;
f325b2
+};
f325b2
+
f325b2
+LibLODocument_Impl* DesktopLOKTest::loadDoc(const char* pName)
f325b2
+{
f325b2
+    OUString aFileURL;
f325b2
+    createFileURL(OUString::createFromAscii(pName), aFileURL);
f325b2
+    mxComponent = loadFromDesktop(aFileURL, "com.sun.star.text.TextDocument");
f325b2
+    if (!mxComponent.is())
f325b2
+    {
f325b2
+        CPPUNIT_ASSERT(false);
f325b2
+    }
f325b2
+    return new LibLODocument_Impl(mxComponent);
f325b2
+}
f325b2
+
f325b2
+void DesktopLOKTest::closeDoc()
f325b2
+{
f325b2
+    if (mxComponent.is())
f325b2
+    {
f325b2
+        closeDocument(mxComponent);
f325b2
+        mxComponent.clear();
f325b2
+    }
f325b2
+}
f325b2
+
f325b2
+void DesktopLOKTest::runAllTests()
f325b2
+{
f325b2
+    testGetStyles();
f325b2
+}
f325b2
+
f325b2
+void DesktopLOKTest::testGetStyles()
f325b2
+{
f325b2
+    LibLODocument_Impl* pDocument = loadDoc("blank_text.odt");
f325b2
+    boost::property_tree::ptree aTree;
f325b2
+    char* pJSON = pDocument->m_pDocumentClass->getStyles(pDocument);
f325b2
+    std::stringstream aStream(pJSON);
f325b2
+    boost::property_tree::read_json(aStream, aTree);
f325b2
+    CPPUNIT_ASSERT( aTree.size() > 0 );
f325b2
+
f325b2
+    for (const std::pair<std::string, boost::property_tree::ptree>& rPair : aTree)
f325b2
+    {
f325b2
+        CPPUNIT_ASSERT( rPair.second.size() > 0);
f325b2
+        if (rPair.first != "CharacterStyles" &&
f325b2
+            rPair.first != "ParagraphStyles" &&
f325b2
+            rPair.first != "FrameStyles" &&
f325b2
+            rPair.first != "PageStyles" &&
f325b2
+            rPair.first != "NumberingStyles" &&
f325b2
+            rPair.first != "CellStyles" &&
f325b2
+            rPair.first != "ShapeStyles")
f325b2
+        {
f325b2
+            CPPUNIT_FAIL("Unknown style family: " + rPair.first);
f325b2
+        }
f325b2
+    }
f325b2
+    closeDoc();
f325b2
+}
f325b2
+
f325b2
+CPPUNIT_TEST_SUITE_REGISTRATION(DesktopLOKTest);
f325b2
+
f325b2
+CPPUNIT_PLUGIN_IMPLEMENT();
f325b2
+
f325b2
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
f325b2
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
f325b2
index c7f3aabb58b7..a20decd3afbe 100644
f325b2
--- a/desktop/source/lib/init.cxx
f325b2
+++ b/desktop/source/lib/init.cxx
f325b2
@@ -64,6 +64,7 @@
f325b2
 // We also need to hackily be able to start the main libreoffice thread:
f325b2
 #include "../app/sofficemain.h"
f325b2
 #include "../app/officeipcthread.hxx"
f325b2
+#include "../../inc/lib/init.hxx"
f325b2
 
f325b2
 using namespace css;
f325b2
 using namespace vcl;
f325b2
@@ -72,7 +73,6 @@ using namespace utl;
f325b2
 
f325b2
 using namespace boost;
f325b2
 
f325b2
-struct LibLODocument_Impl;
f325b2
 struct LibLibreOffice_Impl;
f325b2
 
f325b2
 static LibLibreOffice_Impl *gImpl = NULL;
f325b2
@@ -237,51 +237,46 @@ static void doc_setGraphicSelection (LibreOfficeKitDocument* pThis,
f325b2
 static void doc_resetSelection (LibreOfficeKitDocument* pThis);
f325b2
 static char* doc_getStyles(LibreOfficeKitDocument* pThis);
f325b2
 
f325b2
-struct LibLODocument_Impl : public _LibreOfficeKitDocument
f325b2
-{
f325b2
-    uno::Reference<css::lang::XComponent> mxComponent;
f325b2
-    shared_ptr< LibreOfficeKitDocumentClass > m_pDocumentClass;
f325b2
 
f325b2
-    explicit LibLODocument_Impl(const uno::Reference <css::lang::XComponent> &xComponent) :
f325b2
-        mxComponent( xComponent )
f325b2
+LibLODocument_Impl::LibLODocument_Impl(const uno::Reference <css::lang::XComponent> &xComponent) :
f325b2
+    mxComponent( xComponent )
f325b2
+{
f325b2
+    if (!(m_pDocumentClass = gDocumentClass.lock()))
f325b2
     {
f325b2
-        if (!(m_pDocumentClass = gDocumentClass.lock()))
f325b2
-        {
f325b2
-            m_pDocumentClass.reset(new LibreOfficeKitDocumentClass);
f325b2
-
f325b2
-            m_pDocumentClass->nSize = sizeof(LibreOfficeKitDocument);
f325b2
-
f325b2
-            m_pDocumentClass->destroy = doc_destroy;
f325b2
-            m_pDocumentClass->saveAs = doc_saveAs;
f325b2
-            m_pDocumentClass->getDocumentType = doc_getDocumentType;
f325b2
-            m_pDocumentClass->getParts = doc_getParts;
f325b2
-            m_pDocumentClass->getPart = doc_getPart;
f325b2
-            m_pDocumentClass->setPart = doc_setPart;
f325b2
-            m_pDocumentClass->getPartName = doc_getPartName;
f325b2
-            m_pDocumentClass->setPartMode = doc_setPartMode;
f325b2
-            m_pDocumentClass->paintTile = doc_paintTile;
f325b2
-            m_pDocumentClass->getDocumentSize = doc_getDocumentSize;
f325b2
-            m_pDocumentClass->initializeForRendering = doc_initializeForRendering;
f325b2
-            m_pDocumentClass->registerCallback = doc_registerCallback;
f325b2
-            m_pDocumentClass->postKeyEvent = doc_postKeyEvent;
f325b2
-            m_pDocumentClass->postMouseEvent = doc_postMouseEvent;
f325b2
-            m_pDocumentClass->postUnoCommand = doc_postUnoCommand;
f325b2
-            m_pDocumentClass->setTextSelection = doc_setTextSelection;
f325b2
-            m_pDocumentClass->getTextSelection = doc_getTextSelection;
f325b2
-            m_pDocumentClass->setGraphicSelection = doc_setGraphicSelection;
f325b2
-            m_pDocumentClass->resetSelection = doc_resetSelection;
f325b2
-            m_pDocumentClass->getStyles = doc_getStyles;
f325b2
-
f325b2
-            gDocumentClass = m_pDocumentClass;
f325b2
-        }
f325b2
-        pClass = m_pDocumentClass.get();
f325b2
+        m_pDocumentClass.reset(new LibreOfficeKitDocumentClass);
f325b2
+
f325b2
+        m_pDocumentClass->nSize = sizeof(LibreOfficeKitDocument);
f325b2
+
f325b2
+        m_pDocumentClass->destroy = doc_destroy;
f325b2
+        m_pDocumentClass->saveAs = doc_saveAs;
f325b2
+        m_pDocumentClass->getDocumentType = doc_getDocumentType;
f325b2
+        m_pDocumentClass->getParts = doc_getParts;
f325b2
+        m_pDocumentClass->getPart = doc_getPart;
f325b2
+        m_pDocumentClass->setPart = doc_setPart;
f325b2
+        m_pDocumentClass->getPartName = doc_getPartName;
f325b2
+        m_pDocumentClass->setPartMode = doc_setPartMode;
f325b2
+        m_pDocumentClass->paintTile = doc_paintTile;
f325b2
+        m_pDocumentClass->getDocumentSize = doc_getDocumentSize;
f325b2
+        m_pDocumentClass->initializeForRendering = doc_initializeForRendering;
f325b2
+        m_pDocumentClass->registerCallback = doc_registerCallback;
f325b2
+        m_pDocumentClass->postKeyEvent = doc_postKeyEvent;
f325b2
+        m_pDocumentClass->postMouseEvent = doc_postMouseEvent;
f325b2
+        m_pDocumentClass->postUnoCommand = doc_postUnoCommand;
f325b2
+        m_pDocumentClass->setTextSelection = doc_setTextSelection;
f325b2
+        m_pDocumentClass->getTextSelection = doc_getTextSelection;
f325b2
+        m_pDocumentClass->setGraphicSelection = doc_setGraphicSelection;
f325b2
+        m_pDocumentClass->resetSelection = doc_resetSelection;
f325b2
+        m_pDocumentClass->getStyles = doc_getStyles;
f325b2
+
f325b2
+        gDocumentClass = m_pDocumentClass;
f325b2
     }
f325b2
+    pClass = m_pDocumentClass.get();
f325b2
+}
f325b2
 
f325b2
-    ~LibLODocument_Impl()
f325b2
-    {
f325b2
-        mxComponent->dispose();
f325b2
-    }
f325b2
-};
f325b2
+LibLODocument_Impl::~LibLODocument_Impl()
f325b2
+{
f325b2
+    mxComponent->dispose();
f325b2
+}
f325b2
 
f325b2
 static void doc_destroy(LibreOfficeKitDocument *pThis)
f325b2
 {
f325b2
diff --git a/libreofficekit/qa/unit/tiledrendering.cxx b/libreofficekit/qa/unit/tiledrendering.cxx
f325b2
index a0f4bcb5b8eb..aa68c724f0f3 100644
f325b2
--- a/libreofficekit/qa/unit/tiledrendering.cxx
f325b2
+++ b/libreofficekit/qa/unit/tiledrendering.cxx
f325b2
@@ -68,7 +68,6 @@ public:
f325b2
     void testDocumentTypes( Office* pOffice );
f325b2
     void testImpressSlideNames( Office* pOffice );
f325b2
     void testCalcSheetNames( Office* pOffice );
f325b2
-    void testGetStyles( Office* pOffice );
f325b2
 #if 0
f325b2
     void testOverlay( Office* pOffice );
f325b2
 #endif
f325b2
@@ -95,7 +94,6 @@ void TiledRenderingTest::runAllTests()
f325b2
     testDocumentTypes( pOffice.get() );
f325b2
     testImpressSlideNames( pOffice.get() );
f325b2
     testCalcSheetNames( pOffice.get() );
f325b2
-    testGetStyles( pOffice.get() );
f325b2
 #if 0
f325b2
     testOverlay( pOffice.get() );
f325b2
 #endif
f325b2
@@ -184,38 +182,6 @@ void TiledRenderingTest::testCalcSheetNames( Office* pOffice )
f325b2
     CPPUNIT_ASSERT( strcmp( pDocument->getPartName( 2 ), "Sheet3" ) == 0 );
f325b2
 }
f325b2
 
f325b2
-void TiledRenderingTest::testGetStyles( Office* pOffice )
f325b2
-{
f325b2
-    const string sDocPath = m_sSrcRoot + "/libreofficekit/qa/data/blank_text.odt";
f325b2
-    const string sLockFile = m_sSrcRoot +"/libreofficekit/qa/data/.~lock.blank_text.odt#";
f325b2
-
f325b2
-    // FIXME: LOK will fail when trying to open a locked file
f325b2
-    remove( sLockFile.c_str() );
f325b2
-
f325b2
-    scoped_ptr< Document> pDocument( pOffice->documentLoad( sDocPath.c_str() ) );
f325b2
-
f325b2
-    boost::property_tree::ptree aTree;
f325b2
-    char* pJSON = pDocument->getStyles();
f325b2
-    std::stringstream aStream(pJSON);
f325b2
-    boost::property_tree::read_json(aStream, aTree);
f325b2
-    CPPUNIT_ASSERT( aTree.size() > 0 );
f325b2
-
f325b2
-    for (const std::pair<std::string, boost::property_tree::ptree>& rPair : aTree)
f325b2
-    {
f325b2
-        CPPUNIT_ASSERT( rPair.second.size() > 0);
f325b2
-        if (rPair.first != "CharacterStyles" &&
f325b2
-            rPair.first != "ParagraphStyles" &&
f325b2
-            rPair.first != "FrameStyles" &&
f325b2
-            rPair.first != "PageStyles" &&
f325b2
-            rPair.first != "NumberingStyles" &&
f325b2
-            rPair.first != "CellStyles" &&
f325b2
-            rPair.first != "ShapeStyles")
f325b2
-        {
f325b2
-            CPPUNIT_FAIL("Unknown style family: " + rPair.first);
f325b2
-        }
f325b2
-    }
f325b2
-}
f325b2
-
f325b2
 #if 0
f325b2
 static void dumpRGBABitmap( const OUString& rPath, const unsigned char* pBuffer,
f325b2
                             const int nWidth, const int nHeight )
f325b2
-- 
f325b2
2.12.0
f325b2