Commit Graph
79 Commits
Author SHA1 Message Date
Jocelyn Turcotte 854bfb870d Revert "Silence verbose cmake policy warnings on Windows"
This causes an error since those policies aren't known by
2.8.12, so better seeing those warnings on Windows for now.

This reverts commit 4441d3b342.
2015-08-10 11:57:05 +02:00
Jocelyn Turcotte 55e55b0806 Windows: Fix the progress bar with high contrast themes #2654
Setting the palette seems to interfere with Qt's Windows Vista theme
and this isn't set on the QStyleOptionProgressBarV2 by QProgressBar.
2015-08-10 09:55:31 +02:00
Jocelyn Turcotte 4441d3b342 Silence verbose cmake policy warnings on Windows 2015-08-10 09:55:29 +02:00
Jocelyn Turcotte 12fbca48b8 Merge pull request #3562 from owncloud/revert-2920-utility_SHGetKnownFolderPath
Revert "Use dynamic library loading for detecting the correct path for links #2920"
2015-08-06 10:43:04 +02:00
Jocelyn Turcotte a9858d4ed2 Revert "Use dynamic library loading for detecting the correct path for links" 2015-08-06 10:41:33 +02:00
Jocelyn Turcotte dcf7e8a631 shell_i: Don't request statuses on UPDATE_VIEW
Now that the client is pushing all changes of state, we don't need
to track the requested URLs anymore and risk that the way that we
reseted that list could leave a few entries in Finder's cache outdated.

We can remove the same code from other platforms in a later release,
a bit earlier than a week before beta1.
2015-07-31 21:59:58 +02:00
Jocelyn Turcotte 48624fe033 SocketApi: Force fowarding an OK STATUS for all parent directories
This fixes a few issues with the new FinderSync integration on OSX which
can't easily clear its status cache when receiving an UPDATE_VIEW message
except by unregistering the folder, but which causes flickering.

This fix should also make the regeneration of the cache unnecessary on other
platforms through possibly expensive RETRIEVE_FILE_STATUS commands.
2015-07-31 21:59:58 +02:00
Jocelyn Turcotte 78b63c34cb Do not add all remote directories to the SyncItemVector
To allow forwarding all OK states of sync jobs to the socket API
we need to make sure that the vector doesn't contain unneeded items.

This initially was intended to force updating the metadata for parent
folders, but since then the should_update_metadata flag check was
added both here and in PropagateDirectory::finalize where the metadata
is actually updated for parent folders. We can safely remove the inclusion
of all remote directory items.
2015-07-31 21:59:58 +02:00
Jocelyn Turcotte 26d137cac6 SocketApi: Remove an unneeded emit syncItemDiscovered
The signal is emitted in this case if the instruction is NONE
but in the only ultimately connected slot to this signal,
SocketApi::slotSyncItemDiscovered, we return early according
to the same condition.

The emission of the same signal at the end of treewalkFile remains
and take care of the normal cases.
2015-07-31 21:59:58 +02:00
Jocelyn Turcotte ed51358478 shell_i: Activate the finder integration on install #3463
This makes sure that users won't have to go into settings
to activate the extension. This might upset users by forcing
them to re-disable it on each oC upgrade, but if this becomes
an issue we should then make this configurable in the client's
settings itself.
2015-07-28 17:58:17 +02:00
Jocelyn Turcotte 6d522a1467 Fix the tests build on OS X in debug 2015-07-28 15:19:09 +02:00
Jocelyn Turcotte 73209717ec Update the qtmacgoodies submodule
Include a fix for an assert.
2015-07-28 15:19:09 +02:00
Jocelyn Turcotte c85ace11dd Allow the OSX build to work without make install
Also deploy sync-exclude.lst to the build directory in this case.
2015-07-28 15:19:09 +02:00
Jocelyn Turcotte 18efc5eb65 shell_i: Add a way to fail the build if the signing key doesn't match
This tries to catch error at build time instead of having
to check the OS X console for errors afterward.
2015-06-22 13:55:19 +02:00
Jocelyn Turcotte 9797782682 shell_i: Build the extension with the '-' identity by default
This allows developers to build and run the extension by default.
Official packages bundles will be re-signed after the build, we

The SocketApi prefix can be set at configure time through cmake and
should match the key that will be used to sign the whole .app bundle
(including the embedded FindexSync .appex bundle).
2015-06-22 13:55:19 +02:00
Jocelyn Turcotte 121577340a shell_i: Cleanup and build fix
Don't use absolute paths for resources
2015-06-22 13:55:19 +02:00
Jocelyn Turcotte 0320627263 shell_i: Use a more specific name for ContentManager
Since we use that class to lookup the NSBundle using bundleForClass
use a more specific name to avoid any clash with any othe liferay
extension. I couldn't figure out from the documentation if that is
only resolved using the class name, but found some warnings on
stackoverflow and better be safe than sorry for what it costs.
2015-06-19 16:50:11 +02:00
Jocelyn Turcotte 9a9897ea1e Shibboleth: Let the webview use its own QNAM #3359
Since we periodically recreatet the QNAM owned by the Account,
the web view could end up holding a dangling pointer to it.

Let the web view use its own QNAM, but make sure that the cookie
jars are shared so that we can grab the session token given
by the server.
2015-06-19 12:33:11 +02:00
Jocelyn Turcotte 85938ab1f1 shell_i: Remove the ICON_PATH socket API message #2340
It was only used on OS X and couldn't be used by the FinderSync
extension since that one runs in a sandbox. So use the same system
to load images in the legacy extension by shipping them in the
extension bundle instead of the owncloud.app bundle.

This is also given that the legacy extension needs padded icons
while the FinderSync one needs unpadded icons.
2015-06-17 17:15:50 +02:00
Jocelyn Turcotte e111e11dab shell_i: Add english labels 2015-06-17 14:32:34 +02:00
Jocelyn Turcotte c98bcc8e9e OS X: Fix a few warnings 2015-06-17 14:32:34 +02:00
Jocelyn Turcotte a4f519eaeb Reduce the amount of rebuild needed after a git commit
Since GIT_SHA1 would need to be updated in config.h, all files
including it would be rebuilt by make.

Reduce the number of files to rebuild by moving this variable
to version.h instead.
2015-06-17 14:32:34 +02:00
Jocelyn Turcotte db38bf4a0c shell_i: Avoid always rebuilding SyncStateFinder.osax #2482
The archive buildaction causes this. Use the default build while
forcing the Release configuration instead.

In both cases the result will end up in SYMROOT.
2015-06-17 14:32:34 +02:00
Jocelyn Turcotte 977b1464b5 shell_i: Don't load the old extension in >= 10.10 #2340 2015-06-16 15:30:43 +02:00
Jocelyn Turcotte 52f64358c7 shell_i: Use proper non-padded icons #2340 2015-06-16 15:30:42 +02:00
Jocelyn Turcotte 02f6dbba46 shell_i: Add a FinderSync-based implementation #2340
This uses the new official API to show overlay icons and add our
custom context menu entry instead of hooking directly into the
Finder process and intercept drawind routines.

A dummy desktopclient target is also in the project to allow debugging
directly in Xcode while the official client can be started from the
command line. Otherwise Xcode won't allow attaching to the debugee.

Dummy icon files have been added while we get proper icon produced.
We can't use the old icons since what we use for the legacy shell
integration is already padded according to where the badge should
appear on the full icon.
2015-06-15 15:28:21 +02:00
Jocelyn Turcotte bfcfdeec64 shell_i: Use an NSConnection instead of a local socket #2340
This prepares the switch to the official FinderSync API on Yosemite
which requires the extension to run in a sandbox. This complicates
the usage of a local socket to communicate with a non-sandboxed GUI
client. An NSConnection is easier to use in this case, which we can
use as long as the server name (i.e. Mach port registered name) is
prefixed with the code signing Team Identifier.

A placeholder server implementation is also added to the client's
SocketApi which basically reproduces the interface of a QLocalSocket.
Most of the references to individual sockets we're only using
QIODevice methods so the type was simply reduced. A typedef to
replace the QLocalServer was the only other part needed.
2015-06-15 15:28:17 +02:00
Jocelyn Turcotte 7a7bf4c561 NSIS: Force an update of the shell_extension #3320
Since our DLLs version number aren't bumped, a same file size could
cause a DLL not to be installed to replace an old one.
This eventually can cause a crash of explorer if an incompatible version
of OCUtil.dll is installed alone.

Fix the issue by defining LIBRARY_IGNORE_VERSION. This also makes sure
that installing an old version of the client over a more recent one
if we decide to add version numbers to those DLLs.
2015-06-10 17:01:08 +02:00
Jocelyn Turcotte 0f51de20c4 Fix the neon build 2015-05-12 13:04:47 +02:00
Jocelyn Turcotte ea39e457f5 Fix the build 2015-05-12 10:35:57 +02:00
Jocelyn Turcotte 1053153ec4 Fix the Qt4 build
Following a6500d8068
Qt4's moc doesn't expand macros and wouldn't evaluate QT_VERSION_CHECK.
2015-05-07 14:49:01 +02:00
Jocelyn Turcotte 7ea1baaf2d Merge pull request #2920 from remixtj/utility_SHGetKnownFolderPath
Use dynamic library loading for detecting the correct path for links
2015-05-06 17:22:46 +02:00
Jocelyn Turcotte 9ef8658122 shell_integration on OSX: Avoid too many RETRIEVE_FILE_STATUS following UPDATE_VIEW #3122
Do not request the status of all entries in the cache. Instead force Finder
to request the ones that it deems necessary by keeping the old statuses
in a separate dictionary which are only used while the new status arrives.
2015-05-06 16:56:50 +02:00
Jocelyn Turcotte 0a67719f2f shell_integration on OSX: Do not fill the cache with unsolicited statuses #3122 2015-05-06 16:56:50 +02:00
Jocelyn Turcotte 04d820f9cf shell_integration on OSX: Remove dead code
removeIcons isn't called and clearFileNameCacheForPath was always
called with a "nil" path.

Remove the return value of askForIcon which was always 0, and use
that value explicitly at the only call site.

Remove the "-1" code path in iconByPath since setIcons prevents
-1 from getting into _fileNamesCache in all cases.
2015-05-06 16:56:50 +02:00
Jocelyn Turcotte 931dd59844 Don't hardcode the source directory in deploy.sh 2015-05-06 16:56:50 +02:00
Jocelyn Turcotte a6500d8068 Work around the Qt PUT corruption bug with Qt < 5.4.2 #2425
Since QNonContiguousByteDeviceThreadForwardImpl::reset will
call UploadDevice::reset with a BlockingQueuedConnection, this
allows us to reset the HTTP channel along with its buffers
before they get the chance to be reused with a subsequent request.
2015-05-06 16:56:50 +02:00
Jocelyn Turcotte 0d5d2c578d shell_integration on Windows: Avoid too many RETRIEVE_FILE_STATUS following UPDATE_VIEW #3122
Do not request the status of all entries in the cache. Instead force
explorer to request the ones that it deems necessary by keeping the old
statuses in a separate dictionary which are only used while the new status
arrives.
2015-05-06 16:48:34 +02:00
Jocelyn Turcotte 77679790db shell_integration on Windows: Don't fill the cache with unsolicited statuses #3122
Only keep the status updates if explorer is going to display it.
2015-05-06 16:48:33 +02:00
Jocelyn Turcotte 58867baf33 Merge pull request #3183 from christian-burger/fix-for-windows-explorer-extension-when-syncing-whole-drive
Windows Explorer: fix issues when syncing whole drive.
2015-05-06 14:54:19 +02:00
Jocelyn Turcotte ffbf2fb6ce Fix the neon build 2015-04-20 11:31:02 +02:00
Jocelyn Turcotte 12d7484b85 Pass SyncFileItems by pointer instead of by value
Use a QSharedPointer to keep the same ownership and
continue passing the SyncFileItems as a const& when
ownership isn't taken. This allows sharing the same
allocations between the jobs and the result vectors.

This saves about 20MB of memory (off 120MB) once all
jobs are created.
2015-04-18 14:26:40 +02:00
Jocelyn Turcotte 155c965866 Prevent another crash in ~SocketApi #3118
Since the QLocalServer parent of the QLocalSockets gets destroyed
after the _listeners QList, onLostConnection might try to update
an already destroyed list.

Fix the issue by simply making sure that _localServer is destroyed
first.
2015-04-17 12:42:40 +02:00
Jocelyn Turcotte d475628c70 SyncEngine: Fix a crash in csync_vio_file_stat_copy #3051
In some cryptic cases where the getetag property wasn't returned by
the server, we might be trying to c_strdup a null pointer in
csync_vio_file_stat_copy.

At least avoid crashing in this case by looking for
CSYNC_VIO_FILE_STAT_FIELDS_ETAG, like csync_vio_file_stat_destroy
does.
2015-04-08 09:35:43 +02:00
Jocelyn Turcotte 4a890eae38 SyncEngine: Fix a crash caused by an invalid DiscoveryDirectoryResult::iterator #3051
The default constructor of the iterator points to NULL, which makes
it != end() but invalid to dereference.

Use an integer index instead to keep 0 as a valid default value that
can always correctly be checked against size().

Also make sure that no data is shared between threads by making the
csync_vio_file_stat_t copyable and passing it as const.
2015-04-08 09:35:43 +02:00
Jocelyn Turcotte c2fd7d6ebd Clean up remains of SOCKETAPI_TCP 2015-04-01 15:03:42 +02:00
Jocelyn Turcotte 4a893c5267 Fix a crash on shutdown in ~SocketApi #3057
Deleting the QLocalSocket while iterating the QList with qDeleteAll
would trigger onLostConnection, which would modify the list mid-air
and leave dangling pointers in it.
2015-04-01 15:03:42 +02:00
Jocelyn Turcotte 2473183f19 Windows: Add version information for owncloud.exe
This should help us know what version or build number a crash report was generated with.
2015-04-01 15:03:41 +02:00
Jocelyn Turcotte ad5620efb5 Disable asserts in official builds
Make sure that we define NDEBUG in all configurations.
Also remove inconsistent defines:
WIN32: We don't use
_DEBUG;_WINDOWS;_USRDLL: Should be defined by the compiler if necessary
OCCONTEXTMENU_EXPORTS: We currently don't use dllimport anyway

This also update the binary submodule with an updated build.
2015-03-23 13:53:09 +01:00
Jocelyn Turcotte 5264a8c7f6 shell_integration: Fix disappearing context menus on Windows #2898
Since each new connection to the socket API would trigger a broadcast
of REGISTER_PATH to all existing connections, opening the context menu
would trigger a SHChangeNotify call of the root directory through
the overlay icon extension, which is currently also connected to the
socket API, waiting for changes.

Fix the issue by sending the initial REGISTER_PATH automatic response
only to the connecting socket.
2015-03-13 20:53:59 +01:00
Jocelyn Turcotte e93c1ccb73 Install the crash handler earlier during startup
This moves the crash handler installation during the OCC::Application
contruction. This still leaves a window where crashes wouldn't be
caught, leaving the QtSingleApplication and theme initialization
code unreported, but isn't requiring any refactoring for now.

Issue #2952
2015-03-12 17:16:05 +01:00
Jocelyn Turcotte 60da0a15e6 shell_integration: Remove the incorrect usage of the MIIM_BITMAP flag
This flag should only be specified if the hbmpItem member of the
MENUITEMINFO has been set.
2015-03-12 15:22:29 +01:00
Jocelyn Turcotte 0f84510e6f Fix the build with GCC 4.7
Disable bitfields completely in SyncFileItem with that compiler.
2015-03-12 14:54:11 +01:00
Jocelyn Turcotte d88751bb8b shell_integrations: Fix the precompiled headers usage in OCUtil
Enable it in all configurations and add the missing include.
2015-03-11 22:17:46 +01:00
Jocelyn Turcotte 0fccf5e50d Completely disable the crash handler if the user disabled it
The config currently only disable the reporter, but still leaves
the crash handler installed on startup. This causes conflicts
when running those builds in lldb.

Work around the issue by requiring the crash reporter to be
disabled in the settings before owncloud can be run in lldb.
This has the negative side-effect of not covering the
initial ConfigFile loading with the crash handler.

Issue #2946
2015-03-11 15:49:49 +01:00
Jocelyn Turcotte db7919dc2f Shrink sizeof(SyncFileItem) by 20%
Move all small fields together in the struct and make them use bitfields.
Also remove the unused log::_other_remotePerm field.
2015-03-11 11:49:11 +01:00
Jocelyn Turcotte 99f51998f2 Fix a crash in the crash reporter on OSX
The install_name of dependent libraries need to be updated
like we do for cmd and gui.
2015-03-06 19:28:53 +01:00
Jocelyn Turcotte 4c13992f5d Add a gen_sym_files script for OSX
This attempts to replicate what i686-w64-mingw32-gen_sym_files
is doing for us with MinGW by parsing the output of otool -L
to get the library name actually used by the executable.
2015-03-06 19:28:53 +01:00
Jocelyn Turcotte a5d29e6d56 Fix missing symbols on XP
Import a fix from libcrashreporter-qt that should remove
usage of symbols not available in XP's msvcrt.dll

This should help solving #2907 with the crash reporter enabled.
2015-03-04 09:51:54 +01:00
Jocelyn Turcotte a98ab6f51d shell_integration: Remove OwnCloud from public strings on OSX
Also removed it from commented out logs just in case.
2015-02-25 12:13:28 +01:00
Jocelyn Turcotte 03e23da6a3 Show the settings also when no arguments are passed
sendMessage would only be called if there were options to
be sent to the running application.
Fix the issue by having explicitly named messages and always
send the show settings message.

Issue #2374
2015-02-19 16:57:16 +01:00
Jocelyn Turcotte 2ddaf5a06a Add a NO_MSG_HANDLER cmake option
This allows QDebug to output to stdout or OutputDebugString
to ease development.
2015-02-19 16:57:16 +01:00
Jocelyn Turcotte c6442f67c1 shell_integration: Fix a crash on explorer startup
There is a race condition that can initialize the RemotePathChecker
instance concurrently on the same address and cause a crash when locking
the mutex. The reason is that local static initialization is not
thread-safe with MSVC2013.

Fix the issue by using call_once to initialize a static unique_ptr
instead.

This could be related to some reports of issue #2836.
2015-02-18 17:33:46 +01:00
Jocelyn Turcotte ccf4298c81 shell_integration: Cleanup our uses of NSLog
Remove info messages and make sure that error messages
have an OwnCloud prefix since they will be reported by
Finder's process.
2015-02-17 18:23:30 +01:00
Jocelyn Turcotte 0b461e2275 shell_integration: Fix the overlay icons in the column view
Based on 79a713ea643e13e95f52bfe2adbbaf4a5ca92f8a in upstream liferay-nativity.
2015-02-17 18:20:16 +01:00
Jocelyn Turcotte 4f4ae5861a Enable c++11 regardless of the compiler detection
CMake is using "c++" as the compiler and the clang detection fails.
Since we require C++11 at this point, enable it in all cases.

Removed the MSVC todos since we don't plan supporting it yet.
2015-02-17 18:20:15 +01:00
Jocelyn Turcotte a955defae5 Raise the share window to make sure that the user sees it 2015-02-16 16:47:00 +01:00
Jocelyn Turcotte 9579102541 shell_integration: Generate a .pdb in Release for OCContextMenu_x64.dll 2015-02-16 16:47:00 +01:00
Jocelyn Turcotte 4b67429234 shell_integration: Wait longer for the Share menu title
50ms is sometimes not enough when the client is busy synchronizing.
Wait up to 500ms for the client to answer before we give up and show an
empty menu title.

Ideally we should request the title before the watched directory list, but
the list is currently sent implicitly on connect.
2015-02-13 17:18:39 +01:00
Jocelyn Turcotte 23e248b5d1 shell_integration: Fetch the share menu title from the client on Windows
The context menu will now show "Share with ownCloud" instead of "Share" as
it does on other platforms.

This also updates the submodule to point to matching binaries.
2015-02-13 16:08:39 +01:00
Jocelyn Turcotte bed34b1ddd Fix an infinite loop when unregistering OCContextMenu without admin rights
That mistake was introduced when changing the bool return value to an
HRESULT in the imported RegDelnode code.
2015-02-12 13:35:44 +01:00
Jocelyn Turcotte 7e211ef3d9 Update the binary submodule to include the fix for #2680 2015-02-11 17:04:08 +01:00
Jocelyn Turcotte dc85ee3f0a shell_integration: Fix hangs on Windows Vista
It seems like verclsid.exe hangs on our class IDs when invoked
through explorer.exe for 5-10 seconds. It doesn't hang if I
invoke the same command line from cmd.exe, so there could be some
process parameters that don't play well with our extra thread
or to the pipe connection that we do in it.

Delay creating the RemotePathChecker thread until the first
IsMemberOf call. verclsid.exe only seems to instantiate a object
of each registered class, without actually using them, so we
can use this as a workaround.

This should be fixing issue #2680.
2015-02-11 16:45:11 +01:00
Jocelyn Turcotte 07849537cf Fix Windows building documentation issues
Add missing words and clear up why qtkeychain must be built in-source.
2015-02-06 17:10:35 +01:00
Jocelyn Turcotte 0d2b7967bc Windows: Fix opening activity entries with a space in the name
This fixes #2601
2015-02-06 13:44:06 +01:00
Jocelyn TurcotteandJocelyn Turcotte af0001a149 [shell_integration] Remove the usage of Win32 APIs not available on XP 2015-02-05 15:15:05 +01:00
Jocelyn TurcotteandJocelyn Turcotte 2debd5a198 [shell_integration] Setup precompiled headers properly with MSVC
This also fixes a minor compile error when using VS Express.
2015-02-05 15:14:42 +01:00
Jocelyn TurcotteandJocelyn Turcotte 1ac523ec01 Output libocsync and libowncloudsync in the bin directory
Windows finds DLLs using PATH or the directory of the process'
executable. By outputing those dependend DLLs together with
owncloud.exe, the developer only need to have OpenSSL's bin
and the qtkeychain build directory in his PATH to let the
dynamic linker find them.

As the documentation of RUNTIME_OUTPUT_DIRECTORY points out,
this only affects windows as other platforms don't consider
libraries as runtime targets.
2015-02-04 15:00:22 +01:00
Jocelyn TurcotteandJocelyn Turcotte 43a51c1bef Fix the MinGW build
- qtkeychain isn't necessarily in a qt5keychain subdirectory.
- Explicitly add OpenSSL to the include directories
- Make sure that the USE_OUR_OWN_SQLITE3 code is initialized
  for csync by calling find_package.
2015-02-04 14:50:38 +01:00