1. 08 Dec, 2016 2 commits
  2. 06 Dec, 2016 1 commit
  3. 23 Nov, 2016 1 commit
    • Evan W. Patton's avatar
      Add check for open project before prompting user · db222616
      Evan W. Patton authored
      There is a prompt for the user to create or open a project. However,
      this is based on whether currentFileEditor is set, which is a problem
      is a project load is in process. This commit adds a check to
      EditorManager to see if there is an editor even though
      currentFileEditor is null, in which case no prompt is shown.
      
      Change-Id: Icf044a638fef19d7fb5660a4783f852c7ccbb6cb
      db222616
  4. 19 Nov, 2016 2 commits
    • Evan W. Patton's avatar
      Cache Flag and GallerySetting state · b425deb7
      Evan W. Patton authored
      The loading of GallerySettings has a high latency in production. This
      commit makes it so that the GallerySetting object is created only once
      per GAE instance. It also updates the Flag class to cache the value on
      first read since these flags are set in appengine-web.xml and are only
      expected to change during deployment of a new version of App Inventor.
      
      Change-Id: I7bb123697e821f2510807c5cbd5671bae71db307
      b425deb7
    • Evan W. Patton's avatar
      Update GAE to 1.9.46 and GCS to 0.6 · 27f79871
      Evan W. Patton authored
      This commit updates Google App Engine and Google Cloud Storage
      libraries to the most recent versions. This fixes exceptions in the
      dev server regarding the deprecated Files API.
      
      Change-Id: Icd3883c292cfb055bb18560ca04aaf2b313ba9ba
      27f79871
  5. 18 Nov, 2016 4 commits
    • Evan W. Patton's avatar
      Hide gallery loading message after all tabs load · b777cefe
      Evan W. Patton authored
      Commit e38f54e9 deferred gallery loading until the user opened the
      gallery. This commit provides more complex logic for managing the
      "Loading..." messages shown during loading of the gallery by counting
      the number of tabs that have loaded content. In the earlier commit, if
      the primary tab wasn't loaded the message would go away if one of the
      non-visible tabs finished loading. Now the loading message will only
      go away if all tabs have loaded their content.
      
      Change-Id: I019891c4b3160f91658f43ad1d42f47e00cffd32
      b777cefe
    • Evan W. Patton's avatar
      Update settings on server only if changes occur · e066dc0e
      Evan W. Patton authored
      Switching between tabs will save settings even if nothing has
      changed. This results in more network operations than is necessary to
      maintain correct behavior of the application.
      
      This commit updates the CommonSettings class hierarchy to record when
      changes have been made. UserSettings and ProjectSettings will perform
      RPC if and only if the changed flag is true. Otherwise, saving
      settings is a no-op.
      
      Change-Id: I1f15d39418036b320ee3050003034b97e46415be
      e066dc0e
    • Evan W. Patton's avatar
      Cache client checks for android.keystore · 09591fd8
      Evan W. Patton authored
      Only certain actions modify the state of android.keystore on the
      server. The keystore can only change if a new one is imported, the
      current keystore is deleted, or when no keystore exists but the user
      builds an app. However, this is not reflected in the flow control of
      App Inventor. Switching between projects, for example, will check for
      the state of android.keystore even though this is a user file not a
      project file, and the state of the android.keystore will be invariant
      between projects.
      
      This commit caches the result of checks for android.keystore to reduce
      the number of round trips to the server and only rechecks when an
      action may result in an update to the status or in the event an
      earlier call to hasUserFile fails.
      
      Change-Id: I65df499d509ea7098f6b349d0da09cdaea84dd08
      09591fd8
    • Jeffrey I. Schiller's avatar
      Reduce logging and improve static files loading · 93c6bccc
      Jeffrey I. Schiller authored
      Reduce logging so only anomalous situations result in log entries (you
      can turn logging back on by setting appinventor.debugging to true in
      appengine-web.xml).
      
      Disable App Stats, as it really isn’t needed in production.
      
      Provide reasonable caching and expiration on some static files,
      including making sure they are served statically (this is required when
      removing App Stats).
      
      Change-Id: I84bd4877a2cbeba79f7da9248919920ea27c499b
      93c6bccc
  6. 15 Nov, 2016 1 commit
    • Evan W. Patton's avatar
      Defer gallery loading until user chooses to open it · e38f54e9
      Evan W. Patton authored
      Daily we have 750,000+ requests for resources via /ode/gallery. These
      requests occur even if the user never actually accesses the gallery
      since they are done at initialization of Ode. This commit defers the
      initialization of the gallery UI so that it is only generated once the
      user accesses the gallery.
      
      Change-Id: Ic16ae5f45c8f79570d763408f5958170fa332ae1
      e38f54e9
  7. 08 Nov, 2016 1 commit
    • Evan W. Patton's avatar
      Fix logic bug in ReplMgr when no assets are present · f20f55c7
      Evan W. Patton authored
      Commit 72e0ca15 added a callback to handle loading of assets to the
      Companion. However, if the Companion is connected to a project without
      assets, the callback to switch from ASSET state to CONNECTED state
      will never fire. This commit checks whether the asset map has 0
      elements, in which case it will synchronously fire the callback so
      that projects without assets will immediately transition to CONNECTED
      state.
      
      Change-Id: Iba12232966752ed9cb61af0f97aa16ebcffeed4a
      f20f55c7
  8. 07 Nov, 2016 2 commits
  9. 04 Nov, 2016 1 commit
    • Jeffrey I. Schiller's avatar
      Fix Race Condition in Asset Loading · 72e0ca15
      Jeffrey I. Schiller authored
      Asset loading is performed asynchronously and usually happens
      quickly. However with many or large assets, the transferring of the
      asset to the device (or emulator) may not finish in time, resulting in
      an error and a re-try (which eventually succeeds).
      
      We re-factor the asset transferring code to properly handle its
      asynchronous nature using appropriate callbacks.
      
      Change-Id: Idf0170d9a6d929a7ca964b3852811b2b09dc49ce
      72e0ca15
  10. 21 Oct, 2016 1 commit
  11. 21 Sep, 2016 1 commit
  12. 19 Sep, 2016 1 commit
    • Evan W. Patton's avatar
      Fix erroneous reference to getProcedureDef · 54611776
      Evan W. Patton authored
      When changing the called procedure name in a procedure block that
      returns a value, the parameter sockets disappear and the block becomes
      unusable. This is caused by the fact that the code looks to call
      getProcedureDef but it is undefined, even on procedure blocks. The
      issue was that it is supposed to be copied from the no return version
      of the procedure call block, but the reference was wrong and so the
      value was undefined. This commit fixes the erroneous reference in
      order that the behavior is correct. This also has the side effect of
      fixing the (unreported?) bug that the "Highlight Proceduce" context
      menu action was not working due to the same issue.
      
      Fixes #844
      
      Change-Id: I7041c3ab05a89c1a710128a7d91a543bb601940a
      54611776
  13. 14 Sep, 2016 2 commits
  14. 06 Sep, 2016 1 commit
  15. 29 Aug, 2016 1 commit
    • Jeffrey I. Schiller's avatar
      Mitigate Race Condition · 17b61875
      Jeffrey I. Schiller authored
      Mitigate a Race Condition where blockly reads the component database
      before the project has finished initializing the component
      database. This race only tends to manifest in projects with several (or
      many) screens each of which have a significant number of blocks.
      
      Change-Id: I073c4fb30a522d59e6ba060b39183798ce9ac10e
      17b61875
  16. 27 Aug, 2016 3 commits
    • Jeffrey I. Schiller's avatar
      Fix Android Servlet · f26f6a03
      Jeffrey I. Schiller authored
      Android Servlet let’s you download your packaged apps to your own
      device.
      
      Change-Id: I1b074fc65591642e8e8e9fe468609cd6a7d5af2b
      f26f6a03
    • Jeffrey I. Schiller's avatar
      Remove Obsolete Code · 9325bf0a
      Jeffrey I. Schiller authored
      Remove code that was used to communicate with the AI Classic Blocks
      editor. It is no longer in use.
      
      Change-Id: I5a1dc1e3a4081723a74c4370265158f29cd4ae34
      9325bf0a
    • hal's avatar
      Add VR paper writeup · e2303697
      hal authored
      Change-Id: I1d50c87acab77adc301b551ee32570d81a7a90f7
      e2303697
  17. 23 Aug, 2016 1 commit
    • Evan W. Patton's avatar
      Update ActivityStarter to use TextUtils.isEmpty(String) · 8da740e6
      Evan W. Patton authored
      ActivityStarter uses String.isEmpty(), which was introduced in Java
      1.6. However, older versions of Android are only binary compatible
      with Java 1.5, such as the version used in the emulator. This causes
      the ActivityStarter to throw an exception when starting an activity.
      
      This commit fixes the issue by replacing the call to String.isEmpty()
      with android.text.TextUtils.isEmpty(String), which is available since
      Android API version 1. This is consistent with other checks in
      components, such as Canvas and Web.
      
      Closes #827
      
      Change-Id: I5c26bab97421a86b3d62888af447d999af38450a
      8da740e6
  18. 21 Aug, 2016 2 commits
    • Jeffrey I. Schiller's avatar
      Do not erase UserSettings when App Inventor Closed · 412e928e
      Jeffrey I. Schiller authored
      There is a race condition where if App Inventor is closed (browser
      window closed) while the system is still initializing, the user’s global
      settings will be over-written by an empty settings object because the
      global settings have not finished loading. We detect that with this code
      and avoid over-writing the settings.
      
      Change-Id: Icfcf8204b860984bf36e2a7d525ebf5814a2ffd8
      412e928e
    • Jeffrey I. Schiller's avatar
      Improve Project List Loading time · 68de59b9
      Jeffrey I. Schiller authored
      Generate the user’s project list by doing one bulk API call to to the
      datastore to fetch project meta data.
      
      Change-Id: Ie3a93126b22e2292bc4b270d4d54c5c382880cf9
      68de59b9
  19. 16 Aug, 2016 1 commit
  20. 08 Aug, 2016 1 commit
    • Jeffrey I. Schiller's avatar
      Add a No-Op function · 4a61eb97
      Jeffrey I. Schiller authored
      Add a No-Op function. Along with a session idle timeout and session
      renew time, we can ensure that closed browsers (which will stop
      performing no-op operations) will be logged out.
      
      Change-Id: Ibdd1a55b172fc2aad2c8bed012ae86508d1d025b
      4a61eb97
  21. 30 Jul, 2016 1 commit
  22. 29 Jul, 2016 2 commits
    • Jeffrey I. Schiller's avatar
      Sanitize the HTML placed in a Label · 7d21acba
      Jeffrey I. Schiller authored
      Now that we support HTML markup in Labels, we need to make sure it is
      safe to display in the user’s browser.
      
      Change-Id: I17cd06a4ade1e7a58ffeb9ba256ac83a166afd0d
      7d21acba
    • Jeffrey I. Schiller's avatar
      Pass the values of locale,repo and galleryId · 82efdcf8
      Jeffrey I. Schiller authored
      “repo” is used by the template code to indicate a user supplied template
      repository (so you can build your own webpage and link to App Inventor
      with something like
      http://ai2.appinventor.mit.edu/?repo=<myrepo>. Similarly the galleryId
      value is used to point to an App in the Gallery which should be opened
      upon login. The locale value determines which language App Inventor
      should start in.
      
      This commit fixes how we handle these values as we move from the client
      application to the LoginServlet and back to the client application so
      that they are preserved.
      
      Note: A person’s very first login does not preserve these values because
      the code that displays the terms of service fails to preserve them. This
      is an old bug that we do not fix here (but can at a later date).
      
      Change-Id: I53768cfaadd12175e3c1fe821e58024d984afcfa
      82efdcf8
  23. 27 Jul, 2016 2 commits
  24. 26 Jul, 2016 3 commits
  25. 24 Jul, 2016 1 commit
    • hal's avatar
      Change division by 0 to show generate an error. · 93810c8c
      hal authored
      We trigger an “ErrorOccurred” event when we attempt to divide by
      zero. This can be handled by the App Inventor programmers. If it isn’t
      handled, a Notification is generated to the end-user. If the numerator
      is non-zero, +-INTEGER_MAX (2147483647) is returned. If the numerator is
      0, then a 0 is returned.
      
      Change-Id: Ib323c692528fd331c33fcd64de5caa24c2ff9126
      93810c8c
  26. 20 Jul, 2016 1 commit