From 61f2af2cb9c2fe4e9f2e2af5a3b9a5d18da04df2 Mon Sep 17 00:00:00 2001 From: Mateusz Hinc Date: Sat, 11 Jan 2020 18:18:34 +0100 Subject: [PATCH] instagram --- Test Results - MainActivityTest.html | 687 +++++++++++ ..._in_'pl_edu_amu_wmi_socialaggregator'.html | 1010 +++++++++++++++++ app/build.gradle | 5 + app/src/main/AndroidManifest.xml | 19 + .../socialaggregator/activity/MainActivity.kt | 49 +- .../activity/NewPostActivity.kt | 81 +- .../socialplatforms/Facebook.kt | 104 +- .../socialplatforms/FacebookMock.kt | 84 -- .../socialplatforms/NotApplicableException.kt | 5 + .../socialplatforms/Snapchat.kt | 79 ++ .../socialplatforms/SocialPlatform.kt | 5 +- .../utils/SocialPlatformsManager.kt | 7 +- .../viewholders/PostDetailsRecycler.kt | 13 +- .../viewholders/PostSummaryRecycler.kt | 28 +- .../res/drawable-hdpi/ic_icon_snapchat.png | Bin 0 -> 1282 bytes .../res/drawable-mdpi/ic_icon_snapchat.png | Bin 0 -> 725 bytes .../res/drawable-xhdpi/ic_icon_snapchat.png | Bin 0 -> 1459 bytes .../res/drawable-xxhdpi/ic_icon_snapchat.png | Bin 0 -> 2825 bytes .../res/drawable-xxxhdpi/ic_icon_snapchat.png | Bin 0 -> 3150 bytes app/src/main/res/values/strings.xml | 6 + app/src/main/res/xml/file_paths.xml | 7 + build.gradle | 5 +- 22 files changed, 2000 insertions(+), 194 deletions(-) create mode 100644 Test Results - MainActivityTest.html create mode 100644 Test Results - Tests_in_'pl_edu_amu_wmi_socialaggregator'.html delete mode 100644 app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/FacebookMock.kt create mode 100644 app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/NotApplicableException.kt create mode 100644 app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/Snapchat.kt create mode 100644 app/src/main/res/drawable-hdpi/ic_icon_snapchat.png create mode 100644 app/src/main/res/drawable-mdpi/ic_icon_snapchat.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_icon_snapchat.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_icon_snapchat.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_icon_snapchat.png create mode 100644 app/src/main/res/xml/file_paths.xml diff --git a/Test Results - MainActivityTest.html b/Test Results - MainActivityTest.html new file mode 100644 index 0000000..2fc5a54 --- /dev/null +++ b/Test Results - MainActivityTest.html @@ -0,0 +1,687 @@ + + + + +Test Results — MainActivityTest + + + + + + + + + +
+ +
+
    +
  • + +
    1.58 s
    +
    pl.edu.amu.wmi.socialaggregator.MainActivityTest
    +
      +
    • + +
      829 ms
      +
      passedclickAddNewSocial_shouldOpenAddNewSocialActivity
      +
    • +
    • + +
      754 ms
      +
      passedclickAddNewSocial_shouldOpenAddNewNewPostActivity
      +
        +
      • +Connected to process 13465 on device 'Nexus_5X_API_29_x86 [emulator-5554]'.
        Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        I/chatty: uid=10133(pl.edu.amu.wmi.socialaggregator) identical 3 lines
        I/IdlingResourceRegistry: All idling resources are idle.
        +
      • +
      • +W/ocialaggregato: Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        I/ViewInteraction: Checking 'androidx.test.espresso.intent.Intents$2@2be333a' assertion on view is a root view.
        +
      • +
      • +W/ocialaggregato: Accessing hidden field Landroid/app/Activity;->mResultCode:I (greylist, reflection, allowed)
        Accessing hidden field Landroid/app/Activity;->mResultData:Landroid/content/Intent; (greylist, reflection, allowed)
        +
      • +
      • +I/TestRunner: finished: clickAddNewSocial_shouldOpenAddNewSocialActivity(pl.edu.amu.wmi.socialaggregator.MainActivityTest)
        I/MonitoringInstr: Activities that are still in CREATED to STOPPED: 2
        Finishing activity: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@ba61ee9
        I/MonitoringInstr: Unstopped activity count: 2
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@ba61ee9 in: PAUSED
        D/EGL_emulation: eglMakeCurrent: 0xdf31a1e0: ver 2 0 (tinfo 0xdf30f7c0)
        D/EGL_emulation: eglMakeCurrent: 0xdf31a1e0: ver 2 0 (tinfo 0xdf30f7c0)
        +
      • +
      • +I/MonitoringInstr: Unstopped activity count: 2
        I/MonitoringInstr: Unstopped activity count: 2
        I/MonitoringInstr: Unstopped activity count: 2
        I/chatty: uid=10133(pl.edu.amu.wmi.socialaggregator) roidJUnitRunner identical 6 lines
        I/MonitoringInstr: Unstopped activity count: 2
        +
      • +
      • +D/EGL_emulation: eglMakeCurrent: 0xdf31a1e0: ver 2 0 (tinfo 0xdf30f7c0)
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@ba61ee9 in: STOPPED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@ba61ee9 in: DESTROYED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@51fb022 in: STOPPED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@51fb022 in: DESTROYED
        +
      • +
      • +I/TestRunner: started: clickAddNewSocial_shouldOpenAddNewNewPostActivity(pl.edu.amu.wmi.socialaggregator.MainActivityTest)
        +
      • +
      • +W/ActivityTestRule: getActivityIntent() returned null using default: Intent(Intent.ACTION_MAIN)
        W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@eb54878
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@10084b7 in: PRE_ON_CREATE
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@10084b7 in: CREATED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@10084b7 in: STARTED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@10084b7 in: RESUMED
        D/EGL_emulation: eglMakeCurrent: 0xdf31a1e0: ver 2 0 (tinfo 0xdf30f7c0)
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/ViewInteraction: Performing 'single click' action on view with id: pl.edu.amu.wmi.socialaggregator:id/createPostButton
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/chatty: uid=10133(pl.edu.amu.wmi.socialaggregator) identical 2 lines
        I/IdlingResourceRegistry: All idling resources are idle.
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@10084b7 in: PAUSED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba36b8
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba36b8
        +
      • +
      • +W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@c458c91
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@bf6dd82 in: PRE_ON_CREATE
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba36b8
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba36b8
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@bf6dd82 in: CREATED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba36b8
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba36b8
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@bf6dd82 in: STARTED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba36b8
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba36b8
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@bf6dd82 in: RESUMED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba36b8
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba36b8
        D/EGL_emulation: eglMakeCurrent: 0xdf31a1e0: ver 2 0 (tinfo 0xdf30f7c0)
        D/EGL_emulation: eglMakeCurrent: 0xdf31a1e0: ver 2 0 (tinfo 0xdf30f7c0)
        D/EGL_emulation: eglMakeCurrent: 0xdf31a1e0: ver 2 0 (tinfo 0xdf30f7c0)
        +
      • +
      • +I/chatty: uid=10133(pl.edu.amu.wmi.socialaggregator) RenderThread identical 1 line
        +
      • +
      • +D/EGL_emulation: eglMakeCurrent: 0xdf31a1e0: ver 2 0 (tinfo 0xdf30f7c0)
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        +
      • +
      • +D/EGL_emulation: eglMakeCurrent: 0xdf31a1e0: ver 2 0 (tinfo 0xdf30f7c0)
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        I/chatty: uid=10133(pl.edu.amu.wmi.socialaggregator) identical 2 lines
        I/IdlingResourceRegistry: All idling resources are idle.
        +
      • +
      • +W/ocialaggregato: Accessing hidden method Lsun/misc/Unsafe;->compareAndSwapObject(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z (greylist, linking, allowed)
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/ViewInteraction: Checking 'androidx.test.espresso.intent.Intents$2@f11aef9' assertion on view is a root view.
        I/TestRunner: finished: clickAddNewSocial_shouldOpenAddNewNewPostActivity(pl.edu.amu.wmi.socialaggregator.MainActivityTest)
        I/MonitoringInstr: Activities that are still in CREATED to STOPPED: 2
        I/MonitoringInstr: Finishing activity: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@bf6dd82
        I/MonitoringInstr: Unstopped activity count: 2
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + diff --git a/Test Results - Tests_in_'pl_edu_amu_wmi_socialaggregator'.html b/Test Results - Tests_in_'pl_edu_amu_wmi_socialaggregator'.html new file mode 100644 index 0000000..bbfa19d --- /dev/null +++ b/Test Results - Tests_in_'pl_edu_amu_wmi_socialaggregator'.html @@ -0,0 +1,1010 @@ + + + + +Test Results — Tests in 'pl.edu.amu.wmi.socialaggregator' + + + + + + + + + +
+ +
+
    +
  • + +
    3.80 s
    +
    pl.edu.amu.wmi.socialaggregator.AddSocialActivityTest
    +
      +
    • + +
      886 ms
      +
      passedinitialState_noAddedSocials_oneAvailableSocial
      +
    • +
    • + +
      2.92 s
      +
      passedclickingSocials_movesThemFormAvailableToAdded_etViceVersa
      +
        +
      • +I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        +
      • +
      • +E/THREAD_STATE: Thread[Instr: androidx.test.runner.AndroidJUnitRunner,5,main]
        dalvik.system.VMStack.getThreadStackTrace(Native Method)
        java.lang.Thread.getStackTrace(Thread.java:1565)
        java.lang.Thread.getAllStackTraces(Thread.java:1615)
        androidx.test.runner.MonitoringInstrumentation.getThreadState(MonitoringInstrumentation.java:680)
        androidx.test.runner.MonitoringInstrumentation.dumpThreadStateToOutputs(MonitoringInstrumentation.java:675)
        androidx.test.runner.MonitoringInstrumentation.waitForActivitiesToComplete(MonitoringInstrumentation.java:406)
        androidx.test.runner.AndroidJUnitRunner$1.run(AndroidJUnitRunner.java:452)
        androidx.test.internal.runner.listener.ActivityFinisherRunListener.testStarted(ActivityFinisherRunListener.java:48)
        org.junit.runner.notification.SynchronizedRunListener.testStarted(SynchronizedRunListener.java:49)
        org.junit.runner.notification.RunNotifier$3.notifyListener(RunNotifier.java:121)
        org.junit.runner.notification.RunNotifier$SafeNotifier.run(RunNotifier.java:72)
        org.junit.runner.notification.RunNotifier.fireTestStarted(RunNotifier.java:118)
        org.junit.internal.runners.model.EachTestNotifier.fireTestStarted(EachTestNotifier.java:42)
        org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:323)
        org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
        org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
        org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        androidx.test.ext.junit.runners.AndroidJUnit4.run(AndroidJUnit4.java:104)
        org.junit.runners.Suite.runChild(Suite.java:128)
        org.junit.runners.Suite.runChild(Suite.java:27)
        org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        org.junit.runner.JUnitCore.run(JUnitCore.java:137)
        org.junit.runner.JUnitCore.run(JUnitCore.java:115)
        androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:56)
        androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:395)
        android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1939)

        Thread[FinalizerDaemon,5,system]
        java.lang.Object.wait(Native Method)
        java.lang.Object.wait(Object.java:407)
        java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:188)
        java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:209)
        java.lang.Daemons$FinalizerDaemon.run(Daemons.java:206)
        java.lang.Thread.run(Thread.java:760)

        Thread[HeapTaskDaemon,5,system]
        dalvik.system.VMRuntime.runHeapTasks(Native Method)
        java.lang.Daemons$HeapTaskDaemon.run(Daemons.java:435)
        java.lang.Thread.run(Thread.java:760)

        Thread[FileObserver,5,main]
        android.os.FileObserver$ObserverThread.observe(Native Method)
        android.os.FileObserver$ObserverThread.run(FileObserver.java:85)

        Thread[Thread-3,5,main]
        java.lang.Thread.sleep(Native Method)
        java.lang.Thread.sleep(Thread.java:370)
        java.lang.Thread.sleep(Thread.java:312)
        android.content.res.MiuiResourcesImpl$1.run(MiuiResourcesImpl.java:283)

        Thread[ReferenceQueueDaemon,5,system]
        java.lang.Object.wait(Native Method)
        java.lang.Daemons$ReferenceQueueDaemon.run(Daemons.java:152)
        java.lang.Thread.run(Thread.java:760)

        Thread[InstrumentationConnectionThread,5,main]
        android.os.MessageQueue.nativePollOnce(Native Method)
        android.os.Message
        +
      • +
      • +W/MonitoringInstr: Still 1 activities active after waiting 2000 ms.
        W/ActivityTestRule: getActivityIntent() returned null using default: Intent(Intent.ACTION_MAIN)
        +
      • +
      • +I/Timeline: Timeline: Activity_launch_request time:753986359 intent:Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=pl.edu.amu.wmi.socialaggregator/.activity.AddSocialActivity }
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@8a5c6ab in: PRE_ON_CREATE
        running callback: androidx.test.core.app.ActivityScenario$1@2eb59fc
        +
      • +
      • +V/ActivityScenario: Activity lifecycle changed event received but ignored because the intent does not match. startActivityIntent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=pl.edu.amu.wmi.socialaggregator/.activity.AddSocialActivity }, activity.getIntent()=Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=pl.edu.amu.wmi.socialaggregator/.activity.AddSocialActivity }, activity=pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@8a5c6ab
        +
      • +
      • +D/LifecycleMonitor: callback completes: androidx.test.core.app.ActivityScenario$1@2eb59fc
        +
      • +
      • +V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@1eb9caa
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@89b09b
        V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@1519c38
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@8a8c411
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@8a5c6ab in: CREATED
        running callback: androidx.test.core.app.ActivityScenario$1@2eb59fc
        +
      • +
      • +V/ActivityScenario: Activity lifecycle changed event received but ignored because the intent does not match. startActivityIntent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=pl.edu.amu.wmi.socialaggregator/.activity.AddSocialActivity }, activity.getIntent()=Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=pl.edu.amu.wmi.socialaggregator/.activity.AddSocialActivity }, activity=pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@8a5c6ab
        +
      • +
      • +D/LifecycleMonitor: callback completes: androidx.test.core.app.ActivityScenario$1@2eb59fc
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@8a5c6ab in: STARTED
        running callback: androidx.test.core.app.ActivityScenario$1@2eb59fc
        +
      • +
      • +V/ActivityScenario: Activity lifecycle changed event received but ignored because the intent does not match. startActivityIntent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=pl.edu.amu.wmi.socialaggregator/.activity.AddSocialActivity }, activity.getIntent()=Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=pl.edu.amu.wmi.socialaggregator/.activity.AddSocialActivity }, activity=pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@8a5c6ab
        +
      • +
      • +D/LifecycleMonitor: callback completes: androidx.test.core.app.ActivityScenario$1@2eb59fc
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@8a5c6ab in: RESUMED
        running callback: androidx.test.core.app.ActivityScenario$1@2eb59fc
        +
      • +
      • +V/ActivityScenario: Activity lifecycle changed event received but ignored because the intent does not match. startActivityIntent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=pl.edu.amu.wmi.socialaggregator/.activity.AddSocialActivity }, activity.getIntent()=Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=pl.edu.amu.wmi.socialaggregator/.activity.AddSocialActivity }, activity=pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@8a5c6ab
        +
      • +
      • +D/LifecycleMonitor: callback completes: androidx.test.core.app.ActivityScenario$1@2eb59fc
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@8d0c8e3 in: STOPPED
        running callback: androidx.test.core.app.ActivityScenario$1@2eb59fc
        +
      • +
      • +V/ActivityScenario: Activity lifecycle changed event received but ignored because the intent does not match. startActivityIntent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=pl.edu.amu.wmi.socialaggregator/.activity.AddSocialActivity }, activity.getIntent()=Intent { act=android.intent.action.MAIN flg=0x14000000 cmp=pl.edu.amu.wmi.socialaggregator/.activity.AddSocialActivity }, activity=pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@8d0c8e3
        +
      • +
      • +D/LifecycleMonitor: callback completes: androidx.test.core.app.ActivityScenario$1@2eb59fc
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@8d0c8e3 in: DESTROYED
        running callback: androidx.test.core.app.ActivityScenario$1@2eb59fc
        +
      • +
      • +V/ActivityScenario: Activity lifecycle changed event received but ignored because the intent does not match. startActivityIntent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=pl.edu.amu.wmi.socialaggregator/.activity.AddSocialActivity }, activity.getIntent()=Intent { act=android.intent.action.MAIN flg=0x14000000 cmp=pl.edu.amu.wmi.socialaggregator/.activity.AddSocialActivity }, activity=pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@8d0c8e3
        +
      • +
      • +D/LifecycleMonitor: callback completes: androidx.test.core.app.ActivityScenario$1@2eb59fc
        D/EventInjectionStrategy: Creating injection strategy with input manager.
        +
      • +
      • +I/art: Do partial code cache collection, code=42KB, data=56KB
        After code cache collection, code=42KB, data=56KB
        Increasing code cache capacity to 256KB
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/ViewInteraction: Performing 'actionOnItemAtPosition performing ViewAction: Action on child on item at position: 0' action on view with id: pl.edu.amu.wmi.socialaggregator:id/addSocialRecyclerView
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        All idling resources are idle.
        +
      • +
      • +V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@2572e47
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/Toast: Show toast from OpPackageName:pl.edu.amu.wmi.socialaggregator, PackageName:pl.edu.amu.wmi.socialaggregator
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/ViewInteraction: Performing 'actionOnItemAtPosition performing ViewAction: Action on child on item at position: 0' action on view with id: pl.edu.amu.wmi.socialaggregator:id/availableSocialsRecyclerView
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@8a5c6ab in: PAUSED
        D/LifecycleMonitor: running callback: androidx.test.core.app.ActivityScenario$1@2eb59fc
        +
      • +
      • +V/ActivityScenario: Activity lifecycle changed event received but ignored because the intent does not match. startActivityIntent=Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=pl.edu.amu.wmi.socialaggregator/.activity.AddSocialActivity }, activity.getIntent()=Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=pl.edu.amu.wmi.socialaggregator/.activity.AddSocialActivity }, activity=pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@8a5c6ab
        +
      • +
      • +D/LifecycleMonitor: callback completes: androidx.test.core.app.ActivityScenario$1@2eb59fc
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@c5c95c2
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@c5c95c2
        +
      • +
      +
    • +
    +
  • +
  • + +
    2.04 s
    +
    pl.edu.amu.wmi.socialaggregator.ExampleInstrumentedTest
    +
      +
    • + +
      2.04 s
      +
      passeduseAppContext
      +
        +
      • +E/THREAD_STATE: Thread[Instr: androidx.test.runner.AndroidJUnitRunner,5,main]
        dalvik.system.VMStack.getThreadStackTrace(Native Method)
        java.lang.Thread.getStackTrace(Thread.java:1565)
        java.lang.Thread.getAllStackTraces(Thread.java:1615)
        androidx.test.runner.MonitoringInstrumentation.getThreadState(MonitoringInstrumentation.java:680)
        androidx.test.runner.MonitoringInstrumentation.dumpThreadStateToOutputs(MonitoringInstrumentation.java:675)
        androidx.test.runner.MonitoringInstrumentation.waitForActivitiesToComplete(MonitoringInstrumentation.java:406)
        androidx.test.runner.AndroidJUnitRunner$1.run(AndroidJUnitRunner.java:452)
        androidx.test.internal.runner.listener.ActivityFinisherRunListener.testFinished(ActivityFinisherRunListener.java:55)
        org.junit.runner.notification.SynchronizedRunListener.testFinished(SynchronizedRunListener.java:56)
        org.junit.runner.notification.RunNotifier$7.notifyListener(RunNotifier.java:190)
        org.junit.runner.notification.RunNotifier$SafeNotifier.run(RunNotifier.java:72)
        org.junit.runner.notification.RunNotifier.fireTestFinished(RunNotifier.java:187)
        org.junit.internal.runners.model.EachTestNotifier.fireTestFinished(EachTestNotifier.java:38)
        org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:331)
        org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
        org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
        org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        androidx.test.ext.junit.runners.AndroidJUnit4.run(AndroidJUnit4.java:104)
        org.junit.runners.Suite.runChild(Suite.java:128)
        org.junit.runners.Suite.runChild(Suite.java:27)
        org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        org.junit.runner.JUnitCore.run(JUnitCore.java:137)
        org.junit.runner.JUnitCore.run(JUnitCore.java:115)
        androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:56)
        androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:395)
        android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1939)

        Thread[FinalizerDaemon,5,system]
        java.lang.Object.wait(Native Method)
        java.lang.Object.wait(Object.java:407)
        java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:188)
        java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:209)
        java.lang.Daemons$FinalizerDaemon.run(Daemons.java:206)
        java.lang.Thread.run(Thread.java:760)

        Thread[HeapTaskDaemon,5,system]
        dalvik.system.VMRuntime.runHeapTasks(Native Method)
        java.lang.Daemons$HeapTaskDaemon.run(Daemons.java:435)
        java.lang.Thread.run(Thread.java:760)

        Thread[Espresso Key Event #0,5,main]
        java.lang.Object.wait(Native Method)
        java.lang.Thread.parkFor$(Thread.java:2160)
        sun.misc.Unsafe.park(Unsafe.java:325)
        java.util.concurrent.locks.LockSupport.park(LockSupport.java:161)
        java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2035)
        java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
        java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1058)
        java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1118)
        java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        java.lang.Thread.run(
        +
      • +
      • +W/MonitoringInstr: Still 1 activities active after waiting 2000 ms.
        +
      • +
      • +I/TestRunner: started: useAppContext(pl.edu.amu.wmi.socialaggregator.ExampleInstrumentedTest)
        I/MonitoringInstr: Activities that are still in CREATED to STOPPED: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        +
      • +
      • +E/THREAD_STATE: Thread[Instr: androidx.test.runner.AndroidJUnitRunner,5,main]
        dalvik.system.VMStack.getThreadStackTrace(Native Method)
        java.lang.Thread.getStackTrace(Thread.java:1565)
        java.lang.Thread.getAllStackTraces(Thread.java:1615)
        androidx.test.runner.MonitoringInstrumentation.getThreadState(MonitoringInstrumentation.java:680)
        androidx.test.runner.MonitoringInstrumentation.dumpThreadStateToOutputs(MonitoringInstrumentation.java:675)
        androidx.test.runner.MonitoringInstrumentation.waitForActivitiesToComplete(MonitoringInstrumentation.java:406)
        androidx.test.runner.AndroidJUnitRunner$1.run(AndroidJUnitRunner.java:452)
        androidx.test.internal.runner.listener.ActivityFinisherRunListener.testStarted(ActivityFinisherRunListener.java:48)
        org.junit.runner.notification.SynchronizedRunListener.testStarted(SynchronizedRunListener.java:49)
        org.junit.runner.notification.RunNotifier$3.notifyListener(RunNotifier.java:121)
        org.junit.runner.notification.RunNotifier$SafeNotifier.run(RunNotifier.java:72)
        org.junit.runner.notification.RunNotifier.fireTestStarted(RunNotifier.java:118)
        org.junit.internal.runners.model.EachTestNotifier.fireTestStarted(EachTestNotifier.java:42)
        org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:323)
        org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
        org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
        org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        androidx.test.ext.junit.runners.AndroidJUnit4.run(AndroidJUnit4.java:104)
        org.junit.runners.Suite.runChild(Suite.java:128)
        org.junit.runners.Suite.runChild(Suite.java:27)
        org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        org.junit.runner.JUnitCore.run(JUnitCore.java:137)
        org.junit.runner.JUnitCore.run(JUnitCore.java:115)
        androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:56)
        androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:395)
        android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1939)

        Thread[FinalizerDaemon,5,system]
        java.lang.Object.wait(Native Method)
        java.lang.Object.wait(Object.java:407)
        java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:188)
        java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:209)
        java.lang.Daemons$FinalizerDaemon.run(Daemons.java:206)
        java.lang.Thread.run(Thread.java:760)

        Thread[HeapTaskDaemon,5,system]
        dalvik.system.VMRuntime.runHeapTasks(Native Method)
        java.lang.Daemons$HeapTaskDaemon.run(Daemons.java:435)
        java.lang.Thread.run(Thread.java:760)

        Thread[Espresso Key Event #0,5,main]
        java.lang.Object.wait(Native Method)
        java.lang.Thread.parkFor$(Thread.java:2160)
        sun.misc.Unsafe.park(Unsafe.java:325)
        java.util.concurrent.locks.LockSupport.park(LockSupport.java:161)
        java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2035)
        java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
        java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1058)
        java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1118)
        java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        java.lang.Thread.run(Thre
        +
      • +
      • +W/MonitoringInstr: Still 1 activities active after waiting 2000 ms.
        +
      • +
      • +I/TestRunner: finished: useAppContext(pl.edu.amu.wmi.socialaggregator.ExampleInstrumentedTest)
        I/MonitoringInstr: Activities that are still in CREATED to STOPPED: 1
        I/MonitoringInstr: Unstopped activity count: 1
        +
      • +
      +
    • +
    +
  • +
  • + +
    5.26 s
    +
    pl.edu.amu.wmi.socialaggregator.MainActivityTest
    +
      +
    • + +
      2.69 s
      +
      passedclickCreatePost_shouldOpenAddNewNewPostActivity
      +
        +
      • +I/TestRunner: started: clickCreatePost_shouldOpenAddNewNewPostActivity(pl.edu.amu.wmi.socialaggregator.MainActivityTest)
        I/MonitoringInstr: Activities that are still in CREATED to STOPPED: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        +
      • +
      • +E/THREAD_STATE: Thread[Instr: androidx.test.runner.AndroidJUnitRunner,5,main]
        dalvik.system.VMStack.getThreadStackTrace(Native Method)
        java.lang.Thread.getStackTrace(Thread.java:1565)
        java.lang.Thread.getAllStackTraces(Thread.java:1615)
        androidx.test.runner.MonitoringInstrumentation.getThreadState(MonitoringInstrumentation.java:680)
        androidx.test.runner.MonitoringInstrumentation.dumpThreadStateToOutputs(MonitoringInstrumentation.java:675)
        androidx.test.runner.MonitoringInstrumentation.waitForActivitiesToComplete(MonitoringInstrumentation.java:406)
        androidx.test.runner.AndroidJUnitRunner$1.run(AndroidJUnitRunner.java:452)
        androidx.test.internal.runner.listener.ActivityFinisherRunListener.testStarted(ActivityFinisherRunListener.java:48)
        org.junit.runner.notification.SynchronizedRunListener.testStarted(SynchronizedRunListener.java:49)
        org.junit.runner.notification.RunNotifier$3.notifyListener(RunNotifier.java:121)
        org.junit.runner.notification.RunNotifier$SafeNotifier.run(RunNotifier.java:72)
        org.junit.runner.notification.RunNotifier.fireTestStarted(RunNotifier.java:118)
        org.junit.internal.runners.model.EachTestNotifier.fireTestStarted(EachTestNotifier.java:42)
        org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:323)
        org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
        org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
        org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        androidx.test.ext.junit.runners.AndroidJUnit4.run(AndroidJUnit4.java:104)
        org.junit.runners.Suite.runChild(Suite.java:128)
        org.junit.runners.Suite.runChild(Suite.java:27)
        org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        org.junit.runner.JUnitCore.run(JUnitCore.java:137)
        org.junit.runner.JUnitCore.run(JUnitCore.java:115)
        androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:56)
        androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:395)
        android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1939)

        Thread[FinalizerDaemon,5,system]
        java.lang.Object.wait(Native Method)
        java.lang.Object.wait(Object.java:407)
        java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:188)
        java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:209)
        java.lang.Daemons$FinalizerDaemon.run(Daemons.java:206)
        java.lang.Thread.run(Thread.java:760)

        Thread[HeapTaskDaemon,5,system]
        dalvik.system.VMRuntime.runHeapTasks(Native Method)
        java.lang.Daemons$HeapTaskDaemon.run(Daemons.java:435)
        java.lang.Thread.run(Thread.java:760)

        Thread[Espresso Key Event #0,5,main]
        java.lang.Object.wait(Native Method)
        java.lang.Thread.parkFor$(Thread.java:2160)
        sun.misc.Unsafe.park(Unsafe.java:325)
        java.util.concurrent.locks.LockSupport.park(LockSupport.java:161)
        java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2035)
        java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
        java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1058)
        java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1118)
        java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        java.lang.Thread.run(Thre
        +
      • +
      • +W/MonitoringInstr: Still 1 activities active after waiting 2000 ms.
        W/ActivityTestRule: getActivityIntent() returned null using default: Intent(Intent.ACTION_MAIN)
        +
      • +
      • +I/Timeline: Timeline: Activity_launch_request time:753995377 intent:Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=pl.edu.amu.wmi.socialaggregator/.activity.MainActivity }
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@1276941 in: PRE_ON_CREATE
        +
      • +
      • +V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@c00a46c
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@5e71a35
        V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@e7e2e7a
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@a3f262b
        V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@4b9dfc9
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@3c9b6ce
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@1276941 in: CREATED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@1276941 in: STARTED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@1276941 in: RESUMED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@8a5c6ab in: STOPPED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@8a5c6ab in: DESTROYED
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/ViewInteraction: Performing 'single click' action on view with id: pl.edu.amu.wmi.socialaggregator:id/createPostButton
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/Timeline: Timeline: Activity_launch_request time:753995639 intent:Intent { cmp=pl.edu.amu.wmi.socialaggregator/.activity.NewPostActivity }
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@1276941 in: PAUSED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@287402d
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@287402d
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@c27d34f in: PRE_ON_CREATE
        D/LifecycleMonitor: running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@287402d
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@287402d
        +
      • +
      • +V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@54a2e3f
        V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@e67130c
        V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@1e09cc5
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@1c4f61a
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@c27d34f in: CREATED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@287402d
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@287402d
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@c27d34f in: STARTED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@287402d
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@287402d
        +
      • +
      • +I/art: Do full code cache collection, code=112KB, data=123KB
        After code cache collection, code=110KB, data=98KB
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@c27d34f in: RESUMED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@287402d
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@287402d
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@1276941 in: STOPPED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@287402d
        D/LifecycleMonitor: callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@287402d
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/ViewInteraction: Checking 'androidx.test.espresso.intent.Intents$2@f8f77d8' assertion on view is a root view.
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@1276941 in: DESTROYED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@287402d
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@287402d
        +
      • +
      • +I/TestRunner: finished: clickCreatePost_shouldOpenAddNewNewPostActivity(pl.edu.amu.wmi.socialaggregator.MainActivityTest)
        I/MonitoringInstr: Activities that are still in CREATED to STOPPED: 1
        Finishing activity: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@c27d34f
        +
      • +
      +
    • +
    • + +
      2.57 s
      +
      passedclickAddNewSocial_shouldOpenAddNewSocialActivity
      +
        +
      • +I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        +
      • +
      • +E/THREAD_STATE: Thread[Instr: androidx.test.runner.AndroidJUnitRunner,5,main]
        dalvik.system.VMStack.getThreadStackTrace(Native Method)
        java.lang.Thread.getStackTrace(Thread.java:1565)
        java.lang.Thread.getAllStackTraces(Thread.java:1615)
        androidx.test.runner.MonitoringInstrumentation.getThreadState(MonitoringInstrumentation.java:680)
        androidx.test.runner.MonitoringInstrumentation.dumpThreadStateToOutputs(MonitoringInstrumentation.java:675)
        androidx.test.runner.MonitoringInstrumentation.waitForActivitiesToComplete(MonitoringInstrumentation.java:406)
        androidx.test.runner.AndroidJUnitRunner$1.run(AndroidJUnitRunner.java:452)
        androidx.test.internal.runner.listener.ActivityFinisherRunListener.testStarted(ActivityFinisherRunListener.java:48)
        org.junit.runner.notification.SynchronizedRunListener.testStarted(SynchronizedRunListener.java:49)
        org.junit.runner.notification.RunNotifier$3.notifyListener(RunNotifier.java:121)
        org.junit.runner.notification.RunNotifier$SafeNotifier.run(RunNotifier.java:72)
        org.junit.runner.notification.RunNotifier.fireTestStarted(RunNotifier.java:118)
        org.junit.internal.runners.model.EachTestNotifier.fireTestStarted(EachTestNotifier.java:42)
        org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:323)
        org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
        org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
        org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        androidx.test.ext.junit.runners.AndroidJUnit4.run(AndroidJUnit4.java:104)
        org.junit.runners.Suite.runChild(Suite.java:128)
        org.junit.runners.Suite.runChild(Suite.java:27)
        org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        org.junit.runner.JUnitCore.run(JUnitCore.java:137)
        org.junit.runner.JUnitCore.run(JUnitCore.java:115)
        androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:56)
        androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:395)
        android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1939)

        Thread[FinalizerDaemon,5,system]
        java.lang.Object.wait(Native Method)
        java.lang.Object.wait(Object.java:407)
        java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:188)
        java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:209)
        java.lang.Daemons$FinalizerDaemon.run(Daemons.java:206)
        java.lang.Thread.run(Thread.java:760)

        Thread[HeapTaskDaemon,5,system]
        dalvik.system.VMRuntime.runHeapTasks(Native Method)
        java.lang.Daemons$HeapTaskDaemon.run(Daemons.java:435)
        java.lang.Thread.run(Thread.java:760)

        Thread[Espresso Key Event #0,5,main]
        java.lang.Object.wait(Native Method)
        java.lang.Thread.parkFor$(Thread.java:2160)
        sun.misc.Unsafe.park(Unsafe.java:325)
        java.util.concurrent.locks.LockSupport.park(LockSupport.java:161)
        java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2035)
        java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
        java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1058)
        java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1118)
        java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        java.lang.Thread.run(Thre
        +
      • +
      • +W/MonitoringInstr: Still 1 activities active after waiting 2000 ms.
        W/ActivityTestRule: getActivityIntent() returned null using default: Intent(Intent.ACTION_MAIN)
        +
      • +
      • +I/Timeline: Timeline: Activity_launch_request time:754000089 intent:Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=pl.edu.amu.wmi.socialaggregator/.activity.MainActivity }
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@9d84e8f in: PRE_ON_CREATE
        +
      • +
      • +V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@2c22b52
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@94b9e23
        V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@e2c1d4c
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@e7dd195
        V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@c705613
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@bc0a050
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@9d84e8f in: CREATED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@9d84e8f in: STARTED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@9d84e8f in: RESUMED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@c27d34f in: STOPPED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@c27d34f in: DESTROYED
        +
      • +
      • +I/art: Do partial code cache collection, code=120KB, data=117KB
        After code cache collection, code=118KB, data=115KB
        Increasing code cache capacity to 512KB
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/ViewInteraction: Performing 'single click' action on view with id: pl.edu.amu.wmi.socialaggregator:id/connectedSocialsButton
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/Timeline: Timeline: Activity_launch_request time:754000269 intent:Intent { cmp=pl.edu.amu.wmi.socialaggregator/.activity.AddSocialActivity }
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@9d84e8f in: PAUSED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba6d01
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba6d01
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@75fd832 in: PRE_ON_CREATE
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba6d01
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba6d01
        +
      • +
      • +V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@5c4aad
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@4dab1e2
        V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@a1cc973
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@5950030
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@75fd832 in: CREATED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba6d01
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba6d01
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@75fd832 in: STARTED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba6d01
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba6d01
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@75fd832 in: RESUMED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba6d01
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba6d01
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@9d84e8f in: STOPPED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba6d01
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba6d01
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/ViewInteraction: Checking 'androidx.test.espresso.intent.Intents$2@fc689fd' assertion on view is a root view.
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@9d84e8f in: DESTROYED
        D/LifecycleMonitor: running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba6d01
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@eba6d01
        +
      • +
      +
    • +
    +
  • +
  • + +
    8.38 s
    +
    pl.edu.amu.wmi.socialaggregator.NewPostActivityTest
    +
      +
    • + +
      5.01 s
      +
      passedclickPublishPost_shouldIncreasePostCount
      +
        +
      • +I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        +
      • +
      • +E/THREAD_STATE: Thread[Instr: androidx.test.runner.AndroidJUnitRunner,5,main]
        dalvik.system.VMStack.getThreadStackTrace(Native Method)
        java.lang.Thread.getStackTrace(Thread.java:1565)
        java.lang.Thread.getAllStackTraces(Thread.java:1615)
        androidx.test.runner.MonitoringInstrumentation.getThreadState(MonitoringInstrumentation.java:680)
        androidx.test.runner.MonitoringInstrumentation.dumpThreadStateToOutputs(MonitoringInstrumentation.java:675)
        androidx.test.runner.MonitoringInstrumentation.waitForActivitiesToComplete(MonitoringInstrumentation.java:406)
        androidx.test.runner.AndroidJUnitRunner$1.run(AndroidJUnitRunner.java:452)
        androidx.test.internal.runner.listener.ActivityFinisherRunListener.testStarted(ActivityFinisherRunListener.java:48)
        org.junit.runner.notification.SynchronizedRunListener.testStarted(SynchronizedRunListener.java:49)
        org.junit.runner.notification.RunNotifier$3.notifyListener(RunNotifier.java:121)
        org.junit.runner.notification.RunNotifier$SafeNotifier.run(RunNotifier.java:72)
        org.junit.runner.notification.RunNotifier.fireTestStarted(RunNotifier.java:118)
        org.junit.internal.runners.model.EachTestNotifier.fireTestStarted(EachTestNotifier.java:42)
        org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:323)
        org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
        org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
        org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        androidx.test.ext.junit.runners.AndroidJUnit4.run(AndroidJUnit4.java:104)
        org.junit.runners.Suite.runChild(Suite.java:128)
        org.junit.runners.Suite.runChild(Suite.java:27)
        org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        org.junit.runner.JUnitCore.run(JUnitCore.java:137)
        org.junit.runner.JUnitCore.run(JUnitCore.java:115)
        androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:56)
        androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:395)
        android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1939)

        Thread[FinalizerDaemon,5,system]
        java.lang.Object.wait(Native Method)
        java.lang.Object.wait(Object.java:407)
        java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:188)
        java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:209)
        java.lang.Daemons$FinalizerDaemon.run(Daemons.java:206)
        java.lang.Thread.run(Thread.java:760)

        Thread[HeapTaskDaemon,5,system]
        dalvik.system.VMRuntime.runHeapTasks(Native Method)
        java.lang.Daemons$HeapTaskDaemon.run(Daemons.java:435)
        java.lang.Thread.run(Thread.java:760)

        Thread[Espresso Key Event #0,5,main]
        java.lang.Object.wait(Native Method)
        java.lang.Thread.parkFor$(Thread.java:2160)
        sun.misc.Unsafe.park(Unsafe.java:325)
        java.util.concurrent.locks.LockSupport.park(LockSupport.java:161)
        java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2035)
        java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
        java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1058)
        java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1118)
        java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        java.lang.Thread.run(Thre
        +
      • +
      • +W/MonitoringInstr: Still 1 activities active after waiting 2000 ms.
        W/ActivityTestRule: getActivityIntent() returned null using default: Intent(Intent.ACTION_MAIN)
        +
      • +
      • +I/Timeline: Timeline: Activity_launch_request time:754004696 intent:Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=pl.edu.amu.wmi.socialaggregator/.activity.MainActivity }
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@297824a in: PRE_ON_CREATE
        +
      • +
      • +V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@f9ee269
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@5d894ee
        V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@fd703ab
        V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@2ecda08
        V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@a8a159e
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@595887f
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@297824a in: CREATED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@297824a in: STARTED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@297824a in: RESUMED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@75fd832 in: STOPPED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@75fd832 in: DESTROYED
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/ViewInteraction: Performing 'single click' action on view with id: pl.edu.amu.wmi.socialaggregator:id/connectedSocialsButton
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/Timeline: Timeline: Activity_launch_request time:754004906 intent:Intent { cmp=pl.edu.amu.wmi.socialaggregator/.activity.AddSocialActivity }
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@297824a in: PAUSED
        D/LifecycleMonitor: running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@906c4c9 in: PRE_ON_CREATE
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        +
      • +
      • +V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@3910a00
        V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@1cd7239
        V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@e5d307e
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@1e839df
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@906c4c9 in: CREATED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@906c4c9 in: STARTED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@906c4c9 in: RESUMED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@297824a in: STOPPED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/ViewInteraction: Performing 'actionOnItemAtPosition performing ViewAction: Action on child on item at position: 0' action on view with id: pl.edu.amu.wmi.socialaggregator:id/addSocialRecyclerView
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/Toast: Show toast from OpPackageName:pl.edu.amu.wmi.socialaggregator, PackageName:pl.edu.amu.wmi.socialaggregator
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/ViewInteraction: Performing 'send keyCode: 4, metaState: 0 key event' action on view is a root view.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@906c4c9 in: PAUSED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@297824a in: RESTARTED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@297824a in: STARTED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@297824a in: RESUMED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@906c4c9 in: STOPPED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.AddSocialActivity@906c4c9 in: DESTROYED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/ViewInteraction: Performing 'single click' action on view with id: pl.edu.amu.wmi.socialaggregator:id/createPostButton
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/Timeline: Timeline: Activity_launch_request time:754005917 intent:Intent { cmp=pl.edu.amu.wmi.socialaggregator/.activity.NewPostActivity }
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@297824a in: PAUSED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@3890302 in: PRE_ON_CREATE
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        +
      • +
      • +V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@94c30b2
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@7f32803
        V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@750fd57
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@2f69044
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@3890302 in: CREATED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@3890302 in: STARTED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@3890302 in: RESUMED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@297824a in: STOPPED
        D/LifecycleMonitor: running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/ViewInteraction: Performing 'close keyboard' action on view is a root view.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/ViewInteraction: Performing 'actionOnItemAtPosition performing ViewAction: Action on child on item at position: 0' action on view with id: pl.edu.amu.wmi.socialaggregator:id/availableSocials
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/ViewInteraction: Performing 'single click' action on view with id: pl.edu.amu.wmi.socialaggregator:id/publishPost
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@3890302 in: PAUSED
        D/LifecycleMonitor: running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@297824a in: RESTARTED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@297824a in: STARTED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@297824a in: RESUMED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        D/LifecycleMonitor: callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        +
      • +
      • +I/Toast: Show toast from OpPackageName:pl.edu.amu.wmi.socialaggregator, PackageName:pl.edu.amu.wmi.socialaggregator
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@3890302 in: STOPPED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@3890302 in: DESTROYED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/ViewInteraction: Checking 'MatchesViewAssertion{viewMatcher=has item at position 0: has descendant: with text: is "Facebook"}' assertion on view with id: pl.edu.amu.wmi.socialaggregator:id/previousPostsRecyclerView
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@297824a in: PAUSED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@ff52e64
        +
      • +
      +
    • +
    • + +
      3.37 s
      +
      passedclickPublishPost_shouldEndActivity
      +
        +
      • +I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        I/MonitoringInstr: Unstopped activity count: 1
        +
      • +
      • +E/THREAD_STATE: Thread[AsyncTask #3,5,main]
        java.lang.Object.wait(Native Method)
        java.lang.Thread.parkFor$(Thread.java:2160)
        sun.misc.Unsafe.park(Unsafe.java:325)
        java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:201)
        java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2077)
        java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:438)
        java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1057)
        java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1118)
        java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
        java.lang.Thread.run(Thread.java:760)

        Thread[FinalizerDaemon,5,system]
        java.lang.Object.wait(Native Method)
        java.lang.Object.wait(Object.java:407)
        java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:188)
        java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:209)
        java.lang.Daemons$FinalizerDaemon.run(Daemons.java:206)
        java.lang.Thread.run(Thread.java:760)

        Thread[Instr: androidx.test.runner.AndroidJUnitRunner,5,main]
        dalvik.system.VMStack.getThreadStackTrace(Native Method)
        java.lang.Thread.getStackTrace(Thread.java:1565)
        java.lang.Thread.getAllStackTraces(Thread.java:1615)
        androidx.test.runner.MonitoringInstrumentation.getThreadState(MonitoringInstrumentation.java:680)
        androidx.test.runner.MonitoringInstrumentation.dumpThreadStateToOutputs(MonitoringInstrumentation.java:675)
        androidx.test.runner.MonitoringInstrumentation.waitForActivitiesToComplete(MonitoringInstrumentation.java:406)
        androidx.test.runner.AndroidJUnitRunner$1.run(AndroidJUnitRunner.java:452)
        androidx.test.internal.runner.listener.ActivityFinisherRunListener.testStarted(ActivityFinisherRunListener.java:48)
        org.junit.runner.notification.SynchronizedRunListener.testStarted(SynchronizedRunListener.java:49)
        org.junit.runner.notification.RunNotifier$3.notifyListener(RunNotifier.java:121)
        org.junit.runner.notification.RunNotifier$SafeNotifier.run(RunNotifier.java:72)
        org.junit.runner.notification.RunNotifier.fireTestStarted(RunNotifier.java:118)
        org.junit.internal.runners.model.EachTestNotifier.fireTestStarted(EachTestNotifier.java:42)
        org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:323)
        org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
        org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
        org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        androidx.test.ext.junit.runners.AndroidJUnit4.run(AndroidJUnit4.java:104)
        org.junit.runners.Suite.runChild(Suite.java:128)
        org.junit.runners.Suite.runChild(Suite.java:27)
        org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        org.junit.runner.JUnitCore.run(JUnitCore.java:137)
        org.junit.runner.JUnitCore.run(JUnitCore.java:115)
        androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:56)
        androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:395)
        android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1939)

        Thread[HeapTaskDaemon,5,system]
        dalvik.system.VMRuntime.runHeapTasks(Native Method)
        java.lang.Daemons$HeapTaskDaemon.run(Daemons.java:435)
        java.lang.Thread.run(Thr
        +
      • +
      • +W/MonitoringInstr: Still 1 activities active after waiting 2000 ms.
        W/ActivityTestRule: getActivityIntent() returned null using default: Intent(Intent.ACTION_MAIN)
        +
      • +
      • +I/Timeline: Timeline: Activity_launch_request time:754011746 intent:Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=pl.edu.amu.wmi.socialaggregator/.activity.MainActivity }
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@e0b5fad in: PRE_ON_CREATE
        +
      • +
      • +V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@ee49e48
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@34184e1
        V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@3319bde
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@55131bf
        V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@b76388d
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@9f3a42
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@e0b5fad in: CREATED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@e0b5fad in: STARTED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@e0b5fad in: RESUMED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@297824a in: STOPPED
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@297824a in: DESTROYED
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/ViewInteraction: Performing 'single click' action on view with id: pl.edu.amu.wmi.socialaggregator:id/createPostButton
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/Timeline: Timeline: Activity_launch_request time:754011977 intent:Intent { cmp=pl.edu.amu.wmi.socialaggregator/.activity.NewPostActivity }
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@e0b5fad in: PAUSED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@3261acc in: PRE_ON_CREATE
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        D/LifecycleMonitor: callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        +
      • +
      • +V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@efda3ef
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@3cbcefc
        V/BoostFramework: BoostFramework() : mPerf = com.qualcomm.qti.Performance@32a900b
        BoostFramework() : mPerf = com.qualcomm.qti.Performance@484dee8
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@3261acc in: CREATED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@3261acc in: STARTED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@3261acc in: RESUMED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@e0b5fad in: STOPPED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/ViewInteraction: Performing 'close keyboard' action on view is a root view.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        I/ViewInteraction: Performing 'single click' action on view with id: pl.edu.amu.wmi.socialaggregator:id/publishPost
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@3261acc in: PAUSED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@e0b5fad in: RESTARTED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@e0b5fad in: STARTED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@e0b5fad in: RESUMED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        +
      • +
      • +I/art: Do full code cache collection, code=252KB, data=238KB
        I/art: After code cache collection, code=250KB, data=214KB
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@3261acc in: STOPPED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.NewPostActivity@3261acc in: DESTROYED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        +
      • +
      • +I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        I/IdlingResourceRegistry: All idling resources are idle.
        All idling resources are idle.
        +
      • +
      • +D/LifecycleMonitor: Lifecycle status change: pl.edu.amu.wmi.socialaggregator.activity.MainActivity@e0b5fad in: PAUSED
        running callback: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        D/LifecycleMonitor: callback completes: androidx.test.rule.ActivityTestRule$LifecycleCallback@4e7e9a3
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + diff --git a/app/build.gradle b/app/build.gradle index eb976f4..558768f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -76,4 +76,9 @@ dependencies { implementation 'com.facebook.android:facebook-share:[5,6)' implementation 'com.squareup.picasso:picasso:2.5.2' + + implementation([ + 'com.snapchat.kit.sdk:creative:1.1.4', + 'com.snapchat.kit.sdk:core:1.1.4' + ]) } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 53b7386..07a5330 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,7 @@ + + + + + + + + + + + + diff --git a/app/src/main/java/pl/edu/amu/wmi/socialaggregator/activity/MainActivity.kt b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/activity/MainActivity.kt index 29e4680..838e856 100644 --- a/app/src/main/java/pl/edu/amu/wmi/socialaggregator/activity/MainActivity.kt +++ b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/activity/MainActivity.kt @@ -2,24 +2,16 @@ package pl.edu.amu.wmi.socialaggregator.activity import android.content.Intent import android.os.Bundle -import android.util.Log import androidx.appcompat.app.AppCompatActivity import androidx.recyclerview.widget.LinearLayoutManager -import com.facebook.CallbackManager -import com.facebook.FacebookCallback -import com.facebook.FacebookException -import com.facebook.login.LoginResult import com.jakewharton.rxbinding2.view.RxView +import io.reactivex.Observable import io.reactivex.disposables.CompositeDisposable import kotlinx.android.synthetic.main.activity_main.* import pl.edu.amu.wmi.socialaggregator.R import pl.edu.amu.wmi.socialaggregator.utils.SocialPlatformsManager import pl.edu.amu.wmi.socialaggregator.viewholders.PostSummaryRecycler import pl.edu.amu.wmi.socialaggregator.viewholders.SocialWithButtonRecycler -import com.facebook.AccessToken -import com.facebook.login.LoginManager -import com.facebook.share.widget.ShareDialog -import io.reactivex.Observable class MainActivity : AppCompatActivity() { @@ -38,30 +30,6 @@ class MainActivity : AppCompatActivity() { val intent = Intent(this, NewPostActivity::class.java) startActivity(intent) }, -// RxView.clicks(connectedSocialsButton) -// .subscribe { -// val accessToken = AccessToken.getCurrentAccessToken() -// val isLoggedIn = accessToken != null && !accessToken.isExpired -// -// Log.i(TAG, isLoggedIn.toString()) -// -// LoginManager.getInstance().logInWithReadPermissions(this, listOf("public_profile")) -// -//// val request = GraphRequest.newMeRequest( -//// accessToken -//// ) { `object`, response -> -//// Log.v("LoginActivity", response.toString()) -//// -//// // Application code -//// } -//// val parameters = Bundle() -//// parameters.putString("fields", "id,name,email,gender,birthday") -//// request.parameters = parameters -//// request.executeAsync() -// ShareDialog(this).show() -//// val intent = Intent(this, AddSocialActivity::class.java) -//// startActivity(intent) -// }, RxView.clicks(previousPostsButton) .subscribe { val intent = Intent(this, PostHistoryActivity::class.java) @@ -72,7 +40,7 @@ class MainActivity : AppCompatActivity() { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { SocialPlatformsManager.getAll() - .forEach { it.onActivityResult(requestCode, resultCode, data)} + .forEach { it.onActivityResult(requestCode, resultCode, data) } super.onActivityResult(requestCode, resultCode, data) } @@ -88,12 +56,13 @@ class MainActivity : AppCompatActivity() { previousPostsRecyclerView.apply { layoutManager = LinearLayoutManager(this@MainActivity) adapter = PostSummaryRecycler( - Observable.fromIterable(SocialPlatformsManager.getLoggedIn(this@MainActivity)) - .flatMap { social -> - return@flatMap social.getPosts(this@MainActivity) - .map { social to it } - .toObservable() - }) + Observable.merge(SocialPlatformsManager.getLoggedIn(this@MainActivity) + .map { social -> + social.getPosts(this@MainActivity) + .map { social to it } + .toObservable() + }) + ) } } diff --git a/app/src/main/java/pl/edu/amu/wmi/socialaggregator/activity/NewPostActivity.kt b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/activity/NewPostActivity.kt index a32fd3c..c5c85ca 100644 --- a/app/src/main/java/pl/edu/amu/wmi/socialaggregator/activity/NewPostActivity.kt +++ b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/activity/NewPostActivity.kt @@ -2,12 +2,13 @@ package pl.edu.amu.wmi.socialaggregator.activity import android.Manifest import android.annotation.SuppressLint +import android.content.Context import android.content.Intent import android.content.pm.PackageManager import android.graphics.BitmapFactory +import android.net.Uri import android.os.Bundle import android.provider.MediaStore -import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat @@ -15,16 +16,25 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.snackbar.Snackbar import com.jakewharton.rxbinding2.view.RxView import io.reactivex.Observable +import io.reactivex.functions.BiFunction +import io.reactivex.schedulers.Schedulers +import io.reactivex.subjects.PublishSubject import kotlinx.android.synthetic.main.activity_new_post.* import kotlinx.android.synthetic.main.content_new_post.* import pl.edu.amu.wmi.socialaggregator.R +import pl.edu.amu.wmi.socialaggregator.socialplatforms.SocialPlatform import pl.edu.amu.wmi.socialaggregator.utils.SocialPlatformsManager import pl.edu.amu.wmi.socialaggregator.viewholders.SocialWithToggleRecycler + class NewPostActivity : AppCompatActivity() { var file: String? = null + val postedSubject = PublishSubject.create() + + val resumedSubject = PublishSubject.create() + @SuppressLint("CheckResult") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -47,16 +57,48 @@ class NewPostActivity : AppCompatActivity() { RxView.clicks(publishPost) .filter { file != null } - .subscribe { - availablesRecycler.chips.entries - .filter { (_, chip) -> chip.isChecked } - .forEach { (social, _) -> + .doOnNext { + val sdk = android.os.Build.VERSION.SDK_INT + if (sdk < android.os.Build.VERSION_CODES.HONEYCOMB) { + val clipboard = + getSystemService(Context.CLIPBOARD_SERVICE) as android.text.ClipboardManager + clipboard.text = postText.text?.toString() ?: "" + } else { + val clipboard = + getSystemService(Context.CLIPBOARD_SERVICE) as android.content.ClipboardManager + val clip = android.content.ClipData.newPlainText( + "text label", + postText.text?.toString() ?: "" + ) + clipboard.primaryClip = clip + } + } + .observeOn(Schedulers.io()) + .doOnNext { + resumedSubject.zipWith( + Observable.fromIterable(availablesRecycler.chips.entries + .filter { (_, chip) -> chip.isChecked } + .map { it.key }), + BiFunction { _, t2 -> t2 } + ) + .doOnNext { val bitmap = BitmapFactory.decodeFile(file!!) - social.addPost(this, postText.text?.toString() ?: "test", listOf(bitmap)) - .blockingSubscribe() - Toast.makeText(this, "Posted to ${social.getName()}!", Toast.LENGTH_SHORT) - .show() + it.addPost( + postedSubject, this, + postText.text?.toString() ?: "", + listOf(bitmap), + listOf(file!!) + ) } + .take(availablesRecycler.chips.count { it.value.isChecked }.toLong()) + .toList() + .subscribe { _ -> + finish() + } + + } + .subscribe { + resumedSubject.onNext(Any()) } RxView.clicks(imageView2) @@ -86,18 +128,33 @@ class NewPostActivity : AppCompatActivity() { } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + SocialPlatformsManager.getAll() + .forEach { it.onActivityResult(requestCode, resultCode, data) } super.onActivityResult(requestCode, resultCode, data) if (requestCode == PICK_IMAGE_REQUEST_CODE) { data?.data?.let { uri -> - uri.pathSegments?.last()?.let { - file = it - } + file = getPath(uri) imageView2.setImageURI(uri) + } } } + fun getPath(uri: Uri): String? { + val projection = arrayOf(MediaStore.Images.Media.DATA) + val cursor = contentResolver.query(uri, projection, null, null, null) ?: return null + val column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA) + cursor.moveToFirst() + val s = cursor.getString(column_index) + cursor.close() + return s + } + + override fun onResume() { + super.onResume() + resumedSubject.onNext(Any()) + } private fun canAccessGallery() = (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) diff --git a/app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/Facebook.kt b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/Facebook.kt index 3683861..d1f4b64 100644 --- a/app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/Facebook.kt +++ b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/Facebook.kt @@ -4,7 +4,6 @@ import android.app.Activity import android.content.Context import android.content.Intent import android.graphics.Bitmap -import android.icu.text.SimpleDateFormat import android.os.Bundle import android.util.Log import android.view.View @@ -12,11 +11,9 @@ import android.view.ViewGroup import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintSet import com.facebook.* +import com.facebook.login.LoginManager import com.facebook.login.LoginResult import com.facebook.login.widget.LoginButton -import pl.edu.amu.wmi.socialaggregator.utils.Utils -import pl.edu.amu.wmi.socialaggregator.viewholders.SocialWithButtonRecycler -import com.facebook.login.LoginManager import com.facebook.share.Sharer import com.facebook.share.model.ShareMediaContent import com.facebook.share.model.SharePhoto @@ -28,7 +25,8 @@ import io.reactivex.subjects.PublishSubject import org.json.JSONArray import org.json.JSONObject import pl.edu.amu.wmi.socialaggregator.R -import java.lang.Exception +import pl.edu.amu.wmi.socialaggregator.utils.Utils +import pl.edu.amu.wmi.socialaggregator.viewholders.SocialWithButtonRecycler class Facebook : SocialPlatform { @@ -52,15 +50,21 @@ class Facebook : SocialPlatform { return accessToken != null && !accessToken.isExpired } - override fun addPost(context: Context, text: String, images: List) : PublishSubject { + override fun addPost( + publishSubject: PublishSubject, + context: Context, + text: String, + images: List, + imagePaths: List + ) { val content = ShareMediaContent.Builder().apply { - images.forEach {addMedium( - SharePhoto.Builder().setBitmap(it).build() - )} + images.forEach { + addMedium( + SharePhoto.Builder().setBitmap(it).build() + ) + } }.build() - val publishSubject = PublishSubject.create() - val shareDialog = ShareDialog(context as Activity) shareDialog.registerCallback(callbackManager, object : FacebookCallback { override fun onSuccess(result: Sharer.Result?) { @@ -68,7 +72,7 @@ class Facebook : SocialPlatform { } override fun onCancel() { - publishSubject.onError(Exception("Cancelled")) + publishSubject.onNext(Any()) } override fun onError(error: FacebookException?) { @@ -76,23 +80,26 @@ class Facebook : SocialPlatform { } }) shareDialog.show(content, ShareDialog.Mode.AUTOMATIC) - - return publishSubject } override fun getPosts(context: Context): Single> { return Single.just(AccessToken.getCurrentAccessToken()) + .observeOn(Schedulers.io()) .map { token -> if (token.isExpired) { return@map emptyList() } else { val request = GraphRequest.newGraphPathRequest( AccessToken.getCurrentAccessToken(), - "/me/posts") { + "/me/posts" + ) { Log.i(getName(), it.toString()) } val parameters = Bundle() - parameters.putString("fields", "likes.summary(true),created_time,message,attachments{url,unshimmed_url,media,subattachments}") + parameters.putString( + "fields", + "likes.summary(true),created_time,message,attachments{url,unshimmed_url,media,subattachments}" + ) request.parameters = parameters val res = request.executeAndWait() @@ -100,14 +107,14 @@ class Facebook : SocialPlatform { val size = data.length() return@map (0 until size).map { val obj = data[it] as JSONObject - val msg = if(obj.has("message")) obj.getString("message") else "" - val date = if(obj.has("created_time")) obj.getString("created_time") else "" + val msg = if (obj.has("message")) obj.getString("message") else "" + val date = + if (obj.has("created_time")) obj.getString("created_time") else "" // SimpleDateFormat("YYYY-MM-DD\'T\'hh:mm:ssZ").parse(date) Post(this, msg, date, getImages(obj)) } } } - .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) } @@ -122,12 +129,15 @@ class Facebook : SocialPlatform { .flatMap { val urls = mutableListOf() if (it.has("media")) { - urls.add(it.getJSONObject("media") - .getJSONObject("image") - .getString("src")) + urls.add( + it.getJSONObject("media") + .getJSONObject("image") + .getString("src") + ) } if (it.has("subattachments")) { - val subattachments = it.getJSONObject("subattachments").getJSONArray("data") + val subattachments = + it.getJSONObject("subattachments").getJSONArray("data") urls.addAll((0 until subattachments.length()) .map { subattachments[it] as JSONObject } .map { @@ -158,21 +168,35 @@ class Facebook : SocialPlatform { parent.addView(button) constraintSet.clone(parent as ConstraintLayout) - constraintSet.connect(button.id, ConstraintSet.TOP, - parent.id, ConstraintSet.TOP, 8.toPx(context)) - constraintSet.connect(button.id, ConstraintSet.END, - parent.id, ConstraintSet.END) - constraintSet.connect(button.id, ConstraintSet.BOTTOM, - parent.id, ConstraintSet.BOTTOM, 8.toPx(context)) + constraintSet.connect( + button.id, ConstraintSet.TOP, + parent.id, ConstraintSet.TOP, 8.toPx(context) + ) + constraintSet.connect( + button.id, ConstraintSet.END, + parent.id, ConstraintSet.END + ) + constraintSet.connect( + button.id, ConstraintSet.BOTTOM, + parent.id, ConstraintSet.BOTTOM, 8.toPx(context) + ) - constraintSet.connect(viewHolder.textView.id, ConstraintSet.BOTTOM, - button.id, ConstraintSet.BOTTOM) - constraintSet.connect(viewHolder.textView.id, ConstraintSet.END, - button.id, ConstraintSet.START, 8.toPx(context)) - constraintSet.connect(viewHolder.textView.id, ConstraintSet.START, - parent.id, ConstraintSet.START) - constraintSet.connect(viewHolder.textView.id, ConstraintSet.TOP, - button.id, ConstraintSet.TOP) + constraintSet.connect( + viewHolder.textView.id, ConstraintSet.BOTTOM, + button.id, ConstraintSet.BOTTOM + ) + constraintSet.connect( + viewHolder.textView.id, ConstraintSet.END, + button.id, ConstraintSet.START, 8.toPx(context) + ) + constraintSet.connect( + viewHolder.textView.id, ConstraintSet.START, + parent.id, ConstraintSet.START + ) + constraintSet.connect( + viewHolder.textView.id, ConstraintSet.TOP, + button.id, ConstraintSet.TOP + ) constraintSet.setHorizontalBias(viewHolder.textView.id, 0.toFloat()) constraintSet.applyTo(parent) @@ -180,8 +204,10 @@ class Facebook : SocialPlatform { val callback = object : FacebookCallback { override fun onSuccess(result: LoginResult?) { Log.i(getName(), "SUCCESS!") - LoginManager.getInstance().logInWithReadPermissions(context as Activity, - listOf("email")) + LoginManager.getInstance().logInWithReadPermissions( + context as Activity, + listOf("email") + ) } override fun onCancel() { diff --git a/app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/FacebookMock.kt b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/FacebookMock.kt deleted file mode 100644 index 6988a1c..0000000 --- a/app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/FacebookMock.kt +++ /dev/null @@ -1,84 +0,0 @@ -package pl.edu.amu.wmi.socialaggregator.socialplatforms - -import android.content.Context -import android.graphics.Bitmap -import android.util.Log -import io.reactivex.Single -import io.reactivex.subjects.PublishSubject -import pl.edu.amu.wmi.socialaggregator.R -import pl.edu.amu.wmi.socialaggregator.utils.InternalStorage -import java.io.ByteArrayOutputStream -import java.io.File -import java.text.DateFormat -import java.util.* - -abstract class FacebookMock : SocialPlatform { - - companion object { - val TAG = FacebookMock::class.java.canonicalName - } - - override fun getName(): String = "Facebook Mock" - - override fun getLogo(): Int = R.mipmap.ic_logo_facebook - - override fun login(context: Context) { - val loginsDir = InternalStorage.getFileOrDir(context, "logins") - loginsDir?.mkdir() - if (loginsDir != null) { - val loginFile = File(loginsDir, "facebook") - loginFile.createNewFile() - } else { - Log.e(TAG, "Could not create logins directory") - } - } - - override fun logout(context: Context) { - InternalStorage.getFileOrDir(context, "logins/facebook")?.delete() - } - - override fun isLoggedIn(context: Context): Boolean { - return InternalStorage.getFileOrDir(context, "logins/facebook")?.exists() ?: false - } - - override fun addPost(context: Context, text: String, images: List): PublishSubject { - val postsDir = InternalStorage.getFileOrDir(context, "posts/facebook") - if (postsDir != null) { - val postDir = File(postsDir, System.currentTimeMillis().toString()) - postDir.mkdirs() - - val textFile = File(postDir, "content") - textFile.createNewFile() - textFile.writeText(text) - - images.forEachIndexed { index, image -> - val imageFile = File(postDir, "image$index") - imageFile.createNewFile() - - ByteArrayOutputStream().use { stream -> - image.compress(Bitmap.CompressFormat.JPEG, 100, stream) - imageFile.writeBytes(stream.toByteArray()) - } - } - - } else { - Log.e(TAG, "Could not create posts directory") - } - return PublishSubject.create() - } - - override fun getPosts(context: Context): Single> { - val postsDir = InternalStorage.getFileOrDir(context, "posts/facebook") - return Single.just(postsDir?.listFiles()?.flatMap { - it.listFiles().map { - val dt = Date(it.lastModified()) - Post( - this, - it.readText(), - DateFormat.getDateTimeInstance().format(dt), - emptyList() - ) - } - }?.toList() ?: emptyList()) - } -} \ No newline at end of file diff --git a/app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/NotApplicableException.kt b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/NotApplicableException.kt new file mode 100644 index 0000000..c4a0eb7 --- /dev/null +++ b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/NotApplicableException.kt @@ -0,0 +1,5 @@ +package pl.edu.amu.wmi.socialaggregator.socialplatforms + +import java.lang.Exception + +class NotApplicableException(val socialPlatform: SocialPlatform) : Exception() \ No newline at end of file diff --git a/app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/Snapchat.kt b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/Snapchat.kt new file mode 100644 index 0000000..8d22a9c --- /dev/null +++ b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/Snapchat.kt @@ -0,0 +1,79 @@ +package pl.edu.amu.wmi.socialaggregator.socialplatforms + +import android.content.Context +import android.content.Intent +import android.graphics.Bitmap +import android.util.Log +import com.snapchat.kit.sdk.SnapCreative +import com.snapchat.kit.sdk.creative.api.SnapCreativeKitCompletionCallback +import com.snapchat.kit.sdk.creative.api.SnapCreativeKitSendError +import com.snapchat.kit.sdk.creative.exceptions.SnapMediaSizeException +import com.snapchat.kit.sdk.creative.models.SnapPhotoContent +import io.reactivex.Single +import io.reactivex.subjects.PublishSubject +import pl.edu.amu.wmi.socialaggregator.R +import pl.edu.amu.wmi.socialaggregator.viewholders.SocialWithButtonRecycler +import java.io.File +import java.lang.Exception + +class Snapchat : SocialPlatform { + override fun getName(): String = "Snapchat" + + override fun login(context: Context) { + } + + override fun logout(context: Context) { + } + + override fun isLoggedIn(context: Context): Boolean = true + + override fun addPost( + publishSubject: PublishSubject, + context: Context, + text: String, + images: List, + imagePaths: List + ) { + val snapCreativeKitApi = SnapCreative.getApi(context) + + val content = imagePaths.map { + val snapMediaFactory = SnapCreative.getMediaFactory(context) + val photoFile = try { + snapMediaFactory.getSnapPhotoFromFile(File(it)) + } catch (e: SnapMediaSizeException) { + Log.e(getName(), e.toString()) + null + } + SnapPhotoContent(photoFile!!) + }.first() + + snapCreativeKitApi.sendWithCompletionHandler( + content, + object : SnapCreativeKitCompletionCallback { + override fun onSendSuccess() { + publishSubject.onNext(Any()) + } + + override fun onSendFailed(p0: SnapCreativeKitSendError?) { + publishSubject.onError(Exception("Snapchat error")) + } + + }) + } + + override fun getPosts(context: Context): Single> { + return Single.just(emptyList()) + } + + override fun getLogo(): Int = R.drawable.ic_icon_snapchat + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + } + + override fun handleButtonView(context: Context): (SocialWithButtonRecycler.ViewHolder) -> Unit = + { + it.image.setImageResource(getLogo()) + it.textView.text = getName() + } +} \ No newline at end of file diff --git a/app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/SocialPlatform.kt b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/SocialPlatform.kt index 3214dbe..8ee41a7 100644 --- a/app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/SocialPlatform.kt +++ b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/socialplatforms/SocialPlatform.kt @@ -13,7 +13,10 @@ interface SocialPlatform { fun login(context: Context) fun logout(context: Context) fun isLoggedIn(context: Context): Boolean - fun addPost(context: Context, text: String, images: List): PublishSubject + fun addPost(publishSubject: PublishSubject, + context: Context, text: String, images: List, + imagePaths: List) + fun getPosts(context: Context): Single> fun getLogo(): Int fun handleButtonView(context: Context): (SocialWithButtonRecycler.ViewHolder) -> Unit = {} diff --git a/app/src/main/java/pl/edu/amu/wmi/socialaggregator/utils/SocialPlatformsManager.kt b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/utils/SocialPlatformsManager.kt index b7cf0e2..5a42626 100644 --- a/app/src/main/java/pl/edu/amu/wmi/socialaggregator/utils/SocialPlatformsManager.kt +++ b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/utils/SocialPlatformsManager.kt @@ -2,13 +2,14 @@ package pl.edu.amu.wmi.socialaggregator.utils import android.content.Context import pl.edu.amu.wmi.socialaggregator.socialplatforms.Facebook -import pl.edu.amu.wmi.socialaggregator.socialplatforms.FacebookMock +import pl.edu.amu.wmi.socialaggregator.socialplatforms.Snapchat import pl.edu.amu.wmi.socialaggregator.socialplatforms.SocialPlatform object SocialPlatformsManager { - private val IMPLEMENTED_PLATFORMS = listOf( + private val IMPLEMENTED_PLATFORMS = listOf( // FacebookMock() - Facebook() + Facebook(), + Snapchat() ) fun getAll() = IMPLEMENTED_PLATFORMS diff --git a/app/src/main/java/pl/edu/amu/wmi/socialaggregator/viewholders/PostDetailsRecycler.kt b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/viewholders/PostDetailsRecycler.kt index 3dedaf0..ce42649 100644 --- a/app/src/main/java/pl/edu/amu/wmi/socialaggregator/viewholders/PostDetailsRecycler.kt +++ b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/viewholders/PostDetailsRecycler.kt @@ -1,5 +1,6 @@ package pl.edu.amu.wmi.socialaggregator.viewholders +import android.annotation.SuppressLint import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -11,8 +12,11 @@ import androidx.recyclerview.widget.RecyclerView import com.squareup.picasso.Picasso import io.reactivex.Observable import pl.edu.amu.wmi.socialaggregator.R +import pl.edu.amu.wmi.socialaggregator.socialplatforms.NotApplicableException import pl.edu.amu.wmi.socialaggregator.socialplatforms.Post +import pl.edu.amu.wmi.socialaggregator.socialplatforms.SocialPlatform +@SuppressLint("CheckResult") class PostDetailsRecycler( postsObservable: Observable> ) : RecyclerView.Adapter() { @@ -20,10 +24,11 @@ class PostDetailsRecycler( val posts = emptyList().toMutableList() init { - postsObservable.subscribe { - posts.addAll(it) - notifyDataSetChanged() - } + postsObservable + .subscribe { + posts.addAll(it) + notifyDataSetChanged() + } } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { diff --git a/app/src/main/java/pl/edu/amu/wmi/socialaggregator/viewholders/PostSummaryRecycler.kt b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/viewholders/PostSummaryRecycler.kt index 66165a8..c16f0ad 100644 --- a/app/src/main/java/pl/edu/amu/wmi/socialaggregator/viewholders/PostSummaryRecycler.kt +++ b/app/src/main/java/pl/edu/amu/wmi/socialaggregator/viewholders/PostSummaryRecycler.kt @@ -1,5 +1,6 @@ package pl.edu.amu.wmi.socialaggregator.viewholders +import android.annotation.SuppressLint import android.view.LayoutInflater import android.view.ViewGroup import android.widget.ImageView @@ -7,22 +8,27 @@ import android.widget.TextView import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.RecyclerView import io.reactivex.Observable +import io.reactivex.Single import pl.edu.amu.wmi.socialaggregator.R +import pl.edu.amu.wmi.socialaggregator.socialplatforms.NotApplicableException import pl.edu.amu.wmi.socialaggregator.socialplatforms.Post import pl.edu.amu.wmi.socialaggregator.socialplatforms.SocialPlatform +@SuppressLint("CheckResult") class PostSummaryRecycler( - socialsObservable: Observable>> + socialsObservable: Observable?>> ) : RecyclerView.Adapter() { - init { - socialsObservable.subscribe { - socials.add(it) - notifyDataSetChanged() - } - } + private val socials = mutableListOf?>>() - val socials = emptyList>>().toMutableList() + init { + socialsObservable + .doOnNext { + socials.add(it) + notifyDataSetChanged() + } + .subscribe() + } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val layout = LayoutInflater.from(parent.context) @@ -41,9 +47,11 @@ class PostSummaryRecycler( override fun onBindViewHolder(holder: ViewHolder, position: Int) { val (social, posts) = socials[position] - val count = posts.size + val count = posts?.size holder.socialName.text = social.getName() - holder.postCount.text = count.toString() + if (count > 1) " posts" else " post" + holder.postCount.text = count?.let { + count.toString() + if (count > 1) " posts" else " post" + } ?: "Not applicable" holder.imageView.setImageResource(social.getLogo()) } diff --git a/app/src/main/res/drawable-hdpi/ic_icon_snapchat.png b/app/src/main/res/drawable-hdpi/ic_icon_snapchat.png new file mode 100644 index 0000000000000000000000000000000000000000..fce254922e7c320519f400cbe80014dbcd6f5708 GIT binary patch literal 1282 zcmV+d1^xPoP)UJ5SvzSmW!&R=!v41e_kCbvz2%>lp5-@K3GD1Wz7HUZHJ0ocbLg7)86lQ@ z0^BA51JsRx0V=l{e4Yv0{0`7go0{_p zD*%(o)HVpfXTU9~Gq&`<1~3;(Z5up*+lQEt+2D$Z1F0)l?QbB}jqjczWDo$;T66QC zGbXMM*(SW;t{HL$0kEjJ8~8e7;_46;zc^BiR8dI)J_H^EwvAfZIPh{)otmhHW$Uq# z7rh%r{E`T;U7}Wc1{MOBcJ&0_0UjI>b$d)vbTK-g4;<2CKoS6RdtIm1(5oY?d|f|x z;^@d!b*ZNLT`dVfRhZ`U0PuF#3_YKlnJ&vnCsw7HP+b>kj=Op)*wyWlpmDnT)t?Un zU>f~g>WnS@PXf-!kW~PXfpY~?n*7X7fMw(uO{((x3_fag4ghoi`+@aiXkL*aGqOCq zP+!r>0L(m}1zsE>g{UiOX?Z+wass`R1i(Ul4e-JglrO;uLVCyZ(1%FAqsxT!{jR#{ z!qZbQn>JICdN~y^&9Gi*iwP3}NLy$w2Ct8%5V*SRT*WQ6tk^WGCiddaNju=`KLor! zqPOW%y8c}6WX*hD%Pvd=pfK&;((#QjA8P=qlxa5U$31|9fFr_;+Rj4(pl>p#(vnw_ zSTb?bXcjk;%!l?AUYvn_fh&6s_yTwskhtAGw$*}0W+D}oHm!Y|eQK^hMlK{z)VIJd z>H$yswLJl7QXX!1BNCo_9=usB&xQ7G!7_x2u1`O6!Qq1q?TX38(HpKW4~whgC7(f~?*U5KkWss8 zrUutpmwe7(@bH>7ho2c$!wzAM*R183or0mrVT$JhgpByAxPL3=YcdzFoKBBWKA&DS zuz*?{?@!DuR-3)6xS62krtZ&|J&c%hbv}$Cx?tHq-SPW?#F~e9R_juz>2(`3L}Q0z sCyj4=Rt<3eu79kvO&E2-ov+*c56dz0l~%I)3IG5A07*qoM6N<$f;z5V`2YX_ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_icon_snapchat.png b/app/src/main/res/drawable-mdpi/ic_icon_snapchat.png new file mode 100644 index 0000000000000000000000000000000000000000..68ebedf7ea71c7f8f69a0488e3d89dfaadd0bcb6 GIT binary patch literal 725 zcmV;`0xJE9P))CHRM(;;@G!of;2Q$ zL}hJ>(ooV+A$@1^znml2+kNl*oO_L)<$bw4AOG{5=lswARPeVg02+ZhU@5Q=s7Ud% zeEI|Y0;YiXz!)$c4~!?){|!I~P;JSc!$&}F0M7w|n_ZcT?*LkJB+U~t1UwK3-+^_& z-aMHK#9RYL1weaz0;npGEKlfHpho~!16=_bG(;bOC%{{`m#cslpcc>&TkWy{Gy|Q+ zi0{B9V6ue&O5hN%#F(#70JZ|{h5$|N8Q@bH-x}b!@#x+WfbGC81AyzmOM{f z&A_G-@nr${IMHr@APBLmST@VN2HUtkxCx?crec>w-SNF$`8h0@|haKrJZnVbYdYF31?{9jZBJ_9%1 zX`1smjn|W))IDDB&aYTZ->j3ZTuQDNl>ZfcEA(?3p<;|5NU?JB@r=0$3baG(Gu}@;Uzme0~Fd z&k-}NA=7ferod*v2Eb~`_=fBgGE5M@1U>}b0^SCGs++kEfR%u~fL$kXmFsNi_q#je zY2Y#7yMBWP0k9o#46s3;z-2fZ~>=HfGh{}5gxT70@rGc5_ z02xu;L)7{^**m}50UHCShlp+_Luycsm{z6^{ z9tOSw=Jy%qPSnfX2iR)J`sgIhtpJ!YMD$(h+kh`x8ngy*EU<1%zNW)}^wJjq1DZKa zxmu2U1h^mgt0iAGd=X%OVDC)+I=1No;I^ApH!|b*M}d1Y_U&|=9N_?b0$dfO+>``h zB96e>z?wlIhwlI*y~~4?>nG-1VAY^G!T~V|41#si170HQGf^ME&iZ&Uc0t>pwT zT0F7Ab4%dRn)w<7FbZeAEq40?UXp{TF#rnjyxUyl>u$0`;C@DV417KAmU^1&K%0~E z7BB;2Q?kz!zQdg_3HI~oYxX2v;DfX#v!^naB2|Bqblaw^i5$$ zzh1AIgMmFqRr^A{Oy51wEu-Ii_P`-_XcyX$&F;4fcCL@1L5_wWELeq!?9I*AzJO8J z*{rp7i-oAp(=y1|BZZq&4G0Z?5_lZ=z8`>f091SiOnz5n?5)#e+#S`fTClidSS{68 zA5UAU_VND)Qd0nW3DI>m1EcS*obIP?-kjg{7`q>Z^be^^{1WKycHRI0 N002ovPDHLkV1i8*q-y{G literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_icon_snapchat.png b/app/src/main/res/drawable-xxhdpi/ic_icon_snapchat.png new file mode 100644 index 0000000000000000000000000000000000000000..b67b08a4881bfbe16191bd78d93e67ad9ab059ad GIT binary patch literal 2825 zcmV+k3-_P%?P&Asn?cb}O#-dfK`}03Q{CBdkq)^N@z;?jXfF}Xl0{-9Q0fF%4?~5q^4oZIn_!san@DJc2 z;C|q~@PEC>))xRjw-fL(;Q7E)gVMJKp0L0(ex4#-1%eWRcmVhl@JryfJ}aav0M6!} zfp-8enAh9Q?C&=N=LbLps+F__U`yb6!0Uj$7TBb;Qp$igX{N3Rehl0WJUZ`LZ2-`o zzY=&Y@bq~PT>gDU1NQ8hHJpte;#m6 zaOhT_*aX1#z^TAfhPS(X!h{BN+CCYaw>1IS3OG6(HJ92;uYq3xUj_86S7detc*g%g zpbyeFzkH$&+Lwaoya@pEHOB+HEcKLC1AhcQ8z_yb6|gJtzCfyF?ZIaLa7jGPkU*>g z;K}EWz#)LN!|)?mk5-N^)+U(&-w-5m%NL6fXB@vfR~T3=boeQ0DcAB z1pF;5-${PnaR`Ek2x)N%Lz&v=jMR_$IdGPKK?FcP|AT>A9s>p{UEcjh;POEA_UV@d z;z7V}Ax_bTdg;?n*Uv~{yBXgfJM?VeB;bi%pOoSKnwZ}OMp24)XcWpZz6f{?@Zyn- z(SXjUfV(3Ac2EFn&yc?Ymjp^zYB!}ADB1^jE1B_83B;_^axr*G&|o0 zep9&dmxf7K%N!XexFQ0e@&%!^cqYCA_->oSu5F{ssMNnHaMY2I0n%V`cPpSzA6BEf;u91jY0c>On?BCB=V{P zptI$<-!R=6#G|NOnA}k*sS3b#z_$Y7R%*cOwPO~@k%6ix)gLLBOX4Q{t`H9>)%XuW z!qVK-y+R$5#`Y-w`aq}81F!olBxjwEMx_kS~3PPE95=E{slXu6}YIzChQo!)bsAz%=a-pPgZmc^5k#|l9rY# zcVgTUf<;auGby|$XU1JB@y5)B5z&+;$c(m+1Am$5sqt5pFX^S2pgI=&AG>K%nx@DJ z;stESF?mdW2JqpDF$@JF8vxGg(}wnLq@Vw2!pypC0H{0fLP<8s_m9Qd>WisX!rWQO zx&!(?q~UW}0dND;hI%E(pt~2B7g0>ydI_+1sEsjskQh21la4RQu?I|c%#)C|-cyg) z_kTZoOK|8YGJIYot8}vkO>cK^$dSfa1b|8XXo_4FM#78*kIghW8FvhkF$gES&(&U9_6q-)#BiixNyC#Rq$&U=rpkzp zNd!PfwA39r%NKknnjkBplnO|DG?fSPzSo$f^exe90GN{UwF=qL^T2lIOUQZTEFo0@ z(Egu3LsOI(Y}+=Z8$MFV3>61JlFPfX>lQF-tEr6db0hZ7bV{eIsk`dpyi$9BXZ}Bg ztC@|3i!v&->!Xd1nWpHTkkc0^3V`(PH-jhKRUtLr?{!vF6?0x+Dh7bO&;`N#)KF&M zHZ?o2Gp``)}cr(>gC*=dw?XIl&cO`>q4ffM>+6$Zp79~ z^#Wt+DgsjgygM{Bu)nJxH=5)t;C343O!{3z!Q$tvq#NaQ}l8~ z&oC}5RUv7YqL^V)0CccCX5J8jFs^`&C@S8vZhFhR4ibn_tvc1_59r-gMNCndh0hwoltZ)PA4-fqR0!f@Y|TSlIjQ zz9uL(q`kM)%vGVtk_lIvgP5k`(bN*pGN^rsyCeWiD%(w2Fg$*ml4#7=oA8UiI-KQx zU5jSMmjU}{_Skf1C#E6UvxcsK^=7-C@aIDHW>^FdAAP3eTGk0}6B=7vUPOF^F# zzQkaW0kDdUF@n_8^pqd)cHrO)TJj#i85y2i@{uQps*9=HoXU#Gbw^e+WFbBsG>>Q& zRn>{{zJM`UJ!t6*vysggdNB1U*La?Nu|S6z+uC^h;)->@vd{L%BxB9ai5bj~-I}Tu zVMc_R5vj#NS%}Yp>8v=QIAE7_{9Z0W(6{g#h)nFwmAWqYuLw0E;&-3LFPyWl@eAAR zk5sx7#SJ&L`BBejYo6nSEm>?mmT|^w!JC zfppi7`F>}hOH?{rb1+0SGoIPK2b?3Y(x-1uGz(VU5*2Pfq{U227A%_Aam|55pP{?H zNnB1WLyKlRmr6ODH!lC~UT49o)zZZ-&tpdT^@Pq8SA+M8P3LaA8l3e;u{5pjJ!4tf z5u8nmch|V6+-9aszQ~ZcclK&A1P}nynT?d^b5MAt1OywO7vGM#j*{J)xp}#Zb6W)mYQ8k zdksjztNe8{!`lF$;w@4k2-Z$m%6tu&oM6aN%3gF;=YNjaM5`krLObvLsJ$$)$v-?8)cnYOD9)8$LK&LMQ&)pRLVG bmk#|82J>WhGh^Q!P)YyAV6d_iOg&A?nXl$S&cEt`B>}YHl zu`3|h3-&y}b3g9A?7eq)@6PVb-Z{w^_`ZL3X3m*+XJ_WT=gf8#*=P%F*R%GvcQN21 zzy*N|gdczR|2Ikg4g3@MFW~?G12{MQtv5Tw0)T_L6RHSnJ`4V1FITi_(%gu1OZ0l>q6 z-Rf3c$_;9PZv$_w(}TJII1t#QPKBjRG8Xtc@Xl4esRIDFcl)lYsQi197Wgdip=CW= z1%O+G{r#$PNorp@we6VsSm3LRY_V)$J-R(OoZA;$=4*k!1Fr(ku2Nwc03HuqHDA3; z&!;T#6X11C0C02QzQu&2vcS8mJ_S`XfJeMf1$G#f`bC-F1BcHa8CL<|R=_=ry+&z) z_X8(SYgPq-!+>2zseV!FEZ}9!0N}tssd)EBixjtoFAe09ZA#A101pCgJX-aOVp_m6 z0T+ao0C4fQK-V{()yPAFYJn(^kDy;uiQh^8k1OV30@ZBI{N5Yl`yF5G#>l-=_Oy4C1rq0r27s&H&B?UI`dKm!h~; zJTwDeih-!l%nbl;?;Ly`8Y#==fI|Qmh^flfVbHWMz*S+&CtWKEjtN=&?!c`R>d$;v zDghu_Ak`DDN-{&j22Pz+lN|uu?z!#DNt^+k2~w1-0AS#wpQldZ;d>knXMv{!m+rC6 zx=m#TfUR@uy4odFF4eU_RseW?@Z%>muC=>zE#T3$OZQhW8vsbw(085czJJw_nf%HF zw$vi4vH^g(aE@GM<;4H}i6KE&O5Mx`04X2))*aA?1J|!xxTkX20N{(j`+71;tY(a` zGSVs~$p!#&`aYVH$02kz8EJ58E!QSBMU%<447 zqu>t$pKGF7f@N<5+%2(wWdnd5kAUaLx&UAe^cMiEVZ0@eW-|jwUG^wAXECVc&WS0I z4FEn4oS2yLns(=oz#W=C6uEph0La-9G#SGb9YWav;7h=JBfkx?t4}ezYBm7)Ch+#y zBNVy*hX6N<+(y&tvjM>Ofj2kRF0t~D1g@J{pRxhK!t`c|8FX29QcSm(4FG-vydtB) zuIj2OcchA^BuM~3vWGvCB^D7T#7^3pEZw=SMdxjNdsW=c`y&q_lCAqNA2Gb&?}fq zh*%{6OtzRx2erEio;?PRo%yq)FqEwsR5>4?G~Z{z-i@dz_c!>jL4PS zeAwbVVSuSOlbUYE8DbqUL;=7Fz)5j*FSX8DVBOqAx2%Y-l6549O(cQ9lX*CLKBhc-ICwcGek)CeO+)c4x3llZO_RjS2wUv;nhw{0KNX zL<4uw?~SWMuc2?ey8st~>n!}HjTapN^CRV!@EpL|K~T6o^!Fm?S->~jC}9IhOeeEr zMQ)+4?A1E}syaS~6mVS)$YC8#?REQ;1OPlYFlH{dD`D#zxo$ZFM!Z|FPqJtw0EW0S zX3PZ8x&XLY@C4Q^-$l7fUw{`h$2fOh)?s}F#{X@y3~{k!WoVd@I59m?RfB9t{0xjW zBgiUXJMBw^?fb>6OceP-z`Jhy6bIgP@XiD}I}D-H1Ez0$=a4W`P#P%ePU6gvUDKU} zVdJUf6|#@+)1`aw8v1S^h~IaOEz{Xuj|*RQl@oDp(Dea*8a%XR+orIc*;iJjG##LC zwVPB4PaX{-8EPTv8@wmr?Vx5k%|*8IHBKKa7`9}J*4#u_^Bcn%L!W)W0`RCMiJ<%J zOVhSYS8Mp)%nV@eSf}7zMS`j9;@F=Br~CZ^kuz6Y`8jgeHv@n}drVXq%W#I1zcw60 z$7o{*zzZNGYUC^i;24NA0|2i#m8U)iG0mJ8PIa}r@KY%nLw3#>Wb0Dy={3OBfya(P zyP$(B?>BV7J~n;pL4YxRW09@gOY`0(_oON1vRT*Q6R+g)EpiU-9{lc3`(1hA*43wr z=eN!P=05@c{^YQS?V_R7>hO{V*9fPDbhI**CpicOz23O%gdbh6DdqL+(v~xKHq0Yi z!ol8MwpQv&&H^UqHa26M%mY9lw0!X~O?k)}vQ8xc{9}sOoDFERQ8g_g z=jGEHRlVu^j%d3xs?qB}8Cl!1x3{DU0G@CA8OZrmumf9-t_p*8j+j3iS@f;nCj=>u z&I%i>P-PaDWsAMX1d`$g+iWzd>pu5T?0m8e0LGskGUEO4XhwI1BA$O788`@y0AOJ= zS9ms1wuO1Z#ciKczX7|IQfFYt-7~A*ylfcK8JzfU@KL21~ulD^YPYz&#TEV(? z0bu|45A>%2bSX_Xv_P%Fx6UR2u)I0#O3kkyamn*H>@>IwA~f}lh21?%cei?JFsDRlc&)G39v_p zJD6M1-_`-Z#00WrB~r+Zmq<}0z6GSh>)7#xZ>?L^x&Xkmx^m@r0}Oa9pNDRNpby{G z{dYnPM5{M`zDr#LV7h*11H-$#EZIyKg2Uf)ilFIs2OX2b-$_;8U z0kBA2;|~RapALU?KiiMV&m>NM`fv42*S^#uJ2ZXEEI)b1|4u^ICVyY_?|#eWCwgul oJFsQON<#pk{V2437098899888167 fb2437098899888167 + + + + + + diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml new file mode 100644 index 0000000..995db17 --- /dev/null +++ b/app/src/main/res/xml/file_paths.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/build.gradle b/build.gradle index e882ab2..29dd1d1 100644 --- a/build.gradle +++ b/build.gradle @@ -19,7 +19,10 @@ allprojects { repositories { google() jcenter() - + + maven { + url "https://storage.googleapis.com/snap-kit-build/maven" + } } }